Steve Wang
By Steve Wang
Some people like to say that variety is the spice of life and I should go out to experience more things. However, I think sitting in front of the computer is enough spice for me. During the past few years, I have worked a lot on programming in front of my computer like to mess around and break software. To prove my point about computers being spicy, I would like to share my learning experiences and my process. I would also like this to be a documentation for my learning journey. In this essay, I would like to outline my experiences, which include key learnings from the past three years, my learning from the past year, and share my long-term goals and aspirations.
Throughout my journey, I have immersed myself in the world of programming, constantly seeking to expand my skill set. Over the years, I have learned languages such as JavaScript( a programming language) and honed my ability to write efficient code. Through programming, I have discovered the joy of automation, streamlining tasks, and solving complex problems. Further fueling my passion for tweaking and messing around, during my second year, I also started learning how to use the Vim text editor( a powerful text editor that lets you write and edit text with efficiency, using keyboard shortcuts and commands, making it popular among programmers and advanced users) . These skills have empowered me to create projects such as image carousels ( web) , simple games, interactive web interfaces, and many more. I have mainly worked on those projects in years 2 and 3. Last summer, I had the opportunity to serve as a teaching assistant for p5.js( a creative coding library that makes it fun and accessible to create interactive graphics, animations, and visual experiences on the web.) programming, where I tried guide others trekking the path I once struggled on.
This semester, my focus was on engaging in a variety of shorter projects that allowed me to explore different aspects of technology and expand my skill set. At the start of the semester, I created a simulation of a beam of light reflecting off the side of the screen using SVG.js ( a powerful JavaScript library that allows you to create and manipulate Scalable Vector Graphics ( SVG) on the web) . Although it is still slightly buggy, this project challenged me to dive into the complexities of math combined with programming. Additionally, near the end of the semester, I worked on simulations of a supermarket, complete with moving shopping carts, music, and announcements, which provided valuable experience in creating interactive environments. I then combined that with the pop-up information tool, I worked on before I started on the supermarket project. In parallel, I dedicated time to address software issues on my Linux( a free and open-source operating system that powers many devices, including computers and smartphones, providing a secure and customizable platform for running software and performing various tasks.) device, such as screen tearing( the display on your screen appears to be split or distorted, often while watching videos or playing games, causing a visual disruption in the smoothness of the image) while watching videos and the occasional unresponsiveness of the Windows key. I mainly worked on fixing my Linux issues at the start of the semester when I had more time. By troubleshooting and implementing solutions, I enhanced my problem-solving abilities and deepened my understanding of the Linux operating system. Furthermore, I explored JIMP( a JavaScript library that helps you manipulate and edit images in a web browser, allowing you to resize, crop, apply filters, and perform various image editing tasks without needing advanced technical knowledge) photo processing, learning techniques to manipulate and enhance images programmatically. I mainly worked on JIMP and the second half of the semester. Among the significant projects I undertook, one of them involved writing code to collect data for a UV light experiment which I also constantly improved on during the semester. In collaboration with classmates, we utilized an Arduino UNO( a small electronic board that allows you to build and control your own interactive projects by connecting various components, sensors, and actuators, without needing advanced technical skills or knowledge) and soldered UV sensors to it. We worked on the soldering part at the beginning of the semester so we could focus on working on the Arduino code in the second half of the semester. By optimizing the code, we streamlined the process, reducing the setup and clean-up time from 1 to 2 minutes per person to less than a minute for a single person. Additionally, I worked on an algorithmic music generator, in collaboration with my classmates throughout the semester. This project involved playing chords generated by my classmates through MIDI( Musical Instrument Digital Interface) , which were then sent to a music synthesizer. Moreover, the generator was capable of autonomously creating chords using L-system logic or randomization. The resulting music had a funky yet intriguing quality.
In the future, I aim to refine my expertise in Linux, addressing challenges such as screen tearing in the summer. During the summer, I would also like to configure my operating system so that my workflow gets faster. Additionally, more tools that will help me with schoolwork would also be useful. While doing that, I will also continuously improve my programming skills, particularly in JavaScript. Furthermore, I am determined to expand my horizons by pursuing further education in the field of technology, allowing me to stay ahead in this rapidly evolving landscape. I aspire to combine my passion for technology with my love for tweaking to fix my Linux system while exploring the realm of algorithmic music creation and contributing to the fusion of art and technology. Furthermore, I hope to start contributing to some open-source (software that is free to use, modify, and distribute, allowing anyone to access, contribute to, and improve the code, promoting collaboration and innovation among a global community of developers) projects that I use sometimes in the next few years. Be it little things like fixing minor bugs, I think it still might be fun and useful. 5 to 6 years in the future, I would like to develop my own projects and work with multiple people on the same project.
In summary, thinking about the things I have learned over the years, this term, and my future plans has allowed me to better plan for my future. I plan on continuing on this path and breaking stuff along the way. The first thing I will try to do is to collaborate with my classmates and teachers to improve on the algorithmic music code. After that, some form of documentation or paper will be written about it. To do this I need teachers to check my writing and my classmates to try hard to understand my messy code. I believe doing all this will be enough spice in my life for the moment. Besides, overseasoning can sometimes ruin food.