Archive for September, 2008

The Bob and Tom Show

September 30th, 2008
I started listening to The Bob and Tom Show circa 1998. The Windows System Administrator at the firm where I worked listened to the radio show every morning. The local classic-rock radio station had recently subscribed to the syndicated program. They quickly grew on me. Bob and Tom seemed to follow me around. When my wife and I moved to El Paso (side note: never move to El Paso.  What a shit hole.), I quickly found a station with Bob and Tom. And two years later when we moved to Austin, I found yet another station with Bob and Tom. It stayed that way for about a year, and then the local station decided to go with their own morning radio team. It was their loss, and mine. I think that was the point when I quit listening to open-air radio. That is not to say I never listen to the radio when in the car.  Sometimes my wife is with me, and doesn't want to listen to the Metallica that will probably be left in the CD player permanently (see my Death Magnetic posts).  Or maybe I am trying to find some news or weather info and need to listen to the radio.  Other than those cases, I have purposefully quit listening to the radio. I quit radio at about the same thing I did three things:
  1. I purchased my first iPod that conveniently plugged into an audio-in port in my Element.
  2. I subscribed to  I started listening to audio books on the way to work.
  3. I subscribed to  For a few dollars a month I continued to listen to my favorite morning radio show without needing my office radio.
These three things did in the radio.  Why listen to bad disc jockeys playing back music?  Why not listen to music I like, or books I like?  In my car I listen to audio books and music from my iPod, instead of the radio. At work I listened to Bob and Tom in the computer and music from my iPod. Bob and Tom is how I pictured the way Internet radio should be when it was first developing in the mid-to-late 90s.  I thought that it probably would not end up free, but would probably be inexpensive.  I thought that independent content would become big, with extra goodies.  All they had to do was follow the DVD model.  Sadly, Internet radio became a wasteland because of lawsuits and the RIAA. Bob and Tom have really followed the model I imagined, and I think listeners like me have benefitted.  By the time I get to work in the morning their show is nearly over.  Around 9 am I go to their pay section and start download the four, 45 minute clips of the four hour show.  Why only 45 minutes?  They have cut out all of the commercials!  That's right, for my $6/month I get to download and listen to the show when I want, and I don't have to listen to commercials.  By 9:05 I am happily listening to the first "hour" of the show.  When I am done listening to the show I can either plug-in my iPod, or I can listen to a "best of" Bob and Tom stream that is available 24/7. Bob and Tom are nationally syndicated to about 150 radio stations.  I would imagine that the vast majority of their audience listen on one of those stations.  But for me, all I need is an internet connection.  Its too more radio and big media companies didn't get it, and still don't get it.

jQuery + ASP.Net = Microsoft Finally Figured It Out

September 29th, 2008
Today Microsoft announced that they will be shipping jQuery with their products.  If you have ever used the JS library that comes with ASP.Net, you know it sucks.  It is horribly documented.  It isn't as featured as jQuery, Prototypes and others.  Microsoft reinvented the wheel when they built their own Javascript framework, but it ended up a flat tire.  Seriously, WTF were they thinking?  Thank the Flying Spaghetti Monster that they picked a widely adopted, FOSS framework! The always awesome Scott Guthrie has the details over at his blog.

Google 10th Anniversary Project

September 24th, 2008
Google is celebrating its 10th anniversary with on a project to get ideas to help the world.  They are putting up some big money to see the best ideas get implemented.  Here is a little video they put together:


September 24th, 2008
I have been using Hulu for some months now to watch TV on my laptop.  Hulu is a TV-on-the-Internet service that runs a lot of shows from NBC, FOX and other networks.  I first got into Hulu when I read about a CSI-like show called ReGenesis that was on CTV.  I searched for this on my Dish, then Googled it and found that the first season was available on Hulu.  Before I knew it I had watch the entire 13 episode first season.  Since then I have used Hulu to watch a number of other shows.  I was able to watch the episodes at 480P, which actually looks pretty dang good on my laptop.  The display quality actually looks better than other services like iTunes that claim higher resolution. Today Wired is running a story about Hulu.  If you follow streaming video related news, you would probably thing that major networks would be the last people to put together a great video site.  Not the case with Hulu.  It is an interesting read. Now we will see if Fox et. al. will allow Hulu to continue to exist, or if they will screw it up.  It would seem like the advertising model they are using is better than what you get on traditional TV.  There is less commercial time (good for me) but I cannot skip the commercials like I can on a DVR (good for the network).  Hopefully this will pay off. One thing that really shows me that Hulu gets it is there embedded video feature.  I can embed a video from Hulu into my web site.  It is as easy as YouTube's system.  Here is a clip from one of my favorite shows, Babylon 5: I like it when traditional companies actually get the Internet.

Cubs Win!

September 20th, 2008
Carlos Zambrano I think this picture of Carlos Zambrano says it all. Now on to the NLDS!

I’m a PC err Mac err PC

September 20th, 2008
The timeline goes like this:
  1. Boy starts programming on Commodore 64 and Apple II in Junior High.
  2. Boy uses PCs for just about everything computer related in High School, but uses Mac on School Newspaper.  God Mac sucks!
  3. Young man uses PC in college.  He learns to program on PC.  He uses Mac on college school newspaper.  God Mac sucks!
  4. Young man uses PC at first programming job.  One coworker uses Mac.  Mac won't work with anything else in office.  Mac will only speak one network protocol at a time.  God Mac sucks!
  5. Man progresses on with career programming on PC.
  6. Mac OS X comes out.  Man says, "Whatever."
  7. Friend of man that works at Microsoft buys parents a Mac.  Really?
  8. Man buys his parents a Mac to replace aging PC.  They love it.
  9. Man buys a MacBook.  He loves it.
