In reality, the term “bare metal” is metaphorical. What lies beneath is silicon—thin layers of silicon dioxide that transmit electrical signals, resulting in the images and text we see on our screens. Although Spengler passed away before the digital computing era, his insights remain pertinent. We don’t manually handle the 1s and 0s in our heads, yet we interact with them daily through high-level abstractions.
The risk of living in this Spenglerian era is that we might mistake these abstractions for reality. This might explain why programmers often delve deeper into the stack as their careers advance, hoping that when they reach the “bare metal,” they’ll encounter the real world.
The Journey into Programming
I began my programming journey at the top of the stack. It was 1995, and I was working with HTML on platforms like Geocities and Angelfire, experimenting with blink tags and the marquee tag, which scrolled text across the screen. I was so enamored with the marquee that I quickly transitioned from HTML to Flash, influenced by the incredible animation on the Matrix website.
Initially, Flash wasn’t a programming tool; it was an animation application where you manipulated shapes and keyframes. However, when a scripting language was integrated, I found myself writing equations to control animations. My high school trigonometry teacher was right—I was using those skills in real life!
I preferred the simplicity of coding in a text file over dragging elements around. Writing code felt more straightforward: you write commands, and things happen. However, Flash had its limitations, which motivated me to explore further down the stack, seeking fewer abstractions.
At that time, my escape from programming was working in a restaurant kitchen, where the Friday night rush offered a concrete experience. It was there, in 2004, that Aaron, my smartest dishwasher, suggested I learn Python if I wanted to go deeper into programming. Trusting his wisdom, I jotted down his advice: Learn Python.
Embracing Python
Learning a new programming language is challenging, especially without modern resources like Codecademy or Stack Overflow. Back then, we relied on books from publishers like O’Reilly and No Starch Press. I picked up “Learning Python” but lacked a motivating project to immerse myself in the language. Without a passionate project, mastering programming is difficult.
My time was limited due to the demands of running a restaurant kitchen. After a year, I burned out, used my savings to buy a plane ticket, and traveled to Asia to escape. Inspired by the Beatles, I hoped to find clarity.
One day in Bangkok, I needed more music by Django Reinhardt, the legendary jazz guitarist. I visited an internet café, but the keyboard was in Thai. I changed the layout to English, hoping to type “Django” correctly. Fortunately, Reinhardt appeared in the search results, but I also discovered Django, a Python web framework for “perfectionists with deadlines.” The framework intrigued me, aligning with my perfectionist tendencies.
Django was a Python framework. If this were a movie, there would have been a sequence where Aaron’s face appeared through the haze, repeating, “Learn Python.” Six months later, back in Los Angeles, a friend asked me to create a website for Wheels4Life, a bike charity. I agreed, on the condition that I use Django, finally having a project to focus on.
The website was successful, leading to more opportunities and eventually a business building Django-based websites. It took time, but I mastered Python and developed the ability to solve problems effectively.
What surprised me was that I didn’t go deeper into the stack. Python sits in the middle, offering flexibility to work at high levels of abstraction or get closer to the machine through C modules. With Python, I could build anything I imagined, and I stopped worrying about the stack, focusing instead on the endless possibilities.
Finding Community in Abstraction
Attending the first Django conference, ostensibly to cover it for WIRED, I discovered a welcoming community of like-minded programmers solving problems and creating exciting projects. The experience was tangible and concrete, even though it emerged from abstract ideas.
Describing our era as an age of abstraction often carries negative connotations, suggesting a detachment from reality. However, the quest to eliminate abstraction and reach the bottom of the stack stems from a bygone mindset. The “bare metal” is wherever you find yourself, in your chosen language and community. That’s where you build your world.