GeistHaus
log in · sign up

Tom MacWright

Part of macwright.com Micro

JavaScript, math, maps, etc

stories
Intermezzo bag
Show full content

I've been reading the new Sally Rooney novel, Intermezzo. It's really beautiful. The perfect kind of novel to read slowly. She manages to write prose that's engaging at the micro and macro levels - beautiful sentences, as well as lovely long narrative arcs. I've been trying to read the dialog with an Irish accent in my head.

It's a good book for reading in a park, and in Brooklyn we have a lot of nice little neighborhood parks. There's one right next to my apartment, public albeit under a confusing non-city ownership. Getting back from a long day of working on the internet, I want to throw that book in a bag and spend some time reading. But my bags are all the wrong size, too small or so large that the book lays horizontally at the bottom, which annoys me.

Following along with CW&T's newsletter, Kevin Lynagh, Casey Neistat, and others, I've gained an appreciation of people who create their own tools in real life, not just on the computer.

A sewing machine has unlocked a new domain of life where I feel free to do that. It's both supposedly practical and a crucial emotional-life crutch to be able to make something tangible as a respite from the virtual.

So I made a bag just for this one book. The Intermezzo bag. The dimensions are just based on fitting this one item, a book that I'll finish in a 120 pages anyway, and then it'll be more of a toss-up which books it will fit.

Planning the bag

I did a minimum of planning for this project: the book, plus some tolerance, plus some reference points for details. The idea was to make the bag flat, unlike other things I've made, in the musette genre of bag shapes.

Attachments

I had some accessory rope that I wanted to use to make a sort of sacoche which I hadn't gotten to yet, and some D-rings from previous projects. The main material is the same from the porteur bag 2 and original frame bag: ECOPAK 200D from Rockywoods. Unbelievably overkill for this project, but I like it and the way it holds shape.

Knot

Knot 2

The internet is so good for learning knots, I used animated knots.com for these. The important one is the adjustable grip hitch, which makes the strap adjustable. Works super well, and it's nice to have one less piece of 'hardware' and instead just rely on the physics and friction of knots.

Bag edited

The quiet drama was whether it would actually fit the book, which is not an easy thing to guarantee because flexible fabric and uncertain seam tolerances add up in a fuzzy way during a project like this.

Book in the park

https://macwright.com/2026/05/05/intermezzo-bag.html
Intermezzo bag

I've been reading the new Sally Rooney novel, Intermezzo. It's really beautiful. The perfect kind of novel to read slowly. She manages to write prose that's engaging at the micro and macro levels - beautiful sentences, as well as lovely long narrative arcs. I've been trying to read the dialog with an Irish accent in my head.

It's a good book for reading in a park, and in Brooklyn we have a lot of nice little neighborhood parks. There's one right next to my apartment, public albeit under a confusing non-city ownership. Getting back from a long day of working on the internet, I want to throw that book in a bag and spend some time reading. But my bags are all the wrong size, too small or so large that the book lays horizontally at the bottom, which annoys me.

Following along with CW&T's newsletter, Kevin Lynagh, Casey Neistat, and others, I've gained an appreciation of people who create their own tools in real life, not just on the computer.

A sewing machine has unlocked a new domain of life where I feel free to do that. It's both supposedly practical and a crucial emotional-life crutch to be able to make something tangible as a respite from the virtual.

So I made a bag just for this one book. The Intermezzo bag. The dimensions are just based on fitting this one item, a book that I'll finish in a 120 pages anyway, and then it'll be more of a toss-up which books it will fit.

Planning the bag

I did a minimum of planning for this project: the book, plus some tolerance, plus some reference points for details. The idea was to make the bag flat, unlike other things I've made, in the musette genre of bag shapes.

Attachments

I had some accessory rope that I wanted to use to make a sort of sacoche which I hadn't gotten to yet, and some D-rings from previous projects. The main material is the same from the porteur bag 2 and original frame bag: ECOPAK 200D from Rockywoods. Unbelievably overkill for this project, but I like it and the way it holds shape.

Knot

Knot 2

The internet is so good for learning knots, I used animated knots.com for these. The important one is the adjustable grip hitch, which makes the strap adjustable. Works super well, and it's nice to have one less piece of 'hardware' and instead just rely on the physics and friction of knots.

Bag edited

The quiet drama was whether it would actually fit the book, which is not an easy thing to guarantee because flexible fabric and uncertain seam tolerances add up in a fuzzy way during a project like this.

Book in the park

https://macwright.com/2026/05/05/intermezzo-bag.html
Extensions
Recently
Show full content

I spent a lot of time outside in April. The first two weekends I did long bike rides: from Brooklyn to Tarrytown along the Old Croton Aqueduct trail, and out to Rockaway Beach via the Marine Parkway Bridge & Cross Bay Memorial Bridge.

Then, I ran the Brooklyn Experience Half Marathon. I wrote some notes about the experience over in /micro. I properly trained for it this time, and it felt good and was pretty fast: shaved five minutes off my previous record.

And then, the Great Saunter…

Great Saunter

The Great Saunter is a full loop around Manhattan. The route is 32 miles but it took us 33 with GPS jitter and detours. Ten hours and forty-three minutes. It was very difficult, in a lot of ways tougher than the half-marathon in terms of the stress it puts on the body.

I'm getting more comfortable with longer endurance events, but still have no interest in running a marathon, and definitely no ultramarathons. A 200-300km randonneuring ride though could be in the cards.

Reading

I read The Origins of Efficiency by Brian Potter, the author of Construction Physics. I learned that I like his blogging better than his book-length writing: for example, this month's article Helium is Hard to Replace is really great, with understandable and fascinating charts and examples.

there’s a final layer to this argument that nobody’s quite articulated yet. product quality improvements, at the frontier, are not bounded by how fast you can write code. they’re bounded by how fast you can come up with ideas good enough to push the frontier.

I liked claude code is not making your product better, and think it perfectly rhymes with John Cutler's post about maximizers vs. focusers which isn't directly about AI. Maximizers are overrepresented in the top rungs on tech companies, people who are marked by opportunistic, experimental thinking, and for them the ability to implement a ton of features really quickly even at low quality is a gift. Their ability to enact their will was previously gated by the people doing the coding and designing, who mostly dislike pushing low-quality work. Now it isn't, as much.

I took the time to thoroughly read through JavaScript has a Unicode Problem and JavaScript’s internal character encoding: UCS-2 or UTF-16? They're from 2013 but still relevant, and really engaging from a technical perspective if you are very interested in text encoding and also JavaScript, which I am.

Listening

An excellent month for music. The new Gregory Uhlman (guitarist for SML) album.

New Mammal Hands, too.

New album from Dosh, Ismaily, Young. Dosh who you might know from being Andrew Bird's drummer at one point (after Kevin O'Donnell and before Griffin Goldsmith).

The Bad Plus's final album from back in 2024! They're on a farewell tour right now, all things must come to an end.

Watching

This was a great long watch on some math concepts that I've had to re-learn a bunch of times, and it was the first time that the idea of a quaternion really clicked for me. Freya's channel has a lot more great videos.

Jamelle Bouie's channel is consistently the best video commentary on the details of US politics I can find.

https://macwright.com/2026/05/04/recently.html
Recently

I spent a lot of time outside in April. The first two weekends I did long bike rides: from Brooklyn to Tarrytown along the Old Croton Aqueduct trail, and out to Rockaway Beach via the Marine Parkway Bridge & Cross Bay Memorial Bridge.

Then, I ran the Brooklyn Experience Half Marathon. I wrote some notes about the experience over in /micro. I properly trained for it this time, and it felt good and was pretty fast: shaved five minutes off my previous record.

And then, the Great Saunter…

Great Saunter

The Great Saunter is a full loop around Manhattan. The route is 32 miles but it took us 33 with GPS jitter and detours. Ten hours and forty-three minutes. It was very difficult, in a lot of ways tougher than the half-marathon in terms of the stress it puts on the body.

I'm getting more comfortable with longer endurance events, but still have no interest in running a marathon, and definitely no ultramarathons. A 200-300km randonneuring ride though could be in the cards.

Reading

I read The Origins of Efficiency by Brian Potter, the author of Construction Physics. I learned that I like his blogging better than his book-length writing: for example, this month's article Helium is Hard to Replace is really great, with understandable and fascinating charts and examples.

there’s a final layer to this argument that nobody’s quite articulated yet. product quality improvements, at the frontier, are not bounded by how fast you can write code. they’re bounded by how fast you can come up with ideas good enough to push the frontier.

I liked claude code is not making your product better, and think it perfectly rhymes with John Cutler's post about maximizers vs. focusers which isn't directly about AI. Maximizers are overrepresented in the top rungs on tech companies, people who are marked by opportunistic, experimental thinking, and for them the ability to implement a ton of features really quickly even at low quality is a gift. Their ability to enact their will was previously gated by the people doing the coding and designing, who mostly dislike pushing low-quality work. Now it isn't, as much.

I took the time to thoroughly read through JavaScript has a Unicode Problem and JavaScript’s internal character encoding: UCS-2 or UTF-16? They're from 2013 but still relevant, and really engaging from a technical perspective if you are very interested in text encoding and also JavaScript, which I am.

Listening

An excellent month for music. The new Gregory Uhlman (guitarist for SML) album.

New Mammal Hands, too.

New album from Dosh, Ismaily, Young. Dosh who you might know from being Andrew Bird's drummer at one point (after Kevin O'Donnell and before Griffin Goldsmith).

The Bad Plus's final album from back in 2024! They're on a farewell tour right now, all things must come to an end.

Watching

This was a great long watch on some math concepts that I've had to re-learn a bunch of times, and it was the first time that the idea of a quaternion really clicked for me. Freya's channel has a lot more great videos.

Jamelle Bouie's channel is consistently the best video commentary on the details of US politics I can find.

https://macwright.com/2026/05/04/recently.html
Extensions
Eleventy
Show full content

11ty in a pastoral setting

When I started this blog in 2011, I built it using Jekyll. Jekyll served me well for fifteen years. It was fast enough, and though it would take me an hour or two to get the system reinstalled when I switched laptops, it mostly just worked. But late last year, I was in the midst of updating all of my local installations to the latest versions of their runtimes, and when I tried to update Jekyll to Ruby 4, it wouldn't go. The Jekyll project did eventually merge support for Ruby 4 (a one-line fix) in February , but I took this as a sign to get going.

I probably could have kept on with Jekyll for another few years, but there's no denying the project has slowed down, and my optimization stack for this blog has gotten a little more complicated - it'd be nice to use a tool more optimization-minded and simplify my toolchain.

So: I switched to 11ty. Or, as it is about to be called Build Awesome. I switched and started to write this blog post before all of the hubbub: I have some thoughts, but that's not the point.

Why eleventy for macwright.com?

The 800 pound gorilla is Astro, not Eleventy. There are lots of other static site generators, like hakyll (in Haskell) or dodeca (in Rust). I could build one myself, as many have before.

For this site, I don't have any other stakeholders. I don't have to onboard anyone to new tech, or impress anyone with my decisions. There are a few simple priorities for this website:

  1. Simplicity
  2. Longevity
  3. Speed

I care about both internal and external simplicity: both the simplicity of the API as well as the implementation. This is because for any tool, I expect it to break, and I want to be able to open it up and find the problem. It's also a key factor because complex projects are dramatically harder to maintain, so they tend to have lower longevity if they don't achieve dominance.

Longevity is hard to predict. The Lindy Effect is a good shortcut:

the future life expectancy of some non-perishable thing, like a technology or an idea, is proportional to its current age

But in tech, the newest solution could also be the best one. You have to do a little bit of predicting. Large contributor bases are also indicative, but only if they represent multiple entities. A project with lots of contributors from the same company can get quiet very quickly if they lay everyone off. It also counts if the project has survived multiple changes in control and power.

For this website, I care more about end-user speed than development speed. Whether it takes 100ms to preview a Markdown change for me doesn't matter as much as how long a pageload takes for a reader. Most static site generators are pretty fast if you don't do silly things anyway. In my experience, SSGs that were "slow to build" had nested loops that soaked up most of the time.

Eleventy checks enough of these boxes. The contributor base is quite small, but Zach is very persistent and has been through it all. It's both fast to build websites, and has lots of tools for optimizing websites - tools that let me replace custom code I had written for macwright.com. And, in sharp contrast to Astro, it is written with internal simplicity as a priority. It is both a small project in terms of lines-of-code, and it is also not dependent on mega-dependencies. A fresh install of Astro includes 246 dependencies, including Vite and esbuild. Eleventy includes about half - 116 dependencies, and they weigh 14.6MB instead of 87.9MB.

I think Eleventy could be even simpler (and made a small PR in that direction while writing this post) by cutting some old dependencies with unnecessary micro-dependencies in them. The e18e project to remove and shrink dependencies is so needed!

SSGs are a tough way to make a living

Of course, there's the news: Eleventy is now Build Awesome. This comes on the tails of lots of similar announcements from other projects:

