Monday, September 19, 2016

Dealing With the Last Few Weeks


This past week was the 15th anniversary of Sept 11th, I will always remember it, mourn those who lost their lives, and wonder what type of world we live in. Although we need to remember we must not dwell on it, but push forward each in our own way. Those who do not remember the past are condemned to repeat it. George Santayana

Why am I writing again so soon? Because I need to start chopping on my writing. Not just that but I sort of need to remind myself of happenings and learnings. I wrote weekly updates for NaNoWriMo last November to keep myself on track, but to some degree it was a release, an exercise to see what had gone well and what I had learned. So this is sort of like a diary, but not.

This week I came in to find that the meetings project is not on the Road Map. All the team was moved to other teams and it will probably languish until someone just rewrites it en totale. I don’t think I could have finished on my own and with the sporadic schedule of the intern team that I was “lead” for it was extraordinarily hard to coordinate them. Feelings are mixed, it feels like it is just going to be ignore, but I am also happy to just go to more concrete coding with the bugs and improvements team.

Another great thing is that I have been digging into making the Center for Open Science logo 3D. I’ve been using sketchup which I quite enjoy, it has a very nice learning curve but there are tons of plugins that can nearly match many of the options that much more expensive packages have. The STL files are on the Open Science Framework: https://osf.io/hc258/. I specifically put the key fob on thingiverse and it’s already had some traffic: http://www.thingiverse.com/thing:1768831

So between moving at the end of the month and all that entails, what else am I doing this fall? Two classes. I am retaking Computational Photography since I wasn’t happy about a C, if I hadn’t done poorly on one of the assignments or had participated more, then I would have had a B. Now I am shooting for an A. I am also taking Machine Learning again, but this time I come into it with about 3 solid months of applying ML to MandI, the robot.

I’ve been considering the Space Robot Challenge and recently talked to my brother, of course it would never interfere with homework from Oct. 10 to Dec. 10, right? I think I have most of the vision ideas reasonable, and my brother wants to learn ROS so if nothing else it will just be a solid project to learn new tools with. I am realistic that I don’t think we won’t get to the top 20, but with my experience I think it will at least be a reasonable exercise.

Wednesday, September 14, 2016

After Defeat


A bit lighter after the last post: After the robot competition my parents, in-laws, and my wife and I went to the New England Aquarium in Boston. It is quite an interesting building and just amazing how many different tanks they had. By the time we finished just before lunch the crowds of families pushing strollers was so pervasive that it was tough to move freely through the building. Still enjoyable.

We went back for a social for the teams, West Virginia was the only team to make any money out of the competition. I certainly envy them a bit, however, it is a large team (40+?) and most of the 750k is probably going to pay expenses and supplement a scholarship fund. They also had a bit of continuity having won 100k last year.

After the lunch the next day with Administrator Charles Bolden from NASA giving a speech, Jessie and I drove to Ithaca, NY. My In-laws also came with. Not too long of a drive from Worcester, but after a late lunch we arrived after dark. First impressions of the town it definitely seems like a nice town, but what I am really excited for is the Cornell Lab of Ornithology and its office.

We toured the office the next day, went on a walk around the pond, met a bunch of people, and saw where my desk is going to be. I was excited before the tour, I have always been a fan of the Lab, but I am much more excited about it now. Having my own desk with a window overlooking the pond, a much shorter commute for a while, people that might actually know how to drive in snow, and on and on…

Also when we mentioned Jessie’s Bachelor's senior thesis research to our guide and he followed up by talking to the Bio-acoustics Lab people and they are interested in talking to her! Even if she initially volunteers it will be nice to have her working across the hall rather than across the country.

So I can say that we are excited for the move, there are only three things that are varying levels of drawback to this move. The first and biggest drawback is that we have made friends in the area that actually think to invite us to do things. We had friends in Hawaii, but it seemed that they had mostly different interests, or just didn’t think about inviting us. So it will be difficult to make friends again, hopefully as nice too, right?

The second is just the process of moving, although we will be able to take much more with us initially because we don’t need to ship it across an ocean. More convenient if still just annoying how many things we have to deal with.

The third thing is about the Center for Open Science. Even though I am leaving I still want to see it succeed. Though I won’t miss the wash of panicked projects and the shifts in priorities that leave me wondering if I am actually contributing, it will be bittersweet. I plan to become an Ambassador and look into current processes with my new job to see if any part could use the OSF as it stands.

