Search This Blog

Wednesday, April 20, 2011

Software Engineering Practicum, Semester-in-Review

This will be the last post included in the pdf archive of this blog.  Thus, a brief review of the semester follows.

I thought the Teaching Open Source book was quite useful.  Although we'd already covered some, if not all, of the content it presents in other classes, it still provided useful information and good practice.

Our first-choice project, Gnome Empathy, turned out to be too difficult to actually work with.  We learned some valuable lessons from it: don't assume that an old, well-established project will be easy to contribute to; be willing to change your initial assumptions; don't hesitate to reach out to the community-at-large for some help.

Our second-choice project, OpenKinect, was much newer (~4 months old) when we switched to it.  This meant that there were no simple, quick-fix bugs available for us to work our way into the project.  We dove into the deep end and started learning what we needed in order to be able to contribute something by the end of the semester.  We learned enough to have contributed both code and documentation (both in code and higher-level on the wiki). 

The project as a whole would benefit greatly from a 362/462 group devoted to developing a fundamental structure and test suite.  We've developed a more useful separation of concerns model that we can provide to the project, but perhaps not before the end of the semester.

The class as a whole was definitely worthwhile.  It certainly emphasizes the need for implementing software engineering practices in all aspects of software development.  Without some kind of plan in advance, projects quickly devolve into disparate code pieces smashed together inelegantly.  The result might work, but it also might not.  A plan may change, but the end result is always predicted and expected.

Monday, April 18, 2011

The Next Two Days

It turns out that the OpenKinect.org wiki is a wiki in the truest sense.  One need only create an account and edit and/or create a page to add to it.  So, I took the liberty of updating the high-level API documentation with the data James compiled from the current code.

The structure of the code seems to have changed quite a bit from its initial state, and if we make the changes we have slated on our group wiki, it will have changed again almost back to where it started.  I think it should be pretty easy to accomplish those changes, but we're still waiting to hear back from the OpenKinect community about whether they're welcome changes or not.

We'll definitely have a pull-request for the code and documentation we've added by Thursday (probably tomorrow before class) as well as the wiki in .pdf form.  With only two days of class left, we'll be focusing on the Prezi during class time.

Thursday, April 14, 2011

The end is Nigh

With a very short time remaining in the semester, our group is nearing completion on our intended contributions to the OpenKinect project.  I've got a list of planned changes to the API and assorted c files.  The separation of concerns in cameras.c is laughable; James' proposed changes to cameras.c includes creating several new files that are cohesive units instead of the mess that is cameras.c.  I'll be making a a wiki page to document the current state of cameras.c and our proposed changes.  After that's stable, I'll send it to the OpenKinect wiki for addition to the fairly underrepresented documentation section.

Tuesday, April 12, 2011

Another Contribution

During our coding and documenting adventures we came to the conclusion that the code is quite poorly organized.  So, another contribution to the OpenKinect project that we intend to put forth is a code rearrangement.  The original code was intended to be a quick hack to provide proof of concept.  We've progressed farther than proof of concept, so we need to make it much more clear.  Separating functions into separate c files is the best way to enhance clarity.  James has made a great blueprint for the separation of concepts which I think the OpenKinect community should embrace.

Today, I think we'll work on our presentation and some documentation.  Tim is sick, so he won't be here today, and yesterday was Ashley's birthday; considering he did not turn 21, he shouldn't be too hungover to be at class, but I haven't seen him yet today.

Thursday, April 7, 2011

Down, but not Out

So this past Saturday I came down with something that sapped all my energy.  I was in bed for 3 days, and rather than being really relaxing, I was exhausted the whole time.  Finally, Tuesday afternoon I was alive enough to move around, and all was well with the world again.  Needless to say, I didn't get anything done during those few days. 

I noticed that my group-mates came up with some additions to the project presentation page on the group wiki.  Soon, I'll start a Prezi to accommodate all our brilliant ideas.  Prezis are very cool; for anybody who hasn't seen one before, you should check it out.

Thursday, March 31, 2011

A Meeting of the Minds

After a very productive group meeting this past Tuesday, our group came up with some useful additions to our wiki page.  We added a documentation goal to be achieved by the end of the third week of April.  We will add the comments from the header file (they basically describe what the functions do) to the c files to which they apply.  Also, we'd like to contribute to the project wiki's documentation page, which currently is pretty unimpressive.

We also came up with a very rough outline for our presentation.  We're (possibly) going to start with a discussion of how not to contribute to an open source project (aka lessons learned) from our experiences with the Gnome Empathy chat program.  Then we'll move on to a discussion of the OpenKinect project, discussing our contributions (code and documentation) and providing a demonstration of what we've accomplished.

Monday, March 28, 2011

The Best Laid Plans of Mice...

I actually managed to see all but one of the presentations I intended to see.  I didn't talk to all the people I had originally intended to, but, in hindsight, I suppose I could have.  Instead of attending Nathan Marz' presentation on efficiency, I went to Steve Sokol's presentation on Asterisk, an open source communications software.  The hindsight comes from realizing I could have still found Mr. Marz sometime other than after his presentation.

Like most of the attendees, I talked with the 3D printing guys.  That technology is pretty amazing and relatively inexpensive.  I particularly like that it can print its own component parts.

My favorite presentation was Walter Bender's learning to learn.  He was very passionate about breaking the classroom mold and doing what helps students learn.  Learning is an activity that students do, not something that is done to them.

John Diamond confirmed my suspicion that open source gaming isn't of the same quality as commercial gaming.  However, Alien Arena, in practice, is really quite good.  Some of the improvements he's made to the Quake II engine are quite impressive.

Bryan Johns presentation on open communications was informative as well.  When I read the abstract for his talk, I was picturing a personal VoIP service, like Vonage.  Asterisk and Digium think much bigger than that.  They provide VoIP services, and more, on a company-wide scale.

On the whole, POSSCON was quite interesting.  If it had been in Charleston and/or I could have attended all three days, I think I would have enjoyed it even more.