Reading List

The most recent articles from a list of feeds I subscribe to.

Quick tip: Getting all links from any web site into a spreadsheet using browser developer tools

As part of taking over the editorial job of the WeAreDevelopers newsletter, I needed to get all the links from older editions and import them into a spreadsheet. Eventually I will write a scraping script, but there is a much simpler way to get all the links from a web site into a spreadsheet: browser […]

End the day with a failing test

A green test suite is a blank canvas, and a blank canvas is a paralyzing place to start.

A failing test is a pointer to the next step. When I end the day with a failing test, I know exactly where to begin when I get back. The perfect kickstart to get into flow.

Adding GitHub repository info, pages links and latest commits to any page using github-include

GitHub is where code lives. You make your updates there, and in the case of frontend work, you can even host it in GitHub pages. When I publish something, I write a blog post and often I put some of the code in the post. When feedback comes in about new features I update the […]

Adding a “share to mastodon” link to any web site – and here

I just added a “share to mastodon” link to this bloh. Ages ago I added a “share to Twitter” link, as there is a URL you can send Tweet content to that works: http://twitter.com/share?url={URL}&text={TEXT}?&via={TWITTER_HANDLE} With Mastodon, it wasn’t as easy as it is a federated service and there is not one URL. So I had […]

Why Turborepo is migrating from Go to Rust

The past few years I've seen more projects use Go or Rust for heavy lifting alongside a higher-level language like PHP or JavaScript.

I've learned a little Go myself but don't know enough about Rust to understand when you'd choose one over the other. Vercel is currently migrating a codebase from Go to Rust, it's interesting to read the reasoning behind the decision.

For example:

Go's preference for simplicity at the filesystem was creating problems for us when it came to file permissions. Go lets users set a Unix-style file permission code: a short number that describes who can read, write, or execute a file.

While this sounds convenient, this abstraction does not work across platforms; Windows actually doesn't have the precise concept of file permissions. Go ends up allowing us to set a file permission code on Windows, even when doing so will have no effect.

In contrast, Rust's explicitness in this area not only made things simpler for us but also more correct. If you want to set a file permission code in Rust, you have to explicitly annotate the code as Unix-only. If you don't, the code won't even compile on Windows. This surfacing of complexity helps us understand what our code is doing before we ever ship our software to users.

Next to PHP, Go is a low-level language—but Rust is even lower. Looks like Go is great for heavy lifting on the web, but if you're into building tools to run in different environments Rust is where you want to be.