The Microsoft Stack Did Not Kill MySpace, People Did

An article on the High Scalability blog provocatively titled Did The Microsoft Stack Kill MySpace? caused a bit of a flap on Hacker News today.

While perusing the article, I immediately remembered highlighting a certain passage from Peopleware, indisputably one of the great classics of our field. I grabbed my copy off the bookshelf and found the passage on page 5 under the heading The High-Tech Illusion:

The main reason we tend to focus on the technical rather than the human side of the work is not because it's more crucial, but because it's easier to do. … Human interactions are complicated and never very crisp and clean in their effects, but they matter more than any other aspect of the work.

If you find yourself concentrating on the technology rather than the sociology, you're like the vaudeville character who loses his keys on a dark street and looks for them on the adjacent street because, as he explains, "The light is better there."

I know the Internet inside out

…this is apparently what Microsoft was doing to enhance Web search at the same time that Larry Page and Sergey Brin were founding Google.

PowerShell Tip: Pipe to the Windows Clipboard

Through this blog post, I discovered the wonderful clip, which allows you to pipe to the clipboard from PowerShell (or cmd).

The IT department at my company has a weird scheme that they like to use for assigning computer names, so I find myself running a PowerShell command like this several times a week when I need to summon my cryptic computer name:

$Env:COMPUTERNAME | clip

Wired | Tired | Expired

This should make sense to a significant (and some would say unfortunate) segment of the developer population:

Wired c:\windows\system32\inetsrv\appcmd.exe recycle apppool "MyAppPool"
Tired cscript c:\windows\system32\iisapp.vbs /a "MyAppPool" /r
Expired iisreset

The State of ORM at Microsoft

I just watched a pretty good presentation by Microsoft’s Eric Nelson that untangles the mess that is Microsoft’s ORM strategy. It’s appropriately titled:

ORM, EDM, ESQL, Entity Framework, LINQ to SQL, LINQ to Entities - Confused?

This topic is of particular interest to me, as I’ve begun work on a new application using the latest and greatest Microsoft stuff after having been out frolicking in Railsland for a while.

Some light reading seemed to indicate that the ADO.NET Entity Framework was the officially blessed product going forward, and this presentation confirmed that and provided a nice explanation of how the various technologies listed in the title fit into the picture.

Inherits="WTF?"

My kingdom for a comprehensive reference for the format of the string that goes here:

RottenFlix Live!

I thought I should write an update on where I've gotten with RottenFlix since the last post.

Plans

In my last post, I mentioned some plans that I had for enhancements.

In the future, one major enhancement I'd like to make to RottenFlix is to redesign it to use Web Workers. My original design of RottenFlix fetched all relevant movie ratings up-front with no action required from the user, but it was just too slow and it blocked the UI awkwardly. With Web Workers I'm pretty confident I could go back to my original vision and make it fast and usable.

There's also the issue of new movie titles that are brought into the page via Netflix's own Ajax effects. RottenFlix does not currently handle those movie titles. I could probably make this work, but I'm not sure how.

Reality

Well, after banging my head against the wall extensively on both of these issues, I've reached some conclusions.

  1. It's not actually possible to use workers within Greasemonkey. After much experimentation, googling, and finally Stack Overflowing, I had to accept the fact that my dream of a multi-threaded RottenFlix was dead. Bummer.
  2. This one has a happy ending. After a long fruitless journey down the Live Query path, I stumbled upon a short paragraph in a Dr. Nic blog post that shed light on why Live Query wasn't working for me and never would. Luckily, that post also pointed me at setInterval(), which worked beautifully for my scenario. I'm happy to report that RottenFlix now accounts for movie titles that are added to the page dynamically, and it only took 3 lines of code! (Look at the first 3 changes in this diff, if you're curious.)

Plans?

Now that I've settled these issues, I'm not sure where RottenFlix will go from here. I built this thing for myself, and I'm very happy right now with the functionality. It might benefit from some UI polish. We'll see...