# Tuesday, July 31, 2012

Training is an important part of employee development and most managers recognize this. At the same time, most managers have a budget to which they need to adhere.

Next time you request training, do yourself, your manager, and your company a favor by articulating the reasons for this training. To reduce misunderstanding and ambiguity, state your case in writing. Be explicit about what you are requesting. This may include time away from work, training fees, and travel expenses.

Your statement should answer as many of the following questions as you  can:

  • How will this training benefit your ability to complete your current project or an upcoming project? How will this training benefit the company or department?
  • How does this training align with your career goals?
  • How much will the training cost? How much time will you need to miss from my regular assignments? Do you plan to make up this time? Do you plan to take vacation for the missed time?
  • If the training is out of town, is similar training available locally? If so, why is the out-of-town training preferable.
  • If your company provides "free" training resources, what does this training provide that is not available in those resources?

Generally, managers are supportive of training for their employees. Help them make the decision easier by clearly stating a case for your training.

Note: This blog post was inspired by a recent conversation with career counselors at the Sogeti Minneapolis office.

Tuesday, July 31, 2012 9:54:50 AM (GMT Daylight Time, UTC+01:00)
# Monday, July 30, 2012
Monday, July 30, 2012 4:57:00 PM (GMT Daylight Time, UTC+01:00)
# Saturday, July 28, 2012

I have volunteered for many community-run conferences and I have organized two: GANG10 and Detroit Day of Azure. One of the challenges of a conference is getting people to attend. It's not enough to have great content. You have to spread the word about the event and you have to inspire people to register and to attend. If your target audience doesn't know about you event, they will not attend it.

Here are a few things my team and I have done to promote conferences.

Create a web site as soon as possible and keep it updated. This will save you time. When people ask for event details, you can point them to the web site. A Facebook or LinkedIn page is fine, but not sufficient because these sites are for members only and your audience will need to log before they can read all the information.

Create a Twitter account and post to it regularly. Have that Twitter account follow all your speakers and volunteers and ask that they follow it back. The new Twitter account won't have many followers at first, but you want followers who are willing to re-tweet what you post. Prior to the event, I would post to the Twitter account every day; then re-tweet from my own account (which had more followers). Because the promotional messages are coming from the event Twitter account, it feels less like spam to my followers than if it were coming from my personal account. Consider using a service like FutureTweets or an application like TweetDeck to schedule tweets in advance. This makes it easier to space out your tweets throughout the day. Be creative in your tweets: announce the speakers; announce some of the other perks, such as door prizes and lunch menu; talk about the venue; thank the sponsors. If you repeat the same message over and over, people tend to tune it out.

Make a list of people you think might be interested in the event and contact them. If it's a couple dozen, send a personal e-mail to each one or call each one; If it's several hundred, send out an e-mail blast. Services like Constant Contact can help with this.

Who are the influencers in the area that the conference covers? Offer them a free ticket to the event. Call them and let them know you'd really like them to be there. They will spread the word and reach more people than you could on your own. If they are talking about the event, that is great advertising.

Think of popular bloggers who would be interested in this event and tell them about it. Even if they can't make it, they may blog about it, increasing exposure.

E-mail your co-workers to let them know about the event. Ask them to spread the word among their colleagues, customers, and friends.

Print flyers. Hang them up in your workplace and in your customer's workplace and anywhere that your target audience congregates. Many companies have a bulletin board in the lunch room or break room just for things things like this. Ask others to do the same. Make sure the flyer has all the relevant information, such as date, time, and the web site URL.

Register the event at http://CommunityMegaphone.com.

Get others involved. Recruit volunteers. Not only will it help defer your workload, but those who are involved will feel ownership and will be more likely to spread the word enthusiastically.

Contact user group leaders. Ask them to promote the event at their meeting. Ask if they will send out an e-mail promoting the event. Some groups have a monthly newsletter and will be happy to add to this. If possible, attend user group meetings and promote the event yourself. Ask the leader if you can have 2 minutes to talk about it.

Send an e-mail to speaknet@googlegroups.com. You will need to join this group first.

Create an event on Facebook and LinkedIn. As mentioned earlier, this is no substitute for a web site, but you may reach an audience that you otherwise might miss.

Contact the chair of the CS department of local universities and ask them to promote to their students. Consider offering a discount or free admission to students.

Contact podcasters and ask if you can be a guest on their show to talk about the event. I appeared on Community Megaphone a few weeks before GANG10 and this helped spread excitement about that event.