I used a lot of Macs throughout the years.  I don't care what you say, all those old Mac operating systems sucked.  The OS didn't even look as polished as Windows.  When OS X came out Apple really turned a corner.  The operating system has just kept improving since then.  Apple has launched a series of ads based on the fact that Apple actually makes an operating system that is as good, if not better, than Vista. Microsoft strikes back with their new "I'm a PC" ads.  They are actually quite good. Microsoft has finally gotten hip. Well, maybe not, but at least they can put together a decent advertisement.

.Net Parallel FX Library

September 18th, 2008
Microsoft is currently developing a new set of additions to .Net called the Parallel FX Library.  The library is intended to provide a better/easier API for multi-threading in .Net.  Anyone familiar with .Net will tell you that it already provides a rich threading library.  It is fairly easy to create and use threads in .Net using a number of approaches.  When I first read about the Parallel FX Library months ago, I was completely unexcited.  Last week I finally decided to take a look at the technology, and now I am excited. Microsoft new libraries for threading is a giant leap forward for parallel tasks.  It is not a replacement for traditional, long running threads.  Instead, it is intended to help the developer offload tasks to multiple threads for performance gains on mult-core systems.  You cannot walk into a computer store and buy a new computer that isn't at least dual core, so it makes sense that Microsoft would be targetting these platforms. So far I have only explored the two areas of the Parallel FX Library, the basic Tasks framework, and the psuedo-looping mechanisms. The Task is the basic unit of multi-threadedness in PFX.  The task encapsulates a delegate that will run on a thread.  The class Task is contained within the new namespace System.Threading.Tasks. int x = 0; //creates task, schedules for execution Task task = Task.Create(foo => { x += (int)foo; }, 2); //wait until execution is complete task.Wait(); Console.WriteLine(x); //2 This example is very simple but illustrates the core concept that is the Task class.  As soon as Task.Create() returned the anonymous delegate was scheduled, and probably executing on a background thread.  The call thread.Wait() simply made the main thread hold until the value returned.  For those with a threading background, the Wait() statement will be obvious. So what did this buy us?  Well, not a whole heck of a lot.  But this is just a very simple example.  Microsoft has built a lot of cool functionality on top of Task that will allow you to spawn all kinds of threads without having to manage them, all based on Task. Consider the following example, which would not make very good production code but hopefully makes good example code: int x = 0; List<Task> tasks = new List<Task>(); //creates task, schedules for execution for (int i = 0; i < 100000; i++) { Task task = Task.Create(foo => { x += (int)foo; }, i); tasks.Add(task); } foreach (Task task in tasks) task.Wait(); Console.WriteLine(x); This code should run faster than a straight loop doing the same thing because these computations will be distributed to multiple threads which hopefully will be executed on multiple processor cores.  This code works, but I am still having to keep track of the tasks.  It seems like this should be done for me, and after a little digging I found that Microsoft has a class called Parallel in System.Threading.  This class has a few, very convenient static functions, For, For<>, and ForEach<>.  As you might guess, these functions act like loops. int x = 0; Parallel.For(0, 100000, foo => { x += foo; }); Console.WriteLine(x); As you might guess, Parallel.For() is utilizing the Task class under the covers to execute the included anonymous delegate (lambda) to accomplish the same result as I wrote above.  The function signature for For takes an Action<int>, so we don't need to cast foo to int.  The call does not return until all of the execution is completed. Pretty cool so far.  We are now able to do repetitive operations on multiple threads with minimal code and no thread management.  For<> simply adds a generic type declaration for Action<>, and ForEach<> allows enumeration across a set of objects for the work. I plan on digging into PFX more over the next week or two.  Some thought that this library might be release with .Net 3.5 SP1.  I would imagine that there will be another .Net release like .Net 3.6 or .Net 4.0 that will include PFX plus other works in progress like ASP.Net MVC.

Stack Overflow

September 18th, 2008
A few months ago Jeff Attwood announced that he was starting a new web site with fellow blogger Joel Spolsky called  A couple of days ago they both announced that it was open for public beta.  I have been pleasantly suprised with the quality of content on  The site revolves around a question/answer format.  The presentation is similar to Digg in that questions can be voted up (Dugg), an so can the answers.  One key difference is that a user must has a certain amount of reputation points to do voting up or down.  The user base, in general, seems to post fairly intelligent questions.  I am cautiously optimistic that StackOverflow will become a hub of information exchange for the programming community.

My Amazon “Death Magnetic” Review

September 15th, 2008
I wrote a short review for "Death Magnetic" over at

Donate to the USO

September 9th, 2008
I was standing in line at Target today behind a soldier.  After he checked out, the cashier thanked him for his service.  That reminded me that I have been meaning to donate to the USO. While most Americans now realize what a colossal waste the Iraq war is, every American should be thankful for the brave women and men that fight in our name.  Many of them put their lives in danger every day, and all of them server our nation, everyday. Visit and donate today.