Monday, June 2, 2014

And so it begins ...

Many things of note happened last week. For one, there was a meeting on Wednesday where I was given a chance to present my findings to the JSBML team. The meeting allowed me to get even more feedback on the math package's design, which was good. Until then, the scope of my inquiries had been somewhat limited. While the simulation core library is perhaps the most important use-case to consider at the moment, there are still numerous JSBML-dependent applications / libraries out there that need to be examined scrupulously. So in addition to being an important evaluation tool - both for the mentors and myself - the meeting enabled me to perfect the design and gain some measure of perspective. With so much at stake, it is sometimes difficult to grasp the full implications of every little change made to the design. Luckily, my mentors and GSoC peers have been incredibly helpful and patient. If it was not for their guidance and constructive criticism, the design would not have progressed to it's current state, so for that, I would like to offer my sincere gratitude.

Overall, not much of the design changed over the course of the meeting. It did come to our attention that two of the projects being presented had mutual overlap and that this might be a cause for concern (i.e. conflicts might emerge). Specifically, the worry was that the current class hierarchy might not fit with what was being planned for the arrays package (or vice versa). As far as I can tell, this is not an issue any more. As long as the features of the new ASTNodes are in line with the features proposed in the hierarchy, there shouldn't be any trouble integrating them into the final design.

Now that the minute details of the design have been agreed upon and finalized, I have started writing the code for the math package. The overall structure of the package is self evident, so there was not much difficulty in setting that up. All the relevant classes are included in the new math package. Similarly, all the relevant MathML attributes have been placed in the appropriate locations. Most of the expected ASTNode features have not been transferred over to the new ASTNode, yet. Hopefully I will be able to accomplish this over this week.

In retrospect, the timeline that I'd constructed initially seems woefully inaccurate. Now that I have actually started with the actual coding, I am starting to see just how much my hands are tied. There's not much lattitude, with how you could approach this issue. Development has to be strictly top-down, otherwise it won't work. Both the ASTNumber and ASTFunction classes cannot be completed (fully) unless the ASTNode2 class is complete. The same observation holds when you examine the rest of the classes. Therefore, having a free-for-all, cherry-picking strategy, like I had in my original timeline, seems remarkably naive in retrospect.

Over the past week, I've also been researching bitwise operators. I've been doing this more out of curiosity than any real motivation to implement them in JSBML. To that end, I've only progressed to the point where I know, generally, all the different kinds of bitwise operators and bit shifts and what they do. As far as translating them into something tangible, I am still at an impasse. I will offer something more substantive on bitwise operators and bit shifts later on (benchmarking too). For now I will just leave this here.

No comments:

Post a Comment