Published

Inexactly benchmarking Eleventy vs Astro build times

The Eames Institute team is checking out some frameworks and static site generators for a project, and I wanted to see how Eleventy and Astro compare in terms of build time.

Zach Leatherman’s 2022 article “Which generator builds Markdown the fastest?” is probably the most thorough resource I’ve come across along these lines, and I’d recommend checking that out if you want to do some serious comparisons.

But I was curious about a “real world” test in 2024, so I decided to do some inexact benchmarking using a Markdown export of this blog. A caveat up front: I’m much more familiar with Eleventy than I am with Astro, which will likely be apparent when I get to the incremental build tests later in this post.

For Eleventy I used eleventy-netlify-boilerplate with zero modifications, and for Astro I used the blog template as described in their docs with some small modifications along the lines of this wordpress-to-astro repo to get categories and tags working. I didn’t want to use wordpress-to-astro directly since it was last updated two years ago, but it is a good reference point.

My blog has 770 posts which were exported to 770 Markdown files. With a paginated feed, categories, and tags, the total number of built pages is around 2550.*

Based on an average taken from 10 builds, Astro took 10.07 seconds and Eleventy took 4.29 seconds to build.

Incremental builds can speed things up significantly since the only built content is that which is relevant to the modified files.

Eleventy has supported incremental builds since December 2022 (I believe!), but it doesn’t yet support it on a CI server. There is an open issue for it which looks like it has traction.

To test incremental builds, I added and removed the same single tag on the same post 10 times.** Based on an average taken from 10 incremental builds, Eleventy took 2.17 seconds skipping 777 files. I would have expected it to skip more, but this might have to do with not being able to incrementally build paginated data.

I wanted to test the same content change in Astro… but it isn’t clear to me that there is an apples-to-apples comparison. Astro introduced an experimental Incremental Content Caching feature in v4.0 (not sure if this is supported on CI servers). When I added experimental.contentCollectionCache to the config, there was no difference between basic build times when I made a content change. I’m not sure if this is because having all of my content in Markdown makes the caching a mute point, or if it’s something else. If anyone has further context on how best to test Incremental Content Caching in Astro, would love to know.

For what it’s worth, running astro dev is extremely quick, just 125ms before it’s ready.

I’d be curious to do a similar benchmark using WordPress’s REST API but am not sure I’ll have the time… Will update here if I do.


* I give a rough number because the Eleventy boilerplate and Astro template generate a few additional pages, but the page total difference is in the single digits so I didn’t waste time evening them up perfectly.

** For my own future reference in case I do further tests: Add and remove the tag hello from this post.

Published

New role, big emotions, top of the tops

A few recent happenings.

I started working with the excellent Eames Institute last week as Engineering Lead. 🎉 It’s been good fun so far, and seems like a great team. A heck of a lot of things I care about are rolled up in that one role.

B is a gorgeous ball of wants and needs and joy and sorrow. He watched The Snowman last night with Sam for the first time while I was cooking dinner, I’m not sure he was emotionally prepared for the ending. 😢 And I wasn’t emotionally prepared for his reaction.

Recently, I got B a top for the first time in preparation for a long Thanksgiving flight. It didn’t capture his attention as much as I was hoping, hey ho, but on the flip side, I absolutely love it. I’d forgotten how fun tops are, and it reminded me of the most recent exhibition by the Eames Institute on their toy collection, particularly their tops. I can completely understand why someone would collect them, and could imagine slipping in to that…

Then I started looking in to their history, I had no idea how many different types of top there are! There’s even one that flips over while in motion to spin on its stem. Looking in to tippe tops took me to the absolutely glorious Grand Illusions channel on YouTube run by ex-BBC presenters Hendrik Ball and George Auckland and collector + presenter Tim Rowett. Besides their video about the tippe top, they have well over 500 videos on many other toys from Tim’s 20,000+ toy collection. This one particularly tickled me. I used to have that dolphin pen! And my god, do I want one of these.

Published

“Kill your personas”

Counterpoint to yesterday’s post: “Kill your personas: How persona spectrums champion real user needs” by Margaret Price at Microsoft.

A persona spectrum is not a fake person. It’s an articulation of a specific human motivation and the ways it’s shared across multiple groups. It shows how that motivation can change depending on context. Sometimes, a trait can be permanent, like someone who has been blind since birth. A person recovering from eye surgery might temporarily have limited or no vision. Another person might face this barrier in certain environments, like when dealing with screen glare out in the sun. How would your product adapt to this range of people and circumstances with similar needs?

I can get behind that!

Related, check out Microsoft’s Inclusive Design Toolkit. (Though I reeeeeally wish that were a webpage…)

Via Doug Belshaw’s “Temporarily Abled” article on Thought Shrapnel.

Published

GDS’s Accessibility Personas

If you’re a designer or engineer and have never dug in to accessibility personas or cognitive walkthroughs before, I’d recommend checking out GDS’s accessibility persona homepages and their accompanying blog post about how they use persona profiles to test accessibility. As of right now, their profiles include the following personas:

  • Claudia – a sight impaired screen magnifier user
  • Ashleigh – a severely sight impaired screenreader user
  • Ron – an older user with multiple conditions
  • Chris – a user with rheumatoid arthritis
  • Pawel – an autistic user
  • Simone – a dyslexic user
  • Saleem – a profoundly deaf user

It’s no substitute for testing with real users, but it’s a big step in the right direction if it’s not already a part of your design and engineering process.

