From Should This Be a Map or 500 Maps? by Elan Ullendorff:

I am someone that preaches expressiveness to a fault, but the truth is that I make decisions to scale all the time. I don’t necessarily see this as a compromise of values. There is beauty in trying to express something specific; there is beauty too in finding compromises to create something epic and collective.

New magic for animations in CSS

There are two new features coming to CSS that will make it much easier to further avoid JavaScript when implementing animations:

  1. Animating to and from display: none; for the sake of enter/exit animations.
  2. Animating to and from the intrinsic size of an element (such as height: auto;).

Traditionally, animating something into or out of the screen (as opposed to just hiding it visually) required JavaScript to remove the element from the page after waiting for the animation or transition to complete. No longer!

When these new features land in browsers, you’ll be able to animate to display: none like any other property using a keyframe animation:

.item {
  animation: fade-out 0.5s forwards;

@keyframes fade-out {
  100% {
    opacity: 0;
    display: none;


You can also do the same thing with a CSS transition, but you’ll need to set the new transition-behavior property to allow-discrete for that to work. I can see something like * {transition-behavior: allow-discrete} becoming a part of my CSS reset in the future to enable this behavior by default.

But what about the opposite case? You have an element that’s currently not displayed and you want to animate it as it appears. Again, we typically use JavaScript for this today to ensure the initial styles are set properly and our element doesn’t display visually on the page before it has animated.

Now, we can specify the starting style like this:

.item {
	@starting-style {
    opacity: 0;
	opacity: 1;
  transition: opacity 0.5s;

Elegant and useful. If you want to learn more about these new powers, I recommend checking out this post on the Chrome for Developers blog.

The second new feature coming to CSS is the ability to animate to and from an element’s intrinsic size. The most common use case for this is collapsible areas: we want them to be height: 0px when closed, and when opened their height should be automatic based on the contents.

Because CSS has historically not allowed for animating to height: auto;, we’ve had to use JavaScript to measure the height of the contents and animate to that pixel value.

When this feature lands in browsers, we’ll instead be able achieve this like so:

.item { 
  height: 0; 
} { 
  height: calc-size(auto);

The magic comes from the calc-size function, which is a curious API choice—why not just use the existing calc() function? Here’s a comment on the CSS working group’s draft for this feature that explains why.

These features are just a few of the many ways that CSS is growing and becoming more powerful and expressive. To learn about all of the other great new things coming, check out this excellent video by Una Kravets from Google I/O.

Una says that we’re in the golden era for web UI, and I couldn’t agree more.

From The Rise of Emotional Divestment by Heather Havrilesky:

This state of affairs goes beyond compassion fatigue. Our around-the-clock overexposure to global human suffering, our daily feed of what we once considered catastrophic events — political, ecological, cultural — when combined with diminished attention spans, smaller and smaller chunks of content, and baked-in cross-platform imperatives to remain emotionally removed from any given person, place, or event, adds up to a kind of merciless sterility and an impatience with meatspace that we’ve never known before.

From More People Should Write by James Somers:

That’s the promise: you will live more curiously if you write. You will become a scientist, if not of the natural world than of whatever world you care about. More of that world will pop alive. You will see more when you look at it.

I really appreciated this write up from Jeremy Keith about his personal approach and best practices for HTML web components.

Judging by the discourse, web components seem to be gaining in popularity lately, and I’m very here for it.

Trying to build on the web using a component model was what led me (and others I’m sure) into the arms of React many years ago. While I’m grateful for that journey, and still believe React is the right choice for many projects, it gives me a lot of comfort to know there’s a native tool I can reach for.

The tricky thing with web components, like the web platform in general, is the flexibility. What makes it so powerful can also make it hard to learn, and even harder to know if what you’re learning is the right or recommended path. It takes time for best practices to form and percolate.

The moon trees of Mississippi

Many of my online acquaintances know that I live in Chicago, but I suspect they might not know that I’m from a small university town in Mississippi called Starkville.

Starkville is home to Mississippi State University, where I attended college and studied Computer Science. In 2017 I graduated and moved to Chicago to start my career.

At the time I was excited to escape the place where I spent so many of my formative years, a place which was the symbol of mundanity for me and my youthful ambitions.

Seven years later and I’m having coffee and catching up on my inbox when I happened to find the latest issue of Claire Evans’ newsletter: a delightful story about moon trees—that is, trees grown from seeds that traveled to space and around the moon 34 times during the Apollo 14 mission.

Claire traces the history of the seeds, which were germinated into seedlings and given out to foresters across the country before being largely forgotten about and then eventually rediscovered and catalogued by NASA.

(By the way, don’t miss out on the wonderful website created to track the trees by a NASA archivist.)

Today less than 100 moon trees remain, but as Claire goes on to describe, there is a second generation of moon trees (so called “half-moons”) grown from the seeds of original trees that remain today.

The location of one of these mother-trees, though, is what caught my attention: it’s on the campus of Mississippi State University, my campus. All the times I walked past this humble tree I had no idea it had been to space.

It’s such a pleasant surprise to have this story appear in my inbox and show me something new about a place where I spent so much time.

While I lived there, I often felt suffocated by the mundanity of my home town. This has reminded me that there are things to appreciate and interesting stories (of perhaps cosmic proportion!) to discover in even the most mundane of places. We just have to keep our eyes open and remember not to take anything for granted.

If you’d like, you can buy a seedling Sycamore moon tree online descended from the one on the MSU campus.

The Cascade

Hearty congrats to Robin Rendle who has turned his wonderful CSS-focused newsletter into a good, old fashioned blog. The Cascade is beautiful, and is already full of great content for CSS nerds like me.

The site is, generously, free to read, but member supported for $10/year. Subscribing, for me, was an absolute no brainer.

I liked this bit from an issue of Robin’s personal newsletter that he sent after the launch:

There’s not enough words in the English language to describe how cool it is to build a little publishing machine. That rare, lightning-in-a-bottle feeling of throwing a few services together and building something greater than the sum of its parts.

It’s never been easier to create a website (a publishing machine!) for yourself or your interests. The feeling of ownership you’ll have compared to publishing on someone else’s platform is a powerful force in and of itself.

From Product Design Is Lost by Rune Madsen:

Many designers and design teams now find themselves in a place between strategy and implementation, yet they are not fully empowered to influence either. As soon as a digital product takes its initial step towards becoming real, designers are relegated to the role of advisors without the necessary tools to challenge assumptions at the C-suite level.

However, driven by a desire from businesses to turn design into a process-heavy, measurable function, we’re filling our time with checklists instead of focusing on the very thing that makes designers relevant: our ability to propose new points of view and delight users with meaningful experiences. These core competences that were inherited from graphic design have been replaced with a poor man’s version of an anthropology major where the act of design is mostly based on averaging user opinions.

From Software Is a Medium of Setbacks, but a Medium’s Limitations Don’t Define the Artist by Baldur Bjarnason:

Software is a creative industry with more in common with media production industries than housebuilding.

As such, a baseline intrinsically-motivated curiosity about the form is one of the most powerful assets you can have when doing your job. It helps you solve problems and come up with new ideas.

From Making Films and Making Websites by Jim Nielsen:

Similarly, in making websites, the only source of truth is the website people access and use. Everything else — from design system components to Figma mocks to Miro boards to research data et. al. — is merely a tool in service of the final form.

From Making the Internet Alive Again by Gaby Goldberg:

Algorithms are informational gatekeepers. AI search tools, in an effort to show us the most relevant content in the most efficient format, may actually make obsolete our ability to have an Internet that feels uniquely our own. “Surfing the web” very well may be a thing of the past. Already, my sources of information and trust online have splintered. I read about current events on Twitter. I listen to music on Spotify. I shop on Amazon. The browser is a navigation engine to reach these places, but the search experience itself is fragmented across these highly specialized platforms.

Boku no Natsuyasumi

Several months ago, in an issue of Spencer Chang’s newsletter, I discovered the 6 hour video review of a game called Boku no Natsuyasumi by Tim Rogers (known as Action Button).

To call this a review is surely stretching the limits of the word’s meaning as we know it.

Boku no Natsuyasumi, henceforth shortened as Bokunatsu, is a game for the original PlayStation released 24 years ago in Japan. And only in Japan. It centers on a young boy, Boku, spending a month of his summer vacation with his aunt, uncle, and their family in the countryside of Japan in August of 1975.

Players can explore the countryside as Boku, collect bugs, fish, fly kites, and other low-stakes activities you might expect from a child on summer break.

Slowly, you learn about the people around you and their stories.

Sounds simple, but watch Tim’s review and you’ll see that the game is a subtle masterclass in storytelling, menu design, cinematography, typography, skeuomorphism, Japanese culture, sound design, memory, and even mortality.

I became determined to experience the game myself, which is easier said than done given that it was never released outside of Japan. I managed to find an English patch, translated by a fan, for the game’s sequel Boku no Natsuyasumi 2: Umi no Bouken-hen (My Summer Vacation 2: Sea Adventure Chapter). The sequel, released two years after the original, also follows a boy named Boku vacationing in the countryside in August of 1975.

Armed with the patch file, I needed 3 more items to complete my quest: a PS2 emulator, a PS2 BIOS (the software pre-installed on the console’s chipset), and a copy of Boku no Natsuyasumi 2.

Luckily, the emulator is easy to come by. I downloaded the excellent PCSX2, which is an open source PS2 emulator that works quite well on my MacBook Air.

Unfortunately, for Legal Reasons™ I cannot provide a link to the PS2 BIOS or the the game itself, but a cursory Google search should turn up the files you need without too much trouble.

With these 4 talismans in hand I was able to perform the necessary ritual of resurrection: apply the English patch to the game, boot up the PS2 emulator, load the game.

After a few clicks… paydirt.

A screenshot of the start screen of Boku no Natsuyasumi 2

An experienced gamer might find this process mundane, but to me it feels like the internet equivalent of breaking open an ancient, hidden tomb. At this point I could only imagine what treasures may lie within.

What I discovered is undoubtedly a work of art, made clear by my time playing this iteration and from Tim’s review of the original. The games also happen to be an example of the billions of bytes of lost media that are just waiting to be rediscovered by someone who will appreciate them.

Here is a game, published 22 years ago, that has managed to evoke feelings of nostalgia and wistfulness in me today, in 2024. This must be the closest thing to time travel I’ll ever experience.

I knew lots about the game before playing due to Tim’s review (which, again, is a 6 hour masterpiece), but there are two aspects I couldn’t fully appreciate until playing: the game’s backgrounds and soundscapes.

First, the backgrounds. Bokunatsu makes use of a fixed perspective, where the camera only changes angles when the character moves to another scene. Each area that the user can move through is set upon a gorgeous hand-painted background. If you’ve ever seen a Miyazaki film you have a sense for the feelings that these backdrops create. A 3D modeled scene would never have evoked such a strong sense of place, time, and character, and the creative decision to use hand drawn backgrounds makes all the difference.

There’s a narrative purpose to the backgrounds as well, signaling the time of day as they change throughout between different paintings for day, afternoon, and night.

The backgrounds were done by artists at an animation studio called Kusanagi. Here are the backgrounds they made for Bokunatsu 2, but I heartily encourage you to browse through all of the art on their site.

Kazuo Oga is a famous background painter and the person responsible for many of the backgrounds in your favorite Miyazaki films. Animation Obsessive had this to say about him:

That’s really the heart of it. Oga notices things — little things. He gets a feel for them. When he sits down to work, he brings with him all the unimportant details that matter the most. Then, with his paint, he creates an artwork that centers those details, elevates them. It’s more a way of seeing and feeling than it is a technique.

All the unimportant details that matter the most—paying attention to these details are precisely what make Bokunatsu, from its backgrounds to the narrative itself, so plainly striking.

The backgrounds are complimented by the soundscapes. These are, in my opinion, the best part of the game.

Of all the characteristics of summer, it may be the sounds which I most associate with the season. I grew up in the rural south, and Bokunatsu manages to capture the droning sounds of summer in a way I’ve never experienced before in media.

At times, I’ve let the game run in the background just to listen to the soundscapes.

According to an interview with the creator and director Bokunatsu, Kaz Ayabe, Sony sent a team into the mountains to capture sounds for the game.

Dear reader, I’m here to tell you that the effort paid off.

The game’s environment is alive with the sounds of insects chirping, the wind blowing through a nearby chime, the trickling of a nearby stream. As Boku explores the countryside time advances and, like the background art, the sounds change to evoke the feeling of morning, afternoon, and night.

Animal Crossing, which debuted the year after the original Boku no Natsuyasumi game, is held up as the shining example of cozy, relaxing video games. I am a true fan of the Animal Crossing franchise, but with its gameplay literally focused on grinding in order to pay your landlord they stand in stark comparison to a game like Bokunatsu. Animal Crossing rewards completionism, and in doing so makes the game about grinding instead of actually relaxing.

In comparison, the only thing you’ll get for collecting all of the bugs or catching all of the fish in Boku is a diary entry written by the boy at night before bed. And, like in real life, maybe that’s enough?

Discovering and playing Bokunatsu (and watching Tim’s 6 hour magnum opus of a review) has given me a deep appreciation for the timelessness of art and media.

A game from 24 years ago, deeply steeped in a culture that isn’t my own, has managed to create in me a sense of warm nostalgia. Its soundscapes remind me of home, but also make me long for a place I’ve never been.

It’s also worth appreciating the meta aspect of the journey I went on to discover and experience this game, all because of a link in a newsletter. This is why the web is so special, and it’s what an AI will never do: unearth a lost gem.

When writing in his diary at the end of each in-game day, Boku reflects on “the most wonderful day in which nothing happened.” Let this be a reminder that there is magic waiting to be found in the mundane.

From The Magic of Acorns by Alex Komoroske:

When you look out around you, all you see are rocks. Rocks have no agency; they cannot change themselves. They need the effort of others to make them into something beautiful. A living thing has its own agency: a kind of internal magic. It is something that grows under its own power. When I look around me, I see that some of those ‘pebbles’ have the potential to be alive. Some of those ‘pebbles’ are acorns.

From ‘Enshittification’ Is Coming for Absolutely Everything by Cory Doctorow:

IP isn’t just short for intellectual property. It’s a euphemism for “a law that lets me reach beyond the walls of my company and control the conduct of my critics, competitors and customers”. And “app” is just a euphemism for “a web page wrapped in enough IP to make it a felony to mod it, to protect the labour, consumer and privacy rights of its user”.

Here’s something unexpected: Keanu Reeves and China Miéville (one of my favorite science fiction authors) are writing a book together that’s dropping in July. The Book of Elsewhere is described as a “genre-bending epic of ancient powers, modern war, and an outcast who cannot die.” Sign me up.

Speaking of books being released this year, Robin Sloan’s new novel Moonbound will land in June. Preorder a copy and let Robin know to receive a limited edition zine.

Summer beckons!

A small programming note—I’ve updated my homepage to include highlights from articles and books I’ve read in addition to blog posts. The highlights are synced from my Readwise account.

If you haven’t used Readwise Reader, I highly recommend it. It’s my modern replacement for Instapaper, and has a wonderful browser extension which allows for in-place highlighting of passages (including comments!) I am a very happy subscriber in part because of their excellent API.

The Readwise API combined with Eleventy’s fetch API made it a breeze to implement this new feature ✨

From David Milch’s Disembodied Writing Process by Mason Currey:

You can’t think your way to right action; you can only act your way to right thinking.

From Were Your Parents Right About Anything? by Heather Havrilesky:

The trouble with parental advice is that it’s extremely difficult to select the good parts while discarding the bad parts. Sometimes when you really sit and analyze what your parents taught you, you discover that there aren’t that many bad parts. The things they said to you weren’t even the problem. It was their conflicted feelings, their shame, their anger at themselves, their habit of blaming external forces for their failures, their inability to show up and be present for your weird personality, that stood in the way of your bond with them, your self-acceptance, your well-being, and your ability to embrace your path forward in life.

From I Opened a Grocery Store by Alison Roman:

Aside from the creative outlet it gave me, cooking, being active in the kitchen, gave me an obvious place to channel my anxiety. It calmed my nervous system. Cooking, being active in the kitchen, also meant I was useful. And if I could be useful, I could be loved.

From Eigensolutions: Composability as the Antidote to Overfit by

This works great with the kinds of transactional processes (marketplaces, social media, search engines, etc) most product literature centers around, but can fall apart when designing creative tools (developer tools, no-code tools, design tools, languages, APIs etc.), as there are fundamental differences[1] between the two:

• In transactional processes, users have clearly defined goals, and the task is highly specialized (e.g. “Go to work”, “Order takeout”, “Find accommodation for my upcoming trip”) and can often be modeled as a linear process.
• In creator tools, use cases vary wildly, goals are neither linear, nor clearly defined, and may even change throughout the session.

From Once Upon a Browser by

I eventually came to realize that the appeal [of generative art] was rooted in my love of the web, where we create content elements and visual styles and scripted behavior, and then we send our work into a medium that definitely has constraints, but something very much like the random component of generative art: viewport size, device capabilities, browser, and personal preference settings can combine in essentially infinite ways.  The user is the seed in the RNG of our work’s output.

From Overfitting and the Problem With Use Cases by Joe McLean:

It’s very common that your first design idea will be overfit. It’s useful to interrogate a concept and ask — is there a deeper, more fundamental need? Could we reduce this concept until that is the only part that remains? What other possibilities unlock with a simpler, more general tool?

Use cases should be applied after design is done — to check if the tools available can accomplish the job. As a starting point, they put you in a mindset to overfit. This is especially dangerous because users will often tell you they love it in concept testing. “Ah yes, here is my process, represented in pictures!” But it’s only when you actually try to use the tool — hold the thing in your hands — that there’s a hundred things you need it to do that it doesn’t. It’s not flexible — it’s a series of menus and disappointed feature requirements.

I believe it’s best to think of a use case as a test case to see if your basic tools are working. What’s missing from the toolbox? What are the limits of what’s available? What 4 use cases would open up with the addition of one more tool?

I believe that designing great creative software tools is not about designing cabinet assembly machines. It’s about giving users a high quality toolbox of screwdrivers, hammers, and wrenches. It’s about seeing the shared needs across many use cases and designing the simplest possible set of devices that allow the user to accomplish their objectives.

From Field Notes on Science & Nature by Michael R. Canfield, Edward O. Wilson, George B. Schaller, Bernd Heinrich, Kenn Kaufman, Anna K. Beh...:

Such research consists of a repetitive recording of the same facts until one has a large enough sample to deduce patterns, derive conclusions, and even make predictions.

Poets of the mundane

Paul has always been my favorite Beatle.

I was in junior high school when I got hooked—during that time there’s a good chance that if you found me listening to music on my iPod nano, it was The Beatles.

Perhaps it was Paul’s youthfulness and humor that made him approachable to me at that age in a way that John wasn’t. Paul was someone you might have known in real life, but John and George seemed otherworldly.

That otherworldliness is a part of why John in particular is regarded as the driving creative genius of the group.

But this has never sat right with my love for Paul, so I was delighted to discover Ian Leslie’s 64 Reasons To Celebrate Paul McCartney which makes a very strong case for the boyish Beatle.

It’s a long list full of excellent reasons to rethink your choice of favorite Beatle. There was one aspect in particular that stood out to me.

For McCartney, the domestic isn’t opposed to the world of the imagination; it is a portal to it. He is a poet of the mundane; a writer who will start off writing about his dog, or fixing a hole, and see where it takes him.

I think this is the one that sums up the whole thing, and is what a large part of makes Paul appealing. His work offers me reassurance that inspiration can and does come from the most unassuming of places.

The need to find or manufacture deeper meaning in our work by tracing its inspirations can be paralyzing—Paul is a good reminder for me to not ignore ideas sparked from humble circumstances.

It’s clear that being a “poet of the mundane” extends beyond creative work and into the way we choose to live our lives:

His unashamed “normality” was an act of inverted rebellion, as transgressive, in its way, as Lennon and Yoko posing naked. But neither fans nor critics saw it that way, and to this day it is Lennon who best fits our Romantic idea of a great man; tortured, difficult and deep. Long before it became commonplace for male public figures to hymn the joys of parenting, Paul McCartney was showing us a different way to be a man, and we have never quite forgiven him for it.

This echoes the timeless advice from Stephen King: “Life isn’t a support-system for art. It’s the other way around.”

Apps and the Age of AI

For how much software has evolved and matured I find it strange how many tasks remain unaddressed by niche, purpose-built software. I’m always excited to see how novel ideas can come about from focusing in on a narrow domain.

Ink and Switch’s latest research prototype Embark focuses on one specific task: making travel plans.

Embark uses a humble text-based document as its interface, which it then enriches with additional data and views as needed. There is something thrilling to me in the notion that, of all the options explored, plain text won (and often wins) the day.

As a designer I find it both deeply distressing and blissfully serene that improvements upon plain text as way of viewing, creating, and manipulating data are so rare.

Perhaps more importantly than the medium, Embark brings the features of multiple apps into a single workspace:

Although apps give us access to all kinds of information, they provide only limited mechanisms for bringing it together in useful ways. Whenever a complex task requires multiple apps, we are forced to juggle information across apps, resulting in tedious and error-prone coordination work.

Embark: Dynamic documents for making plans

Ink and Switch’s research identified 3 core problems with the typical model where tasks are completed using a series of individual apps:

  1. Context is not shared across apps
  2. Views are siloed
  3. Apps produce ephemeral output

One of the most exciting aspects of AI for me is its potential to address these challenges. AI actors operating on our behalf, paired with the right platform primitives and protocols, have the potential to form a new model of computing which reduced the coordination cost of managing many apps and interfaces.

I feel optimistic about a future with technology shaped by catalysts like LLMs, federated social protocols, and now Embark. Each offer new avenues for addressing the challenges with a computing model centered around siloed apps.

If the past decade of human computer interaction has been centered around apps, perhaps the next decade will knock those walls down and put users back in control of their data and the ways it is manipulated.

From Are AI Language Models in Hell? by Robin Sloan:

Of course, an X is an X, in some respects. But when you, as a human, read text, you receive a dose of extra information — always! The monospaced grid of code tells you something (along with the syntax highlighting, of course). The “nothing to see here” of a neo-grotesque font tells you something. The wash of a web page’s muted background color tells you something.

From Lurking by Joanne McNeil:

The internet has groomed me to expect that all of culture is indexable and classifiable. In the absence of metadata, I feel a deeper loss and disconnect.

Instead the media talked about the internet in broad generalities is the internet good, or is the internet bad? Is the internet making us smart, or is it making us stupid? The supposed answer to any user's problem was less internet rather than a better internet. Or, as the techno-optimists would have it, the answer was more internet, rather than purposeful use of the internet.

From Burn Baby Burnout by

I see an overemphasis on artefacts and deliverables: things you can point at, at the expense of what they really are: large scale organisational change programmes.

From Dynamic Documents for Making Plans by

Why is it so difficult to plan a trip using our digital devices? When making a plan of any kind, we need to pull together information from different sources, and then synthesize the information to make decisions. Although apps give us access to all kinds of information, they provide only limited mechanisms for bringing it together in useful ways. Whenever a complex task requires multiple apps, we are forced to juggle information across apps, resulting in tedious and error-prone coordination work.

From Designing for Wide Walls by Mitchel Resnick:

For a technology to be effective, he said, it should provide easy ways for novices to get started (low floor) but also ways for them to work on increasingly sophisticated projects over time (high ceiling). With his Logo programming language, for example, kids could start by drawing simple squares and triangles, but gradually create more complex geometric patterns over time.

But the most important lesson that I learned from Seymour isn’t captured in the low-floor/high-ceiling metaphor. We need to add an extra dimension: wide walls. It’s not enough to provide a single path from low floor to high ceiling; we need to provide wide walls so that kids can explore multiple pathways from floor to ceiling.

From Building a Design System Workbench by Christoph Labacher:

When we started looking for tools to help us build a design system from scratch, we discovered that there are many tools that help you with the outcome, but they care little about the process. When we say outcome, what we mean is “We want a documentation website for our design system, and it needs to be nice and shiny!”. That was certainly true, but it also wasn’t our primary concern at that moment. Instead what we thought was “We need to build a design system, and we’re creating it from scratch!”. It felt like people were offering us display cabinets when we were looking for a sturdy workbench.

From Bless the Toolmakers by Robin:

So I wish more people were making tools for a specific creative purpose rather than for general consumer adoption. I wish more people were making tools that very intentionally do not scale—tools with users by the dozen. Tools you experience not through a web signup form, but through pathbreaking creative work.

I guess I want fewer aspirational Apples and more Pixar wannabes.