Video games were my inspiration for learning how to program. Excited about making the next Final Fantasy or World of Warcraft, I took one of the "Computer Science 101"
classes during my undergraduate studies. Oh man was that a let down (゜-゜). The course introduced C++
and some basic object-oriented concepts; I still smile when I remember calling
. Luckily I met Alex Wilson in the CS lab who helped me learn the C++
basics. He introduced me to
which would take any type and make it into a string (amazing stuff!). However, the class was extremely boring and didn't teach anything that I thought was important to game development.
The following year, I took "Object Oriented Programming in Java"
with Dr. Robert Schweller which turned out to be the most enjoyable class I have ever taken. Each course assignment was posed as a challenge to build a mini-game, implementing the new Java features we learned.
I probably put 15 hours a day working on the final project (who cares about other classes when you're making a game (ノ°▽°)ノ!!)
Unfortunately I didn't get to finish it in time, but it was definitely a fun project which taught me basics (of basics) in game development.
Later that year I saw the Social Network
, a movie with one (or maybe two) scene(s) where they talked about emacs
. Curious about it, I googled it and attempted to program with emacs
. When I asked a professor about it, he pointed out that people spend more time thinking about algorithms as opposed to programming.
A reasonable point and he probably knows his stuff so I gave it up at the time.
Aside from a few courses, I stopped programming to finish my mathematics and core requirements until I reached Rice.
During my first year at Rice, I took two courses, CAAM 420
and CAAM 520
, both taught by Dr. Tim Warburton (my advisor). He taught the basics of emacs
, svn, bash, C
, and MPI
. Although not as fun as making games, I got the most out of those two courses than any other courses I took.
I learned what I still believe to be the most important parts in programming: my programming environment.
I spent a lot of time setting up my bash environment to use the terminal more efficiently. I picked up emacs
again and used it for anything not GUI related; as is any text editor, turns out it is useful! Additionally I learned to rely on version control to make accidental file deletes . . . well it's still bad, but not as bad.-﹏- still no game development though . . .
During my second year, I got lucky my advisor taught OpenGL
in his CAAM 420
course . . . which I happened to TA for (•̀ᴗ•́)و ̑. I managed to learn and implement a mini-game using C++
in under a week to code a cheap minecraft first person shooter. My advisor put two Raspberry Pi
as prizes to the best two games . . . I apparently wasn't eligible for it as a TA (however, he did end up giving me one two years later (•‿•)).
Shortly following, I had the chance to collaborate with my then office mate and good friend Rajesh Gandham in a tsunami simulation code. To get realistic-y meshes, I developed a short C++
code to provide user-defined world coordinates. Together with GMSH
, we were able to get some neat meshes to run the tsunami simulations with.
Due to graduate work, I had to halt on working with cool stuff and move to useful stuff ( o ︵o).
I did however end up meeting a lot of cool people from industry and national labs. Constantly working on numerical codes using OpenCL
led us to work on OCCA
. I finally was able to get my degree by working on OCCA
and will continue making it better. Before I go, I did have another cool gif to share.
Along with other cool toys, my advisor got two leap motions and an Oculus Rift.
While I didn't have time to work with the Oculus Rift, I got a small leap motion code running with a finite difference simulation.
In the famous words of Forrest Gump: ". . . and that's all i have to say about that", for now.