The Arduino:
How my curiosity about code flickered to life.

Author's Note I wrote this essay in chronological order, numbering each paragraph from one to eighteen. I had planned on rearranging the final draft of the essay, so it could be read out of order. After writing the final draft, I programmed the Arduino to generate a sequence of random numbers between one and eighteen. I rearranged the order of sections, which were more or less paragraphs, using the sequence of random numbers that the Arduino generated.

void setup(){
  Serial.begin(9600);
}

void loop(){
  delay(random(4000,5000));
  int shuffle = random(19);
  Serial.println(shuffle);
}

There is no correct order for this essay. The reader can hack the essay into many different sequences that are all correct.

In high school, I had my own computer and got into web design. I wanted to make a web page just to see how many people would visit it. A friend showed me the Angelfire web service, which allowed users to create their own website templates without having to learn code. I made a basic personal website in a day or so. It had basic information about me and my interests and maybe a picture or two. Angelfire added banner ads onto my site, which made my website feel unofficial. Angelfire website templates had a counter at the bottom of the page that counted each visit. My visitor counter stats were very small, and most of them were from my own IP address. I grew bored with Angelfire, because it wouldn't let me customize the site.

I grew up in Raleigh, North Carolina. My mom was a kindergarten teacher, and my dad was a photographer. We had a house with a big back yard and a basketball goal in the front. I spent a lot of time outdoors riding my bike or playing with my brother. We loved riding to the shopping center near our house to get Cokes and candy. My brother and I never watched TV or played video games. My parents paid us fifty dollars if we didn't watch any TV or play video games for the entire year. My brother and I thought it was a great deal. We didn't watch TV except when we were home alone. We'd have to remember to set the channel back to where it was originally, or our parents would catch us. We were allowed to watch TV together as a family. We would watch the news or America's Funniest Home Videos. When we were teenagers, we got our hands on a TurboGrafx-16, our very first video-game system. My brother traded his bike for the TurboGrafx-16. We gladly said goodbye to the yearly fifty bucks. Our favorite game was World Class Baseball. We would play it for hours.

My apartment looked like a science lab. I had made a few basic Arduino circuits. I hacked electronics that I had lying around or found in the alley behind my house. Lights were blinking, things were beeping, and motors were whizzing. The smell of solder smoke was in the air. I was inspired by how quickly I was learning about the Arduino. I created more advanced projects in the robotics class at MICA. I made a drawing machine with two servo motors that pulled three permanent markers over a piece of paper. The machine started drawing a square that got smaller and smaller with each pass. The results were like an abstract topographical map.

In September of 2011, I spent a lot of free time nailing the basics of the Arduino into my head. In my studio, I reviewed what I had learned from the very beginning of class. The loop function allowed the code to be executed continuously. I memorized the meaning of popular data types like booleans and integers. I learned about variables and when they were local or global. I learned for loops, if/else, delay, and the millis functions. One of my favorites was the random function: random(number), which selects a random number between 1 and the number in parentheses. This can create a glitched, strobe-light effect:

int rand = random(100);
digitalWrite(pinNumber, HIGH);
delay(rand);
digitalWrite(pinNumber, LOW);
delay(rand);

I saved most of my code onto a special flash drive. I created folders that contained the code from every class meeting. It was well organized, and I constantly referred to it for snippets of code. I didn't need to memorize all the functions. I could create a resource that I could always access.

In 2011, I attended the Maker Faire in New York City. The Maker Faire celebrates DIY Electronics, Arts and Sciences. The smell of waffles was in the air because of the popularity of 3D printers which used a biodegradable, corn-based material that was melted to print an object. Double-decker and other tricked-out bicycles were rolling around the parking lot, weaving in and out of the art cars. The New York Maker Faire was known as the "World Maker Faire," because of the massive size and turnout. I bought a souvenir: a small LED matrix that could be programmed with the Arduino. It came unassembled in a static-proof bag. I peeked inside the bag on the bus ride home to Baltimore. There were 126 tiny green LEDs, a circuit board, and the headers to connect the board to the Arduino. I was so excited about the LED matrix that, as soon as I returned to my studio at school, I soldered it together. While I was working, a classmate in the studio stood up. She looked alarmed. She announced that she smelled smoke. I showed her what I was doing. She said, "You're like a scientist!"

The Arduino changed my career path. I am qualified for and interested in design that requires coding for interactions, such as web design or application design. I have goals of making my own advanced web applications. I want to continue to develop my skills with the Arduino and further explore its possibilities. I'm sure the Arduino will teach me more lessons along the way.

After anxiously waiting, I finally received my Arduino in the mail. It arrived just in time for my next class. I carefully opened the package and inspected the contents. I had ordered the complete kit. There was a bag of brightly colored jumper wires and tiny electrical components, a wall power supply and a USB cable. At the bottom of the box was the Arduino, packaged in a simple and compact case. I set it up and plugged it into my computer. It flickered to life. I was excited that it worked! I checked that everything was working right, and then I pasted a few lines of sample code into the Arduino development software.

int pinNumber = 13;

void setup() {
}

void loop() {
  digitalWrite(pinNumber, HIGH);
  delay(1000);
  digitalWrite(pinNumber, LOW);
  delay(1000);
}

I clicked Upload to burn the code onto the Arduino. Voila! I had made the Arduino's built-in LED blink! At that moment, I felt different about programming. I was able to see the changes that the code made on the Arduino. It felt different than reading about code in a book. I enjoyed changing the code and then seeing the results in real time. I modified the code again.

delay(50);

And as I predicted, the LED sped up and flashed like a strobe light. I was hooked.

During my undergrad at Western Carolina University, I took a course on web design. We learned to use HTML tables to lay out the pages. I enjoyed finally working with live code, but I felt frustrated by how hard it was to move things around or align things on the page. Working with HTML tables felt unnatural, like designing a poster with Microsoft Excel or writing a novel on an Etch-a-Sketch. I was trying to fix design issues with a system made to accommodate structure only. I needed to learn CSS to be able to style that content properly. I felt frustrated because we never covered CSS in the web-design course. I bought a book on CSS and read half of it. I could not understand how to target HTML elements with CSS. I got frustrated reading about how web browsers all had varying levels of support for CSS. Some CSS properties worked like a charm in certain browsers and would error out in others!

My family got America Online (AOL) when I was in middle school. It had all the features of Prodigy, except you could launch a web browser! Email functionality was improved. I remember the iconic sound of "You've got Mail." I quickly found out about "warez proggies," which were free programs that allowed you to blast lines of macro art onto chat-group windows. It was awesome, and it made me feel like I knew more about computers than I actually did. There was AOHell, Fire Tools, El Nino and Pepsi. I thought the programs were probably created by someone just like me. I wondered how they learned about programming. I wanted to create my own programs, but it seemed impossible.

When I was in grade school, the ultimate electronic device we had in our home was the computer. My dad and I bought computer software at the store. Back then, we did not download computer programs online, the way you can download them today. We went to the computer store and bought an excessively packaged floppy disc. After reading the installation instructions, we pushed the disc into the computer and hoped that it loaded. We bought games like the Oregon Trail, Flight Simulator, and Sim City. We had an encyclopedia called Microsoft Encarta that barely got used. Eventually the computer games got boring. My dad announced that we were getting something new called the internet! We bought internet software called Prodigy. Prodigy was an internet service provider that included games and chat rooms. I was fascinated because I could join a chat room and talk to people across the world! This was neat to me. I jumped from chat room to chat room, eavesdropping or trying to stir up trouble. It made me feel invincible. Sometimes I would just type in a random string of numbers and letters and hit Return.

I remember the moment that I started enjoying web coding. It was when I refreshed a webpage I was coding. Command+R. The keyboard shortcut Command+R refreshes the web browser, which allows the designers to see their code changes take effect immediately. Command+R. Snap. The layout changes in milliseconds. It's an instant outcome, often from plain text to a styled layout. It's like staying at a hotel, when you return to your room after a late breakfast. You insert the key card and open the door, and suddenly your bed is made. Your room is fresh—refreshed. The powerful keyboard command is one of the web designer's most used tools. If you've written the code correctly, hitting Command+R is like hitting the snooze button after a sleep-deprived night. If you've coded in an error, refreshing the browser can be like hitting a brick wall.

After the Arduino class (Robotic Arts) at MICA, I took Interactive Publishing II, and I excelled. Learning about the Arduino in Robotic Arts allowed me to really understand concepts in Interactive Publishing that I had previously tried to avoid. In 2010, I had taken Interactive Publishing I, and I had been totally lost. But after my Arduino experiences, I was clicking with other coding software like HTML, CSS, Javascript and PHP. I created my thesis website and even a mobile version of the thesis website. I had a new attitude towards solving coding problems, one of confidence!