For Microsoft events, contact your local Developer Evangelist. They have their own channels for communicating with the local technical community.

I have done almost all of these things in order to drive interest in the event. The two key points are: let as many people know about the event as you can; and get people excited about the event.

Planning an event is a lot of work and a lot of fun. But the payoff is more satisfying if you have a good turnout.

Saturday, July 28, 2012 7:44:54 AM (GMT Daylight Time, UTC+01:00)
# Tuesday, July 24, 2012

Functional testing, system testing, and acceptance testing of software often involves manual actions by a user. To verify that an application works as designed, a user launches the application, navigates to a specific module, enters some data, and verifies the expected output.

Such testing tends to be expensive in terms of time, labor, and money. In addition, like all activities requiring human intervention, testing in this manner can often be error-prone and inconsistently executed.
Microsoft Visual Studio 2010 Premium and Ultimate contains the Code UI Testing tool that provides a way to automate these tests, so that regression testing can be performed more quickly, efficiently, and consistently.

A Coded UI Test gives developers and testers the ability to create tests that simulate user interactions with an application.
Coded UI Tests are stored in a Test Project. To create a new Test Project in Visual Studio,

  1. Select File | New | Project… The New Project dialog displays. 
  2. In the Installed Templates panel, expand the Visual C# or Visual Basic node and select the Test category.
  3. In the Project Type panel in the middle of the New Project dialog, select Test Project.
  4. Enter a name and location of the Test Project.
  5. Click the OK button. Visual Studio creates a new Test Project. You can view it in the Solution Explorer.

In our example, the project is named TestProject1. Link: Download TestProject1.

By default, a new Test Project contains a Unit Test class named UnitTest.cs. We won’t need this class, so it is safe to delete it.

Add a Coded UI Test to the project. (Project | Add Coded UI Test…) and provide a meaningful name for the map class.

The Generate Code for Coded UI Tests dialog displays. Select the Record actions, edit UI map or add assertions radio button. Click the OK button.

The Coded UI Test Builder toolbar displays in the bottom right of your screen.

Click the record button () to begin recording your actions. From this point, you can launch an application, navigate to a web site, click buttons, or enter data into forms – pretty much anything you do with your mouse and keyboard will be captured and turned into code by the recorder.

You can stop the recording either by clicking either the Pause button () or the Generate Code button ().
When the recording is paused, you can add an assertion by holding down the left mouse button over the Add Assertion button () and dragging the cursor to a control that contains a property against which you will create an assertion. A blue outline appears around any control as the cursor moves over it. Release the mouse while over the control to create an assertion about that control. An assertion declares an expected property value of the control. Comparing the actual property value against the expected value.

Clicking the Generate Code button generates C# code that reproduces the mouse and keyboard actions that you performed while the recorder was running.

