- Spent a lot of time on calls with potential clients. Happy to report that I can sound very professional even when I’m not wearing pants.
- Started reading Crafting Interpreters. With a lot more Rust under my belt than the last time I tried this, things are going better than I expected. I even managed to add reasonable (by my standards) error handling to my baby interpreter!
- Started posting things on this blog again, trying to keep it fun and low-stakes. I want to have fun writing, and turns out Growing an Audience™ and Using Fully-Formed Sentences™ is the exact opposite of fun.
- Played a lot of Radiant Historia on the 3DS. I’m loving the gameplay and story so far, but the combat needs to get more interesting soon.
- Played a few hours of Into the Breach on the Switch. Holy. Fucking. Shit. This is easily one of the best designed video games I’ve ever played. I see myself pouring many many hours into this gem!
- We got a new kitten just before pandemic, hoping that she’d become friends with our older cat. Did not go according to plan. It’s impossible to leave them in the same room together without one of them trying to murder the other every five minutes. We’re keeping them separate for now, hoping for at least an uncomfortable truce.
- The first half of Gandhi: The Years that Changed the World was incredible, but now the book is getting repetitive. It has a lot of detail that I consider unnecessary. I’m somehow powering through the last 200 pages so I can pick up Ursula K. Le Guin’s Earthsea series.
- Some albums I enjoyed this week were: Saint Cloud by Waxahatchee, 2017-2019 by Against All Logic, and Aarupa by Quinton Barnes.
- From Lobsters: Say something nice about a programming language you dislike
- From Lobsters: Say something you dislike about a programming language you love
- From Lobsters: What are some niche features you’d like to see in more languages?
- From /r/ProgrammingLanguages: What are some niche features you’d like to see in more languages?
- From /r/programming: What are some niche programming features you’d like to see in more languages?
tl;dr: everyone loves pattern matching.
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: कभी हिंदी और उर्दू से ज़्यादा इस्तेमाल होने वाली कैथी खत्म कैसे हो गई?
We are not pawns of some scripted fate. It’s the invisible ties we forge that bind us.Robin, Fire Emblem: Awakening
Fairy tales are more than true: not because they tell us that dragons exist, but because they tell us that dragons can be beaten.Neil Gaiman, Coraline
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.
- Crafting Interpreters by Bob Nystrom
- The Raytracing in One Weekend series by Peter Shirley
- Writing an OS in Rust by Philipp Oppermann
- Building Git by James Coglan
- Write Yourself a Git! by Thibault Polge
- Mazes for Programmers by Jamis Buck
- Roguelike Tutorial in Rust by Herbert Wolverson
- Roguelike Tutorial 2020 by gridbug
- Build Your Own Lisp by Daniel Holden
- Make a Lisp by Joel Martin and community
- Writing a NES Emulator in Rust by Rafael Bagmanov
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.
On this page you’ll find my reading list for the year 2020.
This list is aspirational, which means I might not be able to get through every book I’ve listed here. Most of these are also pretty heavy reads in terms of subject matter, so I’ll certainly be taking breaks from them to dip into some fun YA fiction and trashy thrillers.
The purpose of this list is twofold. First, I want to know more about the lives and times of people who led popular mass movements against injustice in the twentieth century. Second, I want to understand the ideology and methods of the followers of Hindutva, a dangerous ideology that is currently tearing India apart.
With that out of the way, here’s the list.
- Gandhi Before India by Ramachandra Guha
- Gandhi: The Years that Changed the World by Ramachandra Guha
- Awakening Bharat Mata by Swapan Dasgupta
- Being Hindu by Hindol Sengupta
- The Hindu Way by Shashi Tharoor
- You Don’t Look Like a Muslim by Rakshanda Jalil
- Coming Out as Dalit by Yashica Dutt
- There’s Gunpowder in the Air by Manoranjan Bajpayee
- How to be a Dictator by Frank Dikotter
- Ambedkar: Towards an Enlightened India by Gail Omvedtt
- Jawaharlal Nehru: A Biography Vol. 1 by Gopal Sarvepalli
- Jawaharlal Nehru: A Biography Vol. 2 by Gopal Sarvepalli
- Jawaharlal Nehru: A Biography Vol. 3 by Gopal Sarvepalli
- America in the King Years 1954–63 by Taylor Branch
- America in the King Years 1963–65 by Taylor Branch
- America in the King Years 1965–68 by Taylor Branch
- वे दिन by Nirmal Verma
- परिन्दे by Nirmal Verma
- पंद्रह कहानियाँ by Saadat Hassan Manto
- रेत-समाधी by Geetanjali Shree
- बारामासी by Gyaan Chaturvedi
- मैला आँचल by Phaneeshwarnath Renu
- गोदान by Premchand
- गबन by Premchand
- सेवासदन by Premchand
- कर्मभूमी by Premchand
- ਪਵਿੱਤਰ ਪਾਪੀ by Nanak Singh
- ਚਿੱਟਾ ਲਹੂ by Nanak Singh
- ਮਿੱਟੀ ਦੀ ਜ਼ਾਤ by Amrita Pritam
- ਪਿਂਜਰ by Amrita Pritam
- ਰਸੀਦੀ ਟਿਕਟ by Amrita Pritam
- The RSS: A View to the Inside by Walter K. Andersen & Shridhar D. Damle
- How the BJP Wins by Prashant Jha
- The Annihilation of Caste by B.R. Ambedkar
- Hindutva by V.D. Savarkar
Welcome to 2019, everyone! If we all close our eyes and wish really really really hard, this year might be less of a dumpster fire than the last one.
The astute reader will ask why I haven’t posted anything for more than two weeks. One part of the answer, dear reader, is that I just didn’t feel like it. I’m on vacation. I want to spend this time wrapped up in a blanket, sipping on something warm, reading or listening to music or playing a game.
The other part of the answer is that I wanted to break a dangerous pattern I’ve noticed in my own behavior. It goes something like this:
Step 1: I take up a new activity. It could be music lessons, a new workout routine, writing reviews for all the music I listen to, or writing these weeknotes.
Step 2: In the beginning, the activity is fun because of the novelty. Eventually, though, the magic of the honeymoon period wears off. This is when you really need to start putting your back into the work, and also when most people quit.
Step 3: Even if I’m not as totally in love with the activity as I was in the beginning, I still keep showing up every day. At a logical level I understand that you don’t get good at anything without putting in the work, and it’s no fun doing anything unless you’re at least slightly good at it. So I show up each day, no matter what happens. Gotta keep that Seinfeld calendar going.
Step 4: Eventually I miss a day. It could be because I’m tired from work, or sick, or traveling, or because someone is visiting me. It could be a number of totally legitimate reasons, or it could be simply because I don’t feel like being productive that day.
Step 5: There was a time when, if I missed a day, my internal voice would start berating me. “You’re such a loser Ankur,” it would say. “You can’t even show up to the gym for three weeks without missing a day. You’re useless, you’re trash.” Over the years I’ve managed to reign in this voice, but missing a day still feels like I’ve committed a grave and unforgivable sin. As if I’ve done something morally reprehensible that I need to be punished for.
Step 6: The activity — whether it’s exercising, music practice, writing, or whatever else — starts to feel like a chore. I do it not because I’m interested and committed, but because I’m afraid. I don’t want to feel the guilt and shame that comes from skipping one day.
Step 7: I start associating the activity with negative feelings. Sometimes I stop doing it altogether. It’s easier to not do something than to do it semi-regularly and feel guilty all the time.
Step 8: Pick a new activity and go back to to step 1.
This year I’m trying to break the pattern. In order to enjoy my hobbies and side projects, I need to prevent them from becoming obsessions. I need to know when to take breaks and go easy on myself – and also when to push myself to my limits. It’s important for me to keep reminding myself that hobbies are supposed to bring you joy, not to suck our your life force.
And so, when I didn’t feel like I was up to the task of writing a weeknote, I didn’t push myself. More than once I felt a twinge of guilt. I even started to write something one Wednesday, but then I reigned myself in and played a few more hours of Breath of the Wild.
I’m doing a few other things this year to improve my relationship with my work, and to make sure I don’t burn out like I’ve done in the years past. I’ll talk about them in my next weeknote.
For now, I wish you a happy 2019! Eat your vegetables, keep your sneakers clean, and be kind to yourselves.
Reading: Creative Quest by Questlove, and Lihaaf by Ismat Chugtai
Listening to: a bunch of old Parliament/Funkadelic records, a random assortment of Kanye’s old hits, Kids See Ghosts by Kids See Ghosts, and Remind Me Tomorrow by Sharon Van Etten.
Playing: The Legend of Zelda: Breath of the Wild. Trying really hard to keep myself from dropping $85 on Super Smash Bros.