Protobyte, Creative Coding and Me
At first, writing code seemed out of reach. Now Brittni Watkins is earning her B.A. in creative computing
By Brittni Watkins (B.A. Creative Computing ’17)
“Play” buttons are everywhere. They start movies; they start songs. You push; it plays. Simple.
They also start computer programs, which aren’t so simple. I can tell you from experience that no play button is more frustrating than the one you find in an Integrated Development Environment, or IDE for short. You write some beautiful code; you’re ready to see your world-changing algorithm realized on your computer screen. You press the green play button, ready to witness pure genius in code form, and … it doesn’t work. Fixing the problem could be as complicated as rewriting sections of code, or it could be as simple as adding a semicolon to the end of a line. I had plenty of moments like these when I worked with Professor Ira Greenberg last summer as a student research assistant in the °ÄÃÅÁùºÏ²ÊÔ¤²â Center of Creative Computation, helping him develop and refine a graphics library he is building called Protobyte.
From neophyte to research assistant
Computer science was never something that was on my radar while I was in high school. I had never written even one line of code before coming to °ÄÃÅÁùºÏ²ÊÔ¤²â. I always thought that computers were fascinating, and I was interested in learning how to write code, but I always thought of computer science as something too complicated and technical for me to learn.
That changed on the second or third day of my Introduction to Computer Science class. Here I was, never having written a single line of code before in my life, and with just a few keystrokes, I was able to push that play button and see shapes and lines and colors popping up on my computer screen. I was amazed! I was excited! If I could do all this within the first week of class, what would I be able to accomplish by the end of the semester? By the end of the course I had completed a data visualization about banned books across the United States, and I was certain that I wanted to be a creative computing major.
When Professor Greenberg offered me the opportunity to work with him as an undergraduate research assistant on his new Protobyte graphics library, I jumped at the chance.
I began the summer by documenting the Application Program Interface (API) for Protobyte. I looked over Professor Greenberg’s code and created a set of instructions for users on how to use the Protobyte library. As time went on, and as I encountered concepts in the API that were more complex, I began to give more input into what could be added or changed in Protobyte. One of Protobyte’s features allows users to create complex three-dimensional shapes, such as cylinders and toroids, with only a few lines of code. However, these lines were not very succinct and could potentially be too complicated for users who did not have a lot of prior coding experience. With Professor Greenberg’s help, I was able to greatly simplify these lines of code down to a more intuitive form that I hope will be much more pleasing for Protobyte users.
Patience and persistence pay off
My favorite project so far has been developing the Protobyte Project Creator. Professor Greenberg asked me to develop a program that would act as a way for users to make a new Protobyte project with a name of their choosing. Users would be able to open the program, type in the name of their project, hit a button, and then open their new Protobyte project in the Microsoft Visual Studio IDE. The library and IDE I used to make the project were completely new to me. I spent hours going through the API reference trying to acquaint myself with the new system and trying to figure out how to use the new library. I spent even more hours writing the code for the program and testing to see how well it worked on my computer. When I finally finished the project, I couldn’t help but be proud. I had taken a coding library that I was completely unfamiliar with, learned the basics of it, and created a program that was both functional and useful in only a matter of weeks! I believe that these are the kinds of experiences that are really going to help me in the future, both with my pursuit of a career in creative computing and with my overall self-confidence as a student and a programmer.
Computer science is not easy; sometimes, it can be downright frustrating. However, despite the headaches that come with it, I love creative computing. I love the entire process of writing a new program from scratch, giving specific and discrete instructions to the computer, and creating from those instructions a beautiful visualization, game or interactive artwork. The classes are engaging, the degree plan is flexible, and I have been given more opportunities as a student in the Creative Computing department than I ever thought possible when I first became a student at °ÄÃÅÁùºÏ²ÊÔ¤²â. I am incredibly grateful for these opportunities—the ones I’ve had in the past and the ones I will have in the future—because through them, I’m not just learning about computer science; I’m learning about myself.
Junior Brittni Watkins works as a research assistant in the Center of Creative Computation.
What is Protobyte?
Undergraduate Research Assistant Brittni Watkins explains:
Protobyte is a graphics library written in the C++ programming language. In computer science, a library is a set of functions that a programmer can use to perform certain tasks. Graphics libraries, specifically, aid in the display of visual components on the screen, greatly simplifying the rendering process that may be too complex or tedious for some programmers. This means that a user of Protobyte can utilize simple functions that perform complex tasks on the computer without having to write the code for all those tasks themselves. Programmers can download many similar graphics libraries across the web. However, Protobyte is unique for both its wide variety of ready-made 3-D shapes, and the element of chaos that Professor Greenberg hopes to add in the future, which would allow the results of the programming to be more spontaneous and humanistic.
Read more about creative computation at °ÄÃÅÁùºÏ²ÊÔ¤²â.