At The Ends Of Tunnels by Rachel F. '12
unlike a tunneling particle, I actually had to expend lots of energy to surmount obstacles
So much has happened academically in the last month! A while ago, I coded a ray caster for 6.837, the computer graphics class that has been sporadically ruining my social life every two weeks. Each lab takes roughly ten to fifteen hours to finish. When we emerge from our cyclic periods of total isolation, we are often pasty and atrophied, our voices hoarse from underuse, our hands trembling with carpal tunnel, our freshly sprouted beards disheveled with sorrow. Also, when you build your own ray caster from scratch, it’s not…that great.
But I digress. I actually wrote the bulk of this post a month ago, so in the interim, I’ve also built a ray tracer.
A ray caster, if you care, is one of the most basic conceptual layers of a non-real-time graphics engine. In real life, photons bounce off of objects and the ones that make it into our eyes are the ones that comprise the image we end up seeing, but if you modeled rendering that way, you’d waste a lot of computation because most photons wouldn’t end up making it into your ‘camera’. To save computation, you cast ‘light rays’ in reverse, from your ‘camera’, and see what objects they hit. And by ‘bounce’ and ‘light rays’, I actually mean ‘arcane-looking linear algebra’.
A ray tracer, on the other hand, builds upon a ray caster, but traces rays recursively so that you can detect things like shadows and reflections. The high-level gist of it is pretty simple; on a low level, we had to build in tons of individual components like image anti-aliasing, refraction and reflection, and behaviors for different types of light sources, cameras, and objects. There was also a lot of C++ compiler wankery to deal with, because we built it almost from scratch.
After collapsing, exhausted, at the end of the long gauntlet of coding, I rendered squashed and textured spheres and triangular meshes of all configurations and sizes, illuminating them with glaring, primary-colored lights, reaping the meager rewards of my labor with a mixture of childlike joy and awe. Then I remembered my laptop had programs on it with actual, beautiful graphics engines that took organized legions of real people tens of thousands of hours to build, and bitterly logged out of the Athena machine I’d tied my existence to for the entire day, cursing under my breath.
6.170 (web development) has been progressing much more enjoyably. The last time I was hunched over an assignment, a mechE, in passing, expressed his empathy for my suffering. “No, no,” I said, “it’s actually really fun.” Confusion ensued. “They throw like three new web frameworks at us every lab and we have to learn them and build apps with them.” Confusion persisted. “I fail to understand your masochism,” quoth he. But dude, that’s the best part of CS labs — when you use a new framework or paradigm, it goes in your mental toolkit and stays there (hopefully), and when you’re done, you usually end up with code that you can keep and play with forever. (Blog post forthcoming about the totally awesome and useful final project my 6.170 partners and I glued together over two sleepless days.)
And after countless hours of projects and final projects and papers and final papers, in a bizarrely anticlimactic denouement (I’m aware of the redundancies), I had the two easiest finals I’ve ever taken at MIT. Almost as if to alleviate my workaholic guilt, Reese, with that special touch that only a cat’s intuition can provide, made a crumpled nest of my most important notes while I was cramming and insisted on sunning himself atop them no matter how many times I relocated him to an extremely comfortable pillow.
On a much more impressive note, CONGRATS QIAOCHU on your last (undergraduate) final ever!
It seems like we were FPOPing just yesterday, but Qiaochu is graduating a semester before me, with a far higher GPA on harder classes. And he’s way cooler. When he first told me he was going into the final for the last and most basic of math major requirements Sadoway-style, I was both excited and terrified for him. My imagination ran amok and overflowed onto my digital paper:
But I heard of the legend of that last final through the frosh grapevine on my hall, so it must have gone as planned. You turned out alright, man. You turned out alright.
At the culmination of this penultimate semester, I’m looking forward to tons of sleep and a crazy IAP. Freshly minted prefrosh: keep chugging away, you don’t have far to go. Hope to see you at MIT soon!