A eulogy for my 20s
Today is the last day of my 29th year of existence. Iāve been thinking about it a lot, which is extra strange because I donāt generally care about birthdays. Iām not much of one for holidays in general. So why do I care about this one?
My 20s have been an extreme period of growth. At the start of it, I thought that I was going to live in my little farming town, get married to The Girl, go to mass every Sunday, and pretty much do exactly what everyone else I knew had done. If youāre reading this, well, you know a very different me. Before my 20s, I had only left the country once, a short trip to Toronto. I had barely even left my state. I was smart, but cocky, and incredibly sheltered. I was the very embodiment of a stereotype.
Iāve come a long way.
The root of my anxiety about being 30 comes from something that my brain is constantly whispering into my ear: āYou donāt have enough time.ā Thereās sort of two sides to this; I think: the first is how much Iāve changed in this decade, and the second is a particularly toxic attitude of the industry Iāve immersed myself in.
I feel pretty dumb about this post overall, but whatever. Please just take this as a brain dump from this morning, not some sort of grand, planned essay about how I know all the things or something.
Identity is a function
Have you ever played around with lambda calculus? I myself only know the basics, Iām not a particularly math-y person. Hereās a short introduction: say we have a function. This function is very simple, it returns its single argument. In other words, the identify function:
fn id(x) {
return x;
}
(Making this syntax up, though it will look sort of like Rust without types.)
We can write another function, zero'()
, like this:
fn zero'(f, g) {
return g();
}
In other words, zero'()
takes two functions, f
and g
. It then calls g()
, ignoring f()
. This will make sense in a moment, we just need one more function: succ()
fn succ(f, g) {
return f(g());
}
This function, short for āsuccessorā, applies f()
to g()
, one time.
With these tools, we can represent all of the natural numbers. This is called Church numerals, and hereās how it works:
let zero = zero'(succ, id); // zero any function applied to id zero times.
let one = succ(succ, zero); // one is succ() applied to zero
let two = succ(succ, one); // two is succ() applied to one
let three = succ(succ, two); // three is succ() applied to two
And so on. Now I have this crippling fear that Iāve messed up the notation, trying to transform it into something that looks more like ānormalā programming. Iām sure that someone on the Internet is going to find some kind of flaw and call me an idiot over it.
Ahem.
Anyway, this is the core idea: you can count the number of times youāve applied a function to identity, and that encodes the number youāre trying to represent. We donāt need state to represent numbers and counting, we can do it all through functions.
The concept of āidentityā is a really important one in philosophy. You can take all kinds of approaches here. One classic approach is called āPlatonic idealismā, also known as āessentialism.ā Essentialism states that you can tell the identity of something by the properties it has. For example, a chair is a chair because it has a platform for you to sit, it has four legs, and a back.
The problem with essentialism is that well, there are things that you or I would reasonably call a chair that has three legs, or five or six. Not all things that have a place to sit can be called a chair, either. In other words, while it sounds reasonable at first, the real world absolutely destroys this kind of categorization, in my opinion.
So what do you do? Another solution to this question is posed by a really broad family called āprocess philosophy.ā The solution to identity there is based around movement, change, becoming. Function application. A āchairā is a particular kind of object that participates in a world like other things that we call āchairsā. In other words, identity is something that comes out of doing, not being.
I am not the person I was ten years ago, quite literally. My body is made up of various kinds of cells, and they die at different rates. At a cellular level, I am quite literally dying all the time, in various microscopic places, and I am also regenerating. New cells are being produced. I am quite literally not my past self at a cellular level. And once I finally die, itās not like my cells also instantly die either. Some of them will live for a period of time after Iām dead, though not for long. Bits of my body will actually out-live me.
Life is full of growth and change. But at this point, the function has been applied so many times that I barely even recognize my past self. It makes me feel like Iām starting now, so late into the game! Iāve wasted the earlier years of my life on all kinds of dumb and bad things.
I constantly feel that I am running out of time, that I have not done enough, that I will be a failure. That my work will not be meaningful enough to be remembered, or worse, will be remembered as bad. When I express this kind of feeling, people often point this out:
This doesnāt make me feel better, it makes me feel worse. There are so many things that I want to do that Iām not working on. That hypermedia book still isnāt done. I have been a bad maintainer of Resque and all my other Ruby stuff. I didnāt listen to my friends in Greece, who told me to relax, and then the exact situation they predicted happened. I just hope Iām around long enough to make an impact on people and be a positive change in the world. Weāll see if I make it.
Thereās a whole ānother rant here about Camus and Heidegger and absurd-ism and being-towards-death too. I will save that sophomoric rant for my āIām turning 40ā post.
Youth Cults
The second thing thatās making me feel terrible about turning 30 is the goddamn computer industry. Itās extra worse because historically, I have benefited from this particular terrible attitude. And thatās the worship of youth.
I used to teach new programmers, and often give talks to classrooms full of them. They always want to know how I got started, and I always preface it with something like
My story is one I donāt like to share, because Iām the living embodiment of a stereotype that I think is harmful to new programmers.
I started with computers when I was seven. That shouldnāt matter. Iāve learned more about software in the last five years than I did from seven till I was 18. But we hold up these young genius whiz-kids (and letās be serious, itās not ākidsā, itās āboysā) as the epitome of what our industry can do. The heroic youth who understands computers better than those silly old people. What do they know, anyway?
Age discrimination is real. Itās stupid, but itās real. And even when you know that itās stupid, it can still slip into your brain in a really terrible way. If Iām 30 and this is all Iāve done by now, well, why even bother?
This is dumb. The attitude is dumb. That I disagree with it, yet still feel it at times, is dumb. Ideology is a motherfucker.
So yeah, thatās it. My 20s are almost over. And I wasted some of the last bits of them writing this silly blog post. Thereās no stopping it, just watching the clock tick forward, and doing my best as hard as I can until itās all over. How many of these decades will I even get? My dad certainly thought he had a few more until that night he collapsed and found out that he had stage four, terminal cancer.
Letās see what I can do in the next ten years.