Monday, May 23, 2011

GSOC

Coding begins full throttle today. I spent my community bonding period trying to acquaint myself with libsoy conventions, lurking on IRC, reading the back entries of the PySoy wiki and the developer's blogs. I read a wonderful book on OpenGL.[1] And then I spent my weekend having the sort of adventure one recounts in blog posts.

I drove up to Salt Lake City (about 300 mi. away, which is about 4.5 hours on Interstate 15) with my sister to attend transfer orientation at the University of Utah, where I'll be attending this fall. Then we received word that my dad was booked into the ER due to a kidney infection. So we rodded homeward at about 1 AM, and almost made it too. There were a lot of ways I could have imagined the trip home ending badly -- being pulled over by one of Utah's finest, for example, or encountering some driver asleep at the wheel. What I didn't count on was my Xterra's radiator bursting at an altitude of 20,000 km, spewing antifreeze all over the engine and coating the bottom half of the windshield with a green mist.

We pushed the Sherman tank of an SUV to the nearest freeway exit (about 7 miles, but mostly downhill, thank god). Caught a ride over to Intermountain Health Care and retrieved my dad (he was fine at this point, just souped up on Lortab) and took him home around 4 AM. I slept on his sofa until the six-year-old ran through the house at about 7 AM, then got up and went home. Let the coding commence.

My GSOC project is an ambitious one. Unfortunately at this point there is not as much infrastructure as either the PySoy maintainers or I had anticipated there would be. So the first thing I will be working on before I move to mesh morphs (proposal) will be base mesh support. There's a lot to do, and nobody really has any idea how to do it.

That's not good. I can already feel myself shifting into analysis paralysis, something I struggle with regularly on any undertaking of any complexity. For my first massive (20,000+ lines) project, a ColdFusion API for my employer's enormous CRM, my solution to analysis paralysis was to launch into coding, winging it as I went. The result was one of the most buggy pieces of barely-functioning crap I have ever written. The second time I tried such complex work, I did it by pouring a lot of thought into it before I started, refactoring constantly. The result, my company's infant PHP framework, MagicPHP, was cleaner and much more useful, but took way longer than it should have.

My plan of attack for this summer to dodge the almost inevitable paralysis is thinking about the base case. Put some thought into more complex use cases, and then forget about them. Go for what utility I can get out of the minimum possible implementation. Refactor a lot. This strategy is my only hope for not failing epically this summer.

Time for some hackery :)

[1] Learning Modern 3D Graphics Programming, by Jason McKesson, available for free here. It is the most useful book on OpenGL programming I have read because it focuses on the programmability of OpenGL. Most tutorials and books on the subject merely issue a step-by-step instruction for a specific task (this is how you make a teapot), whereas this book helps you think like a graphics programmer.

No comments:

Post a Comment