I've never been comfortable with any type of code. I hated even the basic markup languages like HTML and CSS. I despised the DIV, an HTML structure tag that represents a division. The CSS Float property drove me absolutely crazy. My background is in print-publication design, so I never had to learn any of the web technologies like HTML or CSS. I experimented with making websites during my undergrad but never had any success. I took one college course that taught web design using HTML tables. HTML tables are the equivalent of sending a fax or renting a VHS from Blockbuster. I painstakingly designed a website portfolio with Flash, a proprietary web technology that has been fading away in recent years. I grew frustrated with code, and with a steady stream of work in print design, I decided to abandon anything code-related.

I improved my coding, and I was excited by how my new skills were giving me confidence in other areas. Web design and programming languages like Javascript and Processing were suddenly making more sense! I was armed with a new confidence in code, thanks to the Arduino. The floodgates were opening. I used to be hesitant to make a coding change, fearing that one single bracket or semi-colon out of place would give me hours of headaches as I searched forums for ways to debug the code. I adopted the same methods for web and computer programming that I used with the Arduino. I make a change. Refresh. Then I ask myself what changed, why, and which step to take next.

I was in graduate school at the Maryland Institute College of Art, in Baltimore, Maryland. I was deciding what courses to take for the fall 2011 semester. I had come to MICA to follow my interests in new directions. I had hopes of finally learning web design, motion graphics, and some basic coding skills. Intro to Robotic Arts was the class that changed everything for me. The class description said we would make robotic art with the Arduino. The Arduino is an electronics-prototyping platform that is open source. It is geared towards artists and designers. The Arduino can control electronics—like sensors, motors, and lights—through code that is written for it on a desktop computer. I signed up for the class expecting to learn about robotic art. I didn't realize that my knowledge of coding, programming, and electronics was about to be forever changed. What I learned in the class felt like playing the game Sudoku. Solving one difficult cube unlocked solutions to many cubes around it.

In the robotics class, we learned to create a few circuits that the Arduino could be programmed to control. We started by controlling servo motors.

myServo.write(0);
delay(500);
myServo.write(180);
delay(500);

This would cause the motor to travel its entire operating range in half a second, then return. It sounded like R2D2, caught in a malfunctioning glitch. The Arduino has 20 input/outputs. Each one is designed to either send/receive voltages or take analog readings. One of the first circuits that I made was for a mailbox that had a very small LED mounted on it. When mail was delivered, the LED blinked, saving unnecessary trips to the mailbox. I used a potentiometer, which was essentially a volume knob. I mounted a piece of cardboard onto the potentiometer so that, when the mail was delivered, the cardboard flap would be pushed, chaining the potentiometer value (volume level) and activating the LED.

My second year of grad school was beginning, and I had to select my courses. I noticed a class in the Interaction Design and Art department that looked interesting. It was called IDA 277 Intro to Robotic Arts. I wondered if I was setting myself up for failure. I wasn't sure what to expect from the class. I had little confidence, but I wanted to give it a try. I knew there would be code and that I struggle with code. But I was determined to make this happen. I thought it would be able to relate to my thesis project, so I locked it in my schedule. Confirm. The first day of class we were loaned an Arduino and asked to choose partners. We downloaded the Arduino software that we needed to write and send code to the micro controller. After plugging in the Arduino, I noticed that a tiny red light pulsed on, signaling that the device was powered up. It felt good to see how quickly the Arduino powered to life. My partner was an experienced coder and immediately sent commands to the Arduino. He left me in the dust. He was already making the thing beep and blink. I just watched quietly. I thought I was in over my head. I left the first day of class feeling discouraged. I didn't drop the class. Instead, I ordered an Arduino that night and immediately dug into online tutorials. I was determined to learn.

One of my earliest memories was when I was four or five years old. I was playing with the cord of an electric appliance. I think it was an alarm clock. I unplugged the cord and played with it. I studied the gold metal prongs and then wrapped the cord around my arm. I put the plug's prongs into my mouth. ZAP! I got an electrical jolt—and a new respect for electricity. I continued to be fascinated by electronics, but I had absolutely no idea how electricity worked. I did know that I could hold the positive and negative contacts of a 9-volt battery onto my tongue, and it would tingle. The contacts tasted like an ultra-sour apple. My dad helped me with a school project involving electronics. We made a cardboard box with a slot cut out of it for viewing a scene I had constructed inside. Together we carefully wired and soldered a tiny light bulb to a battery and then mounted the bulb on the inside of the box. When the viewer flipped a switch, the tiny light illuminated the scene.

Essay One:
What is Graphic Design Hacking?

Essay Two:
The Arduino: How my curiosity
about code flickered to life.