Because these are open source projects, the word "acquired" deserves an asterisk: usually they're hiring the team, maybe getting the trademark, and whatever business lines were there.

Zach got a bit of heat for this move. I agree that 'Build Awesome' sounds millenial and Eleventy was a cooler name. The rebrand was odd.

But overall, I get it. You can't slowly trickle out a big strategy and product launch and consult everyone. Eleventy fits fairly well with the rest of the Web Awesome products: icons, web components, and a static site builder. They're all good web tools in the traditionalist rather than frontend-maximalist vein.

I think as we've seen, it's also extraordinarily difficult to monetize low-level tooling, in large part because every developer is ready to start building their own SSG for any reason or no reason at all because it sounds like a fun side-project. You can monetize higher-level content tooling - Kirby, Sanity, and a few other site generators with a CMS component have done that and built small, sustainable businesses. But something in the exact shape of Eleventy doesn't work as a small product business. You'd have to do services, at the bare minimum.

So, the outcomes are kind of like:

  1. They get acquired by some large, possibly public company as a way to increase the platform for their hosting / CDN product. This is the fate of Astro, Nuxt, Gatsby, Remix, and to some extent, Begin. Jekyll was this from the start: it was created by Tom Preston-Warner at GitHub and was the jet fuel for making GitHub Pages a success.
  2. The maintainer never goes full time and has some lightweight day job or indirect way of making money. This I also heavily associate with the pleasure of living in a country with a strong welfare state and affordable healthcare. I really appreciate how much long-term, high-quality software comes out of this scenario but cannot emphasize how bad it is to buy your healthcare on the exchanges every month.
  3. They attempt to build a company around it, directly related to the tool. Remix did this early on, selling licenses, and Astro attempted to launch some products. Eleventy is trying this out, in combination with launching a CMS and some other features.

It's not easy: you can't achieve #2 if you live in America and have a family, and #1 is perhaps an 'ignorance is bliss' kind of solution in that open source isn't really sustainable if it's only a loss-leader.

Eleventy so far

So anyway, I've been using Eleventy since January, how is it going?

Mostly good! Some highlights include using the Image plugin to optimize my images even more than they used to be optimized, and pulling HTML minification straight into the build process with a little optimize plugin. Building the site is a bit faster than it used to be, and using Eleventy's powerful-but-confusing directory data files, I've been able to simplify each blog post, using directories instead of frontmatter for categories.

Templating is fun: using Vento templates is mostly great because they let me write arbitrary JavaScript in templates. And unlike Liquid, they don't quietly fail.

WebC is a source of joy and pain for me. In one sense, it's an absolutely golden tool: it lets you embed components in pages with server-side rendering, automatic bundling, and excellent performance. It's simple, too! The package is small because it doesn't pull in a big JavaScript transpiler like esbuild. I used WebC recently for the chart on In the Atmosphere and the demo in Color dithering.

But there is pain, too. It's a very unique tool with lots of constraints, and if you mess something up it fails hard. The documentation merely gestures at its potential and leaves lots and lots of questions unanswered. I think it could be amazing and is already quite good, but it needs a lot more love, as Zach admitted in a recent talk.

For both WebC and Eleventy, I have mixed feelings about the non-adoption of TypeScript. WebC had a bug that would be trivially identified by TypeScript or even just a linter. I think the tooling for these projects could be a bunch better.

But complaining is overrated: I've been trying to contribute to the projects. Mostly this means contributing to the documentation, which could still use a lot of work. The commercialization of Eleventy complicates this, which is partially why I've been stalled on documentation updates since February: it opens the question of whether there'll be some great, paid documentation contributor swooping in and making everything I do irrelevant. Maybe the Kickstarter campaign will do really well and there'll be multiple funded maintainers, or at least Zach will be comfortably full-time. I hope that at least it frees up enough time for 11ty and all if its related projects to get lots of pull requests reviews and merged, because unfortunately the pace there has been slow.


Should you use Eleventy? Maybe! Building a new static site generator from scratch is fun, but participating in a community and improving a popular tool is enriching in a totally different way.

Eleventy has a lot less buzz than Astro. And it has a lot of its own issues. But like other software, it's an expression of a vision and a bunch of values, and a lot of that resonates with me. I hope that it's the right kind of software, and I'll still be using it in 15 years.

Oh, and if you're excited about the Build Awesome launch, sign up for its Kickstarter. I'll probably chip in a few bucks too.

https://macwright.com/2026/04/17/eleventy.html
Eleventy

11ty in a pastoral setting

When I started this blog in 2011, I built it using Jekyll. Jekyll served me well for fifteen years. It was fast enough, and though it would take me an hour or two to get the system reinstalled when I switched laptops, it mostly just worked. But late last year, I was in the midst of updating all of my local installations to the latest versions of their runtimes, and when I tried to update Jekyll to Ruby 4, it wouldn't go. The Jekyll project did eventually merge support for Ruby 4 (a one-line fix) in February , but I took this as a sign to get going.

I probably could have kept on with Jekyll for another few years, but there's no denying the project has slowed down, and my optimization stack for this blog has gotten a little more complicated - it'd be nice to use a tool more optimization-minded and simplify my toolchain.

So: I switched to 11ty. Or, as it is about to be called Build Awesome. I switched and started to write this blog post before all of the hubbub: I have some thoughts, but that's not the point.

Why eleventy for macwright.com?

The 800 pound gorilla is Astro, not Eleventy. There are lots of other static site generators, like hakyll (in Haskell) or dodeca (in Rust). I could build one myself, as many have before.

For this site, I don't have any other stakeholders. I don't have to onboard anyone to new tech, or impress anyone with my decisions. There are a few simple priorities for this website:

  1. Simplicity
  2. Longevity
  3. Speed

I care about both internal and external simplicity: both the simplicity of the API as well as the implementation. This is because for any tool, I expect it to break, and I want to be able to open it up and find the problem. It's also a key factor because complex projects are dramatically harder to maintain, so they tend to have lower longevity if they don't achieve dominance.

Longevity is hard to predict. The Lindy Effect is a good shortcut:

the future life expectancy of some non-perishable thing, like a technology or an idea, is proportional to its current age

But in tech, the newest solution could also be the best one. You have to do a little bit of predicting. Large contributor bases are also indicative, but only if they represent multiple entities. A project with lots of contributors from the same company can get quiet very quickly if they lay everyone off. It also counts if the project has survived multiple changes in control and power.

For this website, I care more about end-user speed than development speed. Whether it takes 100ms to preview a Markdown change for me doesn't matter as much as how long a pageload takes for a reader. Most static site generators are pretty fast if you don't do silly things anyway. In my experience, SSGs that were "slow to build" had nested loops that soaked up most of the time.

Eleventy checks enough of these boxes. The contributor base is quite small, but Zach is very persistent and has been through it all. It's both fast to build websites, and has lots of tools for optimizing websites - tools that let me replace custom code I had written for macwright.com. And, in sharp contrast to Astro, it is written with internal simplicity as a priority. It is both a small project in terms of lines-of-code, and it is also not dependent on mega-dependencies. A fresh install of Astro includes 246 dependencies, including Vite and esbuild. Eleventy includes about half - 116 dependencies, and they weigh 14.6MB instead of 87.9MB.

I think Eleventy could be even simpler (and made a small PR in that direction while writing this post) by cutting some old dependencies with unnecessary micro-dependencies in them. The e18e project to remove and shrink dependencies is so needed!

SSGs are a tough way to make a living

Of course, there's the news: Eleventy is now Build Awesome. This comes on the tails of lots of similar announcements from other projects:

Because these are open source projects, the word "acquired" deserves an asterisk: usually they're hiring the team, maybe getting the trademark, and whatever business lines were there.

Zach got a bit of heat for this move. I agree that 'Build Awesome' sounds millenial and Eleventy was a cooler name. The rebrand was odd.

But overall, I get it. You can't slowly trickle out a big strategy and product launch and consult everyone. Eleventy fits fairly well with the rest of the Web Awesome products: icons, web components, and a static site builder. They're all good web tools in the traditionalist rather than frontend-maximalist vein.

I think as we've seen, it's also extraordinarily difficult to monetize low-level tooling, in large part because every developer is ready to start building their own SSG for any reason or no reason at all because it sounds like a fun side-project. You can monetize higher-level content tooling - Kirby, Sanity, and a few other site generators with a CMS component have done that and built small, sustainable businesses. But something in the exact shape of Eleventy doesn't work as a small product business. You'd have to do services, at the bare minimum.

So, the outcomes are kind of like:

  1. They get acquired by some large, possibly public company as a way to increase the platform for their hosting / CDN product. This is the fate of Astro, Nuxt, Gatsby, Remix, and to some extent, Begin. Jekyll was this from the start: it was created by Tom Preston-Warner at GitHub and was the jet fuel for making GitHub Pages a success.
  2. The maintainer never goes full time and has some lightweight day job or indirect way of making money. This I also heavily associate with the pleasure of living in a country with a strong welfare state and affordable healthcare. I really appreciate how much long-term, high-quality software comes out of this scenario but cannot emphasize how bad it is to buy your healthcare on the exchanges every month.
  3. They attempt to build a company around it, directly related to the tool. Remix did this early on, selling licenses, and Astro attempted to launch some products. Eleventy is trying this out, in combination with launching a CMS and some other features.

It's not easy: you can't achieve #2 if you live in America and have a family, and #1 is perhaps an 'ignorance is bliss' kind of solution in that open source isn't really sustainable if it's only a loss-leader.

Eleventy so far

So anyway, I've been using Eleventy since January, how is it going?

Mostly good! Some highlights include using the Image plugin to optimize my images even more than they used to be optimized, and pulling HTML minification straight into the build process with a little optimize plugin. Building the site is a bit faster than it used to be, and using Eleventy's powerful-but-confusing directory data files, I've been able to simplify each blog post, using directories instead of frontmatter for categories.

Templating is fun: using Vento templates is mostly great because they let me write arbitrary JavaScript in templates. And unlike Liquid, they don't quietly fail.

WebC is a source of joy and pain for me. In one sense, it's an absolutely golden tool: it lets you embed components in pages with server-side rendering, automatic bundling, and excellent performance. It's simple, too! The package is small because it doesn't pull in a big JavaScript transpiler like esbuild. I used WebC recently for the chart on In the Atmosphere and the demo in Color dithering.

But there is pain, too. It's a very unique tool with lots of constraints, and if you mess something up it fails hard. The documentation merely gestures at its potential and leaves lots and lots of questions unanswered. I think it could be amazing and is already quite good, but it needs a lot more love, as Zach admitted in a recent talk.

For both WebC and Eleventy, I have mixed feelings about the non-adoption of TypeScript. WebC had a bug that would be trivially identified by TypeScript or even just a linter. I think the tooling for these projects could be a bunch better.

But complaining is overrated: I've been trying to contribute to the projects. Mostly this means contributing to the documentation, which could still use a lot of work. The commercialization of Eleventy complicates this, which is partially why I've been stalled on documentation updates since February: it opens the question of whether there'll be some great, paid documentation contributor swooping in and making everything I do irrelevant. Maybe the Kickstarter campaign will do really well and there'll be multiple funded maintainers, or at least Zach will be comfortably full-time. I hope that at least it frees up enough time for 11ty and all if its related projects to get lots of pull requests reviews and merged, because unfortunately the pace there has been slow.


Should you use Eleventy? Maybe! Building a new static site generator from scratch is fun, but participating in a community and improving a popular tool is enriching in a totally different way.

Eleventy has a lot less buzz than Astro. And it has a lot of its own issues. But like other software, it's an expression of a vision and a bunch of values, and a lot of that resonates with me. I hope that it's the right kind of software, and I'll still be using it in 15 years.

Oh, and if you're excited about the Build Awesome launch, sign up for its Kickstarter. I'll probably chip in a few bucks too.

https://macwright.com/2026/04/17/eleventy.html
Extensions
In the Atmosphere
Show full content

Stacked Hills 1

The mascot of ATmosphereConf is a goose, accompanied by the motto we can just do things. I thought about this line often while I was in Vancouver for the event. Everyone was active: writing, managing communities, building side projects or businesses on Bluesky, and building Bluesky itself. The energy was fertile and optimistic. Even deep critiques, like Erin Kissane's beautiful Landslide or Blaine Cook's Software Ecologies, had hope that this community and technology could 'fix' the social internet.

The other refrain of the conference was that Meta, Google, TikTok, and other centralized social platforms have failed, and the AT Protocol could be the key to their replacements. From my seat, the need to decentralize social media is obvious enough that I don't write about it, and the only real question is which social, financial, and technology structure is actually capable of succeeding. There have been a lot of attempts to unseat Facebook, and most have run out of cash, gotten acquired, or lost steam.

As I mentioned in my last post about the AT Protocol, I've been around long enough to have tried previous attempts to decentralize the web and defeat the giants. I've also lived through a prior wave of open source optimism and seen how it can get weird.[1] Being amongst this relatively new and energetic community gave me renewed hope for the creative and weird parts of the web, but it also made me wonder where this is all going.

