My 2010 FIFA World Cup Picks

I’m so excited that the World Cup is finally back.  Last time around I was disappointed that my pick (Germany) didn’t win… they looked so good, but they lost to the eventual Champions —Italy.  This year is shaping up to be very exciting.  There are a number of teams that are strong and could have a nice run (I’m looking at you Spain) or lose because of their coach (Diego staring at you).

So who will be in the Final? well I’m not sure, I haven’t picked beyond 4 because it’s tough.  My dream scenario would be England v Argentina because of the implications; who could forget the hand of God? or the best solo play ever? Just imagine how awesome it would be if they meet in the finals with Maradona as coach.

Now the more likely final scenario for me would be Brazil v Argentina, I really want Spain to win it all, but for some reason I don’t see them being able to get there.  It’s just that the South Americans have so much football history that they are the natural favorites.  In under a month we’ll see if my picks pan out and I will probably update my final pick once I see the first few games.

In any case here are my world cup picks:

Top 16 (bold win)

  • France v Nigeria
  • England v Ghana
  • Netherlands v Paraguay
  • Brazil v Chile
  • Uruguay v Argentina
  • Germany v USA
  • Italy v Cameroon
  • Spain v Portugal


  • France v England
  • Netherlands v Brazil
  • Argentina v Germany
  • Italy v Spain


  • England v Brazil
  • Argentina v Spain

I hope you all enjoy the month-long football event as much as I will enjoy it!

Background image based on picture courtesy of Shine 2010

Big Corporations vs Individuals

Social media is everywhere now, from TV shows, to print media, to corporate websites.  Everywhere I turn there is a “Follow <me/us> on <insert social site(s) here>” message.  I think this is because company’s have realized the impact that social media has on their bottom line.  I recently had to discuss a New York Times article in class about a “lesson” Boeing learned from the online social world.  Said article describes the aftermath of a letter sent to Boeing by an 8-year-old named Harry.  Boeing politely replied to the letter the same way it replies to all unsolicited letters (see reply).  After Harry’s dad, who happens to be CEO of a marketing agency, posted the letter on his blog and his twitter account the situation started to spread until some news outlets picked it up.  This social activity cause Boeing to react by issuing a sort of apology and invited Harry to visit their facilities.

This situation is just another example of how “social” is changing the way businesses deal with the customer experience. For the last five years or so, the emergence of social tools like facebook, twitter, digg and the now-less-relevant myspace, has enabled people to have a stronger voice. All of the sudden people can voice their concerns, complaints and preferences to an audience that may or may not agree with them. This is the “new” word-of-mouth, same concept as before just faster, louder and therefore more effective. This kind of empowerment has increased people’s sense of entitlement. People feel more than ever that companies must treat them with more respect.

The question raised in class was whether the whole situation was to “punish” Boeing or just a publicity stunt by Harry’s father… or both.  I don’t think John (Harry’s dad), or the people involved in one way or another, want(ed) to put Boeing back in line per se. I believe that they expected a friendlier customer experience from Boeing, or any company for that matter. It’s hard to determine if John intended to use the situation as free publicity, but the situation sure fits what his company offers. He created content and engaged the community the right way to create a buzz, enough to get the New York Times interested in the issue. The way the issue developed definitely helped him promote his image and his company indirectly.

As for the other questions raised in class (would you change airlines? and would airlines boycott Boeing?), I don’t think they are too relevant. First, Boeing’s action wouldn’t make me or a normal people switch airlines to ones who do not use Boeing planes. I do not feel offended by their action and finding other airlines would cost too much of my time, more than my perceived benefits. Second, airlines have limited options when it comes to airplane suppliers, limited options means that there’s not much airlines are willing to do to “support” a boycott. Harry’s issue is trivial when compared to the issue of changing airplane suppliers; however it would be interesting to look at the issues again if more people around the world support Harry.

Whether we like or not, as consumers or businesses, the barriers separating customers from the corporate world have shrunken. However, we should understand that as customers we can’t get everything we want; and as businesses we can no longer treat customers the way we’ve been doing for the last fifty years.

Thoughts On Health Care Reform

The infamous Obamacare has been signed into law and that’s that;  now the real fun begins.  Let me be clear, there are certain things that I do like that are on the bill, more specifically:

  • That insurers should accept customers who have preexisting conditions.
  • Children can be under their parents’ insurance up to 26 instead of 21.
  • No Lifetime cap.