All in all bittersweet, but we, Jessie and I, are more mature, know most of what needs done, and are really excited. I'll
write about the new job in much more detail after I start.

NASA Sample Return Robot Challenge Post Mortem

MandI in a Seattle park being semi-tele-oped, August 2016

Relief and disappointment all in a few short moments. Our robot MandI, named for our team Mind and Iron, seemed to be stuck on the marble slab in the sunny, grassy park, but then it ramped up and over. Quite a feat for a wood-framed robot, but also not so great for our team as it smashed into the bright orange perimeter fencing.

The one and only run came to an entangled end. The team set out from the band-shell full of NASA folks to clear the field, our shot at a million dollars over.

Do I blame myself? Certainly, if I only checked this, or checked that… It just becomes a jumble of what-ifs. Writing this is mostly to get down my thoughts and observations, hopefully not too much blame.

Unfortunately the vision system was not communicating with the rest of the the robot system. That was totally not expected, it should have been sending photo coordinates to the robot’s state system. In the post mortem I found that some of the vision script had been modified on the robot without pushing it back up to the repo, so when my final changes came in it conflicted with the other changes. I did not take care of this merge conflict, but I should have, there was an obvious and basic misunderstanding of how the script operated with the other changes.

So it sounds like I am trying hard not to blame someone else by saying that I should have checked the final code. I would say it is not just my fault, but rather I take joint responsibility. So let’s turn to a proven method for getting down to the underlying reasons.

Why?

There were merge conflicts and I didn’t realize this until too late.

Why?

Because there wasn’t enough communication as to the fact of merge conflicts and sudden loss of functionality.

Why?

I can only assume an assumption that minimal knowledge was enough to deal with the merge conflicts which was in turn probably caused by the lack of unit tests.

Why?

Because most of the script and final functionality was written only a few days before the sequester period.

Why?

  • General lack of planning on my part
  • No quick feedback loops for communication until we were in the same place
  • Not taking advantage of the previous trip
  • Was still exploring possibilities with trip to Seattle.
  • Changes to systems at the last minute due to insufficient previous exploration

I ran out of ‘why’s with the five why method. In summary I did not handle this very well. Between planning, exploring, and executing there was still too much thinking and exploring.

What did I learn:
  • Planning is important, but if it blocks exploring then it becomes a detriment
  • Exploring is important, but if there are still unknowns even a few weeks out then it is time to simplify.
  • Write scripts so that components can be unit tested. If it isn’t getting the parameter in the first place, how is it going to send it?
  • Always check merges with the above unit tests, or have others run the unit tests on their side. Double check functionality before critical situations.
  • Never change code in high stress situations, make a UI that can simulate requested changes. Or if you do make changes, run the written unit tests!

Though smashing into the fence was not my code, I still didn’t like the fact that I did not control as much as I should have. Building that control was crucial, either by sitting down and hand testing it. That would have required quite a bit of computer and seat/keyboard shuffling, not something I particularly look forward to in any situation, maybe some musical chairs anxiety from childhood… The control is more simply built by making it easy for another person to check functionality.

By writing thorough tests and setting up a way for them to be run easily, then we get two immediate benefits. The other person can just be told how to run the tests, sees that the code isn’t working, and they can send the test’s error back to me. Even if it “works for me” we can still pursue a course of action where we find out where it went wrong.

Writing tests is important, but as I answered for one of the whys: I really needed to be more aware of the process. Planning, exploration, and execution are all phases of the process, and if any of these are early/long/late then the rest of the process will become disjointed or panicked. Just being aware of these will help me to recognize situations before they become critical.

*finito post mortem*

Monday, September 12, 2016

Robots and Birds

Or: Why haven't I posted since January?

Quick answer, I said that finding objects in a photo should be easy. That was the end of December, by mid January I was on a team for the NASA Sample Return Robot Challenge. Needless to say it was a tougher project than originally thought. The competition was last week. I will post a post mortem about what I learned.

With that post I am also planning to start summarizing weeks with posts. Interesting things I did, new encounters, and what I learned.

Oh yeah, I also accepted a new job with Cornell Lab of Ornithology, specifically all the media coming in from ebird.org to Macaulay Library

And I just can't help but look at the next NASA challenge... Why?