Work Journal

Svelte SSGs

As much as I like Eleventy as an SSG I’ve been thinking that it‘s a bit trapped by its reliance on CJS caching for its internal workings. I'd like my next SSG to use for this site to be ESM-first as well as Svelte-based – Sapper, the official Svelte-based SSG, has been overtaken by a series of other attempts: JungleJS; Plenti (which is intriguingly written in Go); Routify.

Now we have Elder (the name happily reminds me of one of my favorite metal bands but it's due to it being used to back a catalog of senior-living homes) – I’ll have to spend some more time looking into it but so far it looks very interesting, especially the hook system.

There's also SSGO now, which is a skeletal Reno-based SSG – there's a lot to like here, the concept of 'creators' has a simple appeal.

All of this of course is a horrible distraction from learning Typescript ...

Talks, Alpine, Just JavaScript

Via Chris Ferdinandi's Go Make Things tips, two explainers: a terrific talk on this by Steve Griffith, and a great Jeremy Keith talk on service workers – Keith's talk isn't especially deep, but given how confusing SWs can be it's a solid conceptual grounding.

I've seen a few talks/tutorials on Alpine – a tiny script that allows a lot of interactivity based on attributes in html (think Stimulus or htmx with Vue's syntax). I was having a hard time understanding how I could put it to use until I saw Caleb Porzio's own walkthrough.

Abramov's Just JavaScript course – through which I learned that null has a typeof object – has ended for now, which is a shame since I was really enjoying it. Sounds like the course is popular enough that it's going to be revised and become a website/book, which is terrific news.

TypeScript, WordPress 5.5, the site

On vacation from work, and actively trying to disengage from the day-to-day (there might have to be a post on work-life balance later on), but spending some time learning TypeScript, for which I'm using Maximilian Schwarzmüller's online course. His course on Svelte is also terrific – Svelte itself just announced TS support. I'm starting to see why TS has become so ubiqitous, like Rust it makes it very hard to screw up (at the cost of being much more verbose, but that compiles away); I'm curious to see how long TS will remain dominant before the pattern switches to WASM compilation, which is probably the future. I can't see that happening for at least another five years, but that's just a guess.

A lot of upcoming stuff in WordPress – finally being able to pass arguments to template parts (not sure why this was such a long time coming), sitemaps, environment variables, Blink/Gecko native lazy loading ... some things, like automatic updates for themes and plugins, don't really affect my work as I only have one client and everything is built for that use case. If I were writing themes or plugins for sale I would have an incentive to accommodate that as well as everything relating to Gutenberg (something I'll have to deal with eventually but I wanted to let the whole project settle and have best practices evolve first).

I should take a moment and talk about the site – my experience with Eleventy has been terrific, once you understand how data is passed around and how routes are made it's a pleasure to work with. The only problem – and it's not really a problem, just something I wish was different – is that it's CommonJS, and that's fundamental to its operation. This means that using ES6 module patterns won't fly in a lot of cases where you'd want or expect to use them. The SSG space is on fire right now with a new framework appearing nearly every day so I'd expect someone to recreate Eleventy as ES6-first (Twelvety?), or for some other SSG to capture mindshare among devs.

The Vercel deployment process (née Now), like nearly everything they do, is nearly magical, and is a best-in-class experience everyone should be aiming for. Often times the packaged solutions companies offer to abstract some pain point simply relocate the pain, in sort of a aggravation-neutral approach – but Vercel seems to know how to do it well.

Future Fonts is a brilliant way of supporting people who are making typefaces – you buy them, but also receive updates to them as they're refined and built out. So many new faces have very little personality and are incredibly derivative, whereas the people doing stuff for Future are very inventive. Sometimes the result isn't something you could ever imagine using, even for a display face, but the Overton window of what's acceptable in design is widening after what seemed to me a period of blandness.

A note about the color schemes – they're all based on F1 liveries and helmets. Right now I'm enjoying switching color schemes randomly on every page load, but I know that's not exactly typical behavior for a site, so I might change that later. Or not! It's my site!

Amplify Datastore, programming languages

AWS offerings can be obscured by clouds of their own marketing so it was great to hear ex-AWSer Daniel Vassallo on Software Engineering Daily talking about various AWS bits in plain language. Picked up his book The Good Parts of AWS which so far is really informative and demystifies some of the AWS ecosystem.

One of the more recent AWS solutions is DataStore, which I ran into via reading Shawn Wang’s writeup in reference to using it with Svelte. It sounded brilliant but the presentation at re:Invent by Richard Threlkeld was repeatedly mindblowing; it packages up a comprehensive solution for caching, offline, concurrence, conflicts ... after watching it I can't think of building any future project without it.

Spent some time looking into Nim, Go, and Rust – all are fascinating but Rust seems to be the one that is ... about to explode? Is exploding? Has exploded and I’m only now catching up? Sheshbabu Chinnakonda’s guide to Rust for JavaScript people is terrific, and Sean Grove and Steve Klabnik’s talks about wasm and Rust are fascinating.

As amazing as Rust is, and as excited to learn it as I am, I have to be realistic about where the market is and where my strengths are. I’m much more likely to be working on the front end and in JavaScript so improving my debugging and learning TypeScript is a better use of my time, even if it feels like TS is verbosely ‘correcting’ features of JS which Rust has built-in.

Journal inspired by Darin Doria and Sam Selikoff