Sunday Selection 2021-01-31

We’re at the end of the first month of 2021, and what a month it has been, at least for those of us in the United States. Personally, I’m mainly in the mode of sitting at home patiently while waiting to be eligible for getting the COVID vaccination, which is almost certainly another couple of months away. Luckily it is currently cold and snowy in my corner of the world, so I’m not particularly incentivized to go outside. While I’m stuck at home, I’m trying to read and write more, so here we are:

Henry Rollins on Defining Success

Even though I’m not very familiar with Rollins’ artistic work, his writing always seem to strike a chord with me. Some years ago, his article on Iron and the Soul encouraged me to make regular exercise, especially weightlifting, a serious part of my life. It was something that I managed to more or less keep up over the years and my life was better for it (until COVID-19 made gyms a bad idea). Similarly, the advice and ideas he presents in this piece are not exactly new, but he phrases them in a way that makes them seem like a breath of fresh air in a world that lately seems rather stale.

And now for something completely different:

Formalizing mathematics: an introduction

This is probably not going to be of much interest if you’re not a mathematician or theoretical computer scientist, but it’s something that’s been bouncing around my head. I’ve been looking into the Lean Theorem Prover, where one can write mathematical proofs in a programming language, so that the computer can check them. Theorem provers are being increasingly used to verify properties of software, but it seems like the pure mathematics is just getting on board with how useful they can be. This article tells us why these theorem provers might be crucial for advancing the state of pure mathematics, in more ways than one.

Brad Wright’s rules for Stargates, Star Wars and Superheroes

If there’s anything I like more than computers and software, it’s science fiction (ok, and food and drink and friends and family, but that’s a matter for another blog post). Brad Wright is a writer and showrunner responsible for the Stargate TV shows and for Travellers, which I think is one of the best high-concept, low-flash science fiction shows of the last decade. In this article, he talks about some of his rules of thumbs for not just good science fiction, but good storytelling, and I think many of my readers will find themselves nodding along.

The Theory of Everything: The Origin and Fate of the Universe by Stephen Hawking

I decided to start my book reading this year with one of the slimmest ones on my bookshelf. This is a series of lectures given by Stephen Hawking on how the universe began, how it’s continuing and how it might end. But what’s perhaps more interesting, Hawking goes into depth about how we came to know about all of it through centuries of discovery (and a number of wrong turns on the way). Reading this book reminded me of how much I enjoyed pop science as a teenager. I might have to pick up Hawking’s Brief History of Time after I’m done with this one.

Stacey Abrams on 3 questions to ask yourself about everything you do

If you haven’t been living under a rock you’re probably aware of the Democrats’ win in Georgia, thanks in large part due to the organizing activities of Stacey Abrams. I didn’t know much about her until the elections, besides that she ran for Georgia governor in 2018. In this TED talk from shortly after that election, she talks about events from her life that shaped, and as the title says, 3 questions to ask about everything you do.

Steve Jobs, the Xerox Alto, and computer typography

A few nights ago I met a wonderful woman at a pipe organ concert who worked for several decades at Xerox, programmed in the Mesa and Cedar languages, as well as Smalltalk on the original Altos.

She told me that she eventually left programming because she felt like modern computing and programming had become bureaucratic and process-oriented, more like engineering and less creative. These days she was more interested in statistics and data science.

Personally I’m glad to see computing and programming mature into a engineering discipline, but I would also very much like to see programming embraced as a creative endeavor. I hope that it’s possible to do both: embrace modern type systems, property-based testing and metaprogramming to build reliable systems, while interacting with clean and beautiful tools and interfaces instead of the modern mess of HTML/CSS/JavaScript (or similar messes in other technology stacks).

Yesterday I rewrote about half (the entire front-end) of a project that took me and two other collaborators several months to complete a few years ago. At the end of a solid work afternoon, I had things compiling and running, but in a very buggy state. Unexpectedly, the associated feelings turned out to be somewhat bittersweet and conflicted. I’m happy and proud of how much I’ve improved in the years since I first worked on this project, but I’m also sad thinking of how much faster and better things might have gone originally if I had known back then all the things that I know now.

Later in the evening, I learned something new (GADTs and how to use them in OCaml), which makes me hope that in a few years I’ll be even more capable than I am now. At the same time, I’m also wary of falling into the trap of rehashing old projects and ideas with new tools and techniques, rather than moving forward into new areas.

A part of me really wants things to be “just right”, not just when it comes to work, but in the rest of my life as well. It’s almost a visceral when I have to deal with things that don’t seem (close to) perfect for long periods of time. But at the same time, keeping a steady pace of progress in research and engineering requires knowing when things are “right enough” and moving on to the next thing.

Navigating that boundary isn’t something that I have a lot of experience, but I’m hoping that just like my programming skills, it’s going to be something I get better at in the coming years.

Problem: I am a human being

A relevant excerpt:

“If you are a person who has come of age during the time of ubiquitous internet access and github, you cannot know what having access to the source code of an entire operating system meant in the mid 90s. When I saw the impact this access had on my own life in the coming years, I began to view closed source software as unethical. In a society that was increasingly mediated by software, restricting access to learning about software works is in my opinion a means of control and subjugation.”

For me, growing up in India, that time was the early 2000s. My first Linux distro was Ubuntu, thanks largely to Canonical shipping out Ubuntu CDs to people around the world, something that seemed like a ludicrous idea at the time.

I wouldn’t be where I am without free software (both free as in beer, and free as in freedom). Also, Star Trek.

Hundreds of Little Things

Last week I came across a blog post about the new release of an image editor called Acorn. I don’t use Acorn, but one part of the post appealed to me. In a section titled “Hundred of Little Things” the author talked about fixing bugs in Acorn:

It took months and months of work, it was super boring and mind numbing and it was really hard to justify, and it made Acorn 5 super late. But we did it anyway, because something in us felt that software quality has been going downhill in general, and we sure as heck weren’t going to let that happen to Acorn.

Most of my past week was fixing lots of small and annoying little bugs in my summer project. Some of them were edge cases in the core functionality of the system, but a lot of them were little bits and pieces and rough edges that I would have normally just let pass. I do agree that software quality seems to be going downhill in general. One way to fix it is to pay attention to all the little things that we usually let slip past. On a related note, I think that writing software in a way that doesn’t allow these little things to slip past us is still unnecessarily difficult and complicated, but that’s a matter for another post.