Tuesday, January 17, 2006

Visual Studio and SQL Server Launch Event at ETNUG

Tonight we held our VS2005 & SQL Server 2005 local launch event.  Microsoft provided some copies of the software to raffle off to the user group members, and Jason Bentley and I presented some features from the new products.

Jason showed some awesome new failover capabilities in SQL Server 2005, and I did a presentation on the new Windows Forms controls and deployment features under the heading of “Smart Client”, whatever that means.

We had a good turnout, and everyone seemed interested in the topics being presented.  I had a few gaffes in my presentation, but nothing I haven’t seen the professionals do. ;-)

The next meeting is two weeks from tonight, and I expect to see a good turnout then as well.  It looks like The East Tennessee .NET User’s Group is healthy and growing in 2006!

 Thursday, December 15, 2005

Windows' DPI Setting

I spend my days looking at high resolution monitors; 1600x1200 at work and 1920x1200 at home. :-D  One suggestion I read for using high resolutions, is to bump up the DPI Setting in display properties from 96 to 120dpi.  This seemed like a good idea until I tried it.

All the title bars become too large and some applications can't cope with non-standard dpi settings.  I see enough bad formatting on the web. I don't need it on my desktop too, so I changed the setting back.  Unfortunately the window captions were still the wrong size.  I fixed this by going to Display Properties -> Appearance -> Advanced and playing with the title bar settings until things appeared normal.

This would seem to end this chapter in my battle with Windows(tm) except that I earn my living using two Integrated Development Environments: Visual FoxPro and Visual Studio.  Both IDEs make use of sub-windows with half-height captions.  After my DPI Setting experiment, these captions were twice as tall as they should be with complementary giant, blocky icons. :-P

I have put up with this situation for months, until today.  Today I found my limit in tolerating ugly displays and set about correcting the issue.  Unfortuanately, Google did not provide me any leads.  I find it unlikely that nobody else has had this problem.  Given my state of mind, I perceviered.

I set  about searching the registry for vaious keywords.  I eventually found the WindowMetrics key under Users\.Default.  I exported that key, edited the path, and imported it into the equivalent key in the CurrentUser node.  After a quick logoff/logon to reload the registry, Bob's your uncle!

The attached file should serve to correct this situation for any other users with this affliciton.  Change the extention from .reg.txt to .reg, double-click, select OK, and you'll be golden.

++Alan

WindowMetrics.reg.txt (4.4 KB)
 Wednesday, December 14, 2005

VSTS Virtual Labs


Register Now!

I got this link from our Microsoft Regional Developer Evangelist.  It looks interesting, but I haven't had a chance to try it out.  If you complete one of the labs, please let me know what you think in the comments.

++Alan
 Tuesday, December 13, 2005

iTunes and Windows Media Player Play Nice

I've been playing with Home Theater PC software for a couple years.  I settled on Windows Media Center Edition as my platform a few months back. 

It isn't the best, but it is the easiest.  It works out of the box, and has a great remote preconfigured.  I got tired of fiddling, and wanted an appliance that just worked.  MCE discourages fiddling, because it isn't as configurable as other packages.

The one drawback for me in using MCE is that all my personal CDs are ripped as iTunes AAC files.  Actually, every HTPC front end I tried had this drawback, so it wasn't unique to MCE.  Fortunately, MCE uses the media library from Windows Media Player.  Getting WMP to play AAC files is a snap using the 3ivx codec.

The trouble begins when you want to see tag info.  You won't see any artist, album or track info after you add the files to WMP's library.  In fact, you may find your AAC files in the "Other Media" ghetto... er, I mean node.

So here's the fix I worked out:  Remove all AAC (.m4a) files from your WMP library.  Apply the m4a.reg registry patch linked below.  Add the AAC files into your WMP library.  At this point you should be ready to run my little import app, but there's a caveat. 

If your music is on a network drive, you need to be sure that it is added to iTunes using the UNC path. (e.g. \\computer\share)  WMP will add the files mapped this way even if you have the share mapped to a local drive.  Since I use the fully qualified file name as my means of relating the tracks in both libraries, this gave me some trouble.

The program (iTunes2WMP.exe) included in the .zip file below doesn't actually enable WMP to read the tags in AAC files.  It reads the relevant information (artist, album, etc.) about a file out of the iTunes library, and then writes it into the WMP library.  The result is the same as if WMP had read the tags directly.

I didn't set out to write a program to do this.  I tried two utilities that I downloaded (from a forum that shall remain unnamed), and they both sucked.  Not only did they not work for me, but the code was embarrassing to read.  When I don't know what I'm doing, I try to copy someone who does.  I can only assume that these people don't realize that they don't know what they are doing.

I wrote this utility in C# 2.0 because I wanted to try out some of the features of the new release.  I can report that code snippets are a terrific productivity boost in Visual Studio 2005, but the real super-duper feature for 2.0 is generics.  I created a strongly typed dictionary with one line of code, and I assure you that I did not know what I was doing when I started.  It's just that easy.  .NET generics are THE BOMB!  "Stone guaranteed to blow your mind" as James Taylor would say.

If you use this utility, I'd like to hear your comments.  I don't promise to make any improvements.  That's why you have the source.  I would just like to know if others find it useful.

++Alan

PS: The following files are provided without warranty, or assurance of fitness for any purpose.  They could melt your synapses, give you bird flu or worse, crash your system.  If they do, I'm not responsible.  Got it?

iTunes2WMP.zip (68.03 KB) m4a.reg.txt (.66 KB)
 Sunday, November 27, 2005
 Friday, November 11, 2005

Really Big Files on a CDR

Microsoft provides development releases early and often, now.  This is great because I get to see what's coming while it is being developed.  This is part of Microsoft's drive toward transparancy, and it is a good thing.  The problem is that I don't want to test these unstable releases on my work PC because, you know, I, like, make my living using that machine.  As a result, I want to install them at home, where it would be annoying if they broke something, but I could continue to pay the rent.

Seems simple, right?   I just take the file home and install it.  Well, that's the catch.  I can't just take the file home, because it is often a DVD image file, and I don't have a DVD burner at work.  (Incidently, I bought a dual layer burner for my home PC, but have you seen the price of dual layer media?)  Now along comes Jason with a terrific solution.  It's called Free File Splitter, and it is exactly what its name promises.  It's free and it splits files.  Not only that, but it provides a batch file to re-assemble the original file once all the fragments are copied to the hard drive.  Sweet! 


++Alan
 Thursday, November 10, 2005

A New, Old Dog


Last night, the kids and I visited a dog that was available for adoption. Her name is Lady Theodora, but she responds to Teddy. We all fell in love with her, and voted unanamously to make her part of our family. She is hardly a puppy, but she is very well mannerd and playful, which makes her a good match for the kids. She will join three humans and one feline as the fifth resident of The Netcave.

++Alan

Lazy Programmers

I've long said that all programmers are lazy.  There are two kinds of lazy, though.  Good lazy is when a programmer has to do something twice, she stops to automate the process, so she won't be bothered by this rote task again.  Bad lazy is when a programmer uses "clipboard inheritance", mindlessly copy and pasting code, and not stepping back long enough to find a better solution, much less the "best" solution.

This was brought to mind again by a post by Phillip Lensen (via Foxpro.catalyst):
Why Good Programmers Are Lazy and Dumb
I hadn't considered the dumb part, but I do look for a drive to constantly investigate and learn when evaluating a job candidate.  Phillip makes some interesting points.

++Alan
 Wednesday, November 09, 2005

Totally Cool Firefox Extension

I have used the Image Zoom extension in Firefox for many months.  This week I downloaded an update using the friendly Firefox update feature.  It was only today that I "discovered" an exciting new feature.  If I hover my mouse over an image in Firefox and scroll the mouse wheel, the image zooms in or out depending on the direction I scroll. 

Totally cool!

++Alan

Today's Story...

In which our hero becomes a shameless media whore:

Microsoft's Visual Studio Team Server enters the arena

Microsft's approach is broad, said Alan Stevens, and leaves room for other vendors. Stevens, a Visual Studio developer who helped co found NTeam, an open-source alternative to VSTS, said "The best of breed components was not the priority; it was the best of breed across the whole development lifecycle. For example, they don't have the best source control or bug tracking, but they were not trying to. What they are selling is the integration of the various pieces so there is no context switch."

Stevens pointed out that other tools used by Visual Studio developers would require developers to switch contexts in order to communicate programming progress. That puts extra overhead on already beleaguered developers. VSTS integration, he said, "provides a kind of automatic tracking so they don't have to manually tell the tester when [something is] complete."

"With Team System, I check in the code and get a list of work items. When that check item is resolved, it immediately e-mails the tester and they can begin testing," said Stevens.

++Alan