Who is in this community?

Stacked Hills 2

The people who attended were more far more diverse across multiple axes than I'd ever seen at a large tech-related event. To many people on the fringes, the "blue" in Bluesky is for liberal, and as far as I could tell it was a thoroughly left-wing culture, defined by inclusivity and respect.

It was also extremely dense with accomplished thinkers and programmers, like Schuyler Erle, who invented a lot of web mapping technology, Paul Syverson, who invented Onion Routing, Mike McCue, who worked on Netscape Navigator, and Dan Abramov, who co-created Redux and worked on React. Smart people like this thing.

It also had a lot of people from specific sub-communities and people who seemed like they were from an organizing background.

How did everyone justify the trip to Vancouver, though?

Some people were operating companies built on or with AT Protocol: Germ, Leaflet, Graze, Fedica, BlackSky, Stream.place, and Surf. (not an exhaustive list)

Then there were people working on side projects, many of which they want to devote full-time energy to, like Tiny Town, Sill, and Cartridge.

Then others were affiliated with academia or non-profits, like A New Social or New Public. And some folks were just in Vancouver so it was a pretty easy trip.

Echoes of an earlier wave

Stacked Hills 3

Everything about the AT Protocol community is so new, small, personal, and altruistic.

Individual people are running essential infrastructure in their free time: for instance, this talk by fig, how how they're building incredible services on a shoestring budget, largely as a solo effort. There are a bunch of people like this in the community, maintaining high-quality SDKs, services, and more that everyone else builds on.

The companies are also nascent. There are a few companies that pivoted into working with Bluesky, like Fedica, and have a business plan figured out. But out of the companies built on AT Protocol from the start, most of them are at the seed stage or earlier, and some of the talks at the conference probably shared material with investor pitch decks. One of the few companies that had raised money, Graze, had this to say in a fantastic talk:

The first, and most important, is that fundraising is exceptionaly difficult in the current environment in general, and profoundly difficult with social media [...] AT Proto is not growing exponentially which means functionally it is a non-starter for VC investment [...] The AI hype cycle has all but consumed available oxygen that would otherwise remain. On top of that, there's a common misconception that social is 'solved' [...] honestly do not mention AT Proto, at least until it goes exponential again.

I also noticed that there's a very strong movement from the community to avoid traditional corporate formats and funding mechanisms.

A lot of projects are following Bluesky's lead in forming as benefit corporations. The PBC structure is interesting - a few companies with that structure have gone public, like Planet labs and Allbirds. As far as I can tell though, the actual power of the designation has never been tested in court - the idea is that companies with the PBC format have a specific purpose which is part of their charter and if they don't stick to it and if 2% of shareholders want to sue, they can be sued for it. The purpose of Planet Labs is "to accelerate humanity toward a more sustainable, secure, and prosperous world, by illuminating environmental and social change" and the purpose of Bluesky is "to develop and drive large-scale adoption of technologies for open and decentralized public conversation" so I'm not sure that there's much legal teeth to this idea. It is a very nice gesture though. Germ and Graze are both PBCs.

There are also a lot of projects trying to avoid the profit-driven company format entirely. Bridgy Fed, a service that I happily use to syndicate my Mastodon posts to Bluesky, is backed by a non-profit funded by its community and creators (one of whom co-created Google App Engine). Roundabout, another AT Protocol-based product, is under the non-profit New Public. Even the Knight Foundation backed Bluesky itself.

Because I have an irrepressible need to know these things, here's a quick primer in where this money comes from:

There aren't any huge surprises in there: big amounts of money tend to come from people who have a lot of money, and these are mostly innocuous funders.

But what about AI?

Stacked Hills 5

What about AI. Everything is about AI now.

Most of the sessions that I attended didn't mention AI. Nevertheless, I think that AI is one of the ingredients for how this community is building so fast: during a panel of designers, dame said that they heavily use LLMs to build Anisota, their moth-themed social media interface, and many of the demos had a bit of LLM odor to them. There a few moments of full AI-optimism, like Cameron's talk about void, his chatbot 'with a memory', and Alex Komoroske talking about the Resonant Computing Manifesto and saying that AI could be 'bigger than the printing press.'

I loved that it wasn't a conference about AI. I'm not an AI-hater or an AI-doomer. I'm bored to tears by the discourse. I don't want to hear another Stanford CS grad talk about the big thoughts they had the first time in their lives that they thought about the theory of mind.

I don't care about which historical technology you want to compare it to or whether junior programmers or senior programmers or designers or managers are going to come out on top or on bottom. I don't care about the new way someone found to run 8 agents at the same time bossing each other around. When products add a magic chatbox as the new way to do everything, I don't find it exciting. It's all just so boring, monotonous, derivative, uncreative, and hype-driven.

Yes, it's important and it'll change the world. But vanishingly few people have anything to say about it.


That said, Bluesky announced Attie during the conference, and AI vibecoding interface / chatbot which allows people to build custom interfaces and feeds for the AT Protocol. You ask it to create a feed about sports, and it writes some filtering code and queries the lexicons and builds it for you.

This is at the intersection of two things I don't really care about: 'vibecoding' and 'custom feeds for discovery.' It's a product for someone else - probably a lot of people, because algorithmic discovery is a hard expectation of people raised on TikTok who expect perfectly curated content.

This launch generated a lot of controversy for roughly two reasons.

The first is obvious: it's AI, and a lot of people strongly dislike AI. Many, many people blocked the Attie account in protest, and there's a flare-up of fears around AI training on Bluesky data again. Cleverly, I think, Attie is intentionally not something that would ever train on Bluesky data and it also never generates content for users, so it isn't a slop machine.[2]

The other is that this feature definitely stomps on or near much smaller efforts from people and companies in the community. That means Graze, Surf, Skyfeed, Cosmik's Semble, and I'm sure many others. Custom feeds quickly became the most crowded and competitive space in the Atmosphere.

I think that Trezy's blog post about this is a great, critical explanation of what's going on and what the risks are:

Then there's the question of collateral damage. Leaflet just announced a pro subscription. The standard.site coalition has been building something genuinely collaborative across multiple teams. Watching that presentation, it felt like any of us could be next.

I think he has a strong point: Bluesky PBC is in a tough position, both fighting for relevance as a social media company and trying to foster a community of open source projects and small companies. A lot of the next features that Bluesky might introduce are already things being worked on by small companies. What should they do - acquire them, compete with them, defer to them? Trezy is right that they should at least coordinate with them.

The money thing. The growth thing.

What the community has right now is a tremendous amount of energy, creativity, and good vibes, but pretty dim prospects for business. This can turn around in an instant - venture capitalists are trend-followers above all, and one good success story becomes everyone else's pitch. But right now, the amounts raised by companies in the ecosystem are tiny. Rudy quoted $6.2k MRR for BlackSky, which is a huge achievement, but to bring the full team of six on full-time would need to quadruple at least. Graze's $1M funding round is pretty small by most definitions.

But underneath that is the usage problem. None of the charts of Bluesky adoption look good. It's a niche community that loves to use new applications from the community. Bluesky has, by one measure, around 5 million active users in comparison to Threads claiming 400 million active users. Nothing of importance has ever been posted to Threads, the gas-leak social network, but nevertheless.

My guess is that algorithmic feeds, which segue into communities on Bluesky, could tilt the curve up and make Bluesky palatable for users who don't expect to curate their social media, but also don't want a firehose of all content. Or maybe the next big thing is live events on Bluesky, taking some inspiration from the success of streaming and making the platform more useful for sports and stuff.

Maybe solving the user-growth problem solves the venture capital problem, which solves the funding problem for startups, and that's good for the community in the end.

Is it really that bad for a social network to have five million devoted users instead of four hundred million? It's definitely not enough for Bluesky-the-company to succeed, and Bluesky accounts being a niche thing makes the pitch for AT Protocol apps a lot harder. "Sign in with your internet handle" isn't as compelling if most people don't have one. Compare to just signing in with a Google, Apple, or GitHub account, and the AT Protocol option is just worse for most people.

That said, Bluesky at its current size - and the AT Protocol community at its current size - is perfectly fine? For all of the worries about the network 'dying,' just having linear user growth during a period in which the app changes and experiments with new features isn't the end of the world. Popularity isn't everything.

Being there

In between all of the big thoughts, the rest of it was lovely. Everyone was incredibly friendly and welcoming, the venue had actual good vegan food, and on the mornings I ran the Salish Trail, through second-growth forests of hemlock and douglas firs. I skipped the parties in Vancouver to conserve my social batteries, which might've been a double-good idea because a lot of people got COVID, and small contained spaces probably didn't help.

The experience filled me with optimism and excitement. This is an early stage for this community, and it could turn out a whole bunch of ways. I hope that we look back on these years as the the time when a new, better internet was being born. It could work out.


  1. I'm talking about Mapbox, mostly. We built everything in the open, including some really core technology that was exceptionally difficult to figure out. And it ended up being really weird: a bunch of hyperscalers started to run Mapbox tech and compete with the company, which led Mapbox to change the license for their main map rendering technology, which alienated the open source community and led to a hard fork which is funded mostly by Microsoft and a few big companies. This experience left me with some complicated feelings. ↩︎

  2. Whether this hatred is deserved is up for debate, but I think that many people have only experienced bad aspects of AI - low quality content, propaganda, threats of job losses. At the same time, the leaders of major AI companies don't do themselves any favors in terms of selling their technology the public. Suno's CEO saying "it's not really enjoyable to make music now" is what I think of when I think about this. Some of these people truly do not get it, with 'it' meaning any sense of enjoyment or satisfaction about anything. I do think in this instance Bluesky really was thoughtful about making an AI thing that doesn't create slop or train on user data. ↩︎

https://macwright.com/2026/04/05/in-the-atmosphere.html
In the Atmosphere

Stacked Hills 1

The mascot of ATmosphereConf is a goose, accompanied by the motto we can just do things. I thought about this line often while I was in Vancouver for the event. Everyone was active: writing, managing communities, building side projects or businesses on Bluesky, and building Bluesky itself. The energy was fertile and optimistic. Even deep critiques, like Erin Kissane's beautiful Landslide or Blaine Cook's Software Ecologies, had hope that this community and technology could 'fix' the social internet.

The other refrain of the conference was that Meta, Google, TikTok, and other centralized social platforms have failed, and the AT Protocol could be the key to their replacements. From my seat, the need to decentralize social media is obvious enough that I don't write about it, and the only real question is which social, financial, and technology structure is actually capable of succeeding. There have been a lot of attempts to unseat Facebook, and most have run out of cash, gotten acquired, or lost steam.

As I mentioned in my last post about the AT Protocol, I've been around long enough to have tried previous attempts to decentralize the web and defeat the giants. I've also lived through a prior wave of open source optimism and seen how it can get weird.[1] Being amongst this relatively new and energetic community gave me renewed hope for the creative and weird parts of the web, but it also made me wonder where this is all going.

Who is in this community?

Stacked Hills 2

The people who attended were more far more diverse across multiple axes than I'd ever seen at a large tech-related event. To many people on the fringes, the "blue" in Bluesky is for liberal, and as far as I could tell it was a thoroughly left-wing culture, defined by inclusivity and respect.

It was also extremely dense with accomplished thinkers and programmers, like Schuyler Erle, who invented a lot of web mapping technology, Paul Syverson, who invented Onion Routing, Mike McCue, who worked on Netscape Navigator, and Dan Abramov, who co-created Redux and worked on React. Smart people like this thing.

It also had a lot of people from specific sub-communities and people who seemed like they were from an organizing background.

How did everyone justify the trip to Vancouver, though?

Some people were operating companies built on or with AT Protocol: Germ, Leaflet, Graze, Fedica, BlackSky, Stream.place, and Surf. (not an exhaustive list)

Then there were people working on side projects, many of which they want to devote full-time energy to, like Tiny Town, Sill, and Cartridge.

Then others were affiliated with academia or non-profits, like A New Social or New Public. And some folks were just in Vancouver so it was a pretty easy trip.

Echoes of an earlier wave

Stacked Hills 3

Everything about the AT Protocol community is so new, small, personal, and altruistic.

Individual people are running essential infrastructure in their free time: for instance, this talk by fig, how how they're building incredible services on a shoestring budget, largely as a solo effort. There are a bunch of people like this in the community, maintaining high-quality SDKs, services, and more that everyone else builds on.

The companies are also nascent. There are a few companies that pivoted into working with Bluesky, like Fedica, and have a business plan figured out. But out of the companies built on AT Protocol from the start, most of them are at the seed stage or earlier, and some of the talks at the conference probably shared material with investor pitch decks. One of the few companies that had raised money, Graze, had this to say in a fantastic talk:

The first, and most important, is that fundraising is exceptionaly difficult in the current environment in general, and profoundly difficult with social media [...] AT Proto is not growing exponentially which means functionally it is a non-starter for VC investment [...] The AI hype cycle has all but consumed available oxygen that would otherwise remain. On top of that, there's a common misconception that social is 'solved' [...] honestly do not mention AT Proto, at least until it goes exponential again.

