Introduction

Sometimes, I wonder why I made a blog. I mean, who really cares what a twenty five year old has to say? Then again, I suppose my writing doesn’t have to be FOR anything or anyone. It’s interesting to think if self-expression needs an ‘other’ to receive the expression. If so, are we beholden to the other to witness us? That need seems at odd with the power of self-expression, so that feels intuitively wrong. Is it for us to witness ourselves? But then how do we distinguish between healthy self-acknowledgement and self-absorption? Perhaps it’s the act of creating itself, of shaping thought and creating a dialogue between you and the world, that has the value. Yet, I feel the need to make (some of) my thoughts public. I don’t think I’d enjoy all of my thoughts sitting on a file system on my computer, hidden until they’re deleted.

Which is all to say, I was thinking of doing a list of “Three things I wish I’d done earlier in my CS career”. But the title adds to all the junk on the internet. Posts and content constantly creating a sense of inferiority that drives CS learning, whether explicitly or implicitly. Maybe that’s a personal problem, where I read “thing I wish I’d known…” and interpret it as “things you should have done by now or you’re falling behind…”. I do want to write my thoughts down though. So I’m titling this post something along the lines of “Three random computer thoughts.” No guilting, no pretense of authority, just perhaps a self-refinement of thought as I write. Let’s see what happens.

Thought 1: Reading about the history of computing is a great way to understand the present state of computing

Institutional memory is a short thing. And often those of us new to an institution never realize there was institutional memory to be passed down. I never really cared about the history of computing. Why the hell would I care about the times of dial-up internet or floppy disks? You’re trying to talk to me about looms and weaving and I’m just trying to get a job at Facebook/Google/wherever. If we’ve entered a society where technology has become frictionless through layers of abstraction, there’s nothing to be found in the old analog past. Why would we explore old technology that oftentimes included wrong decisions when we could study the later fruits that benefit from the learnings of the past? It’ll just slow us down as we race to the cyberspace of the future. It doesn’t help that many of the depictions of individuals who are interested in technological history as less than flattering.

And granted, maybe that’s a perfectly normal reaction for someone first learning about computers. They’re overwhelmed with information when they first start out. They’re aware their peers are already creating new startups and solving cancer. Why would they bother to slow down and learn assembly, much less about UNIX, which isn’t even used anymore? My mother tried to teach me as a kid proper formal table manners, to middling success. I was happy to sit at the table and be polite, but who cares about the small details? I’ll learn it if and when I need to learn it, until then there’s no need to enforce it before one grows into it. Let things take their course. I still stand by that. Sorry Mom.

However, there are a number of benefits to learning about those dusty old machines. For one, the machines are usually coupled with stories. I love stories. They breathe life into inanimate machines. They’re the product of hard hours, people’s hopes, money, betrayal, triumph and failure. It connects us not only with a technical discipline but a human discipline as well. For example, I have Brian Kernighan’s ‘UNIX: A History and a Memoir’ sitting on my side table while I’m writing. In between countless useful technical details presented in the book, Kernighan also writes about the pranks Bell Labs employees would play on each other or the joy of moving into a new, more spacious building. Insights into a career with computers. It also contains elements of the Unix Manifesto, which I didn’t even know existed until this book. Elements like “have a program do one thing, and do it well” make sense in this context, and provide institutional knowledge otherwise easily lost between generations. Other books I’ve read recently, including ‘Chip War’ and ‘The Idea Factory: A History of Bell Labs’ layer the evolution of computing in geopolitical and economic forces, showing how the canyons and mountains we take for granted today were shaped by historical forces. I don’t mean that in the ‘well, isn’t that quaint’ way, more in the ‘if you want to understand computers, you better damn well understand how these forces play in the ecosystem.’

I recently listened to a podcast discussing the topic of Programming as Theory Building. Essentially, the conjecture is the vast majority of work in programming is building a theory of the solution, including why you did or did not adopt certain solutions and alternative approaches. What gets lost when a project transitions from team to team is not the code artefacts, but the reasoning and choices, either logical or arbitrary, that led to the present state. Put another way, what gets lost is the history. I wonder if that’s happening on a macro scale with computers. Of course, there will always be the sages who pass down this information in stories or the scrolls of blog posts. But is there a technology or science that has built on itself so compondedly as computers? History also provides a long list of “could have beens” or “could still be’s”. Consider how early representations of the internet were idyllic before the social media add filled present. Could we still get back there?

