Tuesday, May 27, 2014

A Panegyric for the Year

Oscar is a genius. He is kind, caring, and has a depth of knowledge and experience about programming that never fails to astound me. These past few weeks, I've gotten to know him very well, and a couple things have stuck out to me.

The trait immediately apparent was his enthusiasm for new topics and for learning. When I proposed that was try to make a directory of LASA, he told me that it was a great idea, and we started work that day. Oscar's receptiveness to new ideas stuns me. I couldn't ask for a better person to bounce ideas off of; he'll point out any flaws in the plan, and best of all, work towards solutions.

Less easily noticed, but just as important, is his willingness to teach (with considerable skill) those around him. He's helped me learn Objective C, not through traditional lecture, but through demonstrating the basics, then letting me try what I want to. If I have a problem, I can simply roll over a couple feet and ask Oscar for help. He is my Wikipedia, my crutch, my best programming bud. He appreciates something many teachers do not--that the best learning often comes from experience. Through making my first app, Counter, I learned the structure of Objective C, how to link buttons to do things, how View Controllers work, and how to make app icons. Oscar, you are wonderful. The best part of it is that through this, I've also learned the process for programming. I've shared it with you below.

Step 1: Type up what you think you want.
Step 2: Press Run
Step 3: Go through each error, and google it.
(optional) Step 4: Cry.
Step 5: Implement the solutions discovered in Step 3 and/or stumbled upon during Step 4.
Step 6: Repeat until you have a working program.

I am extremely grateful to Oscar. Because of him, I now feel as if I have a proper grounding in Objective C, and could use it to make what I wanted to. Oscar, if you ever read this, just remember: you are brilliant. Even more importantly, you are kind and compassionate. I'm sad to hear that you're not planning to pursue any CS classes next year, but I respect your shrewd decision. Stay fantastic and never forget how outstanding you are.

Oh right. This is a blog post for APCS. Mr. Stephens, I was wonderfully productive. I never took any of my free days, because I enjoyed everything I was doing in class. Here are some things I've learned in the short span of time you gave us.

  • Objective C
    • Structure
    • Syntax
    • Layouts
  • R
    • Vectors
    • Matrices
    • Graphing and Manipulating Data
    • Importing/Exporting Data
I did stuff, and I hope it shows. Mr. Stephens, this class was the best I had this year. I appreciated your teaching style, as well as the atmosphere you fostered inside the classroom. I can't thank you enough for introducing me to harnessing computers to accomplish the minutia of life. Your class has changed the way I approach problems.

A Quick Example
Recently, I took pictures of the textbook for a class, instead of bringing it home. Coming home, I found that all the pictures were rotated to the left. Now, a year ago, I would have opened every one (20 pictures) in preview, and flipped them manually. However, now that I've turned into a lazy student, I decided instead to see if there was a way to get the computer to do it all for me. Googling my question, I found that there was an app called Automator that would accomplish everything I wanted to. So I opened it up. Again, I found that I had changed. Where last year's me would have complained about the complicated layout and closed the program. I jumped into the project with gusto, trying to pick up the language, which I did in five minutes. My final workflow allowed me to paste photos into a folder, have them rotated, and packaged into a combined pdf. I had just invented the world's most cumbersome pirating software.


EDIT: I just realized that I wrote an off topic blog post, so here's another one.

Learning Java has been eye opening. It's a cry different from History or English. There are no tricks you can use to escape being wrong. When you make a mistake in Java, you can't laugh it off or hide it with clever prose*. Instead, you must face up to your mistakes, and find a way to make your mentally handicapped computer understand what you want it to do. It's pleasantly different and challenging.

Another lesson the class has taught me is the importance of flow**. Before the class, I hadn't experienced a state of flow in years. After elementary school, I became less focused, and easily distracted. I hadn't experienced an activity where I found I could work for hours on end. I found that in the Breakout game that I coded for five hours straight. I remember starting on it, then slowly going through each of the error messages in turn. The next memory I have is my father screaming at me for being up at five am. I had worked completely through the night (but hey, at least my program worked). The experience boosted my self esteem greatly--I had started to think I lost all the intelligence I had in elementary school, but being able to churn out a product I was proud of gave me comfort. But right, flow. I just wrote this blog post in one hourlong burst. Although I'm not always able to get into states of flow, I feel amazing when I do enter those states, and I try to achieve that level of immersion in all my work (often to no avail).

Wow this is a long blog post, but I'm not done. Another great part of my year was that I was able to meet amazing people. Arnav, whose knowledge never failed me--he helped me through every single problem I brought to him, Zoli, whose prickly exterior concealed a caring, passionate person excited about sharing his knowledge with others, Oscar (see earlier praise), and Aryaman, my faithful programming partner, who was willing to catch every single misplaced semicolon and test my silly inane Scratch games. A large part of the reason I've been able to meet these people and get to know them is the atmosphere of Mr. Stephens' classroom, which welcomes all stragglers. I've found the computer nerds at LASA to be the kindest, most helpful group of people at the school. You all are amazing, and I believe that this is largely in part to the way Mr. Stephens structures the classes and encourages his students to work together. So here's another shoutout to you, Mr. Stephens, you've made the CS program at our school exceptional. Thank you.

*apart from "try{} catch{}"
**"Flow is the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. In essence, flow is characterized by complete absorption in what one does."