Code, AI, and Me
Akshansh Chaudhary
December 2018
Abstract
This paper reflects my thoughts on code and artificial intelligence in the 21st century. In light of my recent readings of the books Code by Charles Petzold, Geek Sublime by Vikram Chandra, and Superintelligence by Nick Bostrom, I have shared how my experiences with code and AI relate with what the authors have written in their respective books.
Keywords
Code; artificial intelligence; Morse code; braille; high-level language; low-level language; SpineBMS; robots; empathy; ecoDetect
Code.
In its most elemental form, a code is a sequence of choices: yes/no, right/wrong, high/low, up/down, etc. Long before the language of computers, humans applied these elements of choice in their everyday communication. Since two options were the most simplified form of choice, humans adopted talking regarding opposites or contrasts.
As Charles Petzold has mentioned in his book Code[i], the early systems of Morse Code and Braille were developed using the concept of opposites. The Morse Code is a sequence of notes – a short note is called “dit,” and a longer one is called “dah.” So, a sequence of dit and dah comprise the most simplified form of language. What is interesting about this idea is that communication does not necessarily need to be in the form of written messages. Morse code has been used to transmit messages using light signals (no light for dit and a bright flash for dah) and audio pulses (a short note for dit and a longer note for dah). Braille language uses a similar concept in which a thick paper is etched with a flat dot for low input and a raised dot for a high input. A sequence of these dots generates alphabets, which combine to make words and sentences.
The entire electronic and semiconductor industry functions on high and low inputs. All the hardware and software components of a computer: transistors, decoders, logic gates, shift registers, microcontrollers, and machine language function based on a sequence of 0s and 1s, with a 0 standing for low input and a 1 for a high input.
As the era progressed and computers became more common, programming languages for the computers came into being. The idea was to ease the programming process. So, instead of writing the instructions for the computer in machine language, programmers first developed assembly language, then they built on top of this language to create C language, which was further built upon to generate FORTRAN, COBOL, C++, C#, PHP, Java, Python, among others. In the language of computers, the basic languages are called low-level language, since they can be directly understood by the computer with minimal compilation, and the high-level languages are called high-level languages since the script is more human-friendly to write. Today, what we usually refer to code is a script in an advanced programming language like Python, Java, JavaScript among others. Vikram Chandra identifies these levels of the programming language in his book Geek Sublime[ii] using three elemental forms: Mel, Elvis, and Mort.
A Mel is someone who codes in machine language. Meaning, they code a program from the ground up. Since doing so requires exhaustive knowledge of both the low level-bits and high-level object-oriented structures, Vikram Chandra has personified them as Einstein. Steve Wozniak was a Mel because he built Apple II Computers from the ground up. An Elvis is a typical application developer who codes from scratch using the high-level languages like Python. The third and the most common form is the Mort. Mort is someone who tweaks the existing high-level code to customize it as per their project requirement. In Hindi, we call this fixing “jugaad.” Interestingly, this fixing is so standard these days that the Oxford Dictionary recently included jugaad in its dictionary[iii].
Reading about the three forms of coders made me think about the approach we used to adopt in my company, Spine Software Systems. Before I joined Parsons, we at Spine used to develop an enterprise resource planning software for the pharmaceutical sector, SpineBMS[iv]. Anyone who has developed or used an ERP knows how exhaustive it is, so much so that the final product is so complex that customizing it is a nightmare. Still, over the years as we marketed SpineBMS, our clients wanted us to customize it to fit their needs. This customization went on for years until we reached a point that SpineBMS was tweaked so much that its final version was too complicated to code: any customization used to take several days, and the debugging and testing cycle elongated.
Moreover, all my employees who were developing and testing for SpineBMS had become Morts. Finally, we decided to discontinue selling the then current version of SpineBMS and built it from scratch so that the employees who had joined Spine to become Elvises can get back that inspiration. To do that, we took a bold step: we changed our primary development language and development platform from PHP to Java. This meant upgrading the knowledge of the existing employees and hiring new talent, but we were up for it.
Any programmer can tell you that the work of a mort is not the most interesting. Still, most the companies today do the same: tweaking existing programs that were written decades ago. Vikram Chandra referenced the US Pentagon’s Defense Finance and Accounting Service (DFAS), stating that their software based on COBOL was written in the sixties. He wrote, “A retired Pentagon employee reported that the system is “nearly impossible” to update because its documentation disappeared long ago: “It is hard to make a change to a program if you do not know what’s in there.”
I started coding after I joined Parsons. Before that, I was mostly into UI/UX design. I have worked with several programming languages like Processing, JavaScript and C# in the five months that I have spent working on my projects. I must admit that while I started with an Elvis, I ended up inducing bits of Mort in my programming practice. So, a lot of times, I look up code references for an application I need to build and then customize it. Having done that, I realize that I am more attached to the projects I coded myself than the ones in which I customized someone else’s code.
Currently, I am an Elvis in HTML, CSS, and Processing, but a Mort in JavaScript and C#. I value my work as an Elvis more than that as a Mort, so, I will continue to work towards adopting the Elvis style of programming.
AI.
Artificial Intelligence or AI is a machine that has been made intelligent to make choices on its own. The choice made by the machine depends on the domain of intelligence given to the machine. The process involves training the machine with a lot of data, often called Big Data. Think of it this way: as a child, your mother points to an object on the street and tells you that it is a car and continues to do so for different models and colors of cars. Gradually, you get to know how to identify a car. An AI works similarly. The machine is fed data of objects, scenarios, situations, and cases, and it is supposed to determine the correct alternative. While the process is comparatively easy for object, image, voice, and pattern recognition, the decisions get complicated when the AI is asked to make decisions based on emotions.
Empathy is a human trait and is hard to recreate inside a machine. This is because machines have been configured to look for the optimized solution. This solution tends to get very extreme very quickly. Nick Bostrom’s book Superintelligence[v] states some scenarios of the same: when an AI is tasked with a goal to “Make us smile,” it comes up with a solution to “Paralyze human facial musculatures into constant beaming smiles.” Bostrom calls this perverse instantiation. So, if given a task to complete, an AI may think differently than we do. Think of a scenario of self-driving cars. What decision should the car take when it is approaching an accident? Should it undergo collision (kill itself) because that saves the most lives, or should it save itself by killing a dozen other people? Would you want to sit inside a car which is destined to self-destruct if need be?
At the time of this writing, AI has been a trendy topic in technology: self-driving cars, IoT based home automation systems, voice-activated virtual assistants, etc. Companies around the world are working towards developing automated solutions to their recurring tasks so that human potential can be utilized for more creative practices. The idea is to make technology a companion of humans in their everyday tasks. This extends to synthetic biology (creating artificial brains and chips embedded in the human body), self-activated robot soldiers, among other areas.
I worked on a speculative design project with Sunah Hong[vi] to create a wearable AI bracelet called ecoDetect that detects human activities which are impacting climate change and notifies them about it[vii]. The idea was to inform the people about the damage they are doing to the environment so that they can proactively build alternate solutions and abandon current activities.
While scientists are working towards building a wise-singleton AI, people have been discussing the control of such a system: who would control it and how would it be contained. Bostrom has immaculately raised these concerns in Superintelligence.
With the increasing adoption of technology and the drive toward transparency, the world is threatened by the right use of AI. Several sci-fi movies like The Matrix[viii] and Wall-E[ix] and TV shows like Black Mirror[x] have shown the doom of humanity through AI and machines. Humans must collaborate their AI development so that we take a uniform path towards a utopian future with technology.
I end by quoting Bostrom who gives his opinion on why people continue to adopt the technology.
“From the person-affecting standpoint, we have greater reason to rush forward with all manner of radical technologies that could pose existential risks. This is because the default outcome is that almost everyone who now exists is dead within a century.”
Bibliography
[i] Petzold, Charles. Code: The hidden language of computer hardware and software. Microsoft Press, 2000.
[ii] Chandra, Vikram. Geek sublime: The beauty of code, the code of beauty. Graywolf Press, 2014.
[iii] “jugaad.” Definition of jugaad in English by Oxford Dictionaries. https://en.oxforddictionaries.com/definition/jugaad. (Accessed December 19, 2018).
[iv] “SpineBMS.” SpineBMS | Cloud ERP for Pharmaceutical Companies from Spine Software Systems. http://www.espine.in/spinebms. (Accessed December 19, 2018).
[v] Bostrom, Nick,1973- author. 2014. Superintelligence: Paths, Dangers, Strategies. First edition. ed. Oxford: Oxford University Press.
[vi] Sunah Hong is a UX designer and animator from South Korea, who worked with me in the MFA Design + Technology program at Parsons School of Design in October 2018.
[vii] Chaudhary, Akshansh. “ecoDetect | Solve Global Warming through a Smart Device.” Akshansh’s New School Portfolio (blog). October 16, 2018. Accessed December 19, 2018. https://portfolio.newschool.edu/akshansh/2018/10/16/ecodetect-solve-global-warming-through-a-smart-device-ideas-in-form/.
[viii] Wachowski, Andy, Larry Wachowski, Keanu Reeves, Laurence Fishburne, and Carrie-Anne Moss. 1999. The matrix. Burbank, CA: Warner Home Video
[ix] Stanton, Andrew, Jim Morris, John Lasseter, Pete Docter, Jim Reardon, Thomas Newman, Ralph Eggleston, et al. 2008. WALL-E. Burbank, Calif: Walt Disney Home Entertainment.
[x] Brooker, Charlie, Barney Reisz, Annabel Jones, Otto Bathurst, Konnie Huq, Euros Lyn, Jesse Armstrong, et al. 2012. Black mirror.