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

Is there a built-in way in C++/WinRT to get the string name for a Windows Runtime enum?

No, and maybe you don't want to. The post Is there a built-in way in C++/WinRT to get the string name for a Windows Runtime enum? appeared first on The Old New Thing.

via The Old New Thing

Writing MIME, RSS, and existential suffering

I'm trying to get back into streaming regularly, and I decided to break the anti-streak by doing a good old fashioned blogpost writing stream. I broke down the problem, wrote out all the prose, and then published it.

After remembering that you actually have to push commits for them to be live.

via Xe Iaso

Synergy Greg

Synergy Greg would like to see you in His office, You will know Him when you see Him, Multitudinous is Synergy Greg! His handshake grinds the bones of the world, Beneficent is Synergy Greg! His lungs are mighty bellows, Go Team! Get! Shit! Done! He will wait by the sidelines, Any day now. His minion...

via Ludicity