shahine.com/omar/

homepage | Send mail to the author(s) contact

yet another Microsoft blogger

# Tuesday, December 07, 2004

Outlook Wish List

Since it's almost Christmas, here is what I want from Santa.

  1. A button that will prevent people from including me in the reply to an email (I call this the remove me from thread button)
    1. Here in Hotmail you get these ridiculously long threads that you get added to for no good reason, or you answer a question being asked, but then you proceed to get 500 responses as the issue drags on and on.
  2. A button that will prevent people from doing a “Reply All“ to an e-mail.
    1. Some times you just don't want people to abuse email and Reply All to threads, or they accidentally Reply All rather than Little-R to a thread
  3. Managed Programmability support (Current situation with PIAs is no good).
  4. Project Management features like Entourage.
  5. better IMAP.
  6. RSS Reader.
  7. Support Internet Style replies (Plain Text messages where quoted text goes on the bottom and messages are quoted using >.
  8. Support for Format-Flowed [Thanks to Dan Crevier for catching my mistake earlier and saying Quoted Printable] 
  9. A single mail editor that works well, and doesn't have toolbars that move randomly (Word Mail).
  10. A single mail editor that generated XHTML compact output.

It's a modest list with nothing fancy. Just the things that would make me happy. I could go on and on...

Posted Wednesday, December 08, 2004    Permalink    Comments [7]  View blog reactions

 

# Monday, December 06, 2004

When ReleaseComObject is necessary in Outlook

Some might tell you that you never need to call Marhal.ReleaseComObject when writing managed code in Outlook. Well there are two very specific situations in which you must call RCO or else you will encounter problems. They are:

  1. You create toolbar buttons in new Inspector windows
  2. You use the Explorer.ActiveExplorer() method.

This is also a good point to tell you that if you are going to call RCO, you need to use a shim or you will hose other add-ins that are running in the same Domain as Outlook (the default).

You may also wan to read Eric Carter's post on Getting Outlook to shut down which offers a different approach for problem #2. I'm not sure if his approach fixes the corrupted folder list. He makes some great points in that post, and sadly in my case it is in fact necessary to call RCO (as far as I can tell).

1. Creating a Toolbar in new Inspector Windows

It's pretty common for an add-in developer that has created a toolbar to wish to have them appear in the Inspector windows. My Send to OneNote Powertoy does this, and I didn't find out about this problem till a few users reported it. Some kind folks at Microsoft told me how to work around it.

Basically, what happens is this. Whenever you create or modify a new Sticky Note in Outlook, Outlook tries to add your toolbar button to the Inspector. However, you can't do that. Outlook deals with this by presenting the following two dialogs. The first happens if you Lock your computer, then unlock it. The second happens when you quit Outlook.

Exhibit A: "Could not complete the operation. One or more parameter values are not valid."

Exhibit B: "The note will close and your changes will not be saved."

The solution to this problem is to:

  1. Handle the OnNewInspector Event
  2. Call Marshal.ReleaseComObject on the Sticky Note Inspector

Handle the OneNewInspector Event

See code below:

public void OnStartupComplete(ref Array custom)
{
    this.ApplicationInspectors = this.ApplicationObject.Inspectors;

    try
    {
        this.ApplicationInspectors.NewInspector += 
             new InspectorsEvents_NewInspectorEventHandler(OnNewInspector);
    }
    catch (Exception e)
    {
        Debug.WriteLine(e);
    }
}

Where ApplicationInspectors is an instance of type Inspectors and ApplicationObject is an instance of Outlook.Application.

Call Marshal.ReleaseComObject on the Sticky Note Inspector

This is where you prevent the errors from happening.

private void OnNewInspector(Inspector inspector)
{
    object item = inspector.CurrentItem;
    if (item is NoteItem)
    {
        Marshal.ReleaseComObject(inspector);
        inspector = null;
    }
    else
    {
        / ... /
    }
    if (item != null)
    { 
        Marshal.ReleaseComObject(item);
        item = null;
    }
}

Problem solved. Now on to problem two which is more complicated.

2. Handling Explorers in Outlook

It is very common for an Outlook add-in to use the Explorer object. If you are adding toolbars to the Explorer, or you are manipulating such things as messages, contacts etc, or you wish to get the selected item you need to call Explorer.ActiveExplorer(). The problem with calling this is that you can run into a situation where if you do not call RCO on the ActiveExplorer then you can cause Outlook to not persist the collapsed state of the folder list (all items will be collapsed when you restart) or even worse, Outlook won't close. I've found that Send to OneNote has both these problems. I wasn't aware of the collapse folder list bug till a few days ago, but I've known about the Outlook shutdown bug for months, but I could not explain it. The problem only seemed to happen when you had many add-ins installed. If my add-in was living on its own in Outlook I never saw any problems.

In order to call Marshal.ReleaseComObject() on the Explorer that you are using you need to do some work.

  1. Create a custom ExplorerCloseEvent class that holds on to the Explorer object
  2. Handle the OnExplorerClose event
  3. Call Marshal.ReleaseComObject on the closing Explorer

The reason that you have to do this is because by default the Explorer.Close() event does not pass in the current Explorer, so you have to write your own class with it's own event handler to do this.

Create a custom ExplorerCloseEvent class that holds on to the Explorer object

public class OfficeExplorerCloseEvent : IDisposable
{
    private Outlook.ExplorerEvents_Event explorer;
    private Handler handler;

    public delegate void Handler(object sender, EventArgs args);

    public OfficeExplorerCloseEvent(object explorer, Handler handler)
    {
        if (explorer == null)
            throw new ArgumentNullException("explorer");
        if (handler == null)
            throw new ArgumentNullException("handler");

        this.explorer = (Outlook.ExplorerEvents_Event) explorer;
        this.handler = handler;

        HookEvent();
    }

    public object Explorer
    {
        get
        {
            return (this.explorer);
        }
    }

    public void Dispose()
    {
        this.explorer.Close -= 
            new Microsoft.Office.Interop.Outlook.ExplorerEvents_CloseEventHandler(this.ForwardExplorerEvent);
    }

    private void HookEvent()
    {
        this.explorer.Close +=
            new Microsoft.Office.Interop.Outlook.ExplorerEvents_CloseEventHandler(this.ForwardExplorerEvent);
    }

    private void ForwardExplorerEvent()
    {
        this.handler(this, new EventArgs());
    }
}

Handle the OnExplorerClose event. This code builds on the first code snippet of the OnStartupComplete() method.

public void OnStartupComplete(ref Array custom)
{
    this.ApplicationExplorers = this.ApplicationObject.Explorers;
    this.ApplicationInspectors = this.ApplicationObject.Inspectors;

    try
    {
        this.ApplicationInspectors.NewInspector += 
             new InspectorsEvents_NewInspectorEventHandler(OnNewInspector);
    }
    catch (Exception e)
    {
        Debug.WriteLine(e);
    }
    
    if (this.ApplicationObject.Explorers.Count > 0)
    {
        this.ApplicationExplorer = this.ApplicationObject.ActiveExplorer();
        new OfficeExplorerCloseEvent(this.ApplicationObject.ActiveExplorer(), 
            new OfficeExplorerCloseEvent.Handler(this.OnExplorerClose));
    }

    Marshal.ReleaseComObject(this.ApplicationObject.ActiveExplorer());
    Marshal.ReleaseComObject(this.ApplicationExplorer);
}

As you can see in the last two lines I call RCO on the ActiveExplorer and the ApplicationExplorer (which is just an instance of the current Explorer). I'm not 100% sure if you have to do this, but I gave up debugging this nonsense after a few hours and just left it in there.

You must also be sure to see if you have any existing Explorers before doing this as you don't want to hook the event unless Outlook is starting in UI mode (it can be instantiated through ActiveSync for example w/o any UI and in that case Explorers will not exist).

Call Marshal.ReleaseComObject on the closing Explorer

Now that we have hooked the OnExplorerClose lets see what we do in that Method.

private void OnExplorerClose(object sender, EventArgs args)
{
    Explorer explorer = ((OfficeExplorerCloseEvent) sender).Explorer as Explorer;
    ((IDisposable) sender).Dispose();


    while (true)
    {
        if (Marshal.ReleaseComObject(explorer) == 0)
        {
            break;
        }
    }


    explorer = null;

    GC.Collect();
    GC.WaitForPendingFinalizers();
}

In the above code snippet I am getting the Explorer instance that the OfficeExplorerCloseEvent is holding, and calling RCO on it till the RefCount is 0. This ensures that the are all disposed. Then I call the GarbageCollector to clean things up for me.

Final Thoughts

I hope this shows you that doing what appears to be straightforward with managed code in Outlook isn't. I could write a few more blog posts about things I've encountered, and probably will when time permits. I'm pretty excited because for the first time in months, Outlook is shutting down cleanly 100% of the time!

I would also like to thank all those folks that helped me with this problem, or provided code to guide me. I can't actually remember who helped me get this far...


Posted Tuesday, December 07, 2004    Permalink    Comments [5]  View blog reactions

 

Microsoft DigitalPersona (Biometric Fingerprint Reader)

Who ever said Microsoft doesn't innovate is just full of it. I just picked up the Microsoft Fingerprint Reader. This thing is so utterly cool. The software it comes with is awesome.

Basically it works like this. You install some software, reboot, plug in the reader and train it on any of your fingers. Now if you have a PC at home that is configured to use Fast User Switching, you just place your finger on the device and it automatically logs you in. It even knows which user to select.

But it gets better. On any web page, or Application, you can configure the device to enter your credentials. The UI is super cool, and it does an amazing job at guessing where the right text boxes are, and places this nice halo around the box to make the selection explicit. You can also point it to things if it cannot figure out what the username, password or signin buttons are. Finally you can configure it to select “Remember my password” and such. Below is a screen shot of what this looks like for logging into my blog.

I have also configured the device to enter my Microsoft Money Password, which is super cool.

Kudos to the Microsoft Hardware folks. This thing rocks. I wish my laptop had a biometric reader.

Posted Tuesday, December 07, 2004    Permalink    Comments [9]  View blog reactions

 

# Sunday, December 05, 2004

CleanSources

A while ago I lamented that the “Clean Project” button in VS.NET did nothing for .NET projects. I thought that it would be nice to have something that would empty the bin, obj, and setup folders of crusty stuff, or just nuke it if you plan on zipping your source to email to some one. There is really no need to send that stuff since the compiler will generate it all again later.

So I whipped up a little application called CleanSources that will do just that. The application will place a contextual menu when you right-click on a folder and it will then recursively go through and get rid of that stuff.

update: you really shuold get Jeff Atwood's Clean Sources Plus. It's much bettter than mine :-).

