building vbook
I built two new features in the spirit of the dynamic attribute of
virtual bookswhat is a virtual book?
I wrote an essay called The Virtual Book but I never defined the term. By virtual book I mean a book unbound by the traditional and physical constraints of printed books. I say ‘virtual’ because the greatest possibilities I see are in the virtual world of computers. Ebooks and audiobooks are just the beginning. The possibilities that excite me challenge not only the physicality of books but also their more subtle attributes.
A virtual book can be multimedia. It can consist of words, images, video, audio. There, we got the obvious one out of the way.
A virtual book can be readerdriven. Instead of forcing readers to follow the author’s thought process, a virtual book can let each reader steer the way. Wikipedia does this already. It lets you search the page for keywords, skip to the section you’re interested in, and even escape into a tangential topic, never to return. This is a natural way to consume Wikipedia because its form affords it.
Books generally have one start and one ending, but a virtual book can be nonlinear. Wikipedia is again the obvious example. But letting the reader drive is only one way to create a nonlinear book. It’s also possible to create multiple entrypoints, or even multiple endings, like Black Mirror: Bandersnatch.
A virtual book can be dynamic. It can change after its initial creation. Printed books, on the other hand, are static snapshots laboriously rendered by a particular author at a particular time. But what if a theory is debunked? Or a hypothesis confirmed? Or a record shattered? Or, in the case of storytelling, what if a loose end can be tied up neatly?
A virtual book can be nonmonolithic. It does not need to be discrete or selfcontained. It can consist of many interconnected parts that make up the whole but can exist without it. It can reference other virtual books, borrow bits from them, and lend bits of its own. For example, if Herbie Hancock’s memoir was a virtual audiobook, it could allow its snippets to be reconstrued into a documentary about jazz. (If Ken Burns’ Jazz documentary series was also ‘virtualized’, it could have been updated 15 years after its release to include bits of Herbie’s narration.) In fact, it could provide material for documentaries about many different topics: jazz, funk, hip hop, Miles Davis, Black Nationalism, Nichiren Buddhism, meditation, and crack addictions, to name some of the obvious ones.
A virtual book can be responsive. What if a reader could expect a book to field spontaneous questions? ChatGPT is an obvious candidate here, but the possibility is broader. What if Herbie Hancock returned to his memoir every now and then to answer questions that readers had left behind while reading it? What if readers could raise flags on issues that factcheckers would then verify or return to the author for amendment?
The possibilities are plenty, and they are thrilling. The difficulty in realizating them is not technological, but legal and political. Powerful companies – and therefore governments – are hugely incentivized to prevent the free exchange of “intellectual property”. To make virtual books possible, we need not only the technological power of software, but also its progressive politics.
Dedicated to Aaron Swartz.
.
Firstly, I added modified dates to all posts and a way to sort them by post date or modified date. This discourages me from treating posts like static pieces and instead encourages me to edit, rework, and reimagine them. I didn’t want to be responsible for manually updating the modified date of a post, so I automated it.
For my first attempt at implementing it, I put together a plugin written in Ruby (mostly written by GitHub Copilot) that found the most recent commit’s date for each post by looking through the Git history.
It worked, but it also slowed down my local build a lot.
I found a much better solution: set up a git pre-commit hook that updates the modified_date
in a post’s frontmatter when a change is committed to it.
To implement sorting, I had to use JavaScript.
Working on a static website has made me appreciate how much is possible without JavaScript and what isn’t.
More challenging to implement and more exciting to complete was a feature I’m calling Revisions, which shows past edits of select posts. This one was even more important to automate. Manually creating a revision for every new post would be a ponderous task that would deincentivize me from making changes. Automatically generated revisions, on the other hand, excite me to make changes. I want to see how posts change over time and how the converge to “final” form.
So, the main task was to plug into the Jekyll build to generate new pages that represent the difference between every pair of sequential commits in a post’s Git history. Once I had that, I just had to do some minor coding in HTML and Liquid to add links in a post’s metadata to link to its revisions.
After I figured out how to get the full Git word diff between two commits (the git
gem’s API apparently doesn’t expose this part of Git’s functionality), most of the trouble had to do with formatting: stripping Git diff metadata, replacing diff markers with markdown formatting, transforming Markdown to HTML, and styling the HTML.
After I finally got it working locally, I pushed it up to GitHub to kick off the build and publish job.
But after the GitHub Actions finished, the site didn’t look any different!
It took me a while to figure out why the GitHub Pages build was passing but not generating any revisions.
I figured the git
gem wasn’t being installed since it isn’t in the list of packages supported by GitHub Pages.
It seemed like the plugin wasn’t running at all.
Only after I added print statements to it did I realize that it was running, but only finding a single commit.
Finally, I fixed it by setting the fetch-depth
of the checkout
action to a pseudoinfinite number so that the full Git history would get processed.
I set it up so I can easily enable or disable revisions for a post by setting show_revisions
in its frontmatter.
So far, I’ve enabled revisions for
what makes a good shower?
The standard bathtub-shower design seems like a good idea. Two in one. But the compromise at the heart of its design prevents it from being a good shower. The cost of the compromise is hidden in plain sight, difficult to notice due to its ubiquity. Allow me to shed some light on the ways that the tub compromises the shower.
We begin with the uncomfortable task of having to climb in, over a literal barrier, without any clothes to soften accidental contact. Clearing this hurdle is not merely a matter of stepping high and long because on the other side one must balance onefooted on a skinny, slippery ramp with sloping edges. It’s shockingly inhospitable ground considering its primary aim is to allow a bipedal, softskinned animal to stand barefooted in showering water and contort while applying lubricants that ooze dangerously downwards onto an already slick surface. But we’re used to this design, so we don’t notice its baffling unfriendliness.
If freed from the responsibility of doubling as a tub, a shower can focus on being a good shower. It can be easy to enter and to exit. Its standing ground, unobliged to accommodate the bare backside, can be tiled or otherwise surfaced with material that gives traction to the bare foot, even when covered in soapy water. The dimensions can be square and wide enough to allow a person to turn and easily rinse different parts of their body without having to watch their step or feel unreasonably constricted.
Good design, as they say, is invisible. A good shower demands no effort or conscious attention from its user. It lets them get clean while
their mind wanders. To achieve this, it must make it extremely easy to do all the basic things: get in, stand, wash, rinse, and get out. The tubshower hybrid most of us have at home fails this basic test.
,
how to think invisiblyhow to think invisibly
(Originally posted on okjuan.medium.com.)
Does the brain control you, or are you controlling the brain? I don’t know if I’m in charge of mine.
Karl Pilkington sounds foolish, but he’s onto something. He tells an anecdote about a time when he finished his grocery list and moved on only to be interrupted by a thought that entered his mind suddenly: Apple.
That was weird — who reminded me of that?
The thought of apple just appeared and Karl doesn’t know how. It fell like a raindrop into his mind. This happens to us all the time, but we don’t notice it because we expect it. We think What’s his name again? and then something inside us slips an answer into our grasp: Mark. It’s like shaking a tree until fruit falls out. We don’t give the tree much credit. But Karl was leaving the orchard when the apple came rolling after him.
We talk about the subconscious as a mysterious engine that runs the dreams we soon forget after we wake up. But it’s also there in the day. It hums along softly in the background, chiming in helpfully when we need to remember someone’s name or what produce to buy.
But it’s more than our assistant. It’s our advisor, our consigliere. It’s the source of our gut feelings. Great ideas come from interaction with this humble inner partner, this invisible thinker.
Despite being teased by his buddies for his story about the apple, Karl echoed something the French polymath Poincaré wrote in his essay, Mathematical Creation:
At the moment when I put my foot on the step the idea came to me, without anything in my former thoughts seeming to have paved the way for it.
Like Karl, Poincaré tells stories of answers coming to him when he was no longer considering the question. And he welcomes it. He recognizes his subconscious mind as a vital actor in his work, a shrewd associate that finds a fresh lead while he rests.
Poincaré then concludes something that Karl would’ve been mocked for saying: resting is productive. Not because it reenergizes you for more work, but because it is work. Rest releases the invisible thinker to explore and find what you haven’t noticed yet. You can feel this happening in the shower when novel ideas surface in your mind without prompt. And though we can’t steer our “ambient thought”, we can tell it what to think about. As Don Draper of Mad Men tells his protégé:
Peggy, just – think about it. Deeply. Then forget it. And an idea will jump up in your face.
Our train of thought springs into existence already in motion and it speeds between ideas connected by tracks in our mind. Though we cannot access the underlying web of knowledge directly, we experience the result of its traversal. And by training and ruminating on new ideas we integrate them into the network. This is why jazz musicians can fling out new melodies every night. A chord change played by the backing band illuminates melodic pathways carved into the musician’s mind during training. At the gig they just get behind their instrument and go for a ride.
We tap into these networks not only for spontaneous improvisation but also for careful design. We draw from a well of memories and impressions, questions and conclusions, recreating and appropriating them for new purposes. A musician composes from real feelings, from their desires and their fears. A fiction writer sketches a character from the outlines of real people, from the beauties they’ve admired and faults they’ve despised.
This personal reservoir is where filmmaker David Lynch fishes for the strange and abstract ideas that appear in his work. In his book Catching the Big Fish: Meditation, Consciousness, and Creativity, Lynch describes his process more as catching ideas than creating them. He receives ideas from something inside himself, and consults this inner source to develop and implement them.
Lynch isn’t the only prolific artist with a mysterious inner partner. Novelist Cormac McCarthy is well aware of his own collaborator. He said:
Writing can be like taking dictation.
Like Poincaré and Pilkington, McCarthy has talked about the mysterious experience of receiving answers from the ether:
I’d been thinking about [the problem] off and on for a couple of years without making much progress. Then one morning…as I was emptying [the wastebasket] into the kitchen trash I suddenly knew the answer. Or I knew that I knew the answer. It took me a minute or so to put it together.
McCarthy often talks about the Night Shift, the period when we sleep and the invisible thinker takes over. Pilkington agrees – from his book The Moaning of Life:
I think I’m more intelligent in my dreams than I am when I’m awake… A few months ago I went to bed with a problem, fell asleep thinking about it and when I woke up I had a solution.
The invisible thinker rules this hidden world where our creativity lives. It collaborates with us to devise and improvise, and it even thinks for itself. When relieved from its duty as our advisor, it roams freely, eager to satisfy its own curiosity. We heighten our creative potential when we deepen understanding with our internal agent. Especially if we don’t just ask but also listen.
Behind your thoughts and feelings, my brother, there stands a mighty ruler, an unknown sage — whose name is self. In your body he dwells; he is your body. There is more reason in your body than in your best wisdom.
Friedrich Nietzsche, Thus Spake Zarathustra (Kauffman translation, 1954, p.146)
, and
how to tell a story #3how to tell a story #3
Can quantifying the attributes of a TV show tell us something about its quality? I reckon some of the flaws in House of the Dragon would be reflected in statistics like amount of dialogue per minute and number of decisions made per character. A non-negligible amount of time is spent on dramatic montages and orchestral music that create a moody atmosphere and remind us of how serious the situation is. This comes at the cost of time that could be spent on actual situations and actual drama, or at least character development that would contribute to future drama.
These two elements – dialogue and decision-making – each give us an independent perspective into a character, but their combination is especially powerful because it gives us a third angle: insight into what a character is thinking, including what they are thinking unconsciously. From this we get what might be the critical ingredient of great story-telling: three-dimensional characters.
My qualm with shows like House of the Dragon is that their plot feels designed and implemented. I sense the presence of writers and their attempts to show me what’s happening and persuade me that it makes sense. I can’t get lost in the fictional world as if it were a real one because I see the pencil marks from when it was sketched out. My suspension of disbelief never takes off. One might say, Well, yeah, all fictional plots are prescribed. But they’re not, and writers like Stephen King and Cormac McCarthy have
attested to it.
In great shows like The Sopranos, plot is not implemented, it’s incubated. The show feels to me like it’s happening spontaneously, developing by itself as a sequence of events, reactions, and actions. In every episode there is constant dialogue between characters and a steady supply of situations that require characters to make decisions. And much of the time, these have nothing to do with plot. Every season has at least one major narrative arc, but the dependence is flipped. Episodes don’t depend on an overarching plot for their meaning. Episodes generate the plot. Characters are agents, not passengers. I don’t feel like the writers are leading me to the plot’s predetermined destination. In fact I don’t feel their presence at all. I feel like I’m
witnessing something.
.