Week of 27 April, 2020

  • Started a new contract on Monday. It’s been fun, but I’m spending far too much time dealing with layout issues. I thought we were done fighting with CSS in 2020, but that’s clearly not the case.
  • Ramda is pretty damn amazing. So is Tailwind. Working with these libraries over the past week has been a total blast.
  • Quitting social media and the news has made my anxiety a lot better. It has given my brain the space and energy to think about things beyond COVID-19 and Modi’s violent politics. While I’m still reading the news on weekends, I don’t plan on engaging with it on weekdays. I believe this arrangement will let me keep my sanity while also staying informed about what’s going on in the world.
  • Social media is basically cigarettes for your brain. It’s as addictive as them, and does as much damage to your brain as cigarettes do to your lungs.
  • The new Roomba is making me feel like I’m living in the future. I mean, I can tell him to clean the kitchen from my phone and he just wakes up and does it?!!
  • I’ve been working my way slowly through Amrita Pritam’s ਮਿੱਟੀ ਦੀ ਜ਼ਾਤ (Mitti Di Zaat, roughly The Caste of the Soil). My Punjabi vocabulary is tiny so it’s tough going, but the language hits me in a place that English can’t quite reach.

Week of 20 April, 2020

  • Anxiety was bad this week. I was up until 3AM on Tuesday night because I couldn’t turn off my brain, no matter how much I tried. I don’t know what triggered it, but getting off social media and news websites seems to have fixed it.
  • I’ve started spending a bit of time each morning reading short stories in Punjabi. I no longer struggle with the grammar or the script — I’ve already been reading the news in Punjabi for a few months — but a lot of the words are new to me. Having to constantly look up words slows me down, but I’m building a lot of vocabulary very fast.
  • I’ve given in and ordered a Roomba for the house.
  • Our girl kitten turned out to be a boy kitten, which explains the constant fights. The older cat doesn’t like this new roommate at all.
  • Not much progress with Crafting Interpreters this week, but I did add a way to convert an AST into a Graphviz diagram. Very proud of this one.

Week of 13 April, 2020

  • The cats have stopped fighting! Minor squabbles still break out once or twice a day, but for the most part they’ve settled into an uneasy truce.
  • Found a contract for the next six weeks. It’s not a Rust gig as I had hoped, but it involves some heavyweight data visualization in the browser that will call for a lot of cleverness. I expect to enjoy this thoroughly.
  • Eating a lot of cheese this week. No regrets.
  • Working through Crafting Interpreters at a decent pace, though I could probably be going faster. Instead of just translating the Java code in the book, I’m trying to write idiomatic Rust as far as possible. This takes longer and makes my design totally different from what’s in the book, but I’m learning far more this way. I’ve also added a few additional features to my implementation, like proper line editing in the REPL using rustyline.
  • My fitness trainer now has an online lesson plan, so I’m back to working out. Feels good to be doing something with this bag of meat.
  • Still irritated at how much pointless detail that Gandhi book has. But I’m going to get through this thing one way or another.
  • Still playing Radiant Historia and Into the Breach, still loving the hell out of both games.
  • Album highlight of the week is Cha Cha Palace by Angelica Garcia.

Week of April 6, 2020

  • 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.

Week 11: Side-projects, Hobbies, and Obsession

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.

Categorized as Weeknotes

Week 8: Going Home

The great thing about the weeknote format is that you can make your note as long or short as you want. I’m keeping it short today, with just a few important life updates.

2018 has been a tough year for me. My mental health is at an all-time low, so I’ve decided to take a long break from work and go live with my family in Delhi for a while. I’m planning to spend a lot of time cooking, reading, and playing games on my Switch.

By this time every year, I have a long list of new year’s resolutions. Last year’s list had no less than 20 items. I ended up accomplishing a lot of those goals, but they came at the cost of my health and well-being. I’m going to keep it simple this year and limit my list of resolutions to three or four tiny goals. Top of the list: take care of my health.

My throat is slowly getting better. I expect that I’ll be able to talk normally again in a month or two. Reddit tells me I might have something called Muscle Tension Dysphonia, but I’ll keep the self-diagnosis out of this and just do what my doctor tells me to.

A happy new year to whoever is reading this tonight! Hope you find whatever it is that you’re looking for.

Reading: Never Eat Alone by Keith Ferrazzi

Listening to: Bayaan by Seedhe Maut, i am > i was by 21 Savage, and a bunch of critically acclaimed albums from 2018.

Playing: Rayman Legends and SteamWorld Heist

Categorized as Weeknotes

Week 7: Melancholy, and Taking a Break

I’m in one of my Moods™. All my brain wants to do is scroll through Instagram looking at pictures of beautiful skinny perfect people wearing beautiful expensive perfect sneakers. On weekends, I can’t even summon up the motivation leave my blanket, let alone do normal functional adult things.