I also noticed that there's a very strong movement from the community to avoid traditional corporate formats and funding mechanisms.

A lot of projects are following Bluesky's lead in forming as benefit corporations. The PBC structure is interesting - a few companies with that structure have gone public, like Planet labs and Allbirds. As far as I can tell though, the actual power of the designation has never been tested in court - the idea is that companies with the PBC format have a specific purpose which is part of their charter and if they don't stick to it and if 2% of shareholders want to sue, they can be sued for it. The purpose of Planet Labs is "to accelerate humanity toward a more sustainable, secure, and prosperous world, by illuminating environmental and social change" and the purpose of Bluesky is "to develop and drive large-scale adoption of technologies for open and decentralized public conversation" so I'm not sure that there's much legal teeth to this idea. It is a very nice gesture though. Germ and Graze are both PBCs.

There are also a lot of projects trying to avoid the profit-driven company format entirely. Bridgy Fed, a service that I happily use to syndicate my Mastodon posts to Bluesky, is backed by a non-profit funded by its community and creators (one of whom co-created Google App Engine). Roundabout, another AT Protocol-based product, is under the non-profit New Public. Even the Knight Foundation backed Bluesky itself.

Because I have an irrepressible need to know these things, here's a quick primer in where this money comes from:

There aren't any huge surprises in there: big amounts of money tend to come from people who have a lot of money, and these are mostly innocuous funders.

But what about AI?

Stacked Hills 5

What about AI. Everything is about AI now.

Most of the sessions that I attended didn't mention AI. Nevertheless, I think that AI is one of the ingredients for how this community is building so fast: during a panel of designers, dame said that they heavily use LLMs to build Anisota, their moth-themed social media interface, and many of the demos had a bit of LLM odor to them. There a few moments of full AI-optimism, like Cameron's talk about void, his chatbot 'with a memory', and Alex Komoroske talking about the Resonant Computing Manifesto and saying that AI could be 'bigger than the printing press.'

I loved that it wasn't a conference about AI. I'm not an AI-hater or an AI-doomer. I'm bored to tears by the discourse. I don't want to hear another Stanford CS grad talk about the big thoughts they had the first time in their lives that they thought about the theory of mind.

I don't care about which historical technology you want to compare it to or whether junior programmers or senior programmers or designers or managers are going to come out on top or on bottom. I don't care about the new way someone found to run 8 agents at the same time bossing each other around. When products add a magic chatbox as the new way to do everything, I don't find it exciting. It's all just so boring, monotonous, derivative, uncreative, and hype-driven.

Yes, it's important and it'll change the world. But vanishingly few people have anything to say about it.


That said, Bluesky announced Attie during the conference, and AI vibecoding interface / chatbot which allows people to build custom interfaces and feeds for the AT Protocol. You ask it to create a feed about sports, and it writes some filtering code and queries the lexicons and builds it for you.

This is at the intersection of two things I don't really care about: 'vibecoding' and 'custom feeds for discovery.' It's a product for someone else - probably a lot of people, because algorithmic discovery is a hard expectation of people raised on TikTok who expect perfectly curated content.

This launch generated a lot of controversy for roughly two reasons.

The first is obvious: it's AI, and a lot of people strongly dislike AI. Many, many people blocked the Attie account in protest, and there's a flare-up of fears around AI training on Bluesky data again. Cleverly, I think, Attie is intentionally not something that would ever train on Bluesky data and it also never generates content for users, so it isn't a slop machine.[2]

The other is that this feature definitely stomps on or near much smaller efforts from people and companies in the community. That means Graze, Surf, Skyfeed, Cosmik's Semble, and I'm sure many others. Custom feeds quickly became the most crowded and competitive space in the Atmosphere.

I think that Trezy's blog post about this is a great, critical explanation of what's going on and what the risks are:

Then there's the question of collateral damage. Leaflet just announced a pro subscription. The standard.site coalition has been building something genuinely collaborative across multiple teams. Watching that presentation, it felt like any of us could be next.

I think he has a strong point: Bluesky PBC is in a tough position, both fighting for relevance as a social media company and trying to foster a community of open source projects and small companies. A lot of the next features that Bluesky might introduce are already things being worked on by small companies. What should they do - acquire them, compete with them, defer to them? Trezy is right that they should at least coordinate with them.

The money thing. The growth thing.

What the community has right now is a tremendous amount of energy, creativity, and good vibes, but pretty dim prospects for business. This can turn around in an instant - venture capitalists are trend-followers above all, and one good success story becomes everyone else's pitch. But right now, the amounts raised by companies in the ecosystem are tiny. Rudy quoted $6.2k MRR for BlackSky, which is a huge achievement, but to bring the full team of six on full-time would need to quadruple at least. Graze's $1M funding round is pretty small by most definitions.

But underneath that is the usage problem. None of the charts of Bluesky adoption look good. It's a niche community that loves to use new applications from the community. Bluesky has, by one measure, around 5 million active users in comparison to Threads claiming 400 million active users. Nothing of importance has ever been posted to Threads, the gas-leak social network, but nevertheless.

My guess is that algorithmic feeds, which segue into communities on Bluesky, could tilt the curve up and make Bluesky palatable for users who don't expect to curate their social media, but also don't want a firehose of all content. Or maybe the next big thing is live events on Bluesky, taking some inspiration from the success of streaming and making the platform more useful for sports and stuff.

Maybe solving the user-growth problem solves the venture capital problem, which solves the funding problem for startups, and that's good for the community in the end.

Is it really that bad for a social network to have five million devoted users instead of four hundred million? It's definitely not enough for Bluesky-the-company to succeed, and Bluesky accounts being a niche thing makes the pitch for AT Protocol apps a lot harder. "Sign in with your internet handle" isn't as compelling if most people don't have one. Compare to just signing in with a Google, Apple, or GitHub account, and the AT Protocol option is just worse for most people.

That said, Bluesky at its current size - and the AT Protocol community at its current size - is perfectly fine? For all of the worries about the network 'dying,' just having linear user growth during a period in which the app changes and experiments with new features isn't the end of the world. Popularity isn't everything.

Being there

In between all of the big thoughts, the rest of it was lovely. Everyone was incredibly friendly and welcoming, the venue had actual good vegan food, and on the mornings I ran the Salish Trail, through second-growth forests of hemlock and douglas firs. I skipped the parties in Vancouver to conserve my social batteries, which might've been a double-good idea because a lot of people got COVID, and small contained spaces probably didn't help.

The experience filled me with optimism and excitement. This is an early stage for this community, and it could turn out a whole bunch of ways. I hope that we look back on these years as the the time when a new, better internet was being born. It could work out.


  1. I'm talking about Mapbox, mostly. We built everything in the open, including some really core technology that was exceptionally difficult to figure out. And it ended up being really weird: a bunch of hyperscalers started to run Mapbox tech and compete with the company, which led Mapbox to change the license for their main map rendering technology, which alienated the open source community and led to a hard fork which is funded mostly by Microsoft and a few big companies. This experience left me with some complicated feelings. ↩︎

  2. Whether this hatred is deserved is up for debate, but I think that many people have only experienced bad aspects of AI - low quality content, propaganda, threats of job losses. At the same time, the leaders of major AI companies don't do themselves any favors in terms of selling their technology the public. Suno's CEO saying "it's not really enjoyable to make music now" is what I think of when I think about this. Some of these people truly do not get it, with 'it' meaning any sense of enjoyment or satisfaction about anything. I do think in this instance Bluesky really was thoughtful about making an AI thing that doesn't create slop or train on user data. ↩︎

https://macwright.com/2026/04/05/in-the-atmosphere.html
Extensions
Recently
Show full content

I have a bunch that I want to write about this month, but that'll all be in different posts. Just got back from Atmosphere Conf in Vancouver and settling into a false Brooklyn summer.

Reading

I read so much this month but have little to share here. Despite trying to keep a rich, diverse information diet, a lot of the articles blur into the same thing, and I've been reading too much on Instapaper. Saving articles for later is a powerful way to manage my time, but it produces a huge pile of content that I then feel obligated to work my way through.

No single data point better illustrates the cultural movement of youth than this: 42 percent of Gen Z watches anime weekly (compared to 25 percent of Millennials), but only 25 percent of Gen Z follows NFL football (compared to 44 percent of Millennials). Anime has transformed from niche subculture to mainstream entertainment.

From American Diner Gothic. There were parts of this article that resonated with my experiences with Gen Z, others that made the author seem like kind of a jerk, and when they discuss statistics around transgender people they either misuse or abuse the statistics. They compare the number of respondents who identified as transgender in 2017 (1.8 percent) to the number of identified as gender-diverse (trans, nonbinary, genderqueer, agender, two-spirit) in 2022. The latter number was higher, obviously, because it counted more groups, but the article treats them as apples-to-apples and uses this as evidence that Appalachian youth are more likely to be transgender. It's stuff like this that makes me always click the link back to the study when someone tries to justify something with statistics.

With a reasonably broad definition of simulation, most simulations we can see are not on computers: they’re in consciousnesses. What we find it natural to call a computer sophisticated enough to run our universe would likely be, on our terms, alive, or of undefined animacy.

I've been revisiting old Charlie Loyd articles and this is a great one, on Simulism. They're all great, really.

Watching

Editor's note: I've become aware that YouTube embeds aren't rendering for the blog in RSS readers. This is because I switched to lite-yt-embed some months back because YouTube was the main thing slowing down pageloads on macwright.com. I will find a way to do split rendering so that YouTube embeds are iframes in the RSS feed and lite-youtube elements on the website.

Anyway, enjoy this beautiful video of riding a bike through the beautiful woods accompanied by a trail dog, if you're looking at my website.

I am still loving Ben Levin's wildly creative and weird 3D-rendered videos. They're unabashedly creative and individual.

I didn't understand ISO either! This video really changed my mind about how it worked, pretty fun watch if you have a camera with any kind of manual control.

Drawing

This month I participated in an 'art challenge' again, and made some art every day. I tweaked my workflow a bit because I was producing so many images: I created an Automator Script to add EXIF times to scanned images so that they'd sort correctly in Capture One, and started fresh with a new Capture One library with much more organization.

I learned some new habits with watercolor - I bought some artists tape to secure the paper to a flat surface and stop it from curling so much, learned to pre-wet the paper if I wanted to do large areas of consistent color, and used the tilt of the paper to direct the flow of ink.

Brian cox

Color study

David Lynch

Hand curled

Guitar on couch

Landscape

Mushrooms

Onion

Shia

Titanic

It was fun, and I feel like I've graduated from the loomis method to a more direct way of drawing portraits.

https://macwright.com/2026/04/01/recently.html
Recently

I have a bunch that I want to write about this month, but that'll all be in different posts. Just got back from Atmosphere Conf in Vancouver and settling into a false Brooklyn summer.

Reading

I read so much this month but have little to share here. Despite trying to keep a rich, diverse information diet, a lot of the articles blur into the same thing, and I've been reading too much on Instapaper. Saving articles for later is a powerful way to manage my time, but it produces a huge pile of content that I then feel obligated to work my way through.

No single data point better illustrates the cultural movement of youth than this: 42 percent of Gen Z watches anime weekly (compared to 25 percent of Millennials), but only 25 percent of Gen Z follows NFL football (compared to 44 percent of Millennials). Anime has transformed from niche subculture to mainstream entertainment.

From American Diner Gothic. There were parts of this article that resonated with my experiences with Gen Z, others that made the author seem like kind of a jerk, and when they discuss statistics around transgender people they either misuse or abuse the statistics. They compare the number of respondents who identified as transgender in 2017 (1.8 percent) to the number of identified as gender-diverse (trans, nonbinary, genderqueer, agender, two-spirit) in 2022. The latter number was higher, obviously, because it counted more groups, but the article treats them as apples-to-apples and uses this as evidence that Appalachian youth are more likely to be transgender. It's stuff like this that makes me always click the link back to the study when someone tries to justify something with statistics.

With a reasonably broad definition of simulation, most simulations we can see are not on computers: they’re in consciousnesses. What we find it natural to call a computer sophisticated enough to run our universe would likely be, on our terms, alive, or of undefined animacy.

I've been revisiting old Charlie Loyd articles and this is a great one, on Simulism. They're all great, really.

Watching

Editor's note: I've become aware that YouTube embeds aren't rendering for the blog in RSS readers. This is because I switched to lite-yt-embed some months back because YouTube was the main thing slowing down pageloads on macwright.com. I will find a way to do split rendering so that YouTube embeds are iframes in the RSS feed and lite-youtube elements on the website.

Anyway, enjoy this beautiful video of riding a bike through the beautiful woods accompanied by a trail dog, if you're looking at my website.

I am still loving Ben Levin's wildly creative and weird 3D-rendered videos. They're unabashedly creative and individual.

I didn't understand ISO either! This video really changed my mind about how it worked, pretty fun watch if you have a camera with any kind of manual control.

