As per my last post I've moved my blog to here: http://blogs.windowsclient.net/bestsnowman/default.aspx

Be sure to update your bookmarks, or feed readers. This site will be up for a while too deal with DNS and backing up data but there will be no more content updates. I may post reminders to update your links but no new content posts.

Thanks to some financial suckiness I'll be either moving or shutting down my blog. PowerDNN has been an incredible host for the years I have been with them, and their performance has nothing to do with this situation. The price isn't unreasonable either but with my current financial situation the it kind of falls into the "wants not needs" category.

I don't know how many real people even read this blog, I only know of 1 for sure and I'm not sure its even worth it to continue. If you read this blog with some level or regularity and don't want me to quit leave a comment to this post and let me know (or if you know my email address email me). If I keep blogging I'm thinking about going to Live Spaces since I can easily set it up with my domain since I am using Live Domains for mail anyway. If you have any suggestions for other places for me to host my blog (for free) let me know in comments or email.

I'll keep this site and host up for a month or two until I figure out exactly what I'm going to do.

http://msmvps.com/blogs/chrisl/archive/2008/08/08/1643957.aspx

Microsoft finally went public with its intentions for the "Windows Media Center TV Pack" also know as codename Fiji and unfortunately confirmed it will only be available to OEMs. This seriously sucks for existing and non-OEM users because it means we have to either buy a new OEM machine or wait till Windows 7 and hope its included. The big feature in the TV pack (at least for US customers) is ClearQAM, or unencrypted digital cable, which will become a mandatory upgrade needed by 2011 when cable goes all digital.

If I want to upgrade to ClearQAM compatible tuners I have three options:

  1. Buy a new OEM PC. This is an insult to those of us that build our own machines because OEM machines are almost always more expensive and contain inferior hardware (unless you really want to spend money).
  2. Wait until Windows 7 comes out and purchase a copy and hope that the TV pack features are include. This is an even bigger slap in the face to those of us who purchased retail copies of Vista Ultimate (which retailed at $400 though can be found at discounted prices) with the intentions of using Windows Media Center.
  3. Use something else, frankly this seems like the best option.

The Media Center largely floundered prior MCE 2005 because you were so limited in where you could get it. XP MCE 2005 was available to those of us who like to build our own machines. With Vista two versions shipped with it included bringing it to the masses... until now. Basically the Windows Media Center team said feature updates (that frankly should have been included from the get-go) are only available through new OEM machines.

Hopefully this decision will raise enough of a ruckus to get this decision changed, but if it doesn't I'll be done with Windows Media Center. I won't wait for a new version of Windows and pay full price for features available to OEM customers now and I won't spend the money for a new machine when I have a working machine now. The only feature of Windows Media Center than I can't cover with existing home theater equipment is DVR functionality and I can get a standalone DVR from my cable company. If custom builders are left out in the cold whenever new features are released then I'm not going to waste my time and money.

posted @ Friday, August 08, 2008 6:48 PM | Feedback (0) | Filed Under [ Rants ]

Something that has been annoying me lately is when AJAX web apps degrade the experience. As a case in point I'd like to point out Windows Live Hotmail. I like Live Mail and use the web interface whenever I'm away from my computer, but it can be really annoying. The Check Mail button is my big peeve, you click on it and almost instantly this little message pops up between the menu bar and the mail viewport that says "You have no new messages".

Whats interesting is this pops up, for me at least, everytime I do a check mail. Adding to the interest is that sometimes when I hit check mail I actually have "new messages". So after Windows Live Mail politely tells me I've got nothing new a little "Working" message shows up in the bottom left hand corner of the screen and then after a short wait my new email shows up. Except WLM still tells me I have that I have no new messages because that message doesn't go away.

Now the "You have no new messages" message is annoying, but what really bothers me is that it takes as long and sometimes longer to check for new email the AJAX way than it does to do a full refresh. If there is no advantage to the AJAX way why bother with doing it that way? The same thing bothers me with Google Reader, there are times when you get no visual notification the link you just clicked on is doing something till after a typical page navigation would take. Thats not better, when the screen goes blank and starts loading the new page you knew it was doing something. If you wait longer than that for the page to be loaded asynchronously and then displayed the user is left wondering if its actually doing something. On some ajax sites I have found myself assuming the link either completed and wasn't a noticible difference or just failed and ended up going somewhere different in the middle of reading something or getting a javascript error.

posted @ Thursday, July 31, 2008 9:30 AM | Feedback (0) | Filed Under [ Rants ]

Now with Calendar Sync

I was pretty hesitant to even bother downloading this as I had given up on the previous version. The old one was very slow and unreliable for me and I couldn't sync anything with my Treo 700wx. I decided to give it a shot and installed it on my desktop. I hadn't used Outlook since my last repave of the system so on the first open it prompted me to set up a Live Mail account. I pointed it to my Live Custom Domain email account and after a while syncing online it was ready to go. It brought down my mail, calendar, and contacts without a hassle. Even better the way it set up the mailbox I was able to sync all three to my Treo. I now have a reason to use Outlook and for the first time in a long while the contacts and calendar are all synced up.

