Showing posts with label machine learning. Show all posts
Showing posts with label machine learning. Show all posts

Wednesday, January 04, 2017

Worry About It, Later If Possible

It seems like an age since I wrote one of my last posts while still at COS. In it I mention learning, and I really need a bit of a pick-me-up in that area right now. I am very tired from all the constant learning that I have been doing with the new job and the two courses for my Master’s degree. I think I am a bit mad… although it is doable and I am looking at next semester for something similar I really need a reminder as to why this is so hard.

I just finished listening to Freakonomics podcast “How to Become Great at Just About Anything” (which seems to a duplicate title, must be an important thing) and got to thinking about how much time I have put into coding, programming, thinking, and sometimes dreaming about it. Have I put in 10,000 hours? By school alone I would say that I have put in nearly 800 hours. If I take the last two years of work and figure that I have spent around half of that doing solid work, that’s another 2,000 hours. If I add in the robot challenge that started in January and ended in September I put in another 2-300 hours.

So I am around 7,000 hours short of being an expert from a purely number of hours point of view. However, I’ve experienced something very important that Jeffrey Spies, the CTO at COS, thought was extremely important for anybody to experience, especially the people working for him: Gain expertise by struggle.

Just to give you a small taste of contrast let’s take a look at the NASA robot challenge that I participated in. Or rather let’s go even further back to when I was interviewing at Green Bank Telescope in West Virginia in January 2015, that was embarrassing.

They asked me to come up with an idea of how to improve the telescope and how I would implement it, a pretty broad problem, but being familiar with telescope dishes and just having finished helping with aligning the dish for JCMT, I thought I could have a bit of insight. I suggested that the dish alignment could be fixed with Artificial Intelligence. Or Machine Learning. That’s it, I really didn’t have any idea of how to implement this “dish” dream. Unsurprisingly they didn’t like the very spartan answers I gave and I ended up working for COS.

At COS I was thrown into a realm that I had very cursory experience with, as well as starting on my Master’s… Why not have two completely new things at once?

December 2015 my brother was looking for someone to help his team with some computer vision issues for the NASA robot. “Oh yeah, that will be easy, I have heard about that, you just need to do…” And off we went, except that a majority of the starting time after an initial evening of following a few tutorials was spent in my usual way of working on hard problems, just worrying. A majority of the work ended up being in the week or two before the June competition out of near, pure panic. Thank goodness it was on such an even field.

But I knew that September would be harder and I needed to implement actual Machine Learning, not just think about all the wonderful things that it could do. So I started tinkering. By the time the second level of competition rolled around I had a mostly working system to get a model running to check sub-images out of an image.

Between work and competition and, so far, a large majority of my classes in Python I was actually becoming somewhat fluent in the language, so even if I was working down to the last minute on work, competition, or classes I was somewhat confident that I could arrive at a solution for the more fiddly problems. Yes, even if they were out of my immediate understanding.

With the formal Machine Learning course I have come across material that the professors are talking about where I know the bare basics, but they are talking several ideas beyond that. My immediate reaction is the old one: worry about it, later if possible. Maybe that would be a motto that I adopt, it has a nice ring to it, but I really need to toss it out. I cannot do that any more. I am not going to be an expert in a semester, but maybe I can at least have a decent conversation about it, in fact I had one earlier this week with a coworker.

I have quite a bit more stretching to do before I hit the 10,000 hours, but I really need to remember that it does take work and engagement, just like writing. The more I do so, the easier it seems, too bad I didn’t figure that out until after college.

Monday, October 17, 2016

The Lab of O

I’ve started the new job at the Cornell Lab of Ornithology! Specifically I am working for the Macaulay Library and it is awesome! When I started my previous job at COS I really wanted to push them to start supporting citizen science, but that never really worked out. Now I am dropped right in the middle of a citizen science and machine learning project! What could be better? If you want to help out: edbird is where you should submit checklists and upload photos, and merlinvision is where you can box/annotate bird photos.

So other than the tons of paperwork that comes with switching jobs, it is pretty awesome. My normal commute now is a walk in through the woods, with binoculars, so I can bird on the way in and out, and sometimes lunch too. It certainly beats 30 minutes each way unless I got stuck behind a bus.

Of course I am still learning the stack after two weeks (I claim there is quite a bit of paperwork to do), but I am starting to wrap my head around how things are done and being reminded how repetitive Java is: Make a new instance of a class by first telling the compiler that this is an instance of this class and then using “new” and the class… I understand that it makes it solid, near indestructible code, but I am not a huge fan. Also semicolons, thank goodness for a good development environment.

The best thing about this job is birds. People at work like birds! There are 1.4 million bird photos with more coming in every day from people across the world. It is just amazing that I am getting paid to do this. I guess they are paying me to become familiar with Java, the rest is just icing on the cake.

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

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?

Monday, October 12, 2015

Ongoing

I am sure that no one has ever questioned their chosen path. Ever, in the history of simple reasoning. On that false assumption, let me be the (very-large-number)th.

I probably just failed my class, on a midterm no less. It wasn't that I didn't know the material, rather I knew most of it, the problem was the proctoring system. I am certainly not a fan. I make one mistake, reloading the proctoring software because it took me to the wrong page, and it goes south from there. I won't say what was on the test, but by the time everything was figured out, I had 30 minutes to complete a 90 minute exam. Not a good position to be in.

I am sure I caused it, but the software did not help at all in that regard. But enough about that. I am looking at dropping the class and taking again at some other point. Life has been going a bit too quickly and I really haven't been keeping up with it like I need to, so if this pretty much makes it unlikely that I can even attain a B, then I will take it some other time.

Not that I like that path, withdrawing is one of my least favorite avenues. It makes me feel as though I am quitting and will be on my record. However, I feel that with a full time job it is much more acceptable, or at least a bit less frowned upon. Life marches on.

Tuesday, November 01, 2011

AI Class is Really Interesting

So the week after getting back from Colorado and Wyoming I started an interesting free class: an AI class offered by two professors from Stanford. It is an intro course but even from that I am learning quite a bit.

I just finished homework #3 all about machine learning. It was quite in depth with derivations of equations to get the equations needed to answer the questions. It is well put together and usually makes sense. My one complaint is when a huge long equation magically appears. I am happy that they edited the videos to be a bit shorter and the sound isn't choppy at all, it's just that those huge long equations that I might need later just appear, fade-in, drop in like it came as a pre-assembled part. I have to pause the video to be able to write it down and hopefully not forget what it is about, although Prof Thrun does a good job of explaining all of it, if quickly.

I unfortunately did not manage my time right to get Homework #2 done, but this last week I managed to get #3 done with time to spare. But I have to seriously start in on the videos tonight probably after fencing, otherwise I will be doing all of them last moment. I hope they posted them already.

This class also helps me to know if I am ready to do online courses from somewhere that I will have to pay for. I believe that I am not burnt out as I was when I finished college, but I definitely need to carefully keep track of my time before it comes to get me. Let me know if you are taking it too.

Featured Post

Allergy

John studied himself in the mirror as best he could through tears. Red, puffy eyes stared back at him, a running nose already leaked just a ...