Sunday, May 31, 2009

Free Online Training with Microsoft Ramp Up

Chris Bowen posted a great link to some free online training from Microsoft.

Check out for info. It includes training on ASP.NET, changing from PHP to ASP.NET and other topics (including VS2008 and Windows Mobile 6)

Get training on things. Hopefully if you are looking for work it might help you out.

Friday, May 29, 2009

Certification Presentation

This week I gave a presentation on Microsoft certifications. I currently have 11 certifications and wanted to share some ideas to help others get their certifications as well. With the job market like it is, we can all use a boost up to help us. Here is the presentation for all to enjoy. If you need it in an older version of Powerpoint, let me know.

Microsoft Certifications

Wednesday, May 13, 2009

WPF Splash Screen

One thing that many people write for their programs is a small dialog that loads up when you start your application. Sometimes this is just an image file and other times it might show you the progress of the app loading, or even something else. Well now WPF applications can have a simple splash screen for free. This only applies to WPF since I tested it with Forms and it did not work at all. Well on to the coding....

Add an image to your project. I added simple.png to my little test app. from there, look at the properties of the image and it will say that the image is a resource. Just change the build action to be SplashScreen and you are done.

There are some down sides with this way of doing a splash screen. You do not get to control it. If you want to have a progress bar or to programatically change the version number, you cannot do it. Ok, I will say that there is no immediate way to do it. I am sure that one of the many smart people out there will be able to do it someday

The second thing is that it is setup to fade out in 0.5 seconds by default. There is no property on the image to allow you to change this. To make it more customizable you will have to set the image back to a resource and then in your App class create an instance of a ScreenSaver class. From this you can set the time to do the fading and the image resource to use. This gives you more flexibility, but still no handle to the dialog.

This should be simple enough for anyone to recreate it. If you want my sample project, just let me know.

This is a nice small start for WPF to get this type of feature. I like the new things that keep coming out for WPF and can't wait for VS2010 to be completed and released.

Thursday, May 7, 2009

Shameless plug for Whiteboards Can't Jump (my new iPhone app)!

Apple approved my iPhone application, Whiteboards Can't Jump, today, and I'm pretty excited about it! It's nothing earth-shattering, but developing it kept me busy for a bunch of nights the past two months.

So why am I posting about an iPhone app on a .NET blog? Well, I wrote the app, for one ;-) The biggest reason, though, is because the entire backend service layer of my app is written in C# using WCF. At some point soon I'll outline how it works, but it's a REST API using some of WCF's fun new functionality, hosted on a Windows Server 2008 VPS.

More later, but feel free to check it out if you have an iPhone/iPod Touch! US $1.99 at the App Store. You can find a link to it's iTunes page right on the home page of my website,!

Tuesday, May 5, 2009

Unemployed? Get some training!!

I went to a local .NET user group meeting a week ago. There was about 20 people in the meeting and it was sponsored by a recruiter and he asked how many people were looking for work. About half of the people raised their hands. Microsoft has a program that will help people to get training and certified. This is to help people get ready for the workforce. Some of it is low cost and other parts are free.

I wish I could hire alot of the people that I know that are looking for work, but I can't. Good luck.

Saturday, May 2, 2009

Where did my WPF Namespace go?

At work we are using a WPF gui but calling it from some old code. To get this to work we had to work around a few things with the application and the main window showing up. But this post is not about that. The new project that I am working on now is moving that same WPF application back to be the main app that gets run. But I found a small namespace issue when getting this to run.

Since the App.xaml was not being run, the old code actually called the App class directly and then created and showed the main window. During this time there was a new policy in place where we changed the namespaces to include the company name first. So MyProduct changed to MyCompany.MyProduct everywhere.

During my converting this WPF to be stand-alone again, I changed the project type back to WinExe and put a breakpoint in the constructor of the App class. The breakpoint never got hit and it went directly to the Window1 constructor. I had some important resource calls in that constructor that had to be called before things in the rest of the code were called. Why was it not hitting the breakpoint??

So in the Window1 class I got a copy of the current application and tried to call something on it to allow me to setup the resources that I needed. But when I did this:

MyCompany.MyProduct.App app = (MyCompany.MyProduct.App)Application.Current ;

I got an error that said that it could not convert MyProduct.App to MyCompany.MyProduct.App. This was strange. It took a while to figure out that the App.xaml file had a different namespace than the App.xaml.cs file. The xaml file never got the MyCompany name added to the namespace. This worked because of a could things. We were calling the App class directly and not letting the project file select it for us. The second thing is that if you look at the new App class in a new WPF project you will see that the constructor is empty. This means that there is nothing really connecting the xaml created partial class and the xaml.cs part of it. For any window class the constructor has a call to InitializeComponent. If the namespace gets out of sync the xaml.cs for the window will give an error on compiling. After fixing the namespace in the App.xaml file, all was good. The program ran and then I had a lot of other work to do. But that is a story for another time.