Luke Skywalker is a Design Pattern
I've been thinking a lot about George Lucas, Star Wars, Software, and Joseph Campbell a lot lately for some reason. For those of you who don't know how these things tie together, let me elaborate.
Joseph Campbell (1904-1987) penned the famous book The Hero with a Thousand Faces, which caught the eye of George Lucas, and in fact inspired him to write Star Wars. As the website says, this book traces the story of the (archetypical) hero's journey and transformation through virtually all the mythologies of the world. The definition of a mythology is not limited to wacky stories that our microcranial ancestors used to tell each other around the fire. Mythology includes stories, religion, and art; and more recently music, movies, and video games. Simply put, myths are the shared dreams of peoples. They come from within us. As Campbell said, they are manifestations of the energies of the body shaped by its environment and experiences... or something like that. In any case, the word myth for Campbell did not mean a scientific falsehood that is believed by many to be true, as we use it in our technically savvy English language.
Joseph Campbell came into my realm of experience, as he did for many people, with Bill Moyers' excellent PBS series The Power of Myth. In a series of six one-hour interviews, Campbell exposes us to the depth of mythology and the significance of studying it.Also during the interviews he touches on, of all things, the computer and how one could mythologize it. I'm paraphrasing, but he said that software comes in many forms. The end result of program A and program B are the same, yet they were written by different people with different languages, sometimes in different countries. The means and methodologies (rituals) that they used to get to the result are often completely different, and yet each is true. Each performs the task and achieves the same result.
Back to the hero. In Star Wars episodes 4 through 6, a reluctant Luke Skywalker learns the ways of the Force (a non-descript metaphor for God if there ever was one) and after much work and struggle, succeeds in defeating the Emperor, and (with the aid of his father) restores balance to the Galaxy, returning from his journey to a life of glory, TV sitcoms, and Crunch-and-Munch. Have we heard this plot somewhere before? Hundreds of times.
This is the hero story: Beowulf, Odysseus, Gawain, Aristides, Sigmund, Moses, Jesus, Muhammad, Shivaji, Buddha, and more recently Joan of Arc, Abraham Lincoln, Harriet Tubman, Frodo Baggins, Harry Potter, and countless action movie lead characters. Why do we tell this story over and over again? I'll leave that to the psychologists and philosophers. I just know that when I see a schmuck like Mark Hamill saving the galaxy from tyranny, I feel like if HE can do THAT, I can at least write some great code, or a song, or in general slay my dragons of laziness and complacency and go out and be the best I can be at whatever it is I choose to do.
OK, now back to software. Let's use programs A and B as a metaphor for two completely different religions. Let's say the programs are taking numbers as input, making a calculation and displaying the result. The implementation of this can be boiled down to an algorithm, which is implemented with a design pattern. The output is truth. At it's most fundamental level there is the input, the algorithm, the design pattern, and the output, which is a truism. Program A is written in Java on Linux hardware. Program B is written in C# for the Windows platform. Program A has a Graphical User Interface. Program B runs as an Web Service. Program A was written in Japan by a 14 year old female, and Program B was written in Canada by a 34 year old male. As religions go, these two programs are developed with dogma. Program A has user (believer) requirements. It requires a Linux machine and a graphical user interface shell. Program B also has requirements: a Windows machine and a client application to access it, at the very least a web browser. These are two totally different requirements.
In addition, both programs share some of the same requirements. Both require AC power. Both require the use of a keyboard. Both require SOME kind of operating system. The act of using the programs requires interaction with a different user interface. Different rituals are performed, but each program fulfills it's purpose, which is to return the correct result.
In Star Wars 3, Anakin starts out with the best intentions. He was brainwashed by someone with an agenda, and he was unable to control his feelings. He was thinking in absolutes. This movie is filled with misunderstandings. Anakin is driven to the dark side to protect his lover, so he believes. The Jedi council doesn't know about his affair. Obiwan is clueless as well. Nobody knows why everyone else is acting so strangely. From Anakin's perspective, the Jedi are evil. From the Jedi's perspective, Anakin is turned to evil because of his immaturity, which turns out to be true.
The world is in turmoil. Age-old misunderstandings about our religious and cultural differences have been the cause of every major war since time began. Now the United States of America is in the middle of someone else's mess, which can undoubtedly be traced back to a series of misunderstandings. These misunderstandings have a way of amplifying the good intentions of US and the evil intentions of THEM no matter which side you are on. Before long, the original misunderstanding is well-forgotten, and more and more evil acts are committed between warring parties to revenge the last evil act.
So, does it matter that the program was written in C# or Java? Does it matter what User Interface we use? What matters is that people need religion. Let those who need it have it. If you don't, great. But at least understand. I happen to be a Humanist. But me having my beliefs does not invalidate anyone else's. To me, this simple tenet is the most difficult to put into practice. To live and let live. To believe A and let others believe B, or even (B AND NOT A). However difficult, this is the only thing that will save us from wiping each other off the face of the earth. Along with that basic tenet comes personal responsibility not to let our emotions get the best of us and to keep a clear head.
So Luke Skywalker - son of Padme and Anakin, you sir are an implementation of an ancient algorithm using a well-known design pattern. George Lucas is one hell of a programmer, isn't he.