# Friday, January 05, 2007

So far I have done all of my Vista beta testing using the ultimate edition but I finally decided to install and work with the Home Premium Edition. I am assuming that this will be the version loaded on most machines sold after the general availablity on the 30th of this month so I wanted to see what it would look like. The big project I tried out was creating a movie and display it. My wife works with the children aged 18 months - 12 years old in our church. She had lots of pictures taken from various activities that they had throughout the year and wanted to put them together as a movie and show them on the 30th. Of course that meant that I was responsible for contacting all the people who had taken pictures, getting them together, organizing them, and then making the movie.

I started off by setting up the machine. I installed the OS and then set up another user who is not an administrator to do all the work. I wanted to see what the end user experience would be like. Just to make things more interesting I turned on the parental controls for that user as well. I set them kind of strict just to see if they would get in the way of my video editing. I knew I wouldn't get any bad pictures so what I was really interested to see was if I would be forced to rate the pictures I was looking at or if I would get a lot of prompts.
Overall I was very pleased with the experience. I was able to preview and work with all of the pictures. I only ran into the parental controls one time when I clicked on some music and was told that I would have to provide an adiminstrator password to play the song. What I really wanted to do was download the song so I cancelled out and used the context menu to download the song instead.
I was impressed with Movie Maker. I hadn't spent a lot of time making home movies before and I found it really easy to use. I especially liked the auto movie feature where I could select a bunch of pictures and then have it make them into a movie segment with a title, trailer, and random transitions between the pictures. I couldn't figure out why it wouldn't do it for clips that would end up being less than 30 seconds (10 pictures in my case) in length. I guess they figured I could do it myself but I could tell where I was choosing the transitions because mine all seemed to be the same and not as random as the ones they generated.

All in all I think that Vista Home Premium will be a good replacement for the XP Home Edition we are running now and I will probably end up buying a machine around the first of February with it installed. I will continue to play with it until then trying to find anything that will break in my home network. One thing that I am really liking is the User Account Control. It is annoying but less so than my current situation where I have to run a batch file (makemeadmin.bat) that I got from Aaron Margosis' blog to go and do administrative tasks since I am not an administrator. Now the OS just prompts me when I need to have elevated privileges and I don't have to worry about going and doing something first.

Friday, January 05, 2007 1:13:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, January 01, 2007

Here it is the first day of 2007 and the new year is full of promise. As I stated last year I have given up on making predictions (at least in public) about what the new year will bring. I am still looking forward to another great year. With MIX07, TechEd, and PDC along with the local launch events for Live, Office, Vista, and Exchange and all the user group presentations I am sure this year will be a busy one for me. I look forward to learning and discovering new things and doing my best to share them with you, my loyal readers.

May 2007 be a happy and prosperous year for you as well.

Monday, January 01, 2007 9:44:55 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Saturday, December 30, 2006

I have been missing out on a lot of blogs lately. It is not the usual excuse off not enough time but instead it appears that my "software" is not working. I have tried several different programs for reading blogs but for one reason or another have abandoned most of them. The ones that integrate with Outlook have held my attention the longest but even then I have always had problems with them and given up on them. Here is my wish list for the perfect reader:

1. Work with software that I am already using (Outlook, IE, etc.). I really don't care as long as I don't have to open a separate program to get the information.
2. Show me a view with subject and the first few words. There are blogs that I always read just because I know the person posting them or because they have always had good information. There are others that I scan. I also subscribe to a few that I mostly don't read but they sometimes have some gems in them so I want to see what is posted and make a decision on whether or not to read it.
3. Allow me to mark items for follow up. If I read a particularly good post I might want to refer to it later or do what the author suggests. I want to be able to find those posts quickly and act on them.
4. Allow me to customize when I see new items. I don't really need to check every hour, once a day is usually fine with me.
5. Allow me to categorize blogs. Referring back to item 2 I like to have "folders" for always read, sometimes read, scan, etc.

I don't think I am being that demanding in what I want. I thought I had found the perfect solution in squeet. With squeet I could ask it to go out and scan the blogs I am interested in and e-mail me the posts. I liked it because it met my first 4 criteria. I could see the items in Outlook where I got the title and with the reading pane could see a few lines to quickly decide whether the rest of the article was worth reading or not. I could flag items for follow up and even use different colored flags for different meanings. I could also use Outlook rules to dump the e-mail into different folders if I wanted to.

So why this post? Well over the last few weeks the mail delivery has been lacking. I have missed some posts, others have been delivered several days late, and all the time the page that shows my account doesn't have any indication that there is an error. I will still stay subscribed to squeet while I look for something I like better but I have about given up on them. Maybe it is time to try IE 7 and see if I like it's RSS handling. I might also look into using one of the many SharePoint add-ins to see what they are like. If you have a favorite reader that meets my requirements I would love to hear about it. Please post a comment or drop me an e-mail.

Saturday, December 30, 2006 4:36:15 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  | 
# Monday, December 25, 2006

I want to wish you all a Merry Christmas. At this time of year my thoughts
turn to family and friends and I am very grateful for each and every one
that has touched my life this year. I wish you all the best at this time of
year and hope that the love of our Savior will be with all of us. My heart
goes out to the men and women in the armed services and I pray that peace
will prevail and they will be able to return home.

Monday, December 25, 2006 7:46:34 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, December 21, 2006

Back in March I posted about taking the Microsoft 071-553 and 071-554 exams. At the time the exams were in beta and I had to wait a while to find out how I did. After about 5 months (OK, it wasn't really a priority to find out my scores) I realized that I hadn't heard anything from Microsoft about them. I started trying to track down my scores. I contacted Microsoft and they told me that the test provider would have that information. I tried the test provider and they told me that Microsoft had the information. To make a long story short there was a lot of finger pointing and nobody knew what happened to my test information. The best that I could get was that they could tell I had registered for the tests.

I decided to retake the tests. If I had one word of advice it would be to stay away from the testing center when I go in to take a test. When I took the first test I had computer problems. The machine they put me on would spontaneously reboot. It was saving my answers and starting me over again so I wasn't loosing any work, and the countdown didn't seem to be affected but it was a little unnerving. They moved me to another machine that would hang periodically until the first machine was rebooted. When I went in to take the test today it would bring up the screen and ask me for my testing id. I would enter it and click on the enter test button, I would then see a screen saying the test was initializing and then a please wait screen and then back to the screen asking me for my id. The nice lady at the test center ended up calling the test provider for support and talking to someone in England who knew what long drawn out process needed to be followed to get the test working. Interestingly enough the guy on the phone said it used to be documented but wasn't used that much any more so they dropped it from the documentation.

I did eventually get into the test and finished taking the second one. I passed the test so now I am officially upgraded to the MCPD certification. The thing that was most surprising to me is that the final tests seemed to mirror almost exactly what I remember from the beta exams. In the past I have taken beta exams and then seen the exam objectives for the final exams and they seemed to be very different.

Thursday, December 21, 2006 10:32:40 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, December 19, 2006

A lot of times when I introduce myself I will say that I am a Senior Principal Consultant with Keane, Inc. and a Microsoft Regional Director. I joke that the job with Keane is my 9 -5 job and that being a Regional Director or RD is my 5 - 9 job. I find sometimes that people do not understand what the job of an RD is. Mostly because the title is so confusing. I don't work for Microsoft. I don't really have a region I am responsible for (although living in Utah I tend to focus my efforts here). I also do not direct anything. Now fellow RD and columnist Jonathan Goodyear has written a column titled Demystifying the Microsoft Regional Director. He does an excelent job of explaining what we are supposed to be doing.

As Jonathan says in the article, Microsoft expects me to be communicating with the community. I hope that this blog is one way I am meeting your needs. Also if you would like to have me come and talk to you I would be more than happy to do so. You can leave a comment or contact me at Scott_J_Golightly at keane dot com and we will schedule a time and topic. (Sorry for the semi-obfuscated e-mail but I figure I shouldn't make it too easy for the spammers :)

Tuesday, December 19, 2006 8:30:10 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, December 15, 2006

I just read an article on MSDN by Joe Duffy from the CLR team at Microsoft. It goes over parrallelism and how the CLR handles it. I got the pointer to the article from SQL Server Central so I figured it would deal with SQL CLR. It really talks about parrallelism in general and some of the different things to look out for when trying to speed up your applications. It is a really good read on some of the things to consider when trying to make sure your code takes advantage of the new architecture and gets top performance.

 

If you have ever heard me talk about threading or asynchronous calls in .NET you have probably heard my favorite story of slowing down code using parrallelsim. For those of you who have not heard the story here it is:

 

In the late 90s I was working with a client and we were replacing an accounts recievable system written in Clipper with one written using Sybase SQL Server and PowerBuilder. We had told them that due to the architecture it would probably be a slower product but more stable. They seemed to agree with us that it was a necessary trade off but the requirements specification still said something like “the system must be fast”. In talking to the IT department they told us not to worry about that requirement since we couldn’t measure “fast” and they were aware that it would be slower.

We finished the project and got IT to buy off on it. I went out to the client site and installed it on the Director of Finance’s computer. The IT people, the CFO, and some other really important people were in the room along with my bosses. The director was running the program and before he started it up he opened his top desk drawer and took out a stopwatch. I had a sinking feeling. He started the stopwatch when he started looking up an over due account. It took about 9 seconds to retireve the data. I was thinking it wasn’t all that bad. He refused to sign off on the project since his idea of fast was 3 seconds. We all tried to tell him that 3 seconds was not reasonable and that it would be fine but he stuck by his decision. The reasoning went that the system was used by people calling someone and saying they were late in their payments. The person on the other end of the phone would immediately be in a bad mood and any delay or lag in the conversation would only make their mood worse so it had to be 3 seconds since that is not an uncomfortably long time to pause.

We went back to the office dejected and started profileing the application, the network, the database, anything we could think of to make the application faster. We got it down to 5 seconds and went back to the director. He was impressed but still refused to sign off since it was 2 seconds too slow. We were thinking we were not going to get paid for an awful lot of work.

This was in the days before hyper threading, multiple CPU machines, and dual cores so we really had limited options for running things in parrallel. One of the guys on the team got the idea to change the form start up code so instead of going out to the database and retrieving the data it would just put messages into the Windows message loop that would call other methods to retrieve the data and then display it. It was the first asynchronous programming I ever did and looking back on it now I realize it was really bad. We didn’t handle any synchronization issues on the main thread and also didn’t take into account any caching that the OS might be doing.

To make a long story short we took our new version out to the director. He got out his stopwatch and again clicked the button. The window appeared immediately and he turned around to congratulate us. As he was talking I watched over his shoulder as data started popping up at various locations on the screen. It was mostly top left to bottom right in order but wasn’t always guaranteed to show up that way. The director was busy talking to us and didn’t notice it so he decided to sign off on the project on the spot.

Later we ran some tests with the stopwatch. Our efforts at asynchronous programming had “sped up” the application from the original 9 seconds and the optimzed 5 seconds to a very fast 12 seconds. We figured out that the overhead of all the messaging, opening multiple database connections, and painting on the screen had caused the slow down. By running on separate threads each one had to open a connection to the database and it wasn’t being pooled so that was the biggest slow down.

 

The morals that I learned from that experience and many others (and that I seem to have to relearn on a daily basis) are:

  1. Correctness is much more important than speed. If you get the wrong data blazingly fast it will make the customers more angry than having to wait a few extra seconds.
  2.  Don’t optimize until you have completed the code and can measure it. You may suspect that a portion of the code will be slow but until you have some solid numbers you don’t know for sure and you could be making changes to code that hardly ever runs or worse making things go from 5 seconds to 12.
  3. Running code in parallel is difficult. Whether you use an asnychronous pattern or try to write it yourself using primitives it is hard to understand and harder to get right the first time.
  4. Debugging parallel code is even more difficult. By its very nature errors are transient and difficult to find. I prefer to use the thread pool or background worker component whenever possible because some really smart people at Microsoft have figured out how to do it correctly and there have been many more thousands of hours spent debugging that code than I want to spend debugging my algorithms. If your particular work load will allow it you might also be able to use the features of Enterpise Services (COM+) to get a degree of parallelism without having to do a lot of extra coding work.
Friday, December 15, 2006 9:03:28 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

I just read a blog post at http://www.techcrunch.com/2006/12/14/bill-gates-on-the-future-of-drm/ where the author said he was in a meeting at Redmond to talk about Mix 07 and got to ask questions of Bill Gates. His question was on DRM and he got a candid response that DRM in its current state is broken. I have said before that I support the rights of artists to make money but I shouldn’t have to have a special device or any code to play music that I have purchased legally. As I read through the comments there were a lot of people supporting the same view (and of course the RIAA is evil view is in there as well). I don’t know what the solution is but I do know that I have pretty much stopped buying music over the last few years. There are so many pod casts and other sources of information that I am satisfied with the music that I currently have when I want entertainment and have something useful to fill up all the other long hours in the car.

Friday, December 15, 2006 7:49:27 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, December 13, 2006

Microsoft will be holding the next Professional Developers Conference (PDC) October 2-5, 2007 in Los Angeles, with two days of pre-conference on September 30 and October 1.  Save the date!

The PDC is the definitive developer event focused on the future of the Microsoft platform.  PDC 2007 attendees will have the opportunity to access new code, learn about the latest Microsoft product offerings and hear from Microsoft executives about the various platform developments.

Check http://msdn.microsoft.com/events/pdc/ for updates; you can also subscribe to the RSS feed to find out more information about the event as we get closer.  Registration will open in the May/June timeframe.    

Wednesday, December 13, 2006 9:08:12 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |