Saturday, April 6, 2013

ICS 691, IMUA!

To appease Lono, I've been working on merrimaking with the Makahiki Framework by way of an extra large ICS 691 assignment. In a two-hour gamestorming session at the Box Jelly in Kaka'ako, we devised a good prototype plan, and Makahiki fortuitously offers several of the items in the plan. The extensions that the framework makes possible will suit the rest of our needs very well, it appears. Implementing them will become possible through the learning efforts involved in this assignment, and hopefully not many more than hundred or so hours of development time. Doing things the right make them time consuming, and making them beautiful all the more so.

Part one of the assignment is to create a simple "Hello World" widget to the framework, which teaches the most basic design pattern and configuration of a roll-your-own Makahiki app. That only took a couple of hours.

Part two involves building several widgets, mini-apps that fit into the framework. These are to build score keeping, energy usage tracking and stats collection into Makahiki's "Groups," which are teams of teams that compete with each other in the game(s). Such a proposition introduces numerous complexities to the task.

Initially, the foremost among these is learning the code base, which is not-unnecessarily huge. Many of the apps are based on the MVC design pattern, typical for Django web-software. Among the widgets, there are 58 views and 12 models. The more advanced apps have their own package structures to work with various types of data. Beyond this, there are various "managers," each of which number in the hundreds of lines and provide score management, energy tracking, player- and team-related functions.

All of which is a lot to digest, even without accounting for line-level difficulties such as unfamiliar template code and field lookup syntax. Among several others, aggregation is an advanced topic I had never seen. Keeping high code standards are another challenge. Test coverage of the preexisting apps is better than your average (okay, my average) program. Even figuring out where to look is at first a challenge, such is the enormity of it.

The assignment asks for ten to thirty hours of work, and I put in exactly ten hours, plus another hour on this report. The time was adequate to finish the first (and simplest?) of the four widgets, and make progress on the second. Along the way, I discovered that my past deployment had broken somehow, and is throwing server errors upon login, yet to be fixed. Looking at the Makahiki's resource tracking app, I realized it would take me many, many more hours than thirty to create the rest of the widgets with a similar level of quality.

Even now, a code walk-through with more pointers to the relevant parts of the project would have been helpful, and I would benefit from more practice with field lookups. Also, this chapter of the docs is just a stub. Before moving forward with my own prototype, I intend to spend another twenty hours working on these widgets. These exercises will serve well as code katas, so that better understanding of the system can crystallize in the ol' brain meats.

No comments:

Post a Comment