I’ve had to put in a Herculean effort to just sit down and type out this note. That’s why I’m publishing this on a Tuesday instead of a Sunday as usual.

This sense of listlessness and melancholy will pass in a few weeks, as it always does. In the meantime, getting any work done will be an uphill battle. There is nothing to do but take it easy for a while and wait for the feeling to pass.

Status of throat: please make it stop. I’m going to wait one more week to see if things improve, and then spend the first half of January visiting a few different doctors until I find someone who can figure out what’s wrong with me.

I’ve realized that the two keys to consistently doing creative work are to know when to take a break, and to know how to get back to your creative schedule after that break.

I find it easy to show up and put in the effort towards my music every day, but only for a few months at a time. Eventually there comes a time when I start to feel burnt out and empty—like right now—and then I fall off the wagon.

So the problem is not that I can’t show up and consistently write, but that I don’t understand when I’ve reached my limit and need to take some time off.

I spent a few hours this morning thinking about this problem and came up with some general guidelines for myself. I’m not going to share all of them here, but here are two significant ones:

  • I’ll take a break when the sense of anticipation and joy that comes from writing is replaced by a sense of dread and guilt. Or, I’ll take a break when I can’t make significant progress on a song for two consecutive weeks.
  • When I’m on a break, I’ll do something that takes my mind off music and writing. For example, binging a TV series, finishing a game, or just watching cat videos on YouTube. Anything to do with music—except casually listening to it—is strictly off the table.

Pretty obvious guidelines, but the most obvious things are often the ones that are the hardest to bear in mind as we go about our lives.

Reading: Never Eat Alone by Keith Ferrazzi

Listening to: critically acclaimed albums from this year, including Wide Awake! by Parquet Courts, El Mar Querer by Rosalía, and A Brief Enquiry Into Online Relationships by The 1975. 2018 has been a disappointing year for music. I haven’t really discovered anything new this year that I still expect to be listening to five years from now.

Playing: nothing. I finished Diablo III a few days ago, and I now want a break from games for a few weeks.

Categorized as Weeknotes

Week 6: Mac and Cheese, Sore Throat, and Deep Roots

I’m writing this from Chennai. I’m here for the second time this year for a Visa appointment. It’s all very scary and stressful and dehumanizing and I just want it to end already. I have many opinions about traveling internationally as an Indian citizen, but if I start writing them down they’ll take up this entire weeknote. Let’s just move on, okay?

I skipped writing last week’s note because my brother was visiting me in Bangalore. I cooked mac and cheese for him and a bunch of friends using a recipe Pooja shared with me a long time ago, and it turned out great as always. I’m starting to be known as the guy who cooks mac and cheese all the time, and I ain’t even mad. Thanks Pooja!

Exciting throat update for those who have been following along: last week, my doctor stuck a camera down my throat to figure out if there was something seriously wrong in there. Turns out there is a very slight injury on my vocal cords, but nothing too serious. I don’t have much pain anymore, and I’m able to have short conversations without any problems. If I speak for too long, though, my throat starts to get sore. Saying nothing for two months might have something to do with it, and I’m hoping this problem will sort itself out in a few days. If not, then it’ll be another trip to the hospital.

Hospitals and airplanes. That’s how I’ve spent most of this year. Next year, I’m planning to stay put in Bangalore and prioritize my health over everything else.

I’ve been thinking a lot about this staying put business. Sitting still and just enjoying what I have is something I’ve never been able to do. In life, work, and art, my tendency has been to always move forward, to always keep looking for the next thing.

Learned how to use a new piece of technology? Great, now move on to the next trendy thing. Figured out how to produce a new genre of music? Cool, go check what else is hot on SoundCloud right now. Went on a great vacation? Start planning next year’s vacation before the bags have been unpacked. Reading a book on a lazy Sunday afternoon? Start thinking about how great the next one is going to be before this one is half finished.

Novelty is fun. It’s addictive. Always doing something new means I’m constantly learning new things, keeping myself challenged, meeting new people, discovering and rediscovering the world and, with it, discovering and rediscovering myself.

But I’m starting to get tired of all of this thrashing around. Listening to new music is great, but what about all my favorite music from years ago that I’ve lost touch with? Trying out new food is great, but what about the food from my childhood that comforts me and reminds me of simpler times? Taking up new hobbies is great, but what about the hobbies I’ve already invested thousands of hours—and rupees—into? Making new friends is great, but what about all the friends I’ve neglected to keep in touch with?

I’m not saying I need to stagnate, stop being curious about the world, and stop doing new things. I wouldn’t want to live a life that lacks the thrill of discovering something (or someone) new. No, stasis is worse than this constant turmoil.

