Perpendicular

Years ago, when going outside was legal and I still believed in Pitchfork scores, I started a music blog with a couple of friends. We eventually shut it down because reasons, but thankfully The Wayback Machine managed to capture a few snapshots.

Here it is in all its glory, minus the CSS and media.

Published
Categorized as Links Tagged

The Expression Problem

While reading Crafting Interpreters, I learned about something called the expression problem. It’s a problem I’ve run into countless times, especially in larger projects, but I never knew it had an actual name. As usual, Eli Bendersky has an in-depth article about the problem and its solution in C++ and Clojure.

After reading Eli’s article, I wondered how the problem would manifest in Rust and what the solution would be. Turns out it’s not too complicated. Want to add a new type? Just add it and implement all the traits you care about. Want to add a new operation? Define a new trait and implement it on all the types you care about. This article goes into more detail on what that looks like.

People Sure Have Opinions About Programming Languages

tl;dr: everyone loves pattern matching.

Arundhati Roy on the Morally Appropriate Language in Which to Think and Write

What is the Morally Appropriate Language in Which to Think and Write? is one of my favorite pieces of writing on the Internet. At its core, the essay is about using translation as a primary form of literary creation in a country as linguistically diverse as India. Put another way, it’s about Arundhati Roy’s quest to bend English in such a way that it captures some of the flavor of India’s many tongues.

While I haven’t read any of Roy’s novels, I recently read a different book that pulls off this feat admirably: Midnight’s Children by Salman Rushdie. One of my favorite scenes from Midnight’s Children is where a mother yells at her child: “Fool from somewhere!”

Roy’s essay covers a lot of ground. If I start quoting from it then I’ll end up reproducing the entire piece here, so I’ll just mention two of my favorite parts. The first one is how English is perceived in the Dalit community:

[English] is also the language of emancipation, the language in which privilege has been eloquently denounced. Annihilation of Caste by Dr. B. R. Ambedkar, the most widely read, widely translated, and devastating denunciation of the Hindu caste system, was written in English. It revolutionized the debate on perhaps the most brutal system of institutionalized injustice that any society has ever dreamed up. How different things would have been had the privileged castes managed to contain Ambedkar’s writing in a language that only his own caste and community could read. Inspired by him, many Dalit activists today see the denial of a quality English education to the underprivileged (in the name of nationalism or anticolonialism) as a continuation of the Brahmin tradition of denying education and literacy—or, for that matter, simply the right to pursue knowledge and accumulate wealth—to people they consider “shudras” and “outcastes.” To make this point, in 2011 the Dalit scholar Chandra Bhan Prasad built a village temple to the Dalit Goddess of English. “She is the symbol of Dalit Renaissance,” he said. “We will use English to rise up the ladder and become free forever.”

The second one is about how Devanagari—associated at the time and perhaps even now with Brahamanical oppression—came to be the primary script in which modern Hindi is written, erasing the once-popular Kaithi script from public memory:

In order to clearly define itself and mark itself off from other competing constituencies, the newly emerging Hindu constituency [in British India] needed cultural symbols—something to fire the imagination of its evangelists and its potential recruits. The holy cow and the holy script became the chosen vehicles for mobilization. Gau Rakshak (cow protection) societies proliferated, and simultaneously the demand was raised that Devanagari (Deva as in Dio/God—the script of the Gods) be officially accepted as a second script for Urdu. Devanagari, originally known as Babhni, was the script of Brahmins and had, like Sanskrit, been jealously guarded, its purity protected from the “polluting influence” of lower castes, who had, for centuries, been denied the right to learn Sanskrit. But the changing times now required that it be promoted as the indigenous script of “the people.” In fact, the more widely used script at the time was a script called Kaithi. But Kaithi was used by non-Brahmin castes like the Kayasthas, who were seen to be partial to Muslims. Extraordinarily, in a matter of a few decades, Kaithi was not just discarded, but erased from public memory.

I’d never heard of Kaithi before reading this essay. Digging around a bit, I found a wonderful piece about the script on Satyagraha: कभी हिंदी और उर्दू से ज़्यादा इस्तेमाल होने वाली कैथी खत्म कैसे हो गई?

Fun Programming Projects

When I’m learning a new programming language, the biggest challenge I face is figuring out what to build with it. Programming challenge websites can be useful, but they rarely ever push you towards exploring real-world use cases for a language.

Thankfully, there’s a variety of resources available on the Web that walk you through building reasonably complex projects step by step. I’ve collected a few of my favorites here.

Darkest Dungeon

I never thought I’d be moved to tears by a review for a video game I haven’t even played, yet here we are. Nathan Grayson’s review for Darkest Dungeon touches on issues of burnout and overwork that I’ve struggled with throughout my twenties.

Darkest Dungeon is a turn-based RPG with an interesting mechanic: as you explore dungeons and battle enemies, your characters accumulate trauma and stress caused by those encounters. Left untreated, this trauma will make them entirely useless and you will have to remove them from your roster.

From Nathan’s review:

Trauma always leaves wounds. If left untreated for too long, those wounds fester, grow, and multiply. And yet, modern living subtly encourages people to ignore them. You gotta stay busy, the career world tells us. Taking care of yourself—whether that means taking some time off, seeing a therapist, or what have you—isn’t directly productive, and you’ve already got So Much To Do. If it’s not work, it’s social or family obligations. What will friends, significant others, or co-workers think if you disappear now? That you’re lazy? That you’re crazy? And anyway, where will you find the money?

You can try playing Darkest Dungeon like any other RPG — grind grind grind, fight enemy after enemy to get more XP, go deep into dungeons to get better loot — but you’re not going to have a good time.

As I played Darkest Dungeon, I tried so hard to follow the golden rule of progress, to play like I’d play any other video game. Sure, I’d retreat from battles or dungeons occasionally, but everything had to be in the name of slow advancement. I prioritized short-term gains over long-term decision-making, and I did it almost unconsciously. Other games taught me that it’d work; they told me that heroes are defined by the progress they’re making, the XP and items they’re earning, the stories they’re exerting agency over. So I picked my hill to die on, and god damn it I was gonna climb all the way to the top, no matter what got in my way.

I kept falling down, further and further.

It has taken me (nearly) thirty years of my life to know when to stop working and take a break. I still hurt myself, ignoring signs of burnout and pushing through the pain, but I’m slowly getting better at taking care of myself.

Turns out, willing yourself into being alright isn’t the same thing as being alright. Sometimes, digging your heels in and making one last push just gets you dirty feet.

Learning to be kind to yourself takes a long time. It’s almost an act of defiance against everything that has been drilled into our heads.

Sometimes, the best way to move forward is to find a way to stand still. On some occasions, you’ve gotta take a step back to create something sustainable. You have to take care of yourself.

Am I going to play Darkest Dungeon? Maybe. Probably. At some point. After I’ve finished these other twenty games in my backlog. Meanwhile, I’ll keep reminding myself every day that it doesn’t have to be so hard.