I was talking to Loren about doing a presentation about WPF and he mentioned something called Prism. It seems Prism was/is the code name for "patterns & practices: Composite WPF". Prism is a much better name if you ask me, and I have no idea why  both patterns and practices are not capitalized. It appears that the patterns & practices team is using CodePlex as distribution and information site (http://www.codeplex.com/CompositeWPF).

The Composite Application Guidance for WPF can help you split the development of your WPF client application across multiple development teams, each responsible for the development of a piece of the application, and help you seamlessly compose those pieces together into a client application.

What this means, to me at least, is that instead of the whole application being one single code base it is split up into modules that snap into a what is essentially a shell application. It is very similar to web parts in an ASP.NET application. This method of splitting up responsibilities can provide quite a few advantages to a project. Depending on what each module does it can allow a team specialized in that specific vertical. Splitting code responsibilities also gives you reusability, if done right, and can provide an atomic unit so changes to one module don't break other modules, again assuming its done right. decoupling a specific portion of your app into a module like this gives you significant maintenance advantages because the module's logic lies within the module and doesn't (shouldn't) tangled with the app layout.

I'm by no means an expert in Prism, I'm in the process of learning this myself and will be posting things as I go.

Today I was looking through some code, that I didn't write, and found an interesting nugget. For those of you who haven't figured out the title yet let me explain that first. In C# the ?: operator is pretty simple and handy. Lets look at this example:

cond-expr ? expr1 : expr2

If cond-expr evaluates to true then expr1 is returned, and if it evaluates to false then expr2 is returned. Simple enough right?

   1:  bool SomeValue = true;
   2:  string message = SomeValue ? "Yes" : "No";
   3:  // Message is "Yes" 
   4:  message = !SomeValue ? "Yes" : "No";
   5:  // Message is "No"

The example I found was a little bit different, the example I found expr1 was true and expr2 was false.

   1:  bool IsSame = item1 == item2 ? true : false;

So basically if (item1 == item2) evaluates to true then IsSame is set to true and if false than IsSame is naturally set to false. This may seem to be fine at a glance, but it is the same as this:

   1:  bool IsSame;
   2:  if(item1 == item2)
   3:  {
   4:       IsSame = true;
   5:  }
   6:  else
   7:  {
   8:       IsSame = false;
   9:  }

There are really two problems with this, first its a good example of The Department of Redundancy Department. The second problem is that it confuses the intention of the line of code. If you have this:

   1:  bool IsSame = item1 == item2;
   2:   
   3:  // or in a slightly more explicit way
   4:  bool IsSame = (item1 == item2);

which is logically the same it is clear that you want IsSame to be true when item1 and item2 are are equal at first glance. I spent a little while trying to figure out why this is needed. The only reason you would need to use true and false as expr1 and expr2 is if bool had more than two values. I guess maybe its future proofing for maybe being added to the possible boolean values.

posted @ Wednesday, July 23, 2008 7:33 PM | Feedback (0) | Filed Under [ C# .NET ]

Tonight the Mankato .NET User Group had an awesome presentation on XNA. This is the first time I've really seen and a demonstration of the code flow and whole coding paradigm. I was blown away at the similarities between XNA and Win32 when it comes to drawing. In Win32 you have to draw your entire app, or in some cases just parts, when you receive a WM_PAINT message. Similarly in XNA you have to draw your game when the draw event is called. In Win32 you get a WM_PAINT when all or part of your window has been invalidated and needs to be draw. XNA calls draw sixty times a second but what you do inside draw is conceptually the same.

I have a couple things that have been annoying me lately both on my tablet and desktop. The first one is my tablet and is responsible for a dead battery if I leave it in the wrong place. My tablet is an "entertainment pc" which is great, though a bit underpowered for it. Conveniently HP includes a small remote control that hides in the express card slot. This remote seems to function in the most part the same way as your standard Windows Media Center remote, except it will only control the laptop and not my Windows Media Center PC which is all fine and good because its a small remote and I have no reason to use it for my TV watching needs.

What's the problem? My WMC and Harmony remote can control both, and that is a problem. The HP has an unbelievable IR receiver and somehow picks up power on/off IR messages even when the receiver is blocked. That is a big problem if I ever want to leave my laptop off anywhere near my TV. Write now I'm sitting on the couch writing this with the TV on in the background. If I shut down my laptop and set it on the coffee table and watch TV for a while before I call it a night when I go to hit the power button on my Harmony remote my laptop will turn on. The only way I have found to make the HP ignore the remotes is to have it in a different room. That is unacceptable.

My other peeve is from ATI, if I didn't have such good luck with my TV 550 Elite tuner cards I'd write them off for good because I have had nothing but troubles with my most recent ATI video cards. I have two ATI X1600XT cards that are stable when I am lucky, and well lets just say I've had a lot of unlucky time with these cards. I had one get so warm it warped its how heatsink shroud. My current annoyance is the drivers, however. The whole catalyst control center is kind of nice (though I prefer NVidia's control panel) and despite being slow and unstable usually works enough to get the job done. Just wait till you log in with remote desktop. Guess what, you get a message that CCC has crashed! Seriously how hard is it to check to see if its a remote desktop session. There is no reason why ATI should assume that its acceptable for their driver and software to tweak out just because I used remote desktop. This didn't used to be a problem with their pre-CCC software and I've never seen any other video (or any other hardware) driver freak out over a simple remote desktop session.

Update: The HP will only respond to the power function of the WMC remotes, and only to turn it on (from shutdown and off, sleeping, or hibernate). So you can't even use WMC remotes as a functional remote for the thing.

posted @ Monday, July 21, 2008 8:29 PM | Feedback (0) | Filed Under [ Rants ]

Earlier this week I started reading Petzold's Programming Windows Fifth Edition. I had originally gotten it for a class I had taken that involved Win32 programming but never gotten a chance to read the whole book. I was thinking about either Petzold's Win32 book or re-reading his WPF book (which was good no matter what Jeff Atwood thinks). I thought it would be a good idea to brush up on my unmanaged code skills because frankly I'm a bit rusty.

posted @ Thursday, July 17, 2008 7:33 PM | Feedback (0) | Filed Under [ C/C++ ]