Archive for March, 2007

Wanted: A strong tolerance for video games played in the middle of the day

Yahoo! Pipes is hiring. There's a link on the Pipes homepage to the list of positions available. It's pretty neat that they're advertising their positions to their own end users. I guess if you're a pipes fan, then you're at least approaching fulfillment of a couple of the job requirements. Speaking of job requirements... all of the positions listed have a common set of requirements of which one stuck out like a sore thumb:

"A strong tolerance for video games played in the middle of the day (Mario Kart, etc.)"

At first glance, I was WOW'd (I still am, but in a different way). I know that more and more software "shops" are striving to improve the work environment and that video games/consoles are a growing contribution to the cause. I read the requirement again; "A strong tolerance..." I was even more impressed. The requirement is double-edged. Had the Pipes team been purely advertising the coolness of their work environment, I would have expected something else... maybe, "A strong desire to beat your coworkers at Mario Kart" or even "Loves to play video games" (orsomethinglikethat), but they didn't. All positions require "A strong tolerance" of at-work video gaming. Corporate culture and team dynamics are key factors to the productivity and success of a project. Everyone works differently and not everyone tolerates at-work coworker video gaming the same.  Not only is the Pipes team advertising their work environment, they are working to preserve it.

Maybe I'm reading into this too much. If I am, then thanks for provoking this thought. If I'm not, then congratulations to the Pipes team for acknowledging and guarding a good thing.

To whomever reads this: Am I off my rocker? What do you think about video gaming at work? Would/does it bother you to be busy working on something while another coworker plays video games? Would you play if your employer had a gaming station setup for your team? Please comment.

Adobe Flex 2 SDK Source Available

If you've got the Flex 2 SDK, then you've got the source; at least most of it. It's nothing new, but I don't think it's well known. The source can be found at [Flex SDK Install DIR]/frameworks/source. If you've never downloaded the SDK by itself and only use FlexBuilder, then you'll find the SDK under your FlexBuilder install directory.

I point this out because I've imported the source into FlexBuilder for easy reference and code navigation. If you're curious how the Flex team does something, then now you know.

Enjoy!

The Well-Behaved ActionScript 3 Enum

ActionScript 3 doesn't have an enum language construct built in, but that doesn't mean that you can't create your own. That is an enumerated value that is an object with behavior. It's not rocket science, but I've included my attempt to mimic an earlier post, "The Well-Behaved Java 5 Enum." There are some things you should note while viewing the source:

  • There is no such thing as a "private" constructor in AS3. Several work-arounds have been introduced and discussed on other websites. This source doesn't include any of these, but also doesn't prevent someone from including it in their own.
  • Comparing the MenuItem.as to MenuItem.java (in the previously mentioned post), you'll notice that the AS3 version doesn't include the DOUBLE_CHEESE_MEAL value. The AS3 version doesn't allow "inline" overriding of definitions as does the Java enum. I would think it's possible to do in AS3 (passing a function to the constructor orsomethinglikethat), just not the same as in Java 5.
  • I've also added a public static const values:Array which is an array of the defined values - This provides similar benefits as the Java 5 Enum.values() method, but unlike Java, it requires developer maintenance.

It's far from perfect, but please feel free to correct/comment as you like.

“Mayday Mayday Call a Plumber” - Yahoo! Pipes Meets Infinity

I was pretty amazed two days ago when I was prompted to visit Yahoo! Pipes only to find my name on the main page because my first pipe, "Search Google & Yahoo Simultaneously" had been run 19,000+ times; making the top 5 most run pipes. It's really a pretty simple pipe, so it'd be foolish of me to take any credit as it should really go to Ben Hammersley for his "Google to RSS" service that the pipe employs. (Ben; if you're reading this... I'd like to apologize for the heavy use on your Google API key. I didn't notice the option to provide your own, nor did I ever expect this pipe to be used so much)

Inspired by the "success" of my front page pipe, I decided to mess around on Yahoo! Pipes a bit more to see what else I could come up with. By the end of yesterday evening, I had only the idea to implement recursion with pipes. Was it a good idea? That’s questionable. Was the implementation good? No. Actually, I didn’t get much further than an incomplete Pipe named, “Recurse.” The recursion experiment was cut short when I gave the pipe a test spin prior to adding the base case logic; thus resulting in an infinite loop. No big deal right? The pipe execution will just timeout, and I’ll continue editing the pipe. Well… the pipe did timeout in a sense. It just stopped, so I clicked on “Edit this Pipe” to continue work. This is when I realized that it wasn’t just my “Recurse” pipe that timed out, but all of Yahoo! Pipes had taken a break. This happened around 9:20PM CST, on Monday, March 7, 2007. Pipes was down for the rest of my evening. I was a little concerned that “Recurse” had been the cause.

The next day, I noticed the Yahoo! Pipes Blog had posted a couple entries about unplanned downtime and a kind reminder that Pipes is in Beta. I don’t know what I had expected, but there was nothing about the outage being caused by a user created pipe; less the user that caused it.

Last night I logged on to Pipes, created a Google Search pipe (sorry Ben, I really didn’t notice your API key option until writing this), played around with the idea of employing Google Translate to translate feeds (a bust), and then finally… had another look at “Recurse.” I ran it. It worked. Yahoo! Pipes was still up. It was obvious that “Recurse” hadn’t caused the outage the night before. If, by chance, it had – it would have been a quick fix (or so says the guy not working on the project); put an limit on the number of times a Pipe can invoke itself within the context of the original execution. The easiest way to do that (again, from the guy not working on the project) would be to catch it at the “pipe definition level.” What about catching the problem at the HTTP request level by checking the referrer? Curiosity got the best of me, and I wanted to know. “Recurse” was modified to do the same as before, but instead of invoking itself, it would invoke a new pipe, “InvokeRecurse” which took the same input as “Recurse,” but invoked “Recurse” using the Yahoo! Pipes, “Fetch” pipe that takes a URL – In this case the “Recurse” URL with its query parameter. I ran the revised pipe around 9:30PM CST on Tuesday, March 7, 2007 and the exact same thing happened. The “Recurse” pipe just timed out. I clicked edit and that timed out too. Yahoo! Pipes was down again, but only and hour or so this time. Either Pipes is experiencing problems with some 9:30PM CST scheduled program (orsomethinglikethat) or it’s not prepared to handle infinite loops. You decide.

I do want to thank the Yahoo! Pipes team for a fun and innovative product. They’ve done an excellent job and deserve much credit. I’ll try to quit breaking my toys. I’m sure the best is yet to come as it’s only in Beta.