This post is about understanding the value of maintaining a connection to our history in a world where software and hardware change is a regular occurrence.
I have had a hard time letting go of my 12″ PowerBook G4. There is something about this little laptop that deserves more than being thrown in the trash or sold for $50. Or even given to some worthy high school kid that’s dying to learn about computers. I have always worked to let go of old hardware because it just takes up space in the closet, but the other day I got a feeling that was a little different about this problem.
Leave aside the fact that this particular laptop has some very unique and likable qualities, I am starting to feel sad that everything in this field is just thrown away so easily. We have these highly prized tools and artifacts that are such a big part of our lives, and then we just throw them away like garbage when we get the next big thing.
Then I remembered that this was the very point that causes me pain with the software industry. It came when I realized how fragile the EastWest Play engine was just because it was a piece of software. The recording and graphic design were so amazing, and the software was the most challenging project I had ever and probably will ever take part in. It audio sounded amazing. The scripting engine was so much more flexible than anything else I had seen. It was a total work of art, but it would’t be around for very long.
Sure, it’s lasted 9 years and survived a completely different development team. But even in the best case, the tools we are using today will be completely different in another 10 years. Once the product isn’t supported any more (say within those 10 years), all it takes is one processor architecture to change (eh-hem, Apple-i386) and these VST plugins are done.
As far as art goes, this is the lifespan of a gnat. I am getting the urge to take a long, hard look at the way that I approach tools, products, and the longevity if craft. I am thinking about a carpenter and his favorite hammer where the taped handle is worn down to exactly fit the shape of his palm and no other hammer will do. Do we throw away the hammer?!?
This is the equivalent of naively forgetting to respect the elders. Sure, the Elders as in the people, but also the elders as in the tools and methods born into a past era that can give us a deeper understanding of who and what we are today. These are crucial elements of our cultural and practical foundation. I’m not thinking about going and learning assembly or anything, but instead I am thinking about all of the really wonderful tools and skills that I’ve poured over and then readily forgotten about in order to stay on the bleeding edge. It sounds like a classic imbalance of valuation between the product and the process.
So here is this PowerBook. Still my favorite computer. Perfect Feng Shui, a mature ppc architecture at the top of its game, a wonderfully smooth keyboard, and 5 hours of battery life, a body of aluminum, still the smallest laptop Apple has ever produced.
It won’t run anything past Leopard. New applications won’t run on its ppc processor. Even getting a modern browser to run on it requires Firefox on Linux to be barely in the game.
Still, I ordered a replacement battery for $15 and a replacement fan for $3, and figured it would be fun to work on it a little. Why? I have no idea, but I feel like it’s my task to discover the value in keeping a machine like this.
What I mean is, I have a strong intuition that constantly throwing away the past without much care is not a good thing not matter what the field is. It seems like we should be able to keep using good tools for longer periods of time. And, if it doesn’t make sense to use them for the most modern tasks, then maybe there are ways to re-think the craft in terms of work and practice that are more universally applicable in the ART of the work.
After all, being a true master of any craft means simultaneously mastering the past, present, and future. It means mastering the universal common skills and qualities that are fundamental to ALL tools and abilities, so that you can speak any language to any object (machine, person), and still hold the title of ‘master’. It means being able to write your own scripting engine and also get it to run with 32K of RAM on a 286, as well as writing coffeescript-generating WebGL that talks to a COBOL file descriptor reading raw data from a lucent 5e telephone switch (rest in peace)…massively multi-threaded.
So something tells me that there are lessons in the past that are still relevant today. Does having a less capable computer help in any way? Are there things I can do with this machine that I would be afraid to do with my $3300 bread-and-butter? Does getting back to basics with bash, emacs, and an xterm have any value? Is there benefit to spending time in a non-graphical environment? Is this like going to a cabin get away from the city? What makes people do that, anyway?
Maybe this is just a personal phase I need to go through, but for the past 6 years I have felt very disconnected from a world of software that I used to be very excited about. Then I recently rediscovered emacs, and remembered that programming isn’t just about making the latest coolest thing all the time or even building a business when making the latest coolest thing got old.
It is about refining the ART of the craft, practicing and practicing until a new way of looking at things would manifest. It is about pushing the limits of my potential by learning lots of simple little tools that implied lots and lots of creative power. It is about being able to simultaneously think on multiple levels of abstraction to not only find the performance bottleneck bogging down the system, but to formulate the reproducible lesson inherent in the problem or development technique so it never happens again on any other system. It is about finding the one bloody ring on the effing code! Seriously, it’s in there!
I remember walking around my undergrad campus in 2001 with head buried in a press pad for two years trying to fully understand the concept of object oriented design. No, not just how to write the code like a monkey, but how to instantly and fully construct a design for any problem forward and backwards, and also instantly amend when the requirements change. Then I spent another 3 years of building the ultimate audio framework (in my own mind, didn’t amount to much) in order to refine my practical development skills at that same ultimate depth. To me, the answers to the universe lay in the fruit of these conceptual and practical exercises. For example, how optimizing a company’s personnel workflow can be understood with the concepts of multi-threaded design, or how apply general systems theory to the evolution of a biological or political ecosystem.
Anyway, I’m ranting now. But I haven’t seen this kind of magic in software in a long time. And I haven’t seen or heard anyone else describe software in this way in a long time. Yes, I can see that we are currently in a time of unprecedented innovation several degrees beyond than anything we had ever imagined. But I also think that we are riding a big, big wave that was created by thinkers of these same core principles and concepts that I am talking about(Linus, Guido, Steve), and that wave is currently reaching it s high water mark for this generation of technology. While the HTML5, mobile apps, Internet services, and a JS scripted world are the hot-shot buff surfers winning the prize money and getting all the girls, they are still just riding that high, foamy wave thrust upward by the Giants living in the depths of the sea.