It’s a tooth-chattering 62 degrees in Hawaii this morning as the Sun reaches its lowest latitude of the year.

Yesterday was a wild one, beginning with a waterspout:

and ending with a beautiful crescent moon near Jupiter.

As I was looking at Jupiter and the Moon in the twilight, I noticed a satellite creeping between them, which was pretty impressive because it was still quite light out. As the satellite got higher in the sky, it brightened dramatically, probably as bright as Jupiter itself. It was stunning and I thought “Wow, an Iridium flare!” But when I got in and checked with Spaceweather’s satellite tracker, I found out I was even more lucky. It was the Hubble! Geektastic!

In this post I argue that the larger risks for offshore development include lack of offshore management know-how, inadequate user involvement, poor change controls, and lack of required technical know-how. As an “offshore” consultant myself (I’m available for work, by the way: lobrien -at- knowing.net ), my experience is that it’s the “out of sight, out of mind” aspect, more than “communication overhead” per se, that can cause the problem.

Offshore teams can go dark more easily, the team members are less visible to stakeholders, and the competition to be the low-cost provider leads to less experienced, less competent, less involved development teams.

That’s why I don’t try to compete with low-cost bidders. In my experience, the majority of clients will trade some amount of cost-saving for a large increase in productivity and control. The development teams that I put together generally have developers from developing economies (BRIC), but everyone I hire passes a programming test customized for the position and technology they’ll be using and has to meet my high standards. In return, I make sure that they get paid enough to strive to keep the gig. If they don’t write tests, if they go dark, or if they just can’t cut it, they’re gone and I don’t use them again. (I’m always seeking excellent developers, by the way: ibid.)

It’s a system that creates teams of highly productive developers writing high-quality code — a situation that saves a lot of money for the majority of teams seeking help. There are definitely risks in offshoring, but it definitely can save you money.

The “MIT Red Ballon Challenge” won a contest sponsored by DARPA to spot 10 red balloons placed somewhere in the continental United States. The MIT group spotted all 10 balloons within just a few hours of the balloons being launched. Other teams submitted within a few minutes of the MIT group, but the MIT group was the first with all the balloons located properly.

The group used what is called a “bucket brigade” algorithm to entice people to join their effort. You got $2000 being the first to send in a balloon’s coordinate. The person who signed you up as a potential spotter got $1,000. The person who signed them up got $500 and the person who signed them up got $250. The final $250 went to charity. http://balloon.mit.edu/mit/payoff/

Bucket brigade algorithms are very helpful in a number of AI / machine learning scenarios, in which you are seeking not just a correct answer, but efficiency. For instance, a “classifier system” uses genetic techniques to generate a large number of rules for a blackboard-like solution generator. However, you’re typically not seeking just a rulebase that works, but an efficient rulebase.

By incorporating a bucket brigade algorithm, individual rules gain strength / credit /money by contributing to a solution. They participate in a solution by “bidding” their previously-acquired (or inherited) strength. In other words, if a rule solves an important preliminary step, it might not ever get the $2000 for “spotting the balloon” but it might get multiple payoffs of $250 for being used in a large number of other solutions. Needless to say, the amount of strength/credit/money acquired by a rule is used to determine its fitness for breeding: the more strength/credit/money you’ve “earned,” the more likely you are to reproduce.

Classifier systems are not quite as sexy as pure genetic programming (in which you breed actual programs to solve problems) nor as easy to program as a genetic algorithm (in which data is bred in an attempt to find a solution), but can produce useful results for hard problems.

The last classifier-blackboard system I wrote was in C++. It would certainly be a lot easier to do in today’s dynamic languages!

Went to Kua Bay yesterday. Beautiful azure surf and amazing 100’+ visibility. As soon as I got in the water, I saw 3 teenage ulua (jacks). Found an octopus in around 20′ of water, broke an urchin and fed it to him. Went out to 50′ and did some easy drops, spotted another group of ulua. Went back in towards the shore and swam along the rocks, watching the surf hit the shore from underneath the water. Tina grabbed me and said there was a shark — a big fat white-tip circling through some caves about 25′ down. She was totally mellow and we dove with her for several minutes before leaving her alone. On the way back in, yet another group of jacks.

Then, last night went up to a star party in Waimea. It was totally socked in for a couple of hours, but eventually cleared up enough for me to take a couple photos. Here’s the best, which a 1 minute exposure of the belt and sword of Orion, including the Great Nebula of Orion.