Astro

| View comments on Hacker News

It’s incredibly easy to find poorly made single-page applications (SPA) today. These applications break user expectations by not acting like standard webpages. The page title doesn’t update on navigation, the back/forward buttons don’t work, the scroll position is not saved, and refreshing the page causes surprising behavior.

A particularly bad site might be poorly optimized and take a while to load on a slow connection or perform poorly when rendered client-side.

SPAs tend to be written with libraries like React and Vue. They are great for developer productivity, and I find them a joy to use. What I don’t like is the amount of work that goes into making them feel like first-class citizens of the web. You have the handle the above, and so much more! What about SEO or users that disable JavaScript?

Many sites do need the interactivity that these libraries provide, but there are plenty that don’t. Content-heavy sites, like this one, are mostly read and have little client-side interaction that would require JavaScript. You could write the site with plain HTML/CSS, but you lose the excellent tooling that React provides. Alternatives include server-side rendering with a host like Vercel or static site generation with heavy software like Gatsby.

I was determined not to compromise. I didn’t want to buy into Vercel and certainly didn’t want a super complicated build process with a bunch of buy-in.

Enter Astro.

It’s a perfect fit. By default, it outputs sites with zero JavaScript. Using familiar React-ish syntax, you can pass props or call JS at compile time in your components. You get the development speed up while also providing sites that perform great and respect your users.

The feature list is jam-packed, and everything seems to work. The documentation is thorough, and it is a joy to use.

I migrated this blog over to Astro in a couple of days, and I was able to add a bunch of new functionality with little effort, such as generated Open Graph images and an RSS feed that updates automatically.

The site now has zero client-side JavaScript and does not need a server beyond static file hosting. The code is pretty similar to what it was before.

I would highly recommend checking out Astro. I’m only scratching the surface of what you can do with it.

Recent posts from blogs that I like

Doing nothing at work

Many engineers should be doing less work. I don’t necessarily mean producing less code or fewer changes, but literally working fewer hours in the day. When they do work, they should be working at a slower pace. I like to aim to be running at 80% utilization by default: unless I have a high-pressure ...

via Sean Goedecke

Elihu Vedder’s symbolism and stories: 1885-1913

More myth and Symbolism, with the Pleiades, Fates, and Fortuna, followed by large murals and a mosaic in the Library of Congress.

via The Eclectic Light Company

Thoughts on starting new projects with LLM agents

A few months ago I wrote about using LLM agents to help restructuring one of my Python projects. It's worth beginning by saying that the rewrite has been successful by all reasonable measures; I've been able to continue maintaining that project since then without an issue. In this post, I want to di...

via Eli Bendersky