However, as I’m growing older and taking stock of my life, I starting to crave deep roots. I crave friendships and relationships built on shared experiences over a long period of time (I’m grateful to have at least a few of these). I crave being part of a larger community. I crave a career that’s built on practical experience gained from years in the trenches, not bookish knowledge picked up from blogs and READMEs. I crave skills that have been sharpened by thousands of hours of deliberate practice.

I crave something that keeps me rooted when things go south, something that’s a constant reminder of who I am and where I came from. Even if it’s just daal makhani or trashy nu-metal music everyone pretends never happened.

I crave a kind of spiritual wealth accumulated by respecting what I have, being grateful for it, taking care of it, and slowing down.

That’s it, I think. I want to slow down. At least for a little while.

Reading: The Power of Habit by Charles Duhigg

Listening to: a random selection of favorites from Mitski’s Puberty 2, Run the Jewels’ RTJ2, St. Vincent’s Masseduction, and The Hotelier’s Goodness, among many others.

Playing: Diablo 3 (does this game ever end!?)

Categorized as Weeknotes

Week 4: Snow Pigeons, Finding Peace, and Building an Audience

I survived Siberia! After my talk last Sunday, I had two days in Novosibirsk to spend as I pleased before my flight back to Delhi. I spent those days walking around the city center, reading, and writing. The temperature fell to -13ºC while I was there, so I had to keep ducking into random cafes and restaurants every half an hour to keep myself warm. It goes without saying that I had a lot of caffeine in my system by the time I got back to my hotel each night.

Coming from a hot country like India, and having seen snow only on Christmas specials on TV, the city center looked like something out of a fairytale.

At one point I was walking through a park and spotted a flock of pigeons sitting in the snow (how!!?) When I went close to them to take a picture, the entire flock waddled towards me and surrounded me on all sides. They made themselves comfortable, ruffled their feathers until they were all big round grey balls of fuzz,  and stared at me in anticipation as I struggled to operate my phone with my freezing fingers. I think they were expecting me to feed them, but the only feed I had on me at the time was my Instagram feed (badum-tish). Sorry to disappoint, pigeons. Maybe next time.

Pigeons sitting in the snow
Someone explain to me how they’re not frozen solid

I made sure to end each day in Novosibirsk with a bowl of solyanka. My first order of business when I get back to Bangalore will be to figure out how to make this delicious soup in my own kitchen!

This year I’ve read several books about creativity and the creative habit, the most recent one being The Practicing Mind by Thomas M. Sterner. It puts into words many truths about creativity that I’ve discovered for myself over the last few years but haven’t had the vocabulary to express.

While reading the book I had a realization: even though 2018 has been a terrible year for me in all respects, I’ve found a sense of peace and calm thanks to my own creative practice.

This year I’ve had to deal with failing health, close friends moving away, a wonderful relationship ending, a pet dying, and a frustrating career slump. Through all of this, I’ve found a sanctuary in writing and making music. The simple habit of sitting down at the same time each day, shutting out the world for a short time, and writing down one word after another has kept me grounded, sane, and oddly contented through these rough times.

The knowledge that I’ll wake up tomorrow morning and spend some time writing gives me great comfort. I can only hope that I’m able to keep up with this habit long-term. It’s something I would be devastated to lose in the chaos of everyday life.

One of my recent technical posts on the Uncommon blog—titled The Baseline Costs of JavaScript Frameworks—made it to the top of HN last week. I wasn’t expecting it to blow up as fast or as much as it did, but the Internet is an unpredictable beast.

While I’ve had about 30k impressions on the post so far, it hasn’t really generated any leads for new business. I can’t say I was expecting it to get us new business immediately, but I do find it a little disappointing that it resulted in absolutely zero enquiries.

Ah well, on to the next one. I know that it takes a large body of work over a long period of time before writing and speaking starts to bring in prospective customers. Keeping that in mind, I’ve already started working on my next post.

In my head, an ideal situation would be to have enough content on the Uncommon blog to attract 250-300k monthly readers even when we’re not actively writing. We can then begin to figure out how to convert these readers into clients. I’m confident we’ll get there within 12-18 months of regular writing.

It’s a long road ahead. Good thing writing is so damn fun.

Reading: The Practicing Mind by Thomas M. Sterner

Listening to: DiCaprio 2 by JID, CARE FOR ME by Saba, and Be the Cowboy by Mitski

Playing: Diablo 3 and Celeste

Categorized as Weeknotes

Week 3: Siberian Winter, Public Speaking, and Recognizing What I’m Bad At

Hello from Novosibirsk, Siberia! The temperature outside is -9ºC, the streets are covered in fresh white snow, and I’m sipping hot chocolate at a cafe near the Novosibirsk Opera and Ballet Theatre. I came here to speak about Rust and WebAssembly at DevFest Siberia 2018, and I’m staying here for a few extra days so I can explore the city.