Drawing

This month I participated in an 'art challenge' again, and made some art every day. I tweaked my workflow a bit because I was producing so many images: I created an Automator Script to add EXIF times to scanned images so that they'd sort correctly in Capture One, and started fresh with a new Capture One library with much more organization.

I learned some new habits with watercolor - I bought some artists tape to secure the paper to a flat surface and stop it from curling so much, learned to pre-wet the paper if I wanted to do large areas of consistent color, and used the tilt of the paper to direct the flow of ink.

Brian cox

Color study

David Lynch

Hand curled

Guitar on couch

Landscape

Mushrooms

Onion

Shia

Titanic

It was fun, and I feel like I've graduated from the loomis method to a more direct way of drawing portraits.

https://macwright.com/2026/04/01/recently.html
Extensions
I haven't made anything with AT Proto yet
Show full content

Landscape

I haven't made anything with AT Proto.

Okay, technically, I did made the Bluesky ThinkUp Tribute, which syncs with your Bluesky account and sends a nightly email about who changed their bio or handle on the website. It's a great little utility and I rely on it constantly. But that doesn't integrate very deeply with AT Proto.

I've fallen into the cycle of reading about AT Proto but not building anything on it: a pattern that I want to break. I blame other priorities for my lack of weekend hacking - when I do get time and energy to computer on the weekends I've spent it on maintaining and contributing to established projects instead of building new experiments. And my time during the week is mostly spent on Val Town priorities, like keeping the servers online, developing features, and implementing moderation.

I don't especially like writing about things without having 'something to show,' but to avoid the trap of neither writing nor building, here's some writing.


The tech that runs Bluesky is general-purpose

The AT Protocol is the tech that Bluesky, the Twitter alternative, is built on. It's fairly general-purpose and well-suited for building all kinds of applications, not just Bluesky, and has some very utopian ideas built in. Collectively, we're calling the stack and its applications the 'Atmosphere.'

This has been, recently, in my filter bubble, a big deal. Applications like Leaflet for blogging and tangled, a GitHub alternative, use the AT Protocol as core architecture, storing data on it, allowing other applications to provide alternative frontends, and using its identity system to let people log in with their domain names or Bluesky handles.

It is a breath of fresh air in the tech industry. The creativity of this community is inspiring, and with a few exceptions people are friendly and welcoming.


AT Proto learned lessons from other decentralization attempts

Decentralization has had a lot of false starts: see my old posts on Dat, IPFS, IPFS again, and Arweave for some of that backstory. I am a seeker in that space, ready to try out what's new and hoping that the technology works, even though most of the results so far have been lackluster.

The Bluesky team has a lot of experience with those previous efforts: Paul Frazee, the CTO cofounded Blue Link Labs which made Beaker and integrated with Dat, and he worked on Secure Scuttlebutt before that. Other Bluesky employees like Jeromy Johnson came from the IPFS team.

So Bluesky is a lot of people's second or third try at making decentralization work, and it shows in some of the thinking, especially Paul's writing about how Bluesky compares to P2P and magical mesh networks.

This is encouraging. A lot of decentralization ideas work in theory but not in practice. Much of the challenge is practical and human-level, and it is good that it seems like the Bluesky team anticipated things like moderating content from day one.


It's more like a magical database than like a new internet

The AT Protocol is a lot different from the decentralization tech that I've played around with the most, like Dat and IFPS. Both Dat and IPFS are kind of like 'generic blob stores': you can store any kind of content on them, and they had URL-like addressing for that content. They both aspired to be a sort of future-internet in shape: Dat had the Beaker Browser and for a while IPFS was built into the Brave Browser. So I kept trying to deploy my website onto these technologies, with varying success, and IPFS tried to host all of Wikipedia, with varying success.

AT Proto is more like a magic semi-schemaless database. A 'post' on Bluesky looks like this:

{
  "text": "some placemark updates: sorting & resizing table columns, new releases of simple-statistics and tokml, using changesets in all my projects\n\nmacwright.com/2026/03/15/o...",
  "$type": "app.bsky.feed.post",
  "embed": {
    "$type": "app.bsky.embed.external",
    "external": {
      "uri": "https://macwright.com/2026/03/15/oss-changelog",
      "title": "Placemark & OSS Changelog",
      "description": "JavaScript, math, maps, etc"
    }
  },
  "langs": ["en"],
  "facets": [{
    "index": { "byteEnd": 169, "byteStart": 140 },
    "features": [
      {
        "uri": "https://macwright.com/2026/03/15/oss-changelog",
        "$type": "app.bsky.richtext.facet#link"
      }
    ]
  }],
  "createdAt": "2026-03-15T23:03:29.022Z"
}

It's JSON-encoded, structured, and opinionated, and importantly, limited in size. Don't expect to put a ton of data in this Record - right now a record can't be more than 1MB when encoded as CBOR.

Of course a modern social network is nothing without images and vertical video, so Bluesky needs to store more than just JSON documents, and so there's Blob support - stored as raw binary data, referenced from a Record. Though blobs are limited too, with the limits varying by server but usually 100MB.

This was a big realization for me around tangled - that project which is extremely cool (rebuilding a more decentralized code collaboration platform) is not using AT Proto to store git data, but rather has servers called Knots that handle the git parts. It's a very cool infrastructure, but important to note that the way in which metadata and git content are stored is quite different.


Is AT Protocol a good database?

Obviously it isn't (just) a database but it's a useful frame: how does AT Protocol work with typical database requirements?

  • Can it store a lot of data? Yes, but in small bits. It's more of a DynamoDB than an S3.
  • Is it fast? It's surprisingly fast from what I've seen: stream.place uses the protocol for comments on livestreams, and they work quite well.
  • Is it reliable? It seems so: the whole thing is built on event-sourcing and streams, and it has both the ability to replay streams when servers go down as well as to sync archival data.
  • Is it decentralized? Kind of? It's federated, but if you have your data stored in a Personal Data Server, it isn't automatically replicated to other servers on the network. This is a unlike 'magical mesh networks' like secure scuttlebutt which store lots of copies of data.
  • Is it indexed? Kind of! Obviously you don't want to process all of the data across all of the Bluesky network, and thankfully services like jetstream let you filter to only a specific collection.

Privacy is still a hard unsolved problem

So: you can store structured documents on AT Proto and small binary blobs - what about privacy? This might change soon because there's so much active development, but right now: you can't really use AT Proto for private data.

Paul has written a great discussion of different approaches, and it's clear that there are deep problems that require introspection and thorough evaluation, but that nothing is deployed yet. Bluesky does have direct messages, but according to Gavin Anderegg's investigation, they're 'off-protocol' so not actually anywhere on AT Proto.

This is obviously a big stumbling block for applications. Val Town couldn't use the Atmosphere for data storage if there is no concept of privacy. Right now our traditional backend infrastructure (mostly Postgres) makes both privacy and good-enough encryption at rest (mostly AES-GCM) pretty simple to implement, if not foolproof.

There are experiments around implementing privacy on AT Proto, like Germ, but none have solved all of the problems that need solving.


What should I do with it?

I have plenty of existing and potential projects to use as testbeds for new technology: that's one of the main reason why side-projects can be so nice, is that they're safe places to use bleeding-edge technology without risking alienating your entire team at work. So where can I use AT Proto?

I would love to support sharing maps on Placemark again. Geospatial data probably won't fit in AT Proto records because it's fiendishly large and complex, but it could be squeezed into a blob if it's small enough. Maybe encoding JSON as CBOR is enough to shrink the data a bit without losing fidelity.

It would be really fun to get AT Proto logins working with Val Town: Orta implemented something similar for Puzzmo. Unfortunately user signup is a very knotty problem for us because, like every other hosting platform, we are in a daily battle with spammers. Orta's solution for Puzzmo was to make Bluesky login an additional, linked account along with your existing Puzzmo account, which makes a lot of sense.

I could also try to put this blog on AT Proto. standard.site has some specs for doing that, and sequoia would make publishing pretty easy. Leaflet.pub is riding high on their adoption of AT Proto for blogging. I'm honestly more confused than excited about this possibility: partly because RSS is already so good for publishing blogs, and because I'm not sure what syndicating to the atmosphere really does for this blog? I especially don't want to publish on AT Proto first, because rule #1 of macwright.com is to keep this site alive forever and avoid boondoggles.


Where does this go?

AT Proto is in a creative-explosion phase, which is really exciting. The way that the platform has been crafted makes it easy to incrementally introduce Atmosphere features to existing applications, and I am really relieved how little unnecessary jargon there seems to be, even though it's a very complicated system.

Of all the values it provides, I think a rock-solid sense of credible exit is the most consistently achieved. Being able to plug a different application into the same data, or to move your data from one host to another is incredible, as Dan Abramov wrote about in 'A Social Filesystem'.

Having been on the internet for a long time, I don't expect anything to last forever, and I won't be heartbroken when the flaws in the plan are inevitably identified or some bad actor spoils the party for a while.

I wonder about the long-term economics of the thing, though: Bluesky is essentially providing a free database to anyone who wants to implement the AppView part of the system. How long does this last, especially if some Atmosphere apps become successful and start generating lots of revenue. Companies do not like subsidizing each other.

I think that's a few years off. Maybe we start paying for a deluxe plan once we store a gigabyte or two on Bluesky's servers, or one of the stablecoin-based micropayments technologies takes off (let's be real, if one does, it'll be Stripe's) and popular applications pay for their user storage on other PDS systems, in a faint echo of Filecoin's failure.


A spell for creativity

I plan to return here and have something to show on AT Proto. Not to overthink it, to ship something. It's fun to read but even more fun to write code, or a bit of manic fun to use LLMs to prototype something. I'm having more success drawing a portrait every day and using my sewing machine than working on the internet on the weekends, but that is partly because of a pessimistic view of the current trend, and the Atmosphere is a trend I can get behind.

https://macwright.com/2026/03/16/atproto.html
I haven't made anything with AT Proto yet

Landscape

I haven't made anything with AT Proto.

Okay, technically, I did made the Bluesky ThinkUp Tribute, which syncs with your Bluesky account and sends a nightly email about who changed their bio or handle on the website. It's a great little utility and I rely on it constantly. But that doesn't integrate very deeply with AT Proto.

I've fallen into the cycle of reading about AT Proto but not building anything on it: a pattern that I want to break. I blame other priorities for my lack of weekend hacking - when I do get time and energy to computer on the weekends I've spent it on maintaining and contributing to established projects instead of building new experiments. And my time during the week is mostly spent on Val Town priorities, like keeping the servers online, developing features, and implementing moderation.

I don't especially like writing about things without having 'something to show,' but to avoid the trap of neither writing nor building, here's some writing.


The tech that runs Bluesky is general-purpose

The AT Protocol is the tech that Bluesky, the Twitter alternative, is built on. It's fairly general-purpose and well-suited for building all kinds of applications, not just Bluesky, and has some very utopian ideas built in. Collectively, we're calling the stack and its applications the 'Atmosphere.'

This has been, recently, in my filter bubble, a big deal. Applications like Leaflet for blogging and tangled, a GitHub alternative, use the AT Protocol as core architecture, storing data on it, allowing other applications to provide alternative frontends, and using its identity system to let people log in with their domain names or Bluesky handles.

It is a breath of fresh air in the tech industry. The creativity of this community is inspiring, and with a few exceptions people are friendly and welcoming.


AT Proto learned lessons from other decentralization attempts

Decentralization has had a lot of false starts: see my old posts on Dat, IPFS, IPFS again, and Arweave for some of that backstory. I am a seeker in that space, ready to try out what's new and hoping that the technology works, even though most of the results so far have been lackluster.

The Bluesky team has a lot of experience with those previous efforts: Paul Frazee, the CTO cofounded Blue Link Labs which made Beaker and integrated with Dat, and he worked on Secure Scuttlebutt before that. Other Bluesky employees like Jeromy Johnson came from the IPFS team.

So Bluesky is a lot of people's second or third try at making decentralization work, and it shows in some of the thinking, especially Paul's writing about how Bluesky compares to P2P and magical mesh networks.

This is encouraging. A lot of decentralization ideas work in theory but not in practice. Much of the challenge is practical and human-level, and it is good that it seems like the Bluesky team anticipated things like moderating content from day one.


It's more like a magical database than like a new internet

The AT Protocol is a lot different from the decentralization tech that I've played around with the most, like Dat and IFPS. Both Dat and IPFS are kind of like 'generic blob stores': you can store any kind of content on them, and they had URL-like addressing for that content. They both aspired to be a sort of future-internet in shape: Dat had the Beaker Browser and for a while IPFS was built into the Brave Browser. So I kept trying to deploy my website onto these technologies, with varying success, and IPFS tried to host all of Wikipedia, with varying success.

AT Proto is more like a magic semi-schemaless database. A 'post' on Bluesky looks like this:

{
  "text": "some placemark updates: sorting & resizing table columns, new releases of simple-statistics and tokml, using changesets in all my projects\n\nmacwright.com/2026/03/15/o...",
  "$type": "app.bsky.feed.post",
  "embed": {
    "$type": "app.bsky.embed.external",
    "external": {
      "uri": "https://macwright.com/2026/03/15/oss-changelog",
      "title": "Placemark & OSS Changelog",
      "description": "JavaScript, math, maps, etc"
    }
  },
  "langs": ["en"],
  "facets": [{
    "index": { "byteEnd": 169, "byteStart": 140 },
    "features": [
      {
        "uri": "https://macwright.com/2026/03/15/oss-changelog",
        "$type": "app.bsky.richtext.facet#link"
      }
    ]
  }],
  "createdAt": "2026-03-15T23:03:29.022Z"
}

It's JSON-encoded, structured, and opinionated, and importantly, limited in size. Don't expect to put a ton of data in this Record - right now a record can't be more than 1MB when encoded as CBOR.

Of course a modern social network is nothing without images and vertical video, so Bluesky needs to store more than just JSON documents, and so there's Blob support - stored as raw binary data, referenced from a Record. Though blobs are limited too, with the limits varying by server but usually 100MB.

This was a big realization for me around tangled - that project which is extremely cool (rebuilding a more decentralized code collaboration platform) is not using AT Proto to store git data, but rather has servers called Knots that handle the git parts. It's a very cool infrastructure, but important to note that the way in which metadata and git content are stored is quite different.


Is AT Protocol a good database?

Obviously it isn't (just) a database but it's a useful frame: how does AT Protocol work with typical database requirements?

  • Can it store a lot of data? Yes, but in small bits. It's more of a DynamoDB than an S3.
  • Is it fast? It's surprisingly fast from what I've seen: stream.place uses the protocol for comments on livestreams, and they work quite well.
  • Is it reliable? It seems so: the whole thing is built on event-sourcing and streams, and it has both the ability to replay streams when servers go down as well as to sync archival data.
  • Is it decentralized? Kind of? It's federated, but if you have your data stored in a Personal Data Server, it isn't automatically replicated to other servers on the network. This is a unlike 'magical mesh networks' like secure scuttlebutt which store lots of copies of data.
  • Is it indexed? Kind of! Obviously you don't want to process all of the data across all of the Bluesky network, and thankfully services like jetstream let you filter to only a specific collection.

Privacy is still a hard unsolved problem

So: you can store structured documents on AT Proto and small binary blobs - what about privacy? This might change soon because there's so much active development, but right now: you can't really use AT Proto for private data.

Paul has written a great discussion of different approaches, and it's clear that there are deep problems that require introspection and thorough evaluation, but that nothing is deployed yet. Bluesky does have direct messages, but according to Gavin Anderegg's investigation, they're 'off-protocol' so not actually anywhere on AT Proto.

This is obviously a big stumbling block for applications. Val Town couldn't use the Atmosphere for data storage if there is no concept of privacy. Right now our traditional backend infrastructure (mostly Postgres) makes both privacy and good-enough encryption at rest (mostly AES-GCM) pretty simple to implement, if not foolproof.

There are experiments around implementing privacy on AT Proto, like Germ, but none have solved all of the problems that need solving.


What should I do with it?

I have plenty of existing and potential projects to use as testbeds for new technology: that's one of the main reason why side-projects can be so nice, is that they're safe places to use bleeding-edge technology without risking alienating your entire team at work. So where can I use AT Proto?

I would love to support sharing maps on Placemark again. Geospatial data probably won't fit in AT Proto records because it's fiendishly large and complex, but it could be squeezed into a blob if it's small enough. Maybe encoding JSON as CBOR is enough to shrink the data a bit without losing fidelity.

It would be really fun to get AT Proto logins working with Val Town: Orta implemented something similar for Puzzmo. Unfortunately user signup is a very knotty problem for us because, like every other hosting platform, we are in a daily battle with spammers. Orta's solution for Puzzmo was to make Bluesky login an additional, linked account along with your existing Puzzmo account, which makes a lot of sense.

I could also try to put this blog on AT Proto. standard.site has some specs for doing that, and sequoia would make publishing pretty easy. Leaflet.pub is riding high on their adoption of AT Proto for blogging. I'm honestly more confused than excited about this possibility: partly because RSS is already so good for publishing blogs, and because I'm not sure what syndicating to the atmosphere really does for this blog? I especially don't want to publish on AT Proto first, because rule #1 of macwright.com is to keep this site alive forever and avoid boondoggles.


Where does this go?

AT Proto is in a creative-explosion phase, which is really exciting. The way that the platform has been crafted makes it easy to incrementally introduce Atmosphere features to existing applications, and I am really relieved how little unnecessary jargon there seems to be, even though it's a very complicated system.

Of all the values it provides, I think a rock-solid sense of credible exit is the most consistently achieved. Being able to plug a different application into the same data, or to move your data from one host to another is incredible, as Dan Abramov wrote about in 'A Social Filesystem'.

Having been on the internet for a long time, I don't expect anything to last forever, and I won't be heartbroken when the flaws in the plan are inevitably identified or some bad actor spoils the party for a while.

I wonder about the long-term economics of the thing, though: Bluesky is essentially providing a free database to anyone who wants to implement the AppView part of the system. How long does this last, especially if some Atmosphere apps become successful and start generating lots of revenue. Companies do not like subsidizing each other.

I think that's a few years off. Maybe we start paying for a deluxe plan once we store a gigabyte or two on Bluesky's servers, or one of the stablecoin-based micropayments technologies takes off (let's be real, if one does, it'll be Stripe's) and popular applications pay for their user storage on other PDS systems, in a faint echo of Filecoin's failure.


A spell for creativity

I plan to return here and have something to show on AT Proto. Not to overthink it, to ship something. It's fun to read but even more fun to write code, or a bit of manic fun to use LLMs to prototype something. I'm having more success drawing a portrait every day and using my sewing machine than working on the internet on the weekends, but that is partly because of a pessimistic view of the current trend, and the Atmosphere is a trend I can get behind.

https://macwright.com/2026/03/16/atproto.html
Extensions
Recently
Show full content

Snowy

The snow has been tough for my running schedule in February but it's starting to clear and temperatures have started to lift. Yesterday got in a solid 45 miles of cycling, including up to this point near the George Washington Bridge, and back on the Tappan Zee.

Listening

I didn't add any new music to my collection this month. My Swinsian library has 15,562 tracks already so there's plenty to explore in the back catalog. I listened to The Private Press and The Throne of the Third Heaven of the Nations' Millennium General Assembly.

I did find a new podcast that I've been really enjoying: Know Your Enemy - another podcast covering the wrongs of American conservatism, but from an interesting perspective. One of the hosts is an ex-conservative gay Catholic, and both are very touch with modern philosophy and political theory. Their book reviews especially are satisfying and deep.

Reading (the AI section)

Skip this if you don't want to think about AI. I don't want to think about it that much either! My goal is for there to be no AI section next month.

There are two main themes that I noticed this month.

  1. Some people have never taken joy in manual creation and find it impossible to conceive of being attached to the particulars of a task. I want to call these people "ideas guys" but I'm trying to be nice!
  2. Some people who do have some applied skills have been automating away the parts of their jobs that require those skills, and are surprised that they are losing the skills and not feeling the satisfaction of actually doing the work. We could call these people "gullible rubes" who "fell for it again" but I'm trying not to be mean!

Anyway, articles:

It did not seem like a good idea to me that some of the richest people in the world were no longer rewarding people for having any particular skills, but simply for having agency, when agency essentially meant whatever it was that was afflicting Roy Lee. Unlike Eric Zhu or Donald Boat, Roy didn’t really seem to have anything in his life except his own sense of agency. Everything was a means to an end, a way of fortifying his ability to do whatever he wanted in the world. But there was a great sucking void where the end ought to be. All he wanted, he’d said, was to hang out with his friends. I believed him. He wanted not to be alone, the way he’d been alone for a year after having his offer of admission rescinded by Harvard.

Child's Play, by Sam Kriss, in Harpers. This is really worth reading end-to-end.

If whatever I was doing on the kitchen counter is now called “software engineering,” then ordering food at a restaurant should be called “cooking.” As much as I marvel in this new and (dare I say) magical way of manifesting products and services from thin air, I question whether it is truly a creative process anymore.

Ben Sigelman

I think maybe the synthesis comes from Thorsten Ball's Register Spill, which is positive on AI but well-written:

I’ve had quite a few conversations with programmer friends over the last year that ended with someone wondering: do I still enjoy this? Is this the programming I want to do? Some answer with yes, others with no. I understand both answers and the “code was never important” comments are not helpful to those who really, really enjoyed writing code. If you’re in sales, that might be because you love negotiation, or the product you’re selling, or making money, or, hey, because you love talking to people, love finding out what their problems are, love to visit them. If your job suddenly changed from that to never talking to a human again, I bet you’ll find it hard to take solace in “it was never about the people, it was always about closing the deal.”

Yes: this is it! I totally understand how some people can't sit at a computer all day long and think of it as "pushing rectangles around." Extroverts and people with ADHD are nice! And there are other jobs available that involve more social interaction, physical activity, etc. If those jobs paid more then this conversation would be different.

But for a lot of people, the actual details of the craft matter, and the quiet hard work of it is the reason why we're here, not an inconvenience. I have whatever the opposite of ADHD is: I have ridden a bicycle through the woods in a straight line for 8 hours by myself with no headphones and felt completely fine. I have spent days making watercolors for a stop-motion piece, just for fun. For some people this kind of long, tedious work is necessary for survival.

I knew from a young age that I didn't want to have a phone job, I wanted a craft job. Difficult, quiet crafts are the roughage that my mind needs to stay happy. Work is a partially social place but you don't go there to party, or to make social media content. I don't know man, at the risk of going out over my skis I think there could be a quadrant here:

SocialQuietWorkSales, management, Roy Lee-style social-media-driven AI companies.Programming, art, photography, other craft-based professions.PersonalHanging out with your friends on the weekend. Biking up a mountain. Touching grass.Painting watercolors while listening to jazz. Reading a good book.

Is it crazy to think that the oft-repeated loneliness crisis is putting pressure on work to take up more of the social quadrant? Or that the disintegration of other jobs has forced programming to become a job for everyone instead of a self-selecting niche?

Reading (the non-AI section)

Bike Weight Doesn't Matter was a great read, partially because I have a very nice but not particularly light bicycle. I like that modern bicycles are good enough that you actually get one that is nearly as good as the pros, and the rest is just becoming better as a rider, and the best way to become better is to ride more.


I internalized the significance of externalities in a far more profound way. I mostly picked up this frame up reference through more plain old life experience and recognizing more instances of positive/negative externalities in day-to-day life.

It's old, but Devon Zuegal's post "On There Being More Than Liberty" was interesting to revisit after listening to Know Your Enemy's podcast about Ayn Rand, reviewing Jennifer Burns's Goddess of the Market.

I keep searching for the source text of opinions that I hear in real life that are usually received wisdom. Like why do people say 'taxation is theft'? Probably Murray Rothbard, but most of the people saying that aren't directly taking it from Rothbard.

Rand is the source of a lot of libertarian thought bubbles, inspiring at least some part of Zuegal's list. I really appreciate that Devon took the time to write about her opinions changing - seems good!


Also revisiting an old article, Iroh's Async Rust Challenges: I wonder if updating this in 2026 would yield different results! It mostly confirms my impression that if I were to try and implement a web server in a non-TypeScript language again, it would be Go or Elixir, not Rust.

Watching

It's total craft propaganda but I adore this quick video about Quirk Cycles, a very small bicycle builder in Hackney, London. I'm sure that the actual work is hard and less beautiful but this gives you a window in the feeling of focusing and building something beautiful that gives others joy.

Bonus bike build, from ultra-high end titanium builder Weis. Weis bikes are a true status symbol in New York, whenever I notice one I see other people also noticing it.

Adam Neely's coverage of Suno is fantastic, and worth watching all the way through. He asks users of the tool that lets you "generate" music through prompts these three questions:

  1. What have generative AI tools like Suno empowered you to do that you cannot do with DAW's or traditional musical instruments?
  2. Do you feel like you have a unique voice with your music, when you create songs with Suno?
  3. Who are some of your favorite AI musicians who have influenced you? What about them inspires you?

It's thoroughly sourced, beautifully produced, and bringing in Dr. Mariana Noé, a virtue ethicist and platonic scholar, brought it up even another level.

https://macwright.com/2026/03/01/recently.html
Recently

Snowy

The snow has been tough for my running schedule in February but it's starting to clear and temperatures have started to lift. Yesterday got in a solid 45 miles of cycling, including up to this point near the George Washington Bridge, and back on the Tappan Zee.

Listening

I didn't add any new music to my collection this month. My Swinsian library has 15,562 tracks already so there's plenty to explore in the back catalog. I listened to The Private Press and The Throne of the Third Heaven of the Nations' Millennium General Assembly.

I did find a new podcast that I've been really enjoying: Know Your Enemy - another podcast covering the wrongs of American conservatism, but from an interesting perspective. One of the hosts is an ex-conservative gay Catholic, and both are very touch with modern philosophy and political theory. Their book reviews especially are satisfying and deep.

Reading (the AI section)

Skip this if you don't want to think about AI. I don't want to think about it that much either! My goal is for there to be no AI section next month.

There are two main themes that I noticed this month.

  1. Some people have never taken joy in manual creation and find it impossible to conceive of being attached to the particulars of a task. I want to call these people "ideas guys" but I'm trying to be nice!
  2. Some people who do have some applied skills have been automating away the parts of their jobs that require those skills, and are surprised that they are losing the skills and not feeling the satisfaction of actually doing the work. We could call these people "gullible rubes" who "fell for it again" but I'm trying not to be mean!

Anyway, articles:

It did not seem like a good idea to me that some of the richest people in the world were no longer rewarding people for having any particular skills, but simply for having agency, when agency essentially meant whatever it was that was afflicting Roy Lee. Unlike Eric Zhu or Donald Boat, Roy didn’t really seem to have anything in his life except his own sense of agency. Everything was a means to an end, a way of fortifying his ability to do whatever he wanted in the world. But there was a great sucking void where the end ought to be. All he wanted, he’d said, was to hang out with his friends. I believed him. He wanted not to be alone, the way he’d been alone for a year after having his offer of admission rescinded by Harvard.

Child's Play, by Sam Kriss, in Harpers. This is really worth reading end-to-end.

If whatever I was doing on the kitchen counter is now called “software engineering,” then ordering food at a restaurant should be called “cooking.” As much as I marvel in this new and (dare I say) magical way of manifesting products and services from thin air, I question whether it is truly a creative process anymore.

Ben Sigelman

I think maybe the synthesis comes from Thorsten Ball's Register Spill, which is positive on AI but well-written:

I’ve had quite a few conversations with programmer friends over the last year that ended with someone wondering: do I still enjoy this? Is this the programming I want to do? Some answer with yes, others with no. I understand both answers and the “code was never important” comments are not helpful to those who really, really enjoyed writing code. If you’re in sales, that might be because you love negotiation, or the product you’re selling, or making money, or, hey, because you love talking to people, love finding out what their problems are, love to visit them. If your job suddenly changed from that to never talking to a human again, I bet you’ll find it hard to take solace in “it was never about the people, it was always about closing the deal.”

Yes: this is it! I totally understand how some people can't sit at a computer all day long and think of it as "pushing rectangles around." Extroverts and people with ADHD are nice! And there are other jobs available that involve more social interaction, physical activity, etc. If those jobs paid more then this conversation would be different.

But for a lot of people, the actual details of the craft matter, and the quiet hard work of it is the reason why we're here, not an inconvenience. I have whatever the opposite of ADHD is: I have ridden a bicycle through the woods in a straight line for 8 hours by myself with no headphones and felt completely fine. I have spent days making watercolors for a stop-motion piece, just for fun. For some people this kind of long, tedious work is necessary for survival.

I knew from a young age that I didn't want to have a phone job, I wanted a craft job. Difficult, quiet crafts are the roughage that my mind needs to stay happy. Work is a partially social place but you don't go there to party, or to make social media content. I don't know man, at the risk of going out over my skis I think there could be a quadrant here:

SocialQuietWorkSales, management, Roy Lee-style social-media-driven AI companies.Programming, art, photography, other craft-based professions.PersonalHanging out with your friends on the weekend. Biking up a mountain. Touching grass.Painting watercolors while listening to jazz. Reading a good book.

Is it crazy to think that the oft-repeated loneliness crisis is putting pressure on work to take up more of the social quadrant? Or that the disintegration of other jobs has forced programming to become a job for everyone instead of a self-selecting niche?

Reading (the non-AI section)

Bike Weight Doesn't Matter was a great read, partially because I have a very nice but not particularly light bicycle. I like that modern bicycles are good enough that you actually get one that is nearly as good as the pros, and the rest is just becoming better as a rider, and the best way to become better is to ride more.


I internalized the significance of externalities in a far more profound way. I mostly picked up this frame up reference through more plain old life experience and recognizing more instances of positive/negative externalities in day-to-day life.

It's old, but Devon Zuegal's post "On There Being More Than Liberty" was interesting to revisit after listening to Know Your Enemy's podcast about Ayn Rand, reviewing Jennifer Burns's Goddess of the Market.

I keep searching for the source text of opinions that I hear in real life that are usually received wisdom. Like why do people say 'taxation is theft'? Probably Murray Rothbard, but most of the people saying that aren't directly taking it from Rothbard.

Rand is the source of a lot of libertarian thought bubbles, inspiring at least some part of Zuegal's list. I really appreciate that Devon took the time to write about her opinions changing - seems good!


Also revisiting an old article, Iroh's Async Rust Challenges: I wonder if updating this in 2026 would yield different results! It mostly confirms my impression that if I were to try and implement a web server in a non-TypeScript language again, it would be Go or Elixir, not Rust.

Watching

It's total craft propaganda but I adore this quick video about Quirk Cycles, a very small bicycle builder in Hackney, London. I'm sure that the actual work is hard and less beautiful but this gives you a window in the feeling of focusing and building something beautiful that gives others joy.

Bonus bike build, from ultra-high end titanium builder Weis. Weis bikes are a true status symbol in New York, whenever I notice one I see other people also noticing it.

Adam Neely's coverage of Suno is fantastic, and worth watching all the way through. He asks users of the tool that lets you "generate" music through prompts these three questions:

  1. What have generative AI tools like Suno empowered you to do that you cannot do with DAW's or traditional musical instruments?
  2. Do you feel like you have a unique voice with your music, when you create songs with Suno?
  3. Who are some of your favorite AI musicians who have influenced you? What about them inspires you?

It's thoroughly sourced, beautifully produced, and bringing in Dr. Mariana Noé, a virtue ethicist and platonic scholar, brought it up even another level.

https://macwright.com/2026/03/01/recently.html
Extensions
New tote bag
Show full content

Folds

I recently took an hour or two to stitch together a new tote bag. I have a stash of materials for this because a sewing company in Brooklyn's 'Industry City' (an isolated business park) was going out of business. I regret not buying out much more of the inventory: at that point I was laser-focused on sewing projects for the outdoors, like my Porteur bag v2 and v1.

But there's a lot of fun in sewing with real cloth for less extreme circumstances.

Stitching

For one thing, cotton is a different material than the laminated sailcloth fabric that I primarily use for bikepacking bags. Cotton comes apart at the edges, so I used a zigzag stitch to try and this edge from fraying. The proper solution to this is using an overlocker, a machine with four threads and an automatic cutter. But that's another big device in the apartment and my sewing materials corner is big enough as it is.

Adjustment

Strap adjustment is becoming a familiar challenge. On the porteur bags, I started off with bungee straps, which can be adjusted in a lot of different ways by leashing the bag to a rack differently or creating knots, but the elastic works against you when riding a bike fast and through the woods.

For this I just used a tri-glide buckle, which uses friction to stay in place. It's a part that I've encountered in so many manufactured things that I've owned but never really thought about.

Inside

Bottom

You'll notice that there's an unnecessary amount of stitching on this bag: three stitches down each side. In theory these serve three different purposes:

  1. The first straight stitch is for strength
  2. The zigzag stitch is to keep the material from fraying
  3. The topstitch keeps the facing flat

But the other, perhaps more important reason is that I just wanted to spend longer making this thing. I think it's good to automate things you dislike doing and de-automate and stretch out the time you spend doing things you like.

The top of the bag where the material just folds over ever so slightly was using basting tape. I really like basting tape as a cheat code: it's a two-sided tape that you can leave in the bag. If you apply a strip of it at the edge of a fabric, you can fold over the fabric to adhere the other side of the tape and it serves as both a way to hold the fabric in place without using clips, and also an easy way to 'measure' that fold, because the fold ends up being the same height as the tape.

Reinforcement

The reinforcement for the straps could be neater: I still envy the bagmakers that can produce those perfect reinforcement "X" marks on these parts. A lot of the technique here involves doing straight stitch, stopping the machine with the needle in the fabric, and rotating the fabric so that you can then continue in a new direction. My mom taught me that trick and it was one of many things that seem both clever and obvious in hindsight. It's fun to do.

Against wall

Speaking of obvious in hindsight, I didn't want to make this tote bag in the traditional way with a strap on each side. Those bags always fall off my shoulder, especially in the winter wearing a big coat. So one big, adjustable strap was the way to go. But I realized that there's a relationship between the width of the strap attachment points and whether a bag can be carried on the shoulder or cross-body. Since this is so wide - the attachment points at the sides of the bag - if you carry this on the shoulder, the bag essentially opens because your shoulder is narrower than it. I could add a closure system here, like a snap or a zipper, but I like it simple as it is and don't plan on carrying it on a shoulder anyway.

I like it. It's yellow, feels pretty good to carry, plenty big enough for groceries. Sewing this kind of fabric feels pretty easy, though you do have to pay a little more attention to it than the space-age laminated polyesters. Hopefully it gets me closer to being able to sew more delicate fabrics, which will require actually learning how to manage tension on the machine.

Sewing: I recommend it.

https://macwright.com/2026/02/25/new-tote.html
New tote bag

Folds

I recently took an hour or two to stitch together a new tote bag. I have a stash of materials for this because a sewing company in Brooklyn's 'Industry City' (an isolated business park) was going out of business. I regret not buying out much more of the inventory: at that point I was laser-focused on sewing projects for the outdoors, like my Porteur bag v2 and v1.

But there's a lot of fun in sewing with real cloth for less extreme circumstances.

Stitching

For one thing, cotton is a different material than the laminated sailcloth fabric that I primarily use for bikepacking bags. Cotton comes apart at the edges, so I used a zigzag stitch to try and this edge from fraying. The proper solution to this is using an overlocker, a machine with four threads and an automatic cutter. But that's another big device in the apartment and my sewing materials corner is big enough as it is.

Adjustment

Strap adjustment is becoming a familiar challenge. On the porteur bags, I started off with bungee straps, which can be adjusted in a lot of different ways by leashing the bag to a rack differently or creating knots, but the elastic works against you when riding a bike fast and through the woods.

For this I just used a tri-glide buckle, which uses friction to stay in place. It's a part that I've encountered in so many manufactured things that I've owned but never really thought about.

Inside

Bottom

You'll notice that there's an unnecessary amount of stitching on this bag: three stitches down each side. In theory these serve three different purposes:

  1. The first straight stitch is for strength
  2. The zigzag stitch is to keep the material from fraying
  3. The topstitch keeps the facing flat

But the other, perhaps more important reason is that I just wanted to spend longer making this thing. I think it's good to automate things you dislike doing and de-automate and stretch out the time you spend doing things you like.

The top of the bag where the material just folds over ever so slightly was using basting tape. I really like basting tape as a cheat code: it's a two-sided tape that you can leave in the bag. If you apply a strip of it at the edge of a fabric, you can fold over the fabric to adhere the other side of the tape and it serves as both a way to hold the fabric in place without using clips, and also an easy way to 'measure' that fold, because the fold ends up being the same height as the tape.

Reinforcement

The reinforcement for the straps could be neater: I still envy the bagmakers that can produce those perfect reinforcement "X" marks on these parts. A lot of the technique here involves doing straight stitch, stopping the machine with the needle in the fabric, and rotating the fabric so that you can then continue in a new direction. My mom taught me that trick and it was one of many things that seem both clever and obvious in hindsight. It's fun to do.

Against wall

Speaking of obvious in hindsight, I didn't want to make this tote bag in the traditional way with a strap on each side. Those bags always fall off my shoulder, especially in the winter wearing a big coat. So one big, adjustable strap was the way to go. But I realized that there's a relationship between the width of the strap attachment points and whether a bag can be carried on the shoulder or cross-body. Since this is so wide - the attachment points at the sides of the bag - if you carry this on the shoulder, the bag essentially opens because your shoulder is narrower than it. I could add a closure system here, like a snap or a zipper, but I like it simple as it is and don't plan on carrying it on a shoulder anyway.

I like it. It's yellow, feels pretty good to carry, plenty big enough for groceries. Sewing this kind of fabric feels pretty easy, though you do have to pay a little more attention to it than the space-age laminated polyesters. Hopefully it gets me closer to being able to sew more delicate fabrics, which will require actually learning how to manage tension on the machine.

Sewing: I recommend it.

https://macwright.com/2026/02/25/new-tote.html
Extensions
Color dithering
Show full content

On Friday I decided to revisit the topic of dithering to add color. Back in 2017 I made a lot of interactive examples on Observable showing different kinds of dithering. It was fun: I distinctly remember when dithering was still a concern for computers, and it was one of those things, like the different color grading of the different broadcast TV channels, that gave a little texture to media.

Dithering is such a fun topic that a lot of people write about it: a few articles are linked below:

I don't have anything that novel to bring to it at this point, but I do want to preserve the little bit of work that I did and posted on Observable this time around. Observable's done a fantastic job keeping notebooks running for nearly a decade now and I don't doubt that they'll do well by their community, but it's no longer the focus and I like the idea of things living on my domain. Plus, it's fun to tinker with new tech and having recently ported my blog to 11ty, here's a chance at trying out WebC as a way to preserve and embed interactive content.

Scan direction:
Animate / Loop animation / Animation speed

You can drag other images onto the default cat to replace it. Vibrant colors and gradients work best!

I'll spare the full description of dithering because it's been written so many times before. The extension here to color dithering was satisfying because the basic strategy of black & white dithering applied directly. The super-simple form of the algorithm here just consists of scanning each row of pixels left-to-right until you've added up enough lightness to make the pixel white.

To translate this to color, I just created three counters, for red, green, and blue, and added them up in each scan. And then for animation, I prefill those counters with a value that isn't 0. You can uncheck "Loop animation" to let that animation just keep running and eventually make the picture white or black.


Implementing this with 11ty in this case meant using webc, which is a system that builds on web components, but with server rendering. I've been trying to help out with 11ty recently, editing documentation for the project. I like it: 11ty is a well-established project with incredible flexibility and power. It's hard to explain - writing documentation for it is pretty difficult, because there are so many ways to using the software.

webc let me render a <dither-example> element in this post and bundle JavaScript just for that purpose. Web Components - I've had qualms about them in the past and I'm still not fully won over, but maybe this is an appropriate use for them. The port from an Observable notebook to a web component wasn't too hard, though I didn't try and mimic Observable's reactivity with signals or anything, instead it's very vanilla JavaScript.

This website has been around for so long that I think a bunch about the very long-term sustainability of it. I don't want to buy into systems that are going to degrade or leave me with a lot of complexity. I think that webc fits the bill as something quite nice, but not too clever or hard to back out of. 11ty is now a bit overshadowed by astro in the static site generator 'market', but I like that it has a strong focus on keeping down internal complexity, which hopefully means that it's more maintainable in the far future.

I'll write more about 11ty soon. Until then, dithering is fun (still).

https://macwright.com/2026/02/22/color-dithering.html
Color dithering

On Friday I decided to revisit the topic of dithering to add color. Back in 2017 I made a lot of interactive examples on Observable showing different kinds of dithering. It was fun: I distinctly remember when dithering was still a concern for computers, and it was one of those things, like the different color grading of the different broadcast TV channels, that gave a little texture to media.

Dithering is such a fun topic that a lot of people write about it: a few articles are linked below:

I don't have anything that novel to bring to it at this point, but I do want to preserve the little bit of work that I did and posted on Observable this time around. Observable's done a fantastic job keeping notebooks running for nearly a decade now and I don't doubt that they'll do well by their community, but it's no longer the focus and I like the idea of things living on my domain. Plus, it's fun to tinker with new tech and having recently ported my blog to 11ty, here's a chance at trying out WebC as a way to preserve and embed interactive content.

Scan direction:
Animate / Loop animation / Animation speed

You can drag other images onto the default cat to replace it. Vibrant colors and gradients work best!

I'll spare the full description of dithering because it's been written so many times before. The extension here to color dithering was satisfying because the basic strategy of black & white dithering applied directly. The super-simple form of the algorithm here just consists of scanning each row of pixels left-to-right until you've added up enough lightness to make the pixel white.

To translate this to color, I just created three counters, for red, green, and blue, and added them up in each scan. And then for animation, I prefill those counters with a value that isn't 0. You can uncheck "Loop animation" to let that animation just keep running and eventually make the picture white or black.


Implementing this with 11ty in this case meant using webc, which is a system that builds on web components, but with server rendering. I've been trying to help out with 11ty recently, editing documentation for the project. I like it: 11ty is a well-established project with incredible flexibility and power. It's hard to explain - writing documentation for it is pretty difficult, because there are so many ways to using the software.

webc let me render a <dither-example> element in this post and bundle JavaScript just for that purpose. Web Components - I've had qualms about them in the past and I'm still not fully won over, but maybe this is an appropriate use for them. The port from an Observable notebook to a web component wasn't too hard, though I didn't try and mimic Observable's reactivity with signals or anything, instead it's very vanilla JavaScript.

This website has been around for so long that I think a bunch about the very long-term sustainability of it. I don't want to buy into systems that are going to degrade or leave me with a lot of complexity. I think that webc fits the bill as something quite nice, but not too clever or hard to back out of. 11ty is now a bit overshadowed by astro in the static site generator 'market', but I like that it has a strong focus on keeping down internal complexity, which hopefully means that it's more maintainable in the far future.

I'll write more about 11ty soon. Until then, dithering is fun (still).

https://macwright.com/2026/02/22/color-dithering.html
Extensions
Recently
Show full content
Listening

Via David Crespo, I got into Greet Death, a band that's been hustling since 2011. It's great in a simultaneously familiar and innovative way. The album has a great amount of variety: Small Town Cemetery is a really effective quiet, acoustic track whereas Die in Love reminds me of classic shoegaze or, ahem, my old band, Teen Mom. We put out some good music.

Earlier today I decided to look up Happy Apple on Wikipedia. They're one of my favorite bands of all time, sharing a drummer with The Bad Plus but with a very different songwriting approach. Their new-to-me-as-of-looking-it-up-this-morning album (released in 2020), "New York CD" immediately clicked, it's just as good if not better than their older stuff. The grooves on the new stuff feel a little more sinister in a very very good way.

Reading

Some of the complaining sounds like “Oh no, I’m such an undisciplined feral beast for enjoying my interests for hours!”

From Ava's blog, which I really enjoy reading, even when it makes me question how I spend my time. Recently I've had phases of social burnout, then loneliness, working a lot, then balance, and I feel exactly what she's writing about, the feeling of having free time and then beating myself up for not using it 'productively' enough. In part this is a continuity thing: I've had so many hobbies and commitments that at I'm always dropping the ball in some way, letting something wilt. I just try to remember the evergreen Louise Miller tweet: No love, however brief, is wasted.

Saying that a social-media feed is the product of users is like saying that a hot dog is the product of cattle.

From The "User-Generated Content" Ruse, about how recommendation systems and algorithmic feeds make all modern 'social media' more of a produced set of preferences than a person-to-person communication mechanism. I like my RSS feeds and chronological timelines.

A Donor Advised Fund sounds all high-falutin’ but it’s basically just a financial instrument that decouples the timing of a donation’s tax event (when money leaves your account) from the actual granting (when money goes to the charity).

From Michael Gris, writing about how bunching donations and donating stock can be a win-win. This overlaps with another article that made the rounds this month - What if we stopped paying taxes? - about how states could attempt to stop paying taxes to the federal government (summary: hard, dangerous, barely possible). But anyway, I rethought my 'giving' strategy this year for two reasons:

  1. Last year, I spent time and money focused on politics and donated to political campaigns in New York City. I also spent a little time volunteering for those campaigns.
  2. This year, there are fewer inspiring campaigns, and the behavior of our current political administration makes me excited about nonprofits that support the rule of law, as well as excited about paying slightly less federal tax because of itemizing.

It was pretty quick and easy. I'm using it as a pass-through: immediately granting out the money that I put into it, just taking advantage of how DAFs make stock donations a little easier and simplify the paperwork.

The gist: if you think you have these problems, it is likely that the correct solution is to do nothing, to not manage, and to go back to building product and talking to users.

I enjoyed, and feared this blog post about early-stage engineering management. I've been a very early stage engineer or an early-stage manager for my entire career, and it more or less mirrors what I do now. Which is good, because it confirms that what I'm doing makes some sense, but bad, because I still always have the feeling that someone, somewhere, knows how to do everything better.

Watching

Hundreds of Beavers

I didn't mention Hundreds of Beavers. It is a revelation. It's brilliant and dumb at the same time. It's silent, in black and white, low-budget, endlessly endearing. Absolutely hilarious. I highly recommend seeing it in a theater for the full experience. One of the best movie experiences I've had in years. (via Leanne Abraham)

This video from Jamelle Bouie, whose channel I highly recommend, is of a piece with this crossover episode of the Volts podcast about "Reactionary Centrism", with Michael Hobbes. As Michael Hobbes puts it, we live in a basic, one-dimensional reality where there is an obvious evil. People are tempted to dress it up or to find similarities, but the truth is that there's a clear problem and it's the Republican party.

Stuff

I have been enjoying some manufactured goods. In particular, I got a letter opener for the first time in my life, and it makes my brain happier to open letters neatly. JetPens in general is lovely. I just got some Bronson t-shirts (via Justin Duke) because my American Giant ones are starting to fray, and they look like a good next step. But props to American Giant, because I've gotten a full decade out of some of their stuff. I switched to Comply foam tips for my AirPods and they make then work with my apparently non-standard ear canals.

https://macwright.com/2026/02/03/recently.html
Recently
Listening

Via David Crespo, I got into Greet Death, a band that's been hustling since 2011. It's great in a simultaneously familiar and innovative way. The album has a great amount of variety: Small Town Cemetery is a really effective quiet, acoustic track whereas Die in Love reminds me of classic shoegaze or, ahem, my old band, Teen Mom. We put out some good music.

Earlier today I decided to look up Happy Apple on Wikipedia. They're one of my favorite bands of all time, sharing a drummer with The Bad Plus but with a very different songwriting approach. Their new-to-me-as-of-looking-it-up-this-morning album (released in 2020), "New York CD" immediately clicked, it's just as good if not better than their older stuff. The grooves on the new stuff feel a little more sinister in a very very good way.

Reading

Some of the complaining sounds like “Oh no, I’m such an undisciplined feral beast for enjoying my interests for hours!”

From Ava's blog, which I really enjoy reading, even when it makes me question how I spend my time. Recently I've had phases of social burnout, then loneliness, working a lot, then balance, and I feel exactly what she's writing about, the feeling of having free time and then beating myself up for not using it 'productively' enough. In part this is a continuity thing: I've had so many hobbies and commitments that at I'm always dropping the ball in some way, letting something wilt. I just try to remember the evergreen Louise Miller tweet: No love, however brief, is wasted.

Saying that a social-media feed is the product of users is like saying that a hot dog is the product of cattle.

From The "User-Generated Content" Ruse, about how recommendation systems and algorithmic feeds make all modern 'social media' more of a produced set of preferences than a person-to-person communication mechanism. I like my RSS feeds and chronological timelines.

A Donor Advised Fund sounds all high-falutin’ but it’s basically just a financial instrument that decouples the timing of a donation’s tax event (when money leaves your account) from the actual granting (when money goes to the charity).

From Michael Gris, writing about how bunching donations and donating stock can be a win-win. This overlaps with another article that made the rounds this month - What if we stopped paying taxes? - about how states could attempt to stop paying taxes to the federal government (summary: hard, dangerous, barely possible). But anyway, I rethought my 'giving' strategy this year for two reasons:

  1. Last year, I spent time and money focused on politics and donated to political campaigns in New York City. I also spent a little time volunteering for those campaigns.
  2. This year, there are fewer inspiring campaigns, and the behavior of our current political administration makes me excited about nonprofits that support the rule of law, as well as excited about paying slightly less federal tax because of itemizing.

It was pretty quick and easy. I'm using it as a pass-through: immediately granting out the money that I put into it, just taking advantage of how DAFs make stock donations a little easier and simplify the paperwork.

The gist: if you think you have these problems, it is likely that the correct solution is to do nothing, to not manage, and to go back to building product and talking to users.

I enjoyed, and feared this blog post about early-stage engineering management. I've been a very early stage engineer or an early-stage manager for my entire career, and it more or less mirrors what I do now. Which is good, because it confirms that what I'm doing makes some sense, but bad, because I still always have the feeling that someone, somewhere, knows how to do everything better.

Watching

Hundreds of Beavers

I didn't mention Hundreds of Beavers. It is a revelation. It's brilliant and dumb at the same time. It's silent, in black and white, low-budget, endlessly endearing. Absolutely hilarious. I highly recommend seeing it in a theater for the full experience. One of the best movie experiences I've had in years. (via Leanne Abraham)

This video from Jamelle Bouie, whose channel I highly recommend, is of a piece with this crossover episode of the Volts podcast about "Reactionary Centrism", with Michael Hobbes. As Michael Hobbes puts it, we live in a basic, one-dimensional reality where there is an obvious evil. People are tempted to dress it up or to find similarities, but the truth is that there's a clear problem and it's the Republican party.

Stuff

I have been enjoying some manufactured goods. In particular, I got a letter opener for the first time in my life, and it makes my brain happier to open letters neatly. JetPens in general is lovely. I just got some Bronson t-shirts (via Justin Duke) because my American Giant ones are starting to fray, and they look like a good next step. But props to American Giant, because I've gotten a full decade out of some of their stuff. I switched to Comply foam tips for my AirPods and they make then work with my apparently non-standard ear canals.

https://macwright.com/2026/02/03/recently.html
Extensions