Published

A long-overdue work update

It’s been a wild few months professionally.

Earlier this year, I was asked to be the Engineering Manager at SuperHi and started in that role in May. That same month, I gave a talk at Parsons on the invitation of Eric Li and Michael Fehrenbach for their Typography and Interaction students in the MPS CD program. Maybe a month or two ago, SuperHi CEO and friend Rik Lomas and I were interviewed by Aja Singer for the recently-released first episode of her new podcast “Interview Stack” which offers a “deep dive on the engineering hiring process”. She’s a great interviewer, I’d keep an eye on her work.

And then over two thirds of us were laid off from SuperHi yesterday!

It’s unfortunate but understandable given the circumstances, it’s a tough world out there for startups right now. I really wish nothing but the best for the remaining SuperHi team and hope they’re able to reach the lofty goals that we set for ourselves. It’s a great platform and community with so much potential. I recommend checking out the courses and workshops that we recently released including one on generative art, one about Squarespace, and another on integrating AI on the web. There should be a lot more to come soon, SuperHi’s newsletter is the best way to get updates if you’re interested.

We achieved so much together. Personally, I’m really proud to have improved a lot of the accessibility practices, project management, QA, knowledge transfer processes, and documentation at SuperHi, even though some of that isn’t publicly visible just yet. I’m proud of the code I wrote and the languages and frameworks that I learned while there, going from working largely with CSS, HTML, JS, and PHP before to working heavily with TypeScript, Next.js, and React across multiple interconnected projects in a monorepo. I’m also really proud of the quality of our collaboration both across SuperHi in general and particularly within the Engineering team specifically. We shared extremely trusting working relationships which isn’t easy, especially when working remotely.

It’s sad to not be a part of that anymore, and it’s tough when you’ve been working towards a goal so hard for so long and then suddenly the next morning is a blank page.

But I am looking forward to pottering a little. A little blog gardening, improving performance on this site (when did it get so effing slow?! the cobbler’s children have no shoes etc. etc.), maybe finally setting up the bookshelf site I always wanted to make. Will have to do a little bit of LinkedIn cleanup. ::makes gagging sound:: And I had the last week of summer scheduled off anyway so I’ll be spending that fully focused on B, probably wandering in and out of all the water features in every playground within a 5 mile radius.

If anyone has interesting opportunities to share, please give me a shout.

And please do share this with your friends. I think I’m looking for another software engineering role at a remote USA- or UK-based company, or in-person at a NYC-based company. But I’m going to think about it a little more and am aiming to post again soon with more specifics.

Of course I wasn’t the only one, there is a lot of other ex-SuperHi talent out in the world now too including top-notch designers, razor-sharp teachers, meticulous engineers, brilliant strategists, and community management geniuses. I’m not going to post names here just yet because I want to verify who would like what shared, but if you have any opportunities along those lines, send them my way and I’ll make sure they reach the right eyeballs.

Now, time to relax a little during our remaining few days visiting family in the UK. Below are the flowers that my mother in law picked from her garden for me after she heard the news. I wish Smell-O-Vision was a thing, because these are pretty fantastic.

I’ll be back in Brooklyn on Sunday. If you happen to be nearby in the coming weeks, let’s get a coffee or go for a stroll in Prospect Park or something.

Until soon x

A small bouquet of pink and purple sweet peas in a glass bottle on a white kitchen counter

Published

How and why I stopped freelancing

A quick disclaimer: This is NOT an article about how to find a full-time job. There are a million posts about that online. And anyways, beyond the general advice1, I’m not sure how useful those articles usually are anyways. Every person’s path to a job is super different.

This is about the steps I took to make the transition from independent work to full-time employment as smooth as possible for my clients, my collaborators, my new employer, and most importantly myself. It’s also about the thought process behind that decision.

In many ways, this is all a long explanation of the feelings behind this earlier post.

It wasn’t without stress, but it worked out pretty well with a lot of prior planning and communication.


Wispy clouds against a blue sky

Before I go in to how, a little about why.

Read more

Published

Fluid type sizes and spacing

I’ve been using a fluid type and spacing system on the most recent builds I’ve completed. Here’s why I use it, and how I approach it. I mainly use SCSS (a Sass syntax), but it’s also very do-able with plain CSS.

Screencast of Gort Scott’s homepage, resizing it in Chrome’s inspector

The example above demonstrates the result on gortscott.com, resizing the window from about 2300px down to about 640px and back again. The type and spacing across the page begins scaling down when the window is 2095px wide and stops shrinking at 1047px wide. At that point the text begins to reflow as the CSS Grid layout continues to shrink. Eventually at 703px wide the layout shifts, and again at 543px wide.

Read more

Published

Leave a stone unturned

I think the best creative advice I ever got was from my tutor at CSM.

Don’t dot every I and cross every T, don’t tie up every loose end. Leave some questions unanswered. A piece of art, a movie, a song, a performance, they all tend to be more compelling when they leave you wondering.

I tended to be very goal-oriented in my visual art practice, with an idea of exactly what I wanted the final product to be. This usually left me with frustration when I couldn’t quite get it there, and a piece that was overworked and somehow boring, despite my efforts. When I spent a little more time just focusing on the process and letting go of the result, it was both more fun and far more interesting to look at in the end.

I don’t have much of an art practice at the moment, though sometimes I look at this website as one big, long-haul creative endeavor.