A picture of me in the Siberian snow
Yours truly in the Siberian snow

This is the first time in the 28 years I’ve been alive that I’m seeing snow. When I boarded my flight from Delhi I was afraid that I wouldn’t be able to deal with the sub-zero temperatures in Siberia, but when I got here on Thursday I discovered that central heating exists. I’m glad to report that I’m cozy af, and the only time I have to deal with the cold is when I’m running from a building into my Yandex Taxi.

I think today I’ll venture out for a long walk around the city center. Wish me luck.

Yesterday afternoon I spoke to an audience of about 150 people about drawing the Mandelbrot set on a <canvas> using Rust compiled to WebAssembly. While I knew my material well, I hadn’t practiced verbally delivering my talk before I went on stage. The injury to my vocal cords still prevents me from speaking at length without pain, so all the run-throughs I’d done involved me mouthing words in front of a mirror.

Problem is, things sound way cooler when you say them in your head. When I actually vocalized my words in front of my audience, my jokes fell flat and the explanations that had sounded lucid and coherent in my head came out sounding ambiguous and confusing. Even the SpongeBob GIFs didn’t do much to excite my audience.

I’m going to do this same talk at another conference in January next year, and I plan to start preparing for it as soon as I get back to Bangalore. The current state of my vocal cords makes it impossible for me to do multiple run-throughs of the talk in a single day, but I can certainly practice it once or twice a week so that I’m better prepared to go on stage by the time January rolls around.

A few specific things I noticed about my talk:

  • I have some math in my slides. While I explain it in human language during the talk, understanding it is not too important for the audience. It’s not even complicated math; it’s possible for me to translate it into plain English instead of presenting it using mathematical symbols. Doing that would make my talk far more engaging.
  • Before starting to explain the Rust code I’ve written for this talk, it might be a good idea for me to explain what I’m attempting to do in simple, high-level terms. This would allow people who miss out on some of the small details of my code to still understand what’s happening in the talk as a whole.
  • Forty-five minutes is a long time. I can be less conservative about what can be covered in forty-five minutes, and take my time to explain some of the trickier parts of my code.

In last week’s note, I mentioned that I wanted to write about a few reasons I’ve failed at doing my job effectively this year. I’m going to list them out now.

(For context, I recently stopped being a lone freelance developer and started working at Uncommon so I can build a Web Engineering team here.)

I don’t ask for help when I need it most. It’s not because I feel I don’t need it, or even that I’m ashamed of reaching out. It’s genuinely something that does not occur to me at all. This is one of the reasons I’ve been a bad collaborator throughout my life. Too often, I’ve spent days researching solutions to a problem when I could have just walked across the office and asked somebody.

This is a habit that I’m slowly starting to change. I’ve been a lone-wolf (well, more a lone-puppy than a lone-wolf) developer for the last five years so it’ll be a while before I learn how to work well with people. But I recognize that programming is a team sport, and I’m confident that I’ll get there.

I avoid tough conversations. Just the thought of conflict makes me so anxious that it becomes hard to function. If I find myself in a difficult conversation with a client or co-worker, I’m so exhausted by the end of it that I can barely get work done for the rest of the day. This has cost me dearly in both my personal and professional life, and I honestly don’t know how to fix this.

If you have any ideas, I’d love to hear from you over email or twitter.

I overestimate my own abilities. I feel everyone has been guilty of this at some point in their lives. It becomes a real problem when you end up burning yourself out or hurting yourself physically, both of which have happened to me a couple of times now.

As I grow older, I’m learning to anticipate my body’s needs more and prioritizing my health over getting work done.

I work reactively. I often react to situations as they arise instead of planning ahead. This is frustrating because, if I’m spending all my time putting out fires, I’m not working on my long-term goals. This is another problem I don’t know how to fix yet.

I don’t make full use of the resources available to me. This is a strange one, and I still don’t understand why I do it. Here’s an example: I recently needed a spare Android phone to test something I’d been working on. The model I wanted cost about $150. Instead of just asking my company to buy me one—which they would have happily done—I spent a week looking for somebody who could lend me one for a few hours.

Recognizing these issues has taken me a long time, and dealing with them is going to take an even longer time. However, I’m grateful that I got this far. These are all normal issues that can be tackled, and I plan to do just that in the coming few months.

Reading: Americanah by Chimamanda Ngozi Adichie.

Listening to: FM! by Vince Staples, CARE FOR ME by Saba, and Be the Cowboy by Mitski.

Playing: Diablo 3, and Mario + Rabbids: Kingdom Battle.

Until next time,

Categorized as Weeknotes