Shawn

Shawn Wildermuth

The Blog

My Rants and Raves about technology, programming, everything else...


January Geek/Nerd Dinner

Url: http://nerddinner.com/blogs/atlanta/archive/200...

Plan to meet Atlanta area geeks at January's Geek/Nerd dinner on January 13th! 

Read...


RoboSapien

Url: http://www.robosapien.com/

So it's Christmas day and I received a RoboSapien from my brother.  It takes me back to my first 'Programmable' toy back in the eighties.  Much more limited than the RoboSapien, the Big Trak was a tank that you could specify it to move forward, back, turn left and right, and fire a fake laser:

Read...


Christmas Eve

Elf on the TV, apple pies in the oven, ham on the table and I am blogging.  I must be nuts.  Of course I am at my mother's house and anything to get me out from in the middle of my vaguely crazy family.  Its wonderful to be home, but I am constantly reminded of why I left my hometown to begin with. 

I hope everyone out there is having a happy holidays, whether it is Christmas, Hanukkah, Kwanzaa, Solstice or just December.

Read...


Shelved...

Read...


My Blog of the Week

Url: http://freddiesblog.blogspot.com/

Read...


I think CSI is confusing America...

Url: http://www.usatoday.com/news/nation/2004-08-05-...

Ok, this is *way* off topic, but I enjoy watching CSI and shows of their ilk.  But I have been getting further frustrated by the technology they purport to use.  It all came to a head the other day when they took a convinience store video and used “video enhancement” to see the reflection in one of the customer's eyes.  Instead of Spike, CSI belongs on SciFi. 

It's bad enough when shows hack into computers with a nice pretty UI screen instead of some nasty command-line program or when they do a computerized fingerprint match in minutes instead of days, but now that are stretching the limits of credibility.  When my Mom knows it can't be done...I can't understand how the rest of America eats it up.

Read...


December Atlanta Nerd Dinner!

Url: http://nerddinner.com/blogs/atlanta/archive/200...

We are having the monthly Atlanta Nerd Dinner on December 16th.  Follow the link for full details!  Hope to see you there.

Read...


Rico's Walkthrough of Finding Memory Leaks in the CLR (or your code)

Url: http://blogs.msdn.com/ricom/archive/2004/12/10/...

I am blogging about this more so I have a place to find it if I ever need it...originally from Gunnerson's blog.  Great stuff Rico!

Read...


MSN Desktop Search - Yet another blog about it!

Url: http://beta.toolbar.msn.com/

I downloaded MSN Toolbar which includes the Desktop Search this evening.  I immediately turned off the MSN toolbar since I am not interested in having two toolbars with identical features (I love the google bar and won't give it up).  So how is search?

After indexing my files, I have to say that I am impressed so far.  They index folder names, source code files and supposedly e-mail.  But it can't find my Outlook for some reason.  So I am holding my breath until it works with Outlook.  But for searching source code...it's great!  I'll update this as I figure it out.

Read...


COM Objects and IDisposable?

I haven't dealt with a ton of COM interop up to this point in my .NET life.  I was surprised to find out that there is not a good story for deterministic deconstruction of COM objects...or maybe there is and I didn't see it.

What I've come up with is a bit of a hack to wrap a com object in a IDisposable wrapper so that I can use the using{...} syntax to determine Release() calls (not really destruction, but good enough for most cases).  The code looks like this:

/// 
/// Wraps an instance of a COM object in order to
/// provide deterministic deconstruction (or Release really).
/// 
public class DisposableCom : IDisposable
{
  /// 
  /// Public constructor to take a single COM object
  /// to call Release on upon Disposal.
  /// 
  /// 
  public DisposableCom(object comObject)
  {
    // Hack to allow us to Set a COM object that is initially null
    // but want only allow COM objects
    IntPtr typeInfo = Marshal.GetITypeInfoForType(comObject.GetType());
    if (typeInfo.Equals(null))
    {
      Marshal.Release(typeInfo);
      throw new ApplicationException("DisposableCom can only accept COM objects");
    }
    else
    {
      Marshal.Release(typeInfo);
    }

    _comObject = comObject;
  }

  ~DisposableCom()
  {
    ((IDisposable)(this)).Dispose();
  }

  private object _comObject = null;

  #region IDisposable Members
  void IDisposable.Dispose()
  {
    GC.SuppressFinalize(this);
    if (_comObject != null) Marshal.ReleaseComObject(_comObject);
  }
  #endregion
}

Can anyone find any holes in this idea?

Read...