Near the end of the new contractor’s first week, Taka Sora was starting to wonder if he made the right hiring decision. Richard – the contractor in question – seemed to know his Action Script 3, but there was just something about him that wasn’t right. And it wasn’t the strange noises that he was making all day.

Richard was brought on to build a Tournament Brackets module as part of a larger project for a major client. He seemed to have gotten a great start, which was one of the reasons Taka just learned to deal with the neighing and nickering sounds coming from his work area. But by the end of the week, Richard’s progress just stopped. His second week wasn’t any better, though each promised he was "just about done." And his third – and final – week proved to be just as unproductive as the last.

The day after Richard was let go, Taka decided to pick up where Richard left off and opened up the classes he had been working on. And to his surprise, he got a history lesson and a glossary that he could use to translate code back over to English.

/******************************** Glossary ********************************/
/* A Spanish explorer who was also a mathematician spent time learning a
/* a mystery system from African Sufi mystics. They used a peculiar system
/* for divining future events and explaining patterns in the natural world.
/* They would draw lines in the sand such as ----, ====, -=-=, =-=-, etc.
/* Each of these quadrigrams were called "sacred words" and represented
/* aspects of nature. It turns out that these "mystics" were practicing the
/* worlds first binary mathematical logic and artificial chaos system or
/* random number generator.
/* The numbers sacred to this system were 2, 4, 8, 16, 32, and 256 and they
/* used 16 as the base of their mathematics rather than 10. This system
/* would be transmitted to Europe as "Geomancy" and eventually be the sole
/* model for memory storage and computation in the modern age.
/*
/* If a is the sacred system whence this all derives and since they have 
/* concise and succinct words for handling concepts inherent to programming
/* I tend to make use of this system in my own nomenclature. This is done for
/* much the same reason contempory scientists use the Greco-Roman sufix/prefix system
/*
/* The follow is a list of words used in this ap and their definitions:
/* Ile: Home or Abode
/* Ire: Yang, Possitive, Expansion
/* Ibi: Yin, Negative, Contraction
/* Ori: Head, Self, Soul
/* Obi: Parent
/* Omo: Child
/* Oba: Chief, King/Queen
/* Oku: Ghost, Spirit
/* Oju: Face
/* Egun: Ancestor
/* Oruko: Full Name
/* Ologun: Warrior, Contender
/* 
/**************************************************************************/

Scrolling down through the rest of the code, Richard was glad he had the glossary.

override public function catchEvent(myEvent:String, myParticular:Object):void {
  switch (myEvent) { ...snip...

    case "NiOri": //Establish Ori; Ni means possess and Ori means Head, Self, Soul
      if (!Boolean(myParticular.oju)) {//Get next available Ologun
        var myOlogun:Object = ourOlogun[binToDec(myParticular.target.ile.oruko)];
        ImageLoader.load(imgRef(myOlogun.image), myParticular.target.render);
        myParticular.target.name    = myOlogun.image;
        myParticular.target.oruko    = myOlogun.name;
        if (String(myOlogun.placement) != "") {//Preselection Contender placement...
          if (myParticular.target.ile.oruko.indexOf(myOlogun.placement) == 0) {
            ourSlot[myOlogun.placement].contender = myParticular.target as Contender;
            ourTree.bearFruits(myParticular.target, ourSlot[myOlogun.placement].contender);
          }
        }
      } else {//Load image of specified oju
        ImageLoader.load(imgRef(myParticular.oju), myParticular.target.render);
      }
      break;

    case "TrapOku":
      if (ourMode == "view") {
        trace(ourSeed.data.media.src+ourOku.name+ourSeed.data.media.ext);
        if (Boolean(ourOku)) ExternalInterface.call("openVideo", 
	    ourSeed.data.media.src+ourOku.name+ourSeed.data.media.ext);
          return;
        }
        var mySize:Number = ourOku.size/ourSeed.data.structure.viewSize;
        ourOku.isInHand = true;
        TweenLite.to(ourOku, .5, {size:ourFocus.size});
        break;

    case "FreeOku":
      if (ourMode == "view") return;
      ourOku.isInHand = false;
      if (Boolean(ourFocus)) {
        var myFoci:String = (Boolean(ourFocus.ile) ? ourFocus.ile.name : "")+ourFocus.name;
        var isEligable:Boolean = ourFocus.name == "champion" 
	    ? true : ourOku.oba.name.indexOf(myFoci) == 0;
        if (ourFocus.contender != ourOku.haunt && !isEligable) {
          fadeOku();
          EventManager.fireEvent("SlotFocus", {target:ourFocus});
        } else if (isEligable) {//ourOku is eligable to occupy ourFocus
          ourOku.size = ourFocus.size;
	  ourFocus.contender        = ourOku;
          ourFocus.contender.name    = ourOku.haunt.name;
          EventManager.fireEvent("NiOri", {target:ourFocus.contender, oju:ourOku.haunt.name});
          ourTree.bearFruits(ourOku.haunt, ourFocus.contender);
          fadeOku(true);
          EventManager.fireEvent("SlotFocus", {target:ourFocus});
        } else {//ourOku centers on ourFocus
          var myLocus:Point = ourFocus.localToGlobal(new Point(x,y));
          TweenLite.to(ourOku, .25, {x:myLocus.x, y:myLocus.y});
        }
      } else { fadeOku(); }//Nothing is in focus
      break;
  }
}

Fortunately, Taka was able to put in a few long weekends to get the project delivered in time, though the extended hours was exactly what trying to avoid. But at least he learned a valuable lesson along the way: horse noises — or really, any other random animal sounds — are a lot more telling than one might think.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!