Subsystems Sludge and the Future of Share

Hello all, as you have probably noticed, my blog posts have become pretty sparse over the past few weeks. Part of that is due to the semester being busier (and me working half as many hours), but the other part is due to what I’m calling Subsystems Sludge. As you saw in this post, my proof-of-concept for the Subsystems graph in Mobile Metagenomics is actually looking pretty solid. Graphically speaking.

What I didn’t notice, or at least understand at the time of that posting, is that all of the results are in duplicate or triplicate. Unfortunately, this is not working as intended. Rob helped me figure out why this is happening, and I’ve been trying to write code to fix it for the past couple of weeks. The issue is the sludge; I’ve got some bugs in my code and it is taking forever to pin down exactly what they are and why they’re happening. The main reason for this is that every time I change something and want to check if it works, I have to perform another results download.

In retrospect, it probably would’ve paid off to hack my code into something more easily testable. When I started working on it, it didn’t seem to make sense to mangle a near-perfect proof of concept and make it stop accepting real json objects from Rob’s CGI. At this point though, I think that is what I’m going to have to do. Spending 3-6 minutes every time I make a change during debugging is a pretty unnaceptable waste of time, and has really brought my development process to its knees. Lesson learned, I suppose, and I’ll be less stubborn in the future…

On the positive side of things, I’ve gotten the ball rolling with actual MM code again. Rob, Daniel and I are working on setting up a system where the Share button in MM can send JSON objects to one of our servers. From there we can probably do some cool OpenSocial stuff, which Daniel is taking care of. Rob already has his CGI going, so I’m working hard to get MM to make and send JSON to it. So far, I’m able to create and save the JSON objects to the phone’s file system, which is about half of the code.

The JSON output files neatly replace the old .mmr format as well; these were serializable Java outputs of the MM data structures used to save a result state to be loaded later. There isn’t much reason to maintain the old processes which do this if I’m saving in JSON already – I’ll just change my code to load JSON instead once I’ve got the uploads working for Rob and Daniel. This method of sharing may also replace the plain-text output mode of the current Share button, though it doesn’t necessarily have to. When the full vision of our new project is realized, we can evaluate whether a plain-text email style output is still necessary or desirable.

Once I finish all of that work, I’ll be back to grinding out the Subsystems proof-of-concept code and, eventually, implementing it in MM!