Underwater Hockey

I was just reading Charles Sterling’s blog about him trying underwater hockey, and it reminded me that I wanted to post about the joys of taking the sport back up. After not playing the game for ~3 years I’ve started playing again. The major problems with this I lost fitness, but I can remember what I used to be able of doing. So you’re on the bottom of the pool, trying to swim around somebody (who you later find out is turning 60 in December) and decide to turn on the turbo leg, but they cramp instead.

My legs have never been my best asset in the swimming pool, when I swim most of the propulsion is from the arms, but when your playing hockey with great big flippers on, it’s all about legs. So I’ve got quite use to having my legs cramp when at the bottom of a pool. The best solution is to “not panic”, and then followed by given in to death. Once you relax to the fact your going to die, I often find your legs relax enough that your can float to the surface to breath, thus actually avoiding the pre accepted fate. Then you need to get out of the pool and stretch.

In the case of a few weeks ago I was on the side of the pool lying on my back. Both my calf’s where in the cramped but not stinging state, but each time I tried sit up, they would explode in pain. It took about ten minutes before could get up to stretch. But besides that I love underwater hockey.

Google Desktop Development

This morning Ryan emailed me some ideas for development projects with Google Desktop. I liked his ideas, and have been thinking of how it could be achieved. But my point is I went off to read the Google Desktop API and it seems like a really cool thing.

One cheeky idea I had was setting up the desktop on a server, then using the API to index your intranet, and then providing a search button that called back into the desktop API, thus getting Google search for your intranet on the cheap. More than likely breaking rules of the license, but just an idea.

But what really impressed me was the richness of the API and how you could use it as your universal storage for text based stuff. With the journal and contact type entries, you could write plug-ins for your normal apps, and use it as your master synchronization point.

I just went searching for Ryan’s web-site so I could link to him, so I loaded up the Plaxo website (which Ryan put me onto) and realised this is exactly what I had just been talking about. I really like Plaxo. Some friends have recommended Bebo, but after having tried Plaxo, Bebo just came across as ugly, and a very polluted UI.

My only gripe about Plaxo is that the user experience could be improved by using AJAX. The page that this is the most painful on is the contact list, where each click on the business and private card widgets causes a full page reload. Otherwise the page design is nice and clean.

Composite UI Application Block

We have just finished watching the Composite UI Application Block webcast from the August MSDN Webcast DVD (which could be a CD with its 180MB of data on it). I have to give big kudos to the patterns & practices team, it’s a really cool piece of work.

I’ve been struggling with idea of how to refactor the application we have here at work, with the compartmentalized MVC system, and support for plug-ins and how these would all tie together. Oh the joy of spending my home time dreaming up methods to improve my work efforts, or how I’d do it if I had to start again. Now I can stop trying to solve the problem, and wait to use the CAB when it’s released, and we move to .Net 2.0

TopCoder – Open Qualification Round

Well I’m not going to get into the Elimination Rounds.
I was assigned VideoEncode and GridGame.

I spent ~30 minutes of my 60 solving a problem that was really just a bit of algebra. I solved it using binary search, when I just need to rearrange the variables to get a single line piece of code. I had the feeling this was the case, but the stress of the situation I was not trusting myself to solve the algebra faster than getting the binary search working. Net time I’ll have a better indicator. The binary search was required in the AutoLoan problem due to the value been search for had a compounding affect on the result. Whereas here there was no complex relationship.

The second problem was a simple min/max tree problem. Given a 4×4 board how many of the available moves will “win” if I only play perfectly. I had missed the guarantee you win and assuming you play perfectly bits. Not that I know how to solve this. But I went down the path of how many of the moves could I win.

So now I’ll stop trying the path of logic I had been working on after the event, and workout how to solve the problem correctly.

[Some time later]

Oh my, it really was quite simple once I stopped and thought about that at each turn the two players are trying to achieve different things. For our turn we just need to find one move that we win. For the opposition move they win if they find a path we don’t win. So simple now I understand what I was trying to achieve. Other the feeling silly for not know how to program this I now feel relax I worked out how to-do it.

I’ll be ready for next time.

[Just before publishing]

Well the results are in. I came 300th out of 374 in my problem set. Most those people came 317th equal for no score. This hammered my ranking, and I’m now down to 1050. Oh well, I surely can’t get much worse than this.