For the summer of 2010, I'm doing CS Research at Harvey Mudd. My main project has become to develop a grading interface for graders, which features an inline commenting system for CS assignments written in JavaScript (and HTML/CSS of course) with a Python backend.

Our software will be used next year for three CS classes on Mudd, CS 5, 42, and 60, and for UC Riverside's new introductory class, based off of our own CS 5. There may be other schools using the submission site, though my group is not directly involved with them.

Oooh, funtimes time. After being gone for a week at Google FUSE, I return for my final week.

Of course, that dream world where the last week of software development is for a few final tests and refactoring the code is definitely just a dream. Instead, the commentification team has been given the code from the rest of the submission site, which was finished in a little bit more of a hurry than anyone would ever want. (I must add, I don't want to blame anyone. The folks who've been working on it were working hard for the last week, and if I were in their position, it's sadly likely that my code would have similar issues).

The situation is probably not as bad as it seems. It's just always sad to see so much work crumble from some poorly executed find&replaces, or whatever caused the broken-ness. And, for reals, when I got back, insane amounts of progress had been made. (Ah, and it's a plus when it didn't take too much to get our seven-weeks of the commentification project running again. Maybe our code isn't as fragile as I tend to fear.)

On a related note, oh goodness, I love refactoring code. It's so satisfying to generalize a few functions, use some variable names more descriptive than single characters, write some helper functions so the same functions aren't rewritten over 9000 times, and for the code to run exactly the way it did before. I see which comments were hella useful, and which I completely ignored, and failed to update. It's what really helps me feel like I've ++'d in my programming skill, since next time, I'll write it that way to begin with.
Since I'm not the perfect programming, sometimes those functions don't work the way I planned. But, at the very least, if I do end up unleashing bugs into the system :'(, I hope they'll be easier to squash when the code is in one place and is better documented.

But of course, this situation is challenging my attempts at "Don't Repeat Yourself"-esque things (thanks, web frameworks) with lovely time constraints that are trying to force me into "get it running, no matter how hideous the code is" mode. And yet, the poorly-documented, broken code we're dealing with is making the latter very much unattractive.

And now I shall search for a good method of cleaning up and documenting code while fixing bugs, and not introducing new ones. Wish me luck!

Woo, I finally have a working demo up! Check it out on my school page here

[View 0 Comments] [Post a comment]