Hey reader, it’s been a long time. I hope you’re doing well. You haven’t heard from me in a while, but it’s not because I’ve been busy. If anything, I’ve had more free time this year than ever before. I recently celebrated three hundred days of sheltering in place. In a couple of months, it’ll have been a full year. How long will it be before things return to normal? I’m looking forward to lots of things, including fetching my lightning charger dock from the office, eating fast food instead of cooking all the time, and for thousands of people to stop dying in overwhelmed hospitals (but mostly the fast food). On the other hand, I’ve felt grateful for lots of things during this pandemic. I’m grateful that my comfy job lets me easily work from home. I’m grateful for the twenty 3M N95 respirators I bought three years ago after those California wildfires but never used. I’m grateful for the big TV I bought on a whim in January that I now watch for hours every day, cooped up indoors. A few more things have changed in the months since I last gave you an update. I’ve been slowly taking on more responsibility at work. It’s been lots of fun, but I’ve also noticed some unexpected consequences. I’ve been watching way more anime, and I’ve started watching seiyuu content on YouTube. I thought that my ability to understand raws without subtitles would naturally improve over time, but that hasn’t really worked out. I’ve still been cooking all my meals at home, and I’ve only given myself diarrhea once! I’ve finished two new personal programming projects, one of which I wrote about last July and one that I’ll write about next. Since I’ve stopped nonessential travel, I don’t have any new photos to share, but please enjoy these old vacation photos from last year while I tell you about some more of my thoughts in detail.
Moralization of social withdrawal
One of the weirdest long-term effects of the pandemic might be the moralization of social withdrawal. As imperfect humans, we rely heavily on mental shortcuts to quickly remember things and make judgements. This year, we’ve seen health officials all around the world encouraging social distancing while at the same time viral videos of violent anti-maskers and superspreader events circulated online. Transmission rates were out of control and there was no vaccine in sight, so naturally we condemmed those people for their ignorance and selfishness while praising people responsibly staying at home. But then public health orders kept changing while enforcement remained virtually absent. People, weary of restrictions, took it upon themselves to decide what was and wasn’t safe. At the time, society needed to strike a balance between safety, freedom, and economic reality, to be communicated clearly, applied nationally, and enforced universally. Instead, what we got were pointless rules with no real consequences and a spectrum of people with varying degrees of personal responsibility and risk tolerance. So, the condemnation inevitably became increasingly detached from reality and transformed into a general attack on social interaction and having fun. It’ll take a while for us to collectively forget that being close to other people isn’t inherently selfish. This is already true today in countries where transmission rate is minimal and mask acceptance is nearly universal.
On the other side of this, it’s never been a better time to be a shut-in. The pandemic provided a perfect reason to spend every weekend indoors, and for those of us already doing that, this global phenomenon was frankly a relief. Personally, I feel like it might come as a shock if things return to normal faster than expected. There are a lot of things I postponed because of the pandemic, including a long-distance move and a general plan to change my lifestyle. There are also lots of things that only became possible because of the pandemic, like endless amounts of leisure time, an instant commute, and freedom from wearing pants. I ought to start preparing to move on, but these worries are also part of what makes this long quarantine even tolerable.
Should should be considered harmful
The word “should” can either mean “is expected to” or “ought to, but currently does not”. As an example, “it should work” can be interpreted both ways. Ever since someone pointed this out to me, I’ve been more and more frustrated with the ambiguity of should, so I’ve sworn to stop using it wherever possible. Instead, I’ll replace it with “expect” or “ought to” or something similar. But as I’m writing this, I realize that “ought” has the same problem to some extent.
Technical writing is an uncommon skill
Bug reports, incident reports, design specifications, and other technical documents. They’re commonplace in my work, and I’ve been reading many more of them lately. I’ve come to realize that writing concise and comprehensible technical prose, without ambiguity or misunderstanding, is sort of an uncommon skill. While I was a teaching assistant in college, I frequently wrote or reviewed exam questions and project specifications. For every possible ambiguity or misunderstanding in these documents, we’d get a dozen annoying students asking for clarification, so we quickly learned to write things clearly in the first place. Every time I write technical prose at work, I still rely on principles I learned during those years. I’ve never actually formalized those principles before, so here are a few thoughts off the top of my mind:
- Start from a place of shared understanding. At the beginning of a document, it’s sometimes useful to assume your reader has no idea what you’re talking about. Before jumping into the details, introduce your objective, lay down some background, and then work your way toward the main topic.
- Be concise by deleting all the unnecessary text. If you can’t do that, then at least separate the important text from the background information into separate paragraphs or subsections.
- Be redundant when it comes to unusual facts or important points. Saying something twice, either by providing an example or just paraphrasing, helps ensure that the reader doesn’t miss anything critical.
- Complex topics need to be introduced like a narrative. If you’re describing a problem that has twelve contributing factors, you need to give some thought to the order in which they’re introduced. Otherwise, a jumbled list of facts just confuses everybody.
- Avoid acronyms, or explain them the first time you use them.
- Avoid mention facts if it’s unclear why they’re relevant.
- Ground your writing in reality. If you describe software architecture in abstract terms like “talks to” or “powered by”, it can be hard for the reader to develop an accurate understanding of how the system works. We have technical terms like “pushes to” and “persists state” that are more descriptive without forcing you to provide too much detail.
- Avoid make up new words. If you’re writing about an existing system, be consistent and use the same terminology used in other documents. Also, if you’re writing about a named product or piece of software, look up how its name is stylized in terms of capitalization and punctuation. It may be different than what you’re used to, and using the wrong stylization looks unprofessional.
- Be precise with your exact words. Reread your statements, and if you can imagine a “well, technically…” that makes it untrue, then consider addressing it preemtively. Non-commital terms like “is designed to” or “typically” can help make things technically true. Also beware of sentences that be interpreted in more than one way. Technical readers can be hyperliteral, which is sometimes unavoidable while trying to understand complex things.
- Provide references. If someone wants to verify the claims you wrote, adding links can help make this easier.
Most of all, it’s important to realize that the quality of technical writing is more than just getting all the facts right. Developing technical writing skills also helps you become a better technical reader, which allows you to provide useful feedback on documents as well as decipher poorly written questions.
Rich people have stinky toilets
Wealthy people can have a really twisted perspective on the value of time. Consider high earners, for example. If you normally get paid a hundred dollars an hour, then a half-hour trip to the grocery store might cost you $50 in time and $50 for the groceries themselves. When the cashier rings up your papaya at $2.49 instead of the advertised $1.99, it could actually cost you more in opportunity cost to correct the error if it means you spend even one extra minute in the checkout line1. Lots of problems can be solved with money, and the time-money equivalence frees wealthy people from worrying about small expenditures. However, it also makes some kinds of activities entirely impossible, or rather uneconomical for them to do.
Thrift shopping takes more time. The store locations are usually far away, and searching the random assortment of mismatched sizes for something you like that also fits can take forever. Yet, lots of people still buy clothes this way. As purely a method of obtaining clothing, this approach makes no sense for a high earner. Some people justify thrifting by pointing out the variety of choices is far greater than at regular clothing stores or online, which is a totally valid reason. Combining tangible and intangible value can help rationalize decisions like thrifting that are uneconomical based on time and money alone. Adding intangible value to activities is actually quite common. Without these factors, we’d basically have no reason to do creative hobbies like cooking or woodworking. But what about chores, like cleaning the bathroom? Cleanliness has some intrinsic value, but as a person’s hourly earnings increase, they need to find stronger and stronger intangible value to justify mundane tasks. Either that, or rich people all have stinky toilets.
Well, that’s not quite right. Plenty of wealthy people make money passively even when they’re not actively working, so this basically only applies to high earning wage slaves with no investments? Another counterargument is that rich people hire cleaning services, of course. However, that this kind of thinking doesn’t only apply to monetary wealth.
Consider someone who’s a high earner in terms of productivity, like a big shot at a huge company or a technical director in charge of a popular product. Their usual day to day work can generate massive value for a company, simply by making important decisions or providing direction to the people reporting up to them. However, wielding this amount of influence usually has the unfortunate side effect of completely breaking their ability to do any technical work themselves. It’s not that technical leaders forget the skills required to be individual contributors. Rather, the experience of having once wielded massive influence just saps a person’s motivation to do basic work. A successful engineering team needs both individual contributors and leaders, but the latter role feels so much more impactful. In comparison, the grunt work of programming and getting a new thing to work can feel really unfulfilling.
I’ve felt the effects of this myself over the last decade or so, but to a lesser extent of course. As I pick up more technical skills and experience, my time-productivity exchange rate increases, which makes me less and less motivated to do regular programming work. For a long time, I used the same “intangible value” trick to compensate. Projects like Hubnext and Ef took months of work to complete, but I justified them as points of personal pride. I also poured months into “infrastructure” projects like my Bazel monorepo and my custom service discovery and RPC system, with the understanding that these projects would make it easier to do other future projects. At this point, I’ve already completed most of the long-term projects I wanted to do, and it’s really difficult to motivate myself to start any new ones. There are so many things I could work on, and so I end up working on none of them. I think it’s kind of similar to decision paralysis or writer’s block. No individual thing seems worthwhile by itself, so I end up just giving up and doing something else2.
Fabricating intangible value is not sustainable, so how do we fix this? I want to do personal projects again, but unlike money, there’s nothing equivalent to “investing” when it comes to technical work. The only other solution I can imagine it to keep oneself poor. By devaluing time, it’s easier to justify doing time-consuming activities with no clear benefit. I think this is why people who receive windfalls like lottery wins sometimes end up miserable. The time-money exchange rate suddenly spikes and then drops back to normal, which is really disruptive to a person’s motivational energy. Now that I’m aware of this, I think I’ll be more wary of changes in the future. My own toilet is starting to stink.
Since the start of the pandemic, I’ve rewatched seven out of the nine entries on my anime “favorites” list. Of those, I removed two, but the five that remain now remain with redoubled confidence. I plan to finish my reevaluation by the end of the pandemic, but it sounds like we still have at least a few more months to go, so I’ll pace myself with Koe no Katachi and Neon Genesis Evangelion. It’s been a long time goal of mine to periodically reevaluate my anime ratings for accuracy, especially for TV anime. I don’t like changing scores without rewatching first, so I’m glad I’ve had so much time this year to do exactly that. On rewatch, I’ve been focusing especially hard on listening to the original dialogue rather than the translated subtitles. I think shows like Oregairu have so much nuance in the phrasing of lines that gets lost in translation, and the Monogatari series features sentences so long that the translations sometimes don’t make sense when taken piecemeal. I’ve also been trying different viewing environments. Since a lot of anime is mastered in 720p resolution and designed with typical TVs in mind, I think a lot of fancy new TV tech like full-array local dimming and HDR video is unnecessary and only detracts from the format. I’ve tried a combination of my TV, desktop monitor, laptop, and iPhone, along with either speakers and headphones. For most content, I think the low noise floor provided by noise-cancelling headphones makes a big difference3, but picture quality honestly seems about the same regardless of viewing environment.
I’ve also been thinking hard about my anime rating system. At a glance, my scores might look overinflated with most shows receiving a nine or ten. But I’d argue that the conventional rating system, in which most shows score between seven and eight, makes even less sense. If you rate anime purely by matching the average community-wide rating as closely as possible, you’d end up with something like:
- 10 – Unachievable
- 9 – Reserved for Full Metal Alchemist: Brotherhood
- 8 – Every other great show
- 7 – Average
- 6 or below – Varying degrees of garbage
A scoring system needs to be granular enough to represent a variety of scores, but coarse enough to be defensible. It’s hard for people to rate very consistently across hundreds of scores, so I think three or four “equivalence classes” is the limit for most people. Then, you might as well put those scores at the top of the scale (like, eight through ten) instead of arbitrarily in the middle. Personally, I rarely finish watching a show that’s trending toward a seven or below, and I generally only rate shows I’ve finished watching. Perhaps my scores only seem high because they don’t include shows I’ve dropped or just never started watching. My scores approximately represent:
- 10 – Consistently incredible. I’d be happy to watch this again or recommend it to others.
- 9 – Really great, but falls short for one or more reasons.
- 8 – I finished watching this, but probably wouldn’t do it again.
- 7 – I regret finishing this.
I can usually predict a show’s eventual score from the first episode alone, if not the first few minutes. Nowadays, I usually stop watching a show if it’s trending toward an eight or below, but there’s also plenty of shows on my “paused” list that likely would have received a nine if I finished watching them. The decision between a nine and a ten is usually fairly obvious to me by the end of a show. There’s a variety of reasons I withold a perfect score: a lapse in quality mid-cour, an inexcusably boring arc, or lack of thematic cohesion, or sometimes, there simply isn’t anything in a show that makes me want to watch it again4. My favorites, in contrast, are entirely orthogonal to my scoring. I don’t consider my favorites list as an “eleven” rating, but instead as a short list of shows and movies that I’ve personally developed a connection with and that exemplify the aspects of anime I care about the most.
The morality of IPv6
I’ve noticed that nothing gets people angry quite like refusing to support IPv6. At first, this seems quite odd, since no other technical standard carries such a sense of self-righteousness. But upon further inspection, I’d argue that adoption of IPv6 is perhaps more of a moral issue than most others:
- Adoption is still totally optional, from a practical perspective. There are benefits to IPv6 like simplified address management and globally routable addresses, but most systems continue to work perfectly fine without it.
- Adoption requires work that would otherwise be unnecessary. Today, adoption means dual stack, which means a second set of addresses, firewall rules, routing tables, and DNS entries, and a host of new protocols and standards like NDP and SLAAC to understand.
- Lack of adoption disproportionately affects the less fortunate, including mobile users and developing nations. In the United States where a unique IPv4 assigned per residence is the norm, IPv4 exhaustion seems like a distant problem.
- Lack of adoption negatively affects others. Not every technical standard has these “network effects”, where it only gets better as more people adopt the standard. IPv6 hesitation means the world will likely need to be dual stack for a very long time, forcing IPv6-only networks to deploy stopgaps like NAT64.
My own home network could almost operate entirely as IPv6-only. Some of my custom-made software relies entirely on IPv6, including my IPv6-only DDNS system and my network traffic monitor that classifies flows by decoding NDP neighbor advertisements. The remaining IPv4 connections are mostly for Reddit, random Apple services (from my iPhone), and occasionally video streaming services that use IPv4-only content delivery networks.
Anyway, I’ve rambled on long enough now. Thanks for listening while I got all these topics out of the way. In case you hadn’t noticed, yes, today was just a bunch of blog topics that never fully developed on their own. Anyway, I hope you’re doing well, and happy new year. After 2020, it can’t possibly get any worse, could it?
- This kind of reasoning is the whole reason stupidly wasteful things like private planes for corporate executives exist. ↩︎
- The one exception has been a few spurts of work on my personal Chromecast app that I rely on regularly to watch anime, where the immediate payoff still exceeds the time invested. ↩︎
- But I still prefer speakers for sports anime like Haikyu and lighthearted comedy like Gintama. ↩︎
- I’ve watched plenty of shows just for the moe, so I won’t pretend like my scores are that rigorous. ↩︎