I do understand that they cost money, however I do not mind paying a reasonable amount of money to have them.  Just as there are things that I like about the HCR (Health Care Reform) there are things that I do not like.  Many of the things that I’m against have been put in place to finance the operation i.e. everyone must have health insurance or else; penalties for employers who do not offer basic health care plans; etc.  Economically they make sense, it is a form to pay for health care without raising taxes directly.  However, it limits the options that a citizen has… it is in essence limiting the citizen’s freedom to choose.  This issue is being raised by many states (including my home state of Florida) who question the constitutionality of the new law.  Personally I think that the Supreme court will rule in favor of the bill.  Why? because they will see the current suit as a political move –plain ‘ol propaganda.  However, I see more suits down the road where they will bring a legitimate argument to the table and challenge specific sections of the bill rather than attacking it as a whole.  At least that’s what I expect/want to happen.

New Google Search Results?

Today I went to Google and found myself with a new Search Results UI

Google's new search results

The changes:

  1. Google’s logo has been updated
  2. Search button has been updated
  3. Location; it now tells you where you are searching from and it allows you to modify your location and apply it to searches.
  4. Results count and query execution time has been moved to the top right just above location.
  5. The search options on the left have been, slightly, updated (UI wise)

AS3 Bandwidth Test

Update (05/18/2011): You can fork the source code from github here

A few months back I was talking to a friend who is new to Flash and who was wondering what was the best way to determine a client’s connection speed.  I told him that he could use a bandwidth test to determine the client’s speed and based on the results he could decide what files to serve, we searched(lightly) google and noticed that there was no available AS3 code to determine a user’s bandwidth speed.  Sure we saw that if we used FMS we could use the native bandwidth detection to do our dirty work, but unfortunately not everyone has the resources to host some content on a FMS.

Therefore I decided to write him a little class to perform a basic bandwidth test.  It is not complicated at all, which is probably why nobody bothered posting the code online, to write code to test for speed but I have to admit that is not extremely accurate.  The accuracy of the test depends on the size of the file being downloaded for the test, the larger the file the more accurate the test is but the longer it takes to complete.  This is where one has to decide between accuracy and waiting time,  I find that a file of about 32KB gives a reasonably accurate idea of the speed a client has.  Why? well most, if not all, broadband users will be able to download this in less than a second and the results will most likely be above 100KBps, which should be fast enough for most instances that you want to test for.  Worst case scenario you could write some sort of loop that will keep testing the speed against increasingly larger files until you are satisfied with the results.

So how does it work?

Create an instance of the BandwidthTest class, whose constructor takes one parameter, the URL for the image or swf to test against.  Once you have your instance, you need to attach an EventListener to check when the test is complete and the last step is to call the start() function to start the test.

import com.yeungus.utils.BandwidthTest;

StartButton.addEventListener( MouseEvent.CLICK, startTest );
var test:BandwidthTest = new BandwidthTest( "" );

function startTest( e:MouseEvent ):void
	test.addEventListener( Event.COMPLETE, downloadComplete );
	test.start( );

function downloadComplete( e:Event ):void
	_results.text = "results: " + Math.round( test.speed ) + "KBps";

The Actual Class

Basically we measure the time it takes to download something and we divide the file size by said time.  The formula looks like:

KBps = filesize(in KB) / ( endtime - starttime )(in s)

The rest of the class just takes care of basic things like converting time into seconds and bytes into kilobytes.  The other thing that I would like to point out is that you can use the same image to do your tests.  The class attaches a random number at the end of the target URL in order to avoid caching the image.

package com.yeungus.utils
	import flash.display.Loader;

	public class BandwidthTest extends EventDispatcher
		public var URL:String;
		public var debug:Boolean = false;
		private var _speed:Number;
		private var _startTime:Number;
		private var _loader:Loader;

		public function BandwidthTest( testFileLocation:String ):void
			URL = testFileLocation;

		public function get speed( ):Number{ return _speed; }

		public function start( ):void
			URL += "?" + ( Math.random( ) * 100000 );
			_startTime = ( new Date( ) ).getTime( );

			_loader = new Loader( );
			_loader.contentLoaderInfo.addEventListener( Event.COMPLETE, downloadComplete );
			_loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler );
			_loader.load( new URLRequest( URL ) );

		private function downloadComplete( e:Event ):void
			var endTime:Number = ( new Date( ) ).getTime( );
			var totalTime:Number = ( endTime - _startTime ) / 1000;
			var totalKB:Number = e.currentTarget.bytesTotal / 1024;
			_speed = totalKB / totalTime;

			if( debug )
				trace( "total time: " + totalTime + " total KB: " + totalKB + " speed: " + speed + "KBps" );

			dispatchEvent( e );

		private function ioErrorHandler( e:IOErrorEvent ):void
			_speed = -1;
			trace( "URL not found" );