History also provides introductions to simpler systems than we have at present. Just look at a modern CPU with speculative out-of-order execution. The layers between software and hardware have become numerous and complex. Which is great for writing software, because we needn’t concern ourselves with annoying details, but makes it difficult to have a good understanding of what the machine is actually doing.

Thought 2: To understand something is to make friends with it, not conquer it

I was a high achiever growing up. Which is simply to say, I did well in school and received praise from my parents for it. This is all great and good, except at some point the praise stops coming and your positive feedback from the world dries up (usually right around college graduation). To achieve something is simply expected, and hard work in rewarded with more work, until you’re drowning in work until someone says “okay, you’re good enough”, which never happens. Cause everyone’s dealing with their own shit.

So if I wasn’t going to get external validation, I might as well get it internally. I imagined myself writing papers in my free time, learning advanced math, all that jazz. I would conquer mountains and slay dragons, and that would be my reward, standing at the top with a sense of hard work and achievement. I’m not going to say it was an unmitigated disaster, but it was at least a mitigated one. It did not fill the hole in me that I wanted it to. Part of the problems comes from the fact that these disciplines take years, if not decades, before tangible rewards are earned. We all want the payoff, but the cost sucks the energy out of an already depleted body. Another is simply that these disciplines cannot be conquered. As soon as you learn something, it feels like the road expands forwards in as much distance with new paths. There’s always someone better than you, always a new YouTube video to watch on a concept you’ll forget anyway.

Then I thought to myself one day ‘if I can’t slay the beast, why not make friends with it?’ Friendship is not something that is finished, you always learn new things about people, and it seems like a much healthier way to think about learning. I wasn’t an idiot for not immediately understanding a concept: I was simply still in the process of becoming friends with it. Mountains to climb became friends to make. As importantly, you don’t have to become friends with everyone. I still struggle with these ideas from time to time. I don’t think that will change anytime soon. But it’s worth the struggle.

It also helps with the ego. Ego is the easiest way to prevent learning, because you can never put yourself in vulnerable situations to learn more. I helped run “AppDev” club at my college Senior year, where I helped lead a team of younger students write iOS applications. I had no idea what I was doing. I knew it and they knew it. It wasn’t fair to them, because they weren’t really learning anything, and I didn’t get anything out of it either. I don’t want to become someone who bullshits their way through pretending to know something, especially because that ends up getting angry at someone when they call you on your bullshit, even though they definitely should. It’s the older student going back to school to sit among the younger students. When we see others do it, we either don’t care or laud them for their courage; when we do it, we feel scared because deep down (or not very far down, as the case may be), maybe we’re not good enough. There is also a paradox though, of if we want to be someone who knows a lot and doesn’t make mistakes, we have to start making more mistakes. Ask all the dumb questions we’ve accumulated in our head. We have to pay our debt before we can move forward. And honestly, it’s not always a nice debt to pay, but we must suck it up and pay it anyway.

Thought 3: I would like to write more

All of the preamble to this post circles back to this point. I was always a peace-keeper of the family growing up. I don’t like stress, so I acted as the steam valve of the family: when the water was boiling, I was the person you came to to let off steam. I was and am happy to do it, but at times I have wondered if I’ve learned to temper my opinions and voice as a result. What happens if someone disagrees with my opinion? What happens if someone disagrees with my opinion and I’m the one who’s wrong!? Moreover, who cares about my opinion? Surely writing, at least what’s released, should be an end and not a means. Does the internet need more half-baked thoughts and opinions? Shouldn’t I write something when I actually have shit figured out rather than just yelling into the noise? Maybe. It’s scary to have the wrong opinions, the wrong values. To pay that debt (see above). But I also think part of growing up is flexing those muscles, or wings, and building it up as we go. Maybe I can write a few things, even if they’re not edited to perfection, and it’s not costing people much if I add my bytes to the internet. Sometimes it’s good to break out of the scarcity mindset. Maybe.

Conclusion

So there you have it. Three thoughts kicking around in my brain. Hopefully by committing to digital paper, I can make room for new thoughts and flourishings. Happy holidays!