Posted Monday, December 06, 2004    Permalink    Comments [6]  View blog reactions

Clean.cs (1.4 KB)

 

CD/DVD Burning in XP

<rant>

I really want to know why the top two windows CD/DVD burning programs as such big fat junky programs. For many years I used Roxio Easy CD Creator. In fact, I used Toast on the Mac for many years (same company) and was super pleased with it. For a while Easy CD Creator annoyed me so I switched to Nero for a while, but I growingly got annoyed with all the junk they installed.

So after I got a DVD Burner and wanted to burn DVD Videos from my DV Camera I switched to Roxio Easy CD Creator 7. Now this looks like a nice program on the back of the box, but when you load it up you realize that it's one bloated unusable buggy program. For one thing they decided to rewrite all the standard windows controls like tabs, buttons, and menus. Now, when I see a program do something like this I wonder what a huge freaking waste of time it must have been for their developers to basically rewrite a bunch of UI Widgets that the OS gives you for free. Additionally, when you re-write OS widgets you introduce bugs and behaviors that the OS does not have, which in turn confuse your users. So, this is an immediate sign that the software is probably junk as those resources should be spent making a decent program.

Well the final straw for Roxio happened last night when I launched it to burn a DVD and it would not launch. I went to the web site and there was a honking 50 MB download that fixed this problem. Ugh. Not only that, but after installing it Roxio broke my CD Drive. Lucky for my google skills I found a KB article that instructed me to hack my registry to fix this problem. The KB article mentions version 5, but I guess Roxio still didn't learn it's lesson in Version 7. Even worse was I found this after 2 hours of taking my PC apart and fiddling around thinking my drive was dead.

