Saturday, February 28, 2009

Certification: Benefit or Just Drinking the Kool-Aid?

I have had certifications from Microsoft for 10 years now and have heard many people think that it is useless. Others think it's a good thing. I wanted to share some of these thoughts and how I got started in certifications. I was a software developers with a BS and wanted to continue my education. I worked hard and got an MS in Software Development and Management. I thought it was a more useful MS than the other ones I looked at that had topics like A.I. and graphics. It had classes and topics like requirements, managing teams of developers, and understanding the entire software lifecycle. At this time in history, not many computer science programs had those classes. After I got my MS, I was asked if I wanted to go for a PhD. But Microsoft started a certification program for software developers. This was cool, this was something that would really help me in what I did day to day - a PhD would not do this.

Soon after this I changed jobs. When my new boss asked for me to make a career plan, I mentioned the new certification program. He was excited by it and looked the plan over. Originally I was looking at use Frontpage for my elective, but my boss suggested SQL Server instead. This would be more useful than Frontpage and would apply to what we did at work. From there I started doing alot of certification and SQL work. Just want to say thanks to Steve Z. for that.

Ok - fast forward to closer to today. I look at many different programming sites, like CodeProject and some people that are regulars hate the idea of certification for programmers. They think that it is a waste of time and pretty useless. Some have commented that why should they let Microsoft dictate what is a good thing for programming or SQL Server. For example, the exams wanted to cross reference tables in SQL to have an identity index instead of just a composite. If you answered with a composite it was the wrong answer. But this type of thing is a choice for the DBA to setup and recommend. It is a personal choice, but for this type of exam it makes you to HAVE to follow what Microsoft says. I argue with them and tell them that I have learned alot by working on my certifications, but they don't listen.

Now on to today - well a year or so ago now. I got a promotion partly due to my certification. It is not the only thing that gave it to me, but it is definitely a part of it. Plus all of the things that I have learned on my way to getting all of my certifications. I have talked with that manager that encouraged me to get a certification in the first place and I asked him if it would help someone to get a job with him, he said, no it would not help. Talking a bit more, he said that it would help a person to get into the short list, but it would not be a deciding factor in who gets the job. Just who gets a phone call or an in-person interview.

Of course if you are not looking for a new job, how does it help you? Many people have asked this question. One guy that works for me has said that he has learned so much with studying for the certification exams that he did not learn with day-to-day use of the technology. This allowed him to use other techniques or classes that he would not have used before studying for the exams. So this as definitely helped him. Not just because I promote certifications, but because he is learning and working with these things on his own.

So if all the certifications and exams do is to make you drink more of Microsoft's Kool-Aid, I say, pour me another large glass.

Tuesday, February 17, 2009

Upgrade Exam and Second Shot

This year marks 10 years of certification for me. Of course I look back and I have not gotten any new certifications in TWO years. TWO years is huge. Have I been too busy to get any new certification? Have I been a slacker? I felt it was time to continue with some certifications and decided to take the upgrade exam 70-553. This was the first time I ever did an upgrade exam and was abit nervous about it. But I want to share how it went and something else, Microsoft's Second Shot program - which I had hoped to never use.

I first went to the web page for the 70-553 exam to see what areas the exam is going to cover. Take a look at it, there is ALOT to cover. Three different sections of material and in each section huge lists of topics. I looked up all of the different sections and tested things out for a while. I studied for a long time. Dang there are alot of parts to this exam. Am I sure I want to do this upgrade exam? I have been using .NET 2.0 for my own things and for work, so I felt I was ready.

When I went to sign up at Prometric, I first went back and signed up for the Second Shot. I figured that if something happened and the test was harder than I expected I could take it again. Then I entered the Second Shot voucher code into the payment form when I paid for the exam.

I get to the test and go thru the normal things that we all do when the test starts. It was a long test, but I thought I did pretty well, I took my time, checked things over, wrote down some comments on a few questions, marked some for review, and finished up. Time to come to the results and...... I failed. I failed?? I have been doing .NET 2.0 Windows apps and ASP.NET apps for years. How could I fail? I get the results paper and it says something different than other ones. The results of the upgrade exam are the results from the lowest scoring exam (I am paraphrasing). It showed how I scored on each section and my grade was the grade of the lowest one. At first I was a bit upset. I never read anything that says that each section was graded separately. Any other test that I had taken was not like that. How could they do this without warning me?

In the afternoon after cooling off abit, I went back to Prometric to see about scheduling the makeup exam. But the Prometric website still had the test as pending so I could not sign up for it again. By 5pm, the results were on the Prometric website and also showing up on the Certification Planner on the MCP Member site. I mthen went to sign up for it again and got a slot on Friday 13th. That is a lucky day for me, so I figure it would be a good day to retake the exam. To get the right Second Shot code, I had to call Prometric to get the voucher code to enter. By now it was after 5 and was hoping they were open later than this. They were open until 8pm for phone support. I get the code, enter it, and get the makeup exam for free. Thanks for that Microsoft.

