# Wednesday, December 29, 2010

In 2010, I released 68 episodes of my online TV show - Technology and

I've tried and failed to select my 10 favorite shows. I recognize that some shows are better than others, but I found it hard to whittle a top 20 down to a top 10. I feel strongly about the first two episodes on this list, but the remaining 8 could change depending on the day or my mood. In any event, I'm proud of the show and proud of each episode listed below.

Episode 100
This milestone episode featured clips from previous show. It's light-hearted and entertaining and I think it turned out really well.

Episode 131: 2010 Ann Arbor Give Camp
I'm particularly proud of this one because of the effort I put into it. I started with almost 5 hours of video and somehow got it down to under 20 minutes. I think it captures the spirit of Give Camp very well.

Episode 76-Gary Short on Technical Debt
Gary carries this episode with his humor and intelligence.

Episode 81-Jennifer Marsman on Windows 7 Development
Jennifer always packs a ton into her presentations, so it's no surprise her interview turned out great. All I had to do was ask a couple open-ended questions and listen.

Episode 105-Nathan Blevins on Mindstorm
This is one of the first shows I did with a prop. Nathan showed off a robot and the software that runs it.

Episode 123-Joe Ross on Ford Sync
I like this one because it is a different perspective. The whole interview was filmed in the front seat of a car and we get a close look at the Sync hardware.

Episode 88-Cameron Skinner on VS2010 Architecture Tools
Cameron had a full schedule but made time to share his experience with me. Lots of informaiton in this one.

Episode 77-Mike Amundsen on HTTP and REST
This is a topic that often makes my head spin. I included it because I learned so much from Mike.

Episode 111-Mike Wood on Moving to the Cloud
This conversation isn't extremely technical, but Mike brings up some great points to consider when choosing a technology.

Episode 78-Jim Holmes on Unit Testing
Almost a year later, I still get a lot of comments on this one.

Wednesday, December 29, 2010 10:47:00 AM (GMT Standard Time, UTC+00:00)
# Monday, December 27, 2010

Episode 131

Ann Arbor Give Camp

Monday, December 27, 2010 11:02:00 AM (GMT Standard Time, UTC+00:00)
# Tuesday, December 21, 2010
Tuesday, December 21, 2010 8:36:00 AM (GMT Standard Time, UTC+00:00)
# Monday, December 13, 2010
Monday, December 13, 2010 8:54:00 PM (GMT Standard Time, UTC+00:00)
# Monday, December 6, 2010
Monday, December 6, 2010 8:52:00 PM (GMT Standard Time, UTC+00:00)
# Tuesday, November 30, 2010

Restful Web Services Cookbook by Subbu Allamaraju

The format of Restful Web Services Cookbook is different than I’m used to. The book presents ideas in the form of a problem, a solution, and a discussion of the solution. It starts with simple concepts like HTTP verbs (GET, POST, PUT, etc.), and moves onto more complex topics, such as content negotiation and sending queries via HTTP.

Most eye-opening for me is the concept of providing in the data sent to the client links to perform related actions on the data, such as updating the record or rolling back changes to a previous version.

In my career, I typically focus on the tools of software development. This book ignored the tools to create and consume web services and focused on the format of the messages passed. It got me thinking at a lower level – about message headers and HTTP verbs – than I am used to thinking.

One hast to get past the fact that Allamaraju does not provide code for generating the requests and responses he describes. He does so in order to keep it technology-neutral and language-neutral. The reader has to apply the concepts to their own development skills in order to implement these recipes.

Restful Web Services Cookbook gave me new insight into the workings of HTTP. It took me out of my comfort zone and taught me a lot.

books | Web
Tuesday, November 30, 2010 10:07:00 AM (GMT Standard Time, UTC+00:00)
# Monday, November 29, 2010
Monday, November 29, 2010 10:49:00 PM (GMT Standard Time, UTC+00:00)
# Friday, November 26, 2010

At the June 2010 Great Lakes Area .Net User Group meeting, Nino Benvenuti gave an introduction to developing applications for the new Windows Phone 7.

Here is that presentation captured on video.

Friday, November 26, 2010 11:14:00 AM (GMT Standard Time, UTC+00:00)
# Wednesday, November 24, 2010

We have just finished an amazing year at the Great Lakes Area .Net User Group (often abbreviated “GANG”).

As many of you know, I took over as president of GANG at the end of 2009 and I presided over my first GANG meeting in January of 2010. 28 people attended that meeting. Last week, 80 people attended our final meeting of the year.

When the year started, I sat down with the other newly-elected officers – Vice President John Hopkins; Treasurer Kent Fehribach; and Secretary Gerhard Weiss. Together we set 6 goals for the group:

  • Get members more engaged and involved
  • Increase meeting attendance by 50%
  • Increase supporting membership by 30%
  • Continue to attract high-quality speakers
  • Increase sponsorship by 100%
  • Finish year in the black financially

I wrote about these goals back in January. As I described, we set out a plan to meet these goals. Now that the year has ended, I’d like to review how we did against these goals.

Get members more engaged and involved

In addition to the elected officers, GANG recruited several volunteers - Chris Roland, Shelly Noll, and Kelly Brownsberger - to help with all the work that goes into each meeting.

In the past, the group was a venue for people to watch a technical presentation - but little else. The technical presentations are important, but we wanted members to get more out of it. So we designated the period before the meeting as networking time, when users can enjoy their dinner and talk to one another. We handed out name tags, which help to break the ice.
After the meeting, we invite everyone to a local pub, where we can enjoy some relaxed social time. It wasn't uncommon for us to go out after a meeting, but we made it more inclusive this year.

We introduced Lightning Talks this year. A Lightning Talk is a 10-minute presentation that any member may deliver on a topic of his or her choosing. In addition to providing more content for the audience, it gives members experience speaking in front of an audience in a low-risk environment.

This year, we started a monthly get-together that we called the Motor City Codeslingers. This is a chance for programmers to get together to do some pair programming and share some idea.
We held a Food Drive in November and almost 60% of the attendees donated. This was a huge success, collecting over 160 food items and over $600.

Increase meeting attendance by 50%

We began the year with a membership drive. People could enter into a raffle by attending a meeting and by bringing a guest to a meeting. Microsoft donated a Zune HD as a grand prize for this drive. We drew for the Zune at the June meeting.

Throughout the year, we encouraged members to spread the word among their friends and colleagues and we introduced first-time attendees at each meeting. Word of mouth remains the best way to attract new members.

We also advertised the group on the social networks Twitter, Facebook, and LinkedIn.

These tactics worked. Attendance increased from about 35 per meeting in 2009 to over 54 per meeting in 2010. More impressive was the steady increase in attendance throughout this year. We went from 28 attendees in January to 80 in November and the average attendance in the second half of the year was over 65.

Increase supporting membership by 30%

There is no charge to join GANG or to attend meetings, but we do offer a supporting membership for an annual fee. This goal was a partial success. The number of supporting members increased by only about 10%, but the dollar amount was more than double last year due to an increase in the amount of the fee we set.

Continue to attract high-quality speakers

For years, GANG has attracted outstanding speakers. This year was no different. We held twelve meetings in 2010 and our list of speakers reads like a Who’s Who of developers in the region. We had Microsoft program managers, evangelists, Technology Specialists, MVPs, book authors, and influencers. All our speakers also present at conferences.

Increase sponsorship by 100%

We blew away this goal. In 2009, Michigan was hit hard by the recession and our sponsors reflected this with reduced sponsorship. Our funds were so low last year that we did not provide dinner for our last few meetings.

This year, we pursued existing and new sponsors and raised several times the sponsorship that we did last year. Not only did we always provide dinner – several times this year, we could afford to upgrade from the typical pizza dinner to something more interesting, such as tacos, fried chicken and Chinese food.

In addition to raising more money, we reached out to vendors to donate software, books, and training that we can give away at a raffle at the end of each meeting. We give out thousands of dollars worth of merchandise at this raffle – more than many conferences.

Finish year in the black financially

We added this goal, because GANG owed about $300 at the end of 2009. This year, we increased sponsorship donations as described above. We also implemented some cost savings by doing things like buying soda and chips from the grocery store, instead of from the caterer.

We are finishing 2010 with a surplus of over $1500, which will be a good start for 2011.


In addition to the accomplishments listed above, GANG also did the following in 2011:

  • MessageBox.Show Newsletter
  • Monthly E-Mails
  • Upgraded web site
  • Signage during the meeting
  • PayPal

Overall, I’m really proud of what my team and I accomplished in 2010. It’s not like we took a group that was floundering and brought it up to acceptable. We took a stable, successful group and took it to the next level. Other user groups in the area often look to us now for ideas of how to be successful.

The only remaining question is: How do we top this in 2011?

Wednesday, November 24, 2010 3:46:00 PM (GMT Standard Time, UTC+00:00)
# Tuesday, November 23, 2010

SQL Server 2008 R2 provides some new tools to help deploy database schemas.

Compiled code and database schemas are frequently dependent on one another and must therefore be deployed simultaneously to a given environment. If a developer writes code that accesses a new table, that table must be available when the code runs. If the code is deployed and run before the table is deployed to the database, a runtime error occurs and the user experience will be unsatisfactory.

In the past, Microsoft has released tools to help developers manage the deployment of database schema changes. Visual Studio Database Edition (aka “Data Dude”) was bundled into Visual Studio 2010. But these tools are geared toward developers – not to DBAs. Most DBAs don’t work in Visual Studio. And in large enterprise applications, it is the DBAs who are managing the deployment of the database schemas. Without tools, this coordination requires a lot of manual steps.

SQL Server 2008 R2 includes support for Data Tier Applications. A Data Tier Application (mysteriously abbreviated “DAC”) is a package containing instructions for deploying a database schema. DBAs and developers can use SQL Server Management Studio to create “DACPAC” files for a given database. They can then use that DACPAC file to create or update a database with an existing schema.

DAC does not support all database objects. Standard objects, such as tables, columns, views, indexes are supported. Security objects such as users roles and logins are supported. Extended stored procedures and full text searches are not supported. The list of supported items is similar to the list of items supported in SQL Azure.

To create a DAC in SQL Server 2008 R2, launch SQL Server Management Studio, connect to a server, and expand the Databases node. Right-click the name of the database you want to deploy and select Tasks | Extract Data Tier Application… from the context menu. The Extract Data Tier Application wizard launches and an introduction window (Figure 1) displays.

Figure 1

Click the Next button. The Set Properties screen (Figure 2) displays.

Figure 2

At the Application Name field, enter a name for this DAC.

At the Version field, enter a version number. SQL Server does not auto-increment version numbers, so you will need to manage this yourself. It’s a good idea to keep major and minor versions of database schemas in sync with the version of the application that consumes them.

At the Description field, you may optionally enter a brief description of the schema.

At the Save to DAC package file field, enter the full path (including file name) where you want to store the deployment file. You may click the Browse button to select a folder. If you enter the name of a file that already exists, you must check the Overwrite existing file checkbox in order to proceed.

Click the Next button to perform a validation. The validation checks if DAC can handle all objects in the database. When the validation is complete, the Validation screen (Figure 3) displays. This screen displays items up to three sets of items: Items that can be deployed with DAC are displayed beneath a green Check icon; items that are not supported are displayed under a red X icon; and items that are supported, but rely on unsupported items are displayed under a yellow Exclamation icon.

Figure 3

Supported items present no problem to DAC.

Unsupported items appear as errors. Unfortunately, you will not be allowed to proceed until these items are removed from the database. Fortunately, the wizard is non-modal, so you can minimize it and switch back to Management Studio to remove these items before re-running the Validation.

Click the Next button to start building the DAC package.

When complete, the Build Package screen (Figure 4) displays, indicating success or listing problems that occurred.

Figure 4

Click the Finish button to close the wizard. A file with the extension DACPAC is created.

Deploying the Schema in a DAC

After creating a DAC, you can use SQL Server Management Studio to deploy the DAC’s schema to a new database. To begin, launch SQL Server Management Studio, expand the Management node, and right-click the Data-tier applications node. From the context menu, select Deploy Data-tier application. The The Introduction screen (Figure 5) of the Deploy Data-tier application wizard displays.

Figure 5

Click the Next button to display the Select Package screen (Figure 6).

Figure 6

Click the Browse button and select the DACPAC file created above. Click Open. Click the Next button to display the Update Configuration screen (Figure 7).

Figure 7

At the Name field, enter a name for the database you wish to create. This field defaults to the name of the database from which the DAC originated. If you are running this deployment on the same server instance on which you created the DACPAC, this will cause a conflict and SQL Server will notify you with a red exclamation icon next to the Name field.

Click Next to begin the deployment. When the deployment completes, the Summary screen (Figure 8) displays.

You should notice the new database appears beneath the Database node and the DAC is registered and appears beneath the Management \ Data-tier applications node. You may need to refresh these nodes in order to view them.

Note that the new database contains no objects – only database objects, such as tables, views, stored procedures, and users.

In this article, we discussed Data-tier applications and described how to use SQL Server Management Studio to create and deploy a DACPAC file.

Tuesday, November 23, 2010 11:55:00 AM (GMT Standard Time, UTC+00:00)