Overview
In programming, there are different strategies and types of logical statements that are used to build entire systems. Specifically, looping and creating small modules that evaluate only a few statements are two ways programmers build well constructed systems. For this second micro-project we were asked to use these concepts to build a program that represents them visually. An added bonus for this project was to also include interaction of some sort. This could mean having something happen when the mouse was clicked or moved or check if certain keys had been pressed.
In the end I decided to use a 3D visualization because it looked like an interesting challenge to solve. The program simply generates a cube when the mouse is clicked, and then translates and transforms them at intervals of 25 pixels apart. I had a really fun time with this project and feel it was beneficial in my understanding of how looping works.
Process
To begin this second microproject I first rewatched the video on Jason Salavon a few more times. A particular project of his stood out because of its shape and color which was the "Shoe Production from 1965-Current". I really appreciate the use of a couple shapes to create a structure which is what inspired this project. My idea behind this design was to be both minimal and interactive.
A feature I really like in interactive content is the gradualness of the piece coming together. Using some principles of rhythm and balance I aimed for designing a piece that is created slowly. The reason for this is it keeps the user engaged for a longer time with my project.
In this design there are elements from both Unit 1 and Unit 2. The loops, array, box class, and custom mouse interaction function are all from Unit 2. I did think about using lines and points for this project but felt they wouldn't go well with the box idea I had after the demo on Thursday.
Some challenges I faced during the building of this project were with the generation of the boxes and keeping track of the rotations and translations. I also spent a good deal of time looking at the example from class and the reference page on the map function to finally get it working correctly. Overall I am pleased with what I've created and I've begun thinking about potential projects that use similar, minimalist design ideas.
Reflection
During the time I worked on this project I found some strengths in programming that I have and also some weaknesses. I spent a long time making sure I understood the logic of how data is being passed between functions in the program, which can be hard to keep track of at times. I learned firstly that commenting as you work is not only probably a good practice but for me specifically, they remind me of the bigger picture. While reading the documentation for the JavaScript library we used in the class I would often forget what my original goals were for the project. To overcome this I started to comment and draw out my program before attempting to type anything.
This really helped in forcing me to face the uncomfortable pause I get when an idea is in my head but I can not figure out how to include it in a solution for a problem. In the later micro-projects, the program and its logic were written out on scratch paper before I went to the computer. I still did use the documentation provided by the founders of the P5.js library to make sure I understood what some specific functions would do but did not code anything until I had written out the logic first. I did occasionally run functions to test my paper predictions and I've noticed that my confidence in being able to approach a problem is increased.