The Generate Code button creates or updates three files in your project. The You can generate code button and create assertions as often as you  like. When you close the Coded UI Test Builder, Visual Studio generates three files share a similar name but different extensions: *.uitest, *.cs, and *.Designer.cs.  In our TestProject1 demo, the files are named files UIMap.uitest, UIMap.cs, and UIMap.Designer.cs. Because these files are related, UIMap.cs, and UIMap.Designer.cs appear beneath UIMap.uitest within the project hierarchy.
UIMap.uitest contains an XML file with information about the recorded steps.  If you don’t have the graphical interface to edit this file, you may want to download the Visual Studio 2010 Feature Pack 2 (http://msdn.microsoft.com/en-US/vstudio/ff655021.aspx ). This XML file is used to generate C# code stored in the UIMap.Deigner.cs  file.
Using the Coded UI Coded UI Test Editor, you can view each recorded step, change properties of a step; and split a method into multiple methods.

UIMap.Deigner.cs is overwritten every time any new recordings are created, so you should not edit this file.  Instead, move the method you wish to modify into the UIMap.cs file. This file is not overwritten, so your code can store anything you want here. UIMap.cs and UIMap.designer.cs are partial classes of the same class, so it doesn’t matter to the compiler in which file a method, property, or field is located.

Tuesday, July 24, 2012 3:37:00 PM (GMT Daylight Time, UTC+01:00)
# Monday, July 23, 2012
Monday, July 23, 2012 9:50:00 PM (GMT Daylight Time, UTC+01:00)
# Friday, July 20, 2012

Here is a video of the Azure Q&A Experts Panel at the 2012 Detroit Day of Azure.

Friday, July 20, 2012 3:00:00 PM (GMT Daylight Time, UTC+01:00)
# Thursday, July 19, 2012

Here is a video of Dennis Burton's Single Page, Real Time Web Apps Using Node.js And Windows Azure presentation at the 2012 Detroit Day of Azure.

Thursday, July 19, 2012 3:00:00 PM (GMT Daylight Time, UTC+01:00)

Here is a video of Eric Boyd's BI In The Cloud With SQL Azure Reporting presentation at the 2012 Detroit Day of Azure.

Azure | Video
Thursday, July 19, 2012 2:55:00 PM (GMT Daylight Time, UTC+01:00)
# Wednesday, July 18, 2012

Yesterday, I had the pleasure of presenting at the aspconf online conference. I delivered 2 presentations: HTML5 is the Future of the Web; and Using Windows Azure Storage.

As promised, my slides and demos are available by clicking the links below.

Wednesday, July 18, 2012 3:43:00 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, July 17, 2012

Here is a video of Jason Follas's Using Geospatial Data With SQL Azure presentation at the 2012 Detroit Day of Azure.

Tuesday, July 17, 2012 3:00:00 PM (GMT Daylight Time, UTC+01:00)
# Monday, July 16, 2012
Monday, July 16, 2012 9:10:00 PM (GMT Daylight Time, UTC+01:00)
# Sunday, July 15, 2012

Here is a video of Michael Collier's Windows Phone 7 And Windows Azure – A Match Made In The Cloud presentation at the 2012 Detroit Day of Azure.

Sunday, July 15, 2012 3:21:00 PM (GMT Daylight Time, UTC+01:00)
# Saturday, July 14, 2012

Here is a video of Mark Stanislav's Cloud Disaster Recovery presentation at the 2012 Detroit Day of Azure.

Saturday, July 14, 2012 3:20:00 PM (GMT Daylight Time, UTC+01:00)
# Friday, July 13, 2012

Here is a video of Brian Prince's Architectural Patterns For The Cloud presentation at the 2012 Detroit Day of Azure.

Friday, July 13, 2012 3:17:00 PM (GMT Daylight Time, UTC+01:00)
# Thursday, July 12, 2012

Last month, PostSharp inventor Gael Fraiteur stopped by Sogeti to deliver a presentation on An Introduction to Aspect-Oriented Programming with PostSharp. Gael’s presentation was broadcast live via LiveMeeting and was recorded and is made available here to those who missed it.

Thursday, July 12, 2012 3:10:00 PM (GMT Daylight Time, UTC+01:00)
# Wednesday, July 11, 2012

Here is Gael Fraiteur's presentation on An Introduction to Aspect-Oriented Programming with PostSharp at the June 2012 Great Lakes Area .NET User Group (GANG).

Wednesday, July 11, 2012 11:00:00 PM (GMT Daylight Time, UTC+01:00)
# Monday, July 9, 2012
Monday, July 9, 2012 2:27:00 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, July 3, 2012

Two years ago, I was recognized as a Microsoft MVP for the first time. This past Sunday morning, I received my third MVP award. Since the award lasts for exactly one year, I wake up every July 1 with a sense of hope and dread.

I often joke that I receive the award because of a glitch in the selection software, but the official word from Dora Chan, my MVP Lead is that the award is given for "technical expertise, community leadership, and voluntary community contributions"

I find it difficult to apply that definition to my community efforts, so I always think of it as people with knowledge of Microsoft technologies who take the time and effort to share that knowledge with others. In other words, it's not necessarily the smartest people or those with the deepest knowledge who win the award; rather it’s those with a solid understanding who are spreading this understanding throughout the development community. This definition works well for me because, although there are many people with deeper knowledge of the software than me, I have experience with a wide range of development tools on the Microsoft stack. More important, I always enjoy sharing that knowledge with others - whether it's through user groups, conferences, blog posts, articles, books, or general interactions with developers.

For me, the best pats of the award are public acknowledgement from people I respect; and a chance to go to the MVP Summit in February. The MVP Summit is a treat for me because I often find myself in a room filled with people smarter than me.

I'm grateful to Microsoft for this award and I'm grateful for Telerik, who provides some financial support, without which I could not afford to travel to as many conferences. I'm also grateful to Sogeti, for allowing me to occasionally take time away from my day-to-day responsibilities.

It is a blessing to receive recognition for something that I would be doing anyway.

Tuesday, July 3, 2012 3:50:00 PM (GMT Daylight Time, UTC+01:00)
# Monday, July 2, 2012
Monday, July 2, 2012 3:47:00 PM (GMT Daylight Time, UTC+01:00)