Friday, July 25, 2008

Miro + Songbird = Media Freedom

Over the past few months I've stumbled onto 2 very useful applications...

  • Miro (formerly The Democracy Player) - Video player & discovery application capable of playing almost all common video formats found on the web.

  • Songbird - Audio player & discovery application capable of playing almost all common audio formats.

I've been using Miro for the past 6 months and really like it. It allows me discover new video blogs/feeds and automatically downloads and manages them for me. It also seems fairly stable with only a few minor annoyances.

I had heard about Songbird when it was first getting started and figured I would give a try once it got farther on. It has since gone full release (1.1 actually) and the features and performance have been greatly enhanced, allowing it to become my primary audio application. There are still a few quirks (like no ripping capabilites, yet), but I feel confident that it will only get better with time.

The one thing that stikes me about these applications is that neither one could replace iTunes or Windows Media PLayer (WMP). At least, not if they remain separate. They are both built using the Mozilla XUL codebase, use the same processing library for decoding the various audio/video formats, have 'discovery' features, and library management. The only things functionally different are Songbird is geared more for audio while Miro is mostly for video. It seems to me that these applications should reach out to each other and merge into one project and finally create the ultimate (and free) media management application.

Monday, June 23, 2008

R.I.P. George Carlin

If you fancy yourself a fan of comedy and you haven't seen much of George Carlin, you owe it to yourself to visit YouTube (and similar sites) and watch what he has done over the course of his career. Even the stuff he did 30 years ago is still relevant and funny today, even to someone who wasn't even born at the time. He challenged our perceptions, the status quo, and forced use to face, or at least think about, serious issues affecting us all. And he did it all under the guise of being funny.

Of the ten previous comedians and entertainers that have been honored by the Mark Twain prize for humor by the Kennedy Center, I would place George at the top with Johnathan Winters and Richard Pryor following in 2nd and 3rd place respectively. Nothing against the other recipients, they each have earned their place, but those three were clearly a level above the rest.

He was my father's favorite comedian and a few years back I purchased 2 tickets for us to see him the next time he came to town (several months away). Unfortunately, he suffered a minor heart/angina attack a few weeks before the show and hadn't been cleared to perform yet, so the show was cancelled. To say we were disappointed was an understatement, especially for my father. He grew up during the counter-culture generation that George most identified with and had always wanted to see him in person. We had hoped that the show would be rescheduled or that he would make it back into town sometime soon, but he never did.

I will always regret not getting the chance to see him in person. He will be missed greatly.

Friday, May 23, 2008

Learning JavaScript (finally)

I'll be honest. Until recently, I haven't really used much JavaScript in the Web Applications that I've built. I've usually preferred to take the post back hit and perform the necessary functions server-side, instead of trying to craft the right JavaScript routines that work across all browsers. In my new job however, we use a fairly large amount of JavaScript to deliver rich functionality directly on the page client-side. Time to get me some learn'n on JavaScript.

Because I had stayed away from JavaScript for so long, I never really got a good feel for it. I could read an existing script and determine what it was doing with little effort, but I would be hard pressed to write my own script that did anything beyond the basics. One of the reasons for this was that any resource I found on JavaScript never spelled out how the language is composited within a Web Browser.

Since JavaScript is a dynamic language, it can be implemented wherever you like; not just within a Web Browser. However, when JavaScript is implemented in a Web Browser, additional methods and properties are merged in from 2 other sources: The Document Object Model (DOM) and HTML.

The DOM is a hierarchical structure of all of the elements making up a document. Every element has parent (except root), 0 or more children, and 0 or more siblings (elements at the same level). Any JavaScript variable that references an element within the web page inherits the methods and properties supplied by the DOM based on the type of element it is, in addition to the standard methods and properties defined for JavaScript objects.

You will also inherit properties based on the HTML type the element represents. For instance, if the JavaScript variable is currently pointing to an element, then the variable will have properties that match what is available for an image, such as Alt, Src, Height, Width, etc.

Thus, any given variable in JavaScript can have methods and properties composed from 3 possible sources: core JavaScript, the DOM, and HTML. This may seem trivial to most people who have been writing JavaScript for several years, but to someone who has avoided the language for a while, this can be a source of confusion. Especially since most books seem to gloss over this composition behavior. Once you are aware of this, writing JavaScript becomes a lot easier.

In order to grasp the full capability of JavaScript within the context of a Web Browser, I would suggest buying at least 2 books: One on JavaScript (the language), and another on the Document Object Model (DOM). If you are lucky, you can find a book that does a good job incorporating all of these aspects in one place.

Thursday, April 03, 2008

SQL Server Management Studio Tip

Recently, Sara Ford outlined a tip on her blog about a registry hack that enables vertical column guides within the Visual Studio Editors. This is one feature that my favorite text editor (Notepad++) has had for a long time and something that I have missed when working within Visual Studio.

After using this for a few hours in both Visual Studio 2005 and 2008 and then using SQL Server Management Studio (SSMS), I wondered if it would be possible to enable this option for SSMS's editor(s)?

After digging through the registry, I found a registry path the looked an awful lot like the Visual Studio path. I closed down SSMS, added the proper registry key, and then opened SSMS, and...

Presto! I now have the vertical column guides! Here are the instructions...

WARNING: This tip modifies your registry. Please ensure that you have a backup before proceeding in the event that Murphy's law kicks in!
  1. Open the Registry Editor
  2. Navigate to HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\90\Tools\Shell\TextEditor
  3. Add a new String value named "Guides"
  4. Set the value to "RGB(r,g,b),c1,...,c13" using the format described in Sara's blog.
Enjoy!