So remembering the areas of the exam that I felt I did bad in, I went back to studying and the exam web page to make sure I knew what areas were on the exam, because I did not know if I was going to get some of the same questions, all the same questions, or none of the same questions. I knew I did well on some things and on other parts I struggled. So I studied and studied, looked up things in the MSDN library, and wrote some sample test apps to see what I remembered if it worked one way or another from what I expected. Friday came, the test started, the questions were... hard, I second guessed myself here and there, and passed the test.

The upgrade exams for VS2005 up to VS2008 are actually separate for Windows and Web. I think that this will make them easier since not everyone does both web and Windows. I do both, but not everyone does.

So overall, this was my first experience with an upgrade exam. My first use of the Second Shot program. I wanted to blog about both of these things to show others what to expect. The upgrade exams 70-553 and 70-554 are scheduled to expire on March 31st, 2009, so if you need to take the exams, take them soon. Study hard, sign up for the Second Shot, and good luck.

Wednesday, January 28, 2009

Obfuscating Silverlight

One thing that people that develop .NET applications know is that users can use tools to decompile the app and get to your source code. This is good and bad. The good is that it is easy to look at source that people use and see how they do things. The bad is that people can look around at your source and steal what you do or even unlock functionality or sell it as theirs.

There are alot of .NET obfuscators and .NET protectors out there to buy. Most do a good job to at least obfuscate the code and at best totally stops the decompiling. When Silverlight came out people were concerned that their dlls would get downloaded and people could just see the code just like with any other .NET assembly. With Silverlight 2, things compile into a dll that gets put into a .XAP file, which is just a zip file. I even have a plugin for .NET Reflector that can look at a Silverlight URL and let you look at the source. If it is this easy to get the source how can developers protect themselves?

I have a protection system that I use for my .NET applications and wanted to see if it would work for a Silverlight 2 application. I ran it using the normal settings that I use for .NET apps and it just throws exceptions for Silverlight. Then I played with all of the options and finally got it to work. It is not as secure as I would like but it works. If you want details on what I use and the settings, please contact me.

I went and searched to see if any other systems out there support Silverlight 2. I found 2 systems out there that say they support Silverlight and 1 that says that it supports .XAP files directly. I mean they are just zip files, why should that be too hard to support. The first one is DeepSea Obfuscator. It says that it supports .XAP and Silverlight 2. The second that I found is SmartAssembly Professtion Edition. I have not used these since mine is working for me, but they are advertising that they support Silverlight and will obfuscate or protect it. Good luck with protecting your Silverlight applications. Let me know if you have success with either of these tools.

Wednesday, January 14, 2009

Shrinking Silverlight

One thing that is interesting about Silverlight 2.0 is that it makes a xap file which is really just a zip file. One thing that you can do to make a smaller xap file is to unzip it and rezip the files using your favorite zip program. On one app that we are working on, using the techniques mentioned in the article we save about 50%. This helps to make the file smaller for downloading and makes it faster for people with slower connections or systems. Take a look and see how much file size you can save....

http://designwithsilverlight.com/2009/01/04/shrinking-xap-size/

Monday, January 5, 2009

Cool Tool

I was looking for a tool to mount an ISO image to a drive letter that works in Windows. I found a free one that works great in Windows (even x64).

http://www.slysoft.com/en/virtual-clonedrive.html

Wednesday, October 22, 2008

Certification Second Shot Changes

Microsoft is trying to entice more people with their Second Shot program. If you sign up for this program Microsoft will give you a free second change to take a certification exam if you fail it. I have signed up for this in the past, but never actually used it (hehe). Well this program is now even better.

You still get to retake an exam if you fail it. But now there is an incentive for people that pass the exams. If you pass you get 25% off the price of the next exam that you take. If you take alot of exams like I do, this is a nice little benefit.

http://blogs.technet.com/mslcommunity/archive/2008/10/16/and-the-goodies-just-keep-rolling-in-second-shot-s-double-incentive.aspx

Have fun with your testing.

Sunday, October 12, 2008

Linq-to-SQL and Derived Classes

LINQ is a nice new data technology that really provides alot of functionality. LINQ-to-SQL is a version of it that talks to a SQL Server database and will generate classes for you to use. I had a small problem that took a while to figure out that I wanted to share.

I had a class generated from the database called User. From there I had a derived class named ProtectedUser that has some things set in it automatically. When I created a ProtectedUser object when I went to save off the object to the database a null exception was thrown. This was confusing since there was nothing wrong with the object and nothing was null.

Looking around online I found this article that describes the problem:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=310798

After changing my code to create a new User object and save that off instead things worked perfectly fine. This was hard to find and took weeks of working on it on and off to find it. I wanted to make sure to share this with others to save them the time.