Now none of this would be a problem if Windows was able to write to DVD like Mac OS X. And none of this would be a problem if Microsoft made a program like iDVD that allowed me to burn high quality DVDs of my Home Videos, or backup my pictures to DVD+RW. Longhorn will surely deliver some acceptable level of DVD writing as it does with CD-ROMs, and expose APIs to do this so developers can spend less time writing DVD burning code, and more time writing quality software. However, we all know that in the case of Easy CD Creator it won't matter as they will do all this anyway.

Well, now that I have ranted this topic off my chest there is good news. I found an excellent program called CopyToDVD which behaves and acts as I expect. It looks and feels like a Windows program, installs in under a minute, and does it's job nicely. It doesn't hack up your system, screw up your DVD drive, nor does it require that you reboot to use it. And best of all it's $40.

</rant>

Posted Monday, December 06, 2004    Permalink    Comments [4]  View blog reactions

 

# Friday, December 03, 2004

Programming iTunes vs WMP in .NET

I find it creepy that it's a million times easier to write managed code against iTunes than Windows Media Player. That just seems wrong. A few weeks ago when I was playing with the iRiver H320 I wanted to sync meta data from WMP to the iRiver so that I could browse by artist and album. Well the problem is that there are all these scary interfaces (like IWMHeaderInfo, IWMHeaderInfo2 and IWMHeaderInfo3)  and to figure out how to extract meta data for DRM'ed files took me a few hours (just to find the right interface). Then it felt like screen scraping to actually get the tags (Artist, Album etc) from the files themselves.

It's great that Apple is exposing a decent COM Interop library from iTunes that in turn exposes a nice managed interface in .NET, but geez... I should not have to wait for Longhorn to do the same thing on my PC.

BTW - if you have an iRiver H320 and want to get the meta data from WMP, the version of TDT that I built can be found here.

Posted Friday, December 03, 2004    Permalink    Comments [3]  View blog reactions

 

# Thursday, December 02, 2004

Spaces posting API

Folks have been complaining that there is no posting API for Spaces. Not so fast. There is a very lightweight URL based API you can use to post. See Scott's post below.

Quote [Scott Isaacs]

Blog It! Toolbar Button

My first tip.  The BlogIt toolbar button!

Spaces has a special URL that makes it easy to post entries into your blog, http://spaces.msn.com/blogit.aspx.  This URL, when supplied with the proper arguments, can pre-populate your blog entry page. 

Before I explain the technical details, let me introduce the unofficial Blog It toolbar button.  The Blog It toolbar button is a little tool I wrote that allows you to quickly blog any web page.  If you see something you want to blog, select some text, and click the Blog It toolbar button. Please visit http://www.siteexperts.com/blogging/blogit.htm to get your own blog it toolbar button. Also, if you have any improvements, please let me know (the button is implemented using basic DHTML so feel free to look under the hoods).  Note: The toolbar button only runs in Internet Explorer and is not endorsed nor supported by Microsoft.

Obviously, you will need to create your own MSN Space (I recommend doing that first!)

Technical Details: The blogit.aspx is very simple and is how the blog it buttons below each blog entry work. There are a number of querystring arguments that are mapped directly into your blog.  You can specify one or many of these arguments. ?Title=title&Description=Description&Trackback=Trackback&SourceURL=SourceURL

Title: This preopulates the title string of your blog entry page.
Description: This preopulates the body of your blog entry page. (typically the selected text)
SourceURL: This renders above the description in body of your blog entry page (typically the URL of the page being blogged)
Trackback: This prepopulates the trackback field (and pings when posted).

These arguments can either be submitted as a form post or as a standard http get.  NOTE: If you are not logged in when blog it is called, you will first be asked to log in (otherwise how would we know where to send you :-).

Posted Friday, December 03, 2004    Permalink    Comments [3]  View blog reactions

 

# Tuesday, November 30, 2004

PDF SpeedUp

I have previously written about how darn slow Adobe Acrobat 6 is when launching. I don't understand why Acrobat is so darn annoying. Here are some things I don't care for:

  • Don't create a “My eBooks“ folder in My Documents when I have nothing to put there.
  • Don't load 500 plugins when none of them are necessary to view a PDF
  • Don't place shortcuts for some lame Internet Printing thingy in my Start Menu (I loathe Start Menu Advertising)
  • Do install a PDF IFilter so that indexing products like Lookout can index PDFs w/o installing it seperatley
  • Don't load PDFs in IE because it is god awful slow
  • Don't make copy and paste so freaking hard
  • Don't ask me to install other Adobe software when I boot Acrobat
  • Don't create an updater (6.0.2) that creates an additional entry in my add/remove programs
If you want to fix most of these things, PDF SpeedUp is a free application that should come bundled with Acrobat. It's a must have piece of software to make Acrobat behave (as much as you can anyway).

Posted Tuesday, November 30, 2004    Permalink    Comments [7]  View blog reactions

 

# Monday, November 08, 2004

Hitachi Media Center VFD updated

I've update my Hitachi Media Center VFD. If you happen to be one of the folks using it, this version hopefully fixes some issues for you. This project was written using the Media Center Front Display Panel SDK that I wrote.

Fixes:

  • Now works after standby
  • FM Radio stations now formatted correctly
  • Volume no longer displayed in global sessions
  • Renamed "My Photos" to "My Pictures"

Posted Tuesday, November 09, 2004    Permalink    Comments [0]  View blog reactions

 

# Tuesday, November 02, 2004

Spyware

A few days ago I got one of those dreaded phone calls from my sister. It went like this:

sister: “My internet is broken”
omar: “Huh?”
sister: “When I launch Internet Explorer it quits right away”
omar: “Uh oh. Did you do anything unusual the other day?”
sister: “I saw this pop up dialog thing, and I clicked something, and since then it stopped working”
omar: “You are 0wn8d”.

Seriously, I freaked out. Being 3000 miles away and being the technical life support for my family, extended family, friends of friends etc meant I could not use Remote Assistance to fix the problem. I thought of a variety of things she could do but ultimately decided that she needed to salvage and pave her machine. What a pain.

However, I went to some unrelated web page that day and it said that if you are experiencing a problem where IE unexpectedly quits then you have spyware and to go here. Great web site. I was able to direct my sister to our (Microsoft's) toll free PC Softy hotline (866) PC SAFETY where she got someone on the phone to help her out. Sadly because she didn't have an internet connection she could not download the anti-spyware tools. So she went over to my parents, burned Lavasoft Ad-aware and Spybot Search & Destroy (S&D) which nuked all the badness from the machine. I asker what happened and she said that they cleaned up a million things.

Spyware should be illegal. Users like my parents and my sister don't know any better, and Windows does a poor job of protecting them. Having said that the site and tools (and PC Saftey) are fantastic.

Posted Wednesday, November 03, 2004    Permalink    Comments [10]  View blog reactions

 

# Sunday, October 31, 2004

MobyDock (Mac OS X style dock for Windows)

MobyDock is a cool application. It's the best Mac OS X dock knock off I have used on Windows. The animations are smooth, and the application is just pretty. On top of that they have a nice product web page which is good sign of quality software.

Crappy or ugly web sites are a good way to tell if a particular piece of shareware isn't worth installing. There is no shortage of those.

Posted Sunday, October 31, 2004    Permalink    Comments [3]  View blog reactions

 

dasBlog feature: Search Result Referrers

I have to admit, one of the more fascinating aspects of having a blog are the ways that people find it. I'm constantly amazed at how people get here. Having a good amount of Google Juice helps put some of my posts pretty high in google's results.

Well because dasBlog just places all referrals together, it's really hard to get a good picture of what search queries people are entering. Since I started doing a little dasBlog development again, I added this new statistics table. This will be in version 1.7.

Posted Sunday, October 31, 2004    Permalink    Comments [1]  View blog reactions

 

dasBlog support for Newsgator Ratings

I uploaded a patch for dasBlog 1.6 that allows you to utilize the NewsGator ratings system. This patch adds support for a new PermalinkUrl Macro. You can use this macro by adding:

<%permalinkUrl%> to any of your templates. To add the rating system as I've done on my blog simply edit your itemTemplate to include the following text:

Rate this post: <script src="http://www.newsgator.com/ngs/ratings.aspx?rurl=<%permalinkUrl%>"></script> (data provided from <a href="http://www.newsgator.com">NewsGator Online</a>)

You can download this patch here. Download DasBlog.Web.Core 1.6.4121.2.

Posted Sunday, October 31, 2004    Permalink    Comments [0]  View blog reactions

 

Rio Carbon vs iPod

The Rio Carbon was a device I didn't want to like. My main reason for not considering it was that it's only 5GB and I was looking for an iPod replacement. However, as I've used this device it's really grown on me. I was able to transcoded all my WMA lossless audio down to 11 GB so I can get almost half my audio on this device. Not bad.

Make sure you read my post iPod Replacement Criteria before reading this review. Remember, I have only one goal, to review this compared to an iPod. I don't care about anything the device offers that does not meet my core criteria.

Lets see how it stacks up.

Other Reviews:

Size: The size is much smaller than the iPod and even comparable to the mini

  Rio Carbon iPod Mini iPod 3G
Height 3.3 inches 3.6 inches 4.1 inches
Width 2.5 inches 2.0 inches 2.4 inches
Depth 0.6 inches 0.5 inches 0.57 inches
Weight 3.2 ounces 3.6 ounces 5.6 ounces
 

So, as you can see it stacks up very nicely.

User Interface: The device has a very usable user interface. After a sync is complete, the device builds a catalog of music (it only does this when content has changed on the device, so power on does not go through this process, much smarter than the iRiver folks). The device allows you to browse using all the usual suspects, artist, genre, album, album year (cool), new music, spoken word etc. One minor annoyance is that you cannot get back to the selection you were in after playing a song, the device always throws you back in "Play Music".

Beyond that you can control the settings on the device, and a variety of other functions like lock, etc. The keys are easy to use and the screen is very readable. Overall, Rio did an excellent job for an OEM designed user interface.

Connectivity:  The Rio Carbon was designed properly from a Connectivity standpoint. It has a single USB 2.0 port that supports charging and synching. When you plug the device into Windows it detects it as a removable drive allowing Windows Media Player 10 to AutoSync with it. Beautiful. My sync experience was nothing short of perfect.

Charging: The Rio folks get bonus points for shipping a Wall Mount to USB charging device. This essentially means that you take the supplied USB cable, plug the computer end of it into the wall outlet plug, and plug the mini connection into the Carbon. Not all OEMs are this smart, and they end up shipping an additional brick to charge the device. The beauty of this method is you only need a single cable for the device, and if you have multiple devices that charge over USB (like I do) then you can just use a single wall mounted plug when traveling (or use your laptop) to charge the device.

Additionally, it's great that the device charges during sync (unlike the iRiver H320).

Sync: This device only supports sync with Windows Media Player 10 via USB 2.0. The device does not support PlaysForSure (MTP) yet, but it can support sync with Windows Media Player 10 since it supports sync with any removable media mass storage device. As such, I was able to mount the device, launch WMP10 and select sync "All Music". A few minutes later it was done.

Accessories: The device comes with the following accessories:

  • Charger (AC to USB wall mount)
  • USB cable
  • Carrying Case

Unfortunately, the device does not support a remote control...

Battery Life: Rio claims the device gets 20 HOURS!!! of battery life. I probably average half of that, but 10 hours kicks ass.

Software: The device comes with a CD that I didn't even need to use. Sweet.

Price: I purchased the device for $218 which is great.

Storage: 5 GB

PlaysForSure: The device supports the following PlaysForSure logos.

  • Basic PlaysForSure support (AutoSync)

Rio has announced that they will support:

  • Support for Audio Download
  • Support for Audio Subscription

By the end of the year. Sweet.

Support: Rio seems to do a good job supporting this device. As soon as I received it, I downloaded and installed a firmware update that installed flawlessly w/o any proprietary software or connection required to update. This firmware also fixed a number of issues which is encouraging.

There is an annoying problem where if you use headphones that have a metal base around the connector, you will hear pops and clicks due to some kind of short circut. This doesn't happen with the included headphones (which are crap of course), but does happen with my Bose Noise Cancelling headphones. The “fix“ is to apply some scotch tape around the headphone jack. hmm.

Web Site: The Rio Carbon web site is pretty usable and doesn't promise features that the device can't deliver.

Optional Features:

  • Device supports Audio Recording

I wish the device had an FM radio (so I can listen to NPR in the morning) like the Creative Zen Micro but I've started using Audible which can deliver NPR morning edition (not in time for my 7:11 am commute) for the afternoon commute home.

Final Rating (see my post on my review criteria to understand what this means).

Good - pretty good in most areas, but missing some critical requirements. Feel free to spend money.

I almost gave this device a Kick Ass rating, but since the definition of that is better than the iPod, I would have to modify it to say "better than the iPod mini". If you are looking to buy a mini, stop and don't hand your money to Apple but get the Carbon. If you are looking for a device to replace your iPod or looking for a new device I would highly recommend this device.

Not only is this device a reasonably priced high quality music player, but it's also a very inexpensive way to get a 5GB compact flash card for your digital camera ;-).

Posted Sunday, October 31, 2004    Permalink    Comments [8]  View blog reactions

 

# Sunday, October 24, 2004

iRiver H320 vs iPod

 I was really excited to see a device like the iRiver H320. However, upon opening the device the experience turned out to be an extreme disappointment. I believe that iRiver built the Kitchen sink here. This device tries to be too many things to too many people. A hard disk, a USB Host device (International only), an MTP sync device (US only), Photo Viewer etc.

Make sure you read my post iPod Replacement Criteria before reading this review. Remember, I have only one goal, to review this compared to an iPod. I don't care about anything the device offers that does not meet my core criteria.

Lets see how it stacks up.

Other Reviews:

Size: The size is very comparable to the 3G iPod.

  iRiver H320 iPod 3G
Height 4.1 inches 4.1 inches
Width 2.4 inches 2.4 inches
Depth 0.9 inches 0.57 inches
Weight 6.6 ounces 5.6 ounces

So, as you can see it stacks up very nicely.

User Interface: The device has a very readable color screen. However, the interface for browsing files is just a file explorer. What you may ask? That's right, there is no way for the device to build a database of audio allowing you to browse by Artist, Genre, Album etc. It makes you wonder what the point of meta data is if the device makes no use of it.

iRiver does ship an application that you can install in Windows that can manually scan the audio on the device and build the data base file, but it only supports MP3 files. Ridiculous if you ask me.

The good news is that there is an open source .NET application that will do this job as well as many others (like sync audio on your hard drive) called Tag Database Tool (TDT). TDT works very well except for the fact that it barfs on files that are DRM protected (purchased and subscription audio. I made some changes to the application to use newer Windows Media APIs that allow it to do this. If there is enough interested I'll post my changes somewhere so folks can download them.

(Warning) After cataloging the 2,000 or so songs on the device, I found that the database increased the device boot time to over a minute. Unbelievable if you ask me. Since the device "shuts off" when it's not in use, that means that if you want to turn it on and use it you are subjected to a greater than one minute penalty.

However, I still find it inexcusable that iRiver ship a device that only has a file explorer interface. In addition the device User Interface is confusing with many of the buttons overloaded for different tasks. For example, to switch to FM radio you must hold down the Record button. I could not figure this out myself and actually had to resort to reading the manual. I never had to read my iPod manual to figure out how to use it.

Connectivity:  The device has two USB ports. Now why would a device need two USB ports? Well when iRiver created this device they had two goals in mind. 1) A Music Jukebox, 2) A USB On The Go. USB On The Go allows a device to act as a host device for something like a digital camera or card reader allowing you to offload photos from a camera without a computer.

Now, before you get all excited lets look at how this was implemented. On the International version of the device you get one USB port that is USB 2.0 for connecting to a PC and one that is USB 1.1 for connecting to a camera. The USB 2.0 port can act as a charging port if you are not "connected" but the device is powered down. On the US version of the device you get a USB 2.0 port for connecting to a PC similar to the international device and a USB 1.1 port that supports MTP for synchronizing to Windows Media Player. You are limited to USB 1.1 and this port will not charge the device. I suspect that iRiver made this decision because it was the only way to get PlaysForSure support and they figured that most of these music stores are US only so they essentially took a device that had one set of features and repurposed it for the US market. I think it would have been better for them to forgo PlaysForSure support till they could get it right in the product design.

  International US
"Data" port USB 2.0 (charging) USB 2.0 (charging)
"Media" port USB 1.1 for USB On The Go USB 1.1 for MTP

Now, the USB 2.0 port only connects the device as a fixed mountable drive. This essentially means that it is mounted to your PC as a non-removable hard drive. This distinction is important because it PREVENTS Windows Media Player from Synchronization with the device as it's not removable. So, if you purchased this device to be a hard drive you're in luck! If you purchased it as a music player you are stuck with an expensive hard drive.

I emailed iRiver about this limitation and here is what they said:

We have tens of thousands of users who are very happy to manage their music collections independently of an application and prefer to drag and drop files to their player.  We completely understand that your needs and desires may not match theirs.  If syncing your collection via USB 2 is an important feature for you, then I may suggest that this player is not suited for your needs.  We will have a product available later this year will allow for faster transfers through Windows Media Player:

http://www.iriveramerica.com/products/pmc120.aspx

Apparently their user base like to "drag and drop files to their player". Great, I'm not one of them.

Charging: The iRiver comes with a separate DC adapter charger with a proprietary plug for the device. Since you can't really charge the device over USB even though the device supports it (can't charge during sync), you really do need this charger. So, it's another thing to drag around when you are traveling. No thanks.

Sync: This device only supports sync with Windows Media Player 10 using the USB 1.1 port which does not support charging. Syncing 20 GB of audio while transcoding was one of the most pitiful experiences I've had on my PC. I started on Saturday morning and the device finished on Monday evening. Now normally transcoding will take a while as the PC much convert each song from WMA lossless to WMA 128. However, once I reached about 1000 songs, the device would essentially hang or timeout. This required me to unplug the device, plug it back in, and continue synching. I had to do this every 10-20 songs after I got to 1,000. I reported this to iRiver as well and got this response:

Thank for the report. I will pass this to them for further research.

Maybe transfer 1-5 files in the meantime?

Um, yeah. The fact that this device only supports USB 1.1 for MTP sync made this super painful.

Accessories: The device comes with the following accessories:

  • Charger
  • USB cable
  • Line Out cable
  • Carrying Case

Battery Life: iRiver claims 12 hours. I got about 8 hours.

Software: The device comes with a CD that contains a Mass Storage driver if you are an unfortunate soul still running Windows 98 as well as some software I didn't bother installing for creating the device music database. The device also comes with Windows Media Player which is great, but since you can't realistically sync with that software I'm not sure why they include it.

Price: I purchased the device for $320 which is reasonable.

Storage: 20 GB

PlaysForSure: The device supports the following PlaysForSure logos.

  • Basic PlaysForSure support
  • Support for Audio Download
  • Support for Audio Subscription

Kudos to iRiver for supporting Audio Subscription. This makes it one of the few devices that can play subscription audio content (Janus) from music stores such as Napster. This was my favorite feature of the device. Unfortunately since the device isn't SyncsForSure compliant, it's all very useless.

Support: Unfortunately iRiver doesn't have a proven track record for fixing any problems in firmware updates. If you have a few hours to spare (which I did as I tried to make the sync work) you can read all sorts of stuff on the MisticRiver forums.

Web Site: The Website for the iRiver H320 doesn't tell you that the device will only sync with Windows Media Player 10 using USB 1.1 and that the device will not charge via this mechanism. IMHO it's making false claims (or lack of claims about the real capabilities of the device).

Optional Features:

  • Device appears as a hard drive in Windows.
  • Device supports FM Tuning.
  • Device has a color screen.
  • Device supports FM Recording
  • Device supports Audio Recording

Final Rating (see my post on my review criteria to understand what this means).

Lame- fails in some areas. Do not hand over your money for this device.

Seriously, I did not enjoy debugging and trying to fit this device into my lifestyle. I figure the 2 or so hours I spent hacking TDT to support WMA DRM'ed files was well worth it as I learned something new, but if you are looking for a device to replace your iPod or you are on the market for a new device I would wait till iRiver works out the issues above (or some one else ships a comparable device).

Posted Sunday, October 24, 2004    Permalink    Comments [5]  View blog reactions