Long After

Jim Kacian, one of my top haiku heroes, emailed me on March 13, 2021, asking if I’d be interested in helping him with a book idea. It was the easiest yes I’ve ever said to a project.

The idea was for a new version of a book he’d published in 2008 that never saw much distribution with an Italian company that no longer exists. I’ve been publishing things on (and with) the web for about 20 years, including haiku. So I thought this project would take a few months, max, even factoring in the birth of my first child. The book was released over a year later, on International Haiku Poetry Day, April 17, 2022. There are still unchecked boxes on my todo list.

It was the most challenging publishing project I’ve worked on. It was also the most fun. But to call it a book feels belittling—it’s an interactive movie-book in 16 languages in a physics engine. There’s music and visual effects. There’s a table of contents. There are page numbers and easter eggs. The back cover has a standard author photo and bio and the front cover is a short film. Twenty-eight people helped with the translations, and they’re included in the closing credits.

opening credits sequence closing credits sequence

To start, I suggested we make a mood board. We didn’t do that exactly, but a couple of websites by Rafael Rozendaal (who also writes haiku) provided inspiration.

I built the first version of the book with standard web stuff. Each page lived in a <div>, each poem wrapped in a <pre>. Some Javascript made the poems appear at mostly-random intervals. You could select the active language. You could select the text. I had done almost all of this before. It took me longer than expected (has anyone told you babies are a lot of work? they are) and the result was pretty ok.

But Jim had this idea for the middle section. If you haven’t read it yet: the book is split into three sections, the second of which contains five subsections, each of which is as long as the other two major sections. Each major section is themed on a different phase of water: rain, ice, and vapor. Jim’s idea for the second section was to have the active language version of the poem appear in the center of the page and all the other versions fly in from all over and gradually accrue around the central poem, eventually coalescing into a crystalline shape.

ice section sample page

Which could require gravity and friction simulation, edge detection, collision detection, and other really cool things I had no time for.

Fortunately, some wonderful people have made a physics engine that fit our needs perfectly. Unfortunately, I had never worked with a physics engine. Fortunately, someone had posted a tutorial on rendering text in structural bodies using this engine. Unfortunately, getting the desired effects required writing custom rendering functions for each section of the book. Fortunately, this was super fun. I’m not very interested in computer games or graphics but there’s something about watching objects reacting to each other according to the parameters of a world you created that’s immensely satisfying.

Hackers: I kinda feel like God

No, I’m usually more interested in boring things like text. Did I mention this book is presented in 16 languages? Each of which comprises an author’s note, an introduction, and 119 poems. Collating these 1,936 pieces of text required a markup structure, a reference version, a validator, and a compilation script, which I wrote in Racket and which was also super fun but in a different way.

If you’re interested in the details, the repository is on Sourcehut. And, in case it wasn’t clear, I’d highly recommend the book.