# 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]  | 
# Monday, December 11, 2006

I saw in my e-mail today several items saying Microsoft released Exchange Server 2007 to manufacturing. I couldn't find an official press release to that effect but since one of the e-mails was from the Microsoft Partner program I am assuming they have it correct. You can read the official press release for the launch that Steve Balmer did on November 30th at http://www.microsoft.com/presspass/press/2006/nov06/11-30NewDayPR.mspx and a Q&A about the business value of the products at http://www.microsoft.com/presspass/features/2006/nov06/11-30businessvalue.mspx.
 
With this RTM I believe that all of L.O.V.E. (Live, Office, Vista, Exchange) has not RTMed so next year should be a very good year as we try to find out how to best integrate and use the new features in our day to day lives.
 
Monday, December 11, 2006 7:17:22 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, December 08, 2006

Sorry that this post is not more technical but I have been thinking a little about marketing lately. It started after the last Utah County .NET User Group meeting where I asked for suggestions on how to improve and was told that maybe we should look at marketing the group a little more. The idea being if we could get discussions on the forums or something else to create a little buzz we could get more attendance at the meetings and also more support from sponsors. I am still working on what the “right” way to do that is. I realize how hard it is to do correctly and how easy it is to pick out other’s mistakes. Here are a few items that I would consider “bad” marketing that I have discovered or that have been pointed out to me in the last week or so.

 

The company that I work, Keane Inc. for just launched a new slogan complete with a new web design and everything else. The new slogan is “Making Global Work Work”. I know that they mean that with the help of Keane you can reap the benefits of globalization. I also realize that you could twist the slogan to mean that if you hire us it will be a lot of work on your part to get globalization done correctly.

 

Another example is the e-mail I got from MSD2D on SharePoint 2007. At the top of the newsletter was the title and right under it a section on what happened today in history. It happened to be the ratification of the Constitutional amendment ending slavery. I guess I just wasn’t paying enough attention to the headings but I skipped over the heading for “Today in History:” and started reading expecting it to be an article on development. When I saw stuff about forced servitude and the like I was thinking to myself that they were taking the whole Microsoft is going to rule the world scenario a little too far. Then when I got down to the real start of the article I was again confused at the context switch into something seeming to praise Microsoft. When I re-read the newsletter it make sense to me but for a second I was reaching for the delete button and would have been left with the impression that the editors of the newsletter were not doing a good job.

 

I guess it comes down to making sure that whatever your message is, it is clear, concise, and very hard to misinterpret. I have gained a little more respect for the people who do this day in and day out.

 

Friday, December 08, 2006 12:16:31 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |