Tom MacWright

tom@macwright.com

Recently

If you’re reading this on macwright.com, you might have noticed that the website got a very slight upgrade this month. I’ve been publishing a lot of content in the /micro/ section, and I update my /reading/ list once or twice a month when I finish books, but these proper blog posts have been pretty sporadic. The new homepage features all of the sections of the site, which makes it fresher.

I do have a few proper blog posts in the queue - I’ve written a tiny Obsidian plugin that I think it pretty neat. I haven’t had many ideas about opinions in technology, probably because life’s been busy, I’m getting over a summer cold, and my day-to-day work on Val Town involves a lot of tough tradeoffs and subtle bugfixes and not many big technology choices recently, besides our transition from one authentication provider to another. Having already written about a big migration, I’m not trying to get a reputation slagging off other startups.

So: what happened in May? I made my way to SatSummit, a conference in DC held by my first employer, Development Seed, which is absolutely thriving now: working on big projects with a big team. They’re still building in the open, doing good by existing open source projects, and working on projects with positive impact. I’m sure their day-to-day is less rosy that I make it out to be, but still - it’s nice to see. I sat on a panel with a bunch of nice folks and talked about data in the browser and about the promise of WebAssembly, from a very high level.

In New York, Val Town has grown the team and I’m very pumped about that. We’re heading to a new office very soon, too. Summer is here and as soon as I stop sniffling from this cold, I am ready to seize it.

Reading

I had to declare Instapaper bankruptcy again: I just don’t have the time to read everything on the internet. Still, found some nice words:

The goal for companies is to keep users scrolling, and not connecting too deeply with any particular creator because gatekeeping access to the audience is what gives platforms power over creators who (need I remind you) make the stuff audiences actually want to see. By controlling access, companies can prevent creators from ever amassing enough power of their own to leave their platform.

From Future Grandmasters of the Attention Game. I have an ever-increasing amount of fear and disgust for TikTok and YouTube as platforms, and for platforms that are following in their footsteps. Justin Hanagan’s piece outlines the dynamics of this kind of system more eloquently than I could.

Algorithmically-delivered, context-free information scares me like nothing else. When I see a TikTok touting some wrong fact and referencing Google, there’s usually the Google UI featured, and 100% of the time, the “creator” is referencing a Google “quick answer” or “AI Overview.”


It creates meaningless, disposable images. It teaches me music theory and helps me write crappy little melodies. It does everything badly and confidently. And I want to be it. I want to be that confident, that unembarrassed, that ridiculously sure of myself.

If you only read one thing about “generative AI”, make it this Paul Ford piece on Wired, which I think perfectly captures the feeling of chatting with a GPT.


The third major cost of building a new house is the cost of the land itself. Given how prominent regulatory restrictions on housing are in online discourse (zoning, NIMBY vs YIMBY, and so on), I think many people would be surprised that land only makes up around 20% of the cost of a new home.

Construction Physics talks about the cost of a new home. The punchline to its statement about land cost is that in major cities, the land cost is the main component of homes. In San Jose, the most expensive and mediocre place on Planet Earth, land accounts for 80% of costs.

It’s well-understood at this point that most of the YIMBY movement is talking about building in major cities, not in minor suburbs. Strong Towns is there to talk about mid-tier suburbs, and there isn’t a strong movement to advocate for housing in truly rural areas, because, well - not many people live out there and zoning isn’t a big problem.

Part of the implicit sentiment that should be stated clearly is that encouraging housing in cities is important because more people should live in cities because suburbs are dramatically worse for the environment. There are plenty of maps and studies proving this out.


The TypeScript situation

The future of software development tooling that is being built is closed as fuck, and people seem to be okay with it because select components meet the OSI definition whilst missing the bigger picture that the compositional graph of components does not.

I complained a bit about the TypeScript / LSP state of the art, and Geoffrey Huntley’s article got linked. It’s pretty related.

For context, because this is a bit of inside baseball:

  • Programming languages usually require some “editor tooling” like autocomplete, linting, jumping from one symbol to another, and so on.
  • Microsoft invented the Language Server Protocol to make this kind of editor tooling editor-agnostic: you could have an “LSP client” in your editor and plug in an LSP server for Gleam or TypeScript or Python or anything else, and it’d just work, without having to rebuild all of the code to do the basics.
  • Microsoft also invented TypeScript, a quite good programming language that I’ve used quite a lot.
  • Microsoft also created VS Code, a code editor that I don’t like but everyone else does and that’s fine.

You would hope that this story ends with “and Microsoft used the LSP standard so that TypeScript talks to VS Code via the standard and other editors can easily do the same and provide top-tier TypeScript support.”

They didn’t. If you’ve used TypeScript with another editor, you’ve probably been using the typescript-language-server project, which was maintained by TypeFox and is now just maintained by enthusiasts. But, it doesn’t work that well, so there are projects like typescript-tools.nvim, vtsls, which try to integrate with TypeScript the same way that VS Code does, or extensions that straight-up fork the VS Code code to try to make it work with other editors.

So if you’re using VS Code or Monaco as your editor, TypeScript probably works great. If you aren’t, you are in for a pretty bad time.

I’m less familiar with the Python ecosystem but reportedly something similar is happening there too - Pylance integrates tightly with VS Code and has advanced features, but it’s a proprietary extension with a “documentation and releases” repo.

Now, I notice this scenario because I use neovim as my main code editor (I’m writing this in Neovim right now), and because part of Val Town’s product is good TypeScript integration. So I notice, often, how working with TypeScript internals is a matter of reading through the saddest, least-maintained Wiki page of barebones documentation, whereas things would just work, if I were to give up and use VS Code locally and Monaco in the application.

It is what it is – a nerdy childhood of following the Microsoft antitrust cases and an adulthood of reading about the excesses of capital makes me hesitant to love or hate any big company: they aren’t people, they’re just behemoths. And they produce some bad decisions, like constructing little fiefdoms around technologies that would be positive-sum if they were just well-documented, interoperable, and open.

TypeScript is great, and I appreciate it whenever I use it. Microsoft gave it away for free, which is also great. But the way that it tightly integrates in a custom way with Microsoft products, and has deprioritized developer-facing documentation and implementing standard interfaces that Microsoft also developed gives me flashbacks to the old Microsoft, the bad one.


On Sunday, May 5th, I received an email from a person claiming to have access to a massive leak of API documentation from inside Google’s Search division. The email further claimed that these leaked documents were confirmed as authentic by ex-Google employees, and that those ex-employees and others had shared additional, private information about Google’s search operations.

Many of their claims directly contradict public statements made by Googlers over the years, in particular the company’s repeated denial that click-centric user signals are employed, denial that subdomains are considered separately in rankings, denials of a sandbox for newer websites, denials that a domain’s age is collected or considered, and more.

Speaking of megacorporations doing things that trust the public’s trust and patience, this month had a big leak of documentation about Google Search.

I can see two sides of this issue:

  • Google Search is aggressively gamed by spammers, so if they reveal how things are ranked, then they will give bad actors an advantage. So public communications about Google’s algorithm shouldn’t be too extensive.
  • However, Google has made public claims about their algorithm and those appear to include, ahem, lies.

The degree to which Google reportedly uses data from Chrome users is also pretty scary. I guess I’ll try for the n’th time to switch to an alternative browser.


Watching / listening

I watched In Bruges, which had been on the list for a long time.

The only new music that popped up this month as Acetone, via Blank Forms, a tremendously hip living room concert series in Brooklyn that I occasionally visit.