On November 28th, 2011 I had the opportunity to give a presentation at the St. Louis .NET User Group on my experiences developing software for the Windows Azure and SQL Azure platform. Having been at PDC in 2009 for the announcement of Azure and been able to work on a number of Azure projects since that time I frequently see many Azure talks that are either: A) too high level and marketing oriented as they never tell you anything important or B) too low level and focused on a specific feature that you end up not getting a big enough picture to be relevant. My goal during last weeks presentation was to find a mix of content that is somewhere in the middle. As such, for the first time in a LONG time I opted to not go with any type of PowerPoint and to focus on discussion and demonstrations (working under the assumption this will allow me to get through more content…which failed…I still wasn’t able to get in all the tips and ideas I wanted).
Over the last 12+ months my company has not only consulted on projects for others on which Azure is a critical component but we have also developed our own SaaS software in the collegiate coaching space which we host in Azure. This has given me a deep level of understanding of the platform as well as the business decisions that go into making Azure the core hosting platform for my own companies future.
Ultimately, I have built up a list of resources I utilized in my recent user group talk that I wanted to share in this post so that others can quickly find some of the key sites, tools, and information. I’ll be growing this list over the next few months as our product launches and I become aware of more tools or other links that might help others.
A big thanks goes out to Ethan Johnson at ClearlyInventory for his input on these links and bringing many of them to my attention.
Management Portal
Any Azure developer is intimately familiar with the management portal where all configuration to an Windows Azure or SQL Azure account is made.
https://windows.azure.com/default.aspx
Service Dashboard
Hosting in Azure is not without the occasional outage and, to keep customers abreast of issues, Microsoft provides a service “dashboard” you can view to see if your region is experiencing any type of outage.
http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx
Computing Overview
One thing I see developers frequently struggle with when deciding if Azure is a fit for their needs is the terminology and pricing. The following link provides a good overview of the general computing concepts Microsoft is providing and the pricing they attach to these resources. The links on the left of the page below provide similar overviews of the other Azure components.
http://www.microsoft.com/windowsazure/features/compute/
Azure Pricing Overview
Pricing in Azure is, in some aspects, very straightforward and in others, very confusing. The following link provides pricing information for all Azure features.
http://www.microsoft.com/windowsazure/pricing/
Pricing Calculator
Rather than try to do all the pricing math yourself, you can use the provided Pricing Calculator to get a better understanding of how much a particular Azure configuration "might” cost per month. A lot of factors go into how much you ultimately pay as you are purchasing computing power and services on an as-needed basis but, using the calculator at the link below you can better estimate a particular configuration.
http://www.microsoft.com/windowsazure/pricing-calculator/
Red-Gate Data Tools for the Cloud
Red-Gate has always had a very broad suite of high-quality .NET and SQL tools and they have expanded their offerings to include a number of tools that are invaluable for SQL Azure developers (including a free backup tool). We use their backup tool daily for our Azure products.
http://www.red-gate.com/products/cloud/
Cerebrata Cloud Tools
Cerebrata’s Cloud Storage Studio and Diagnostics Manager tools are used by my team daily to manager our commercial Azure projects. I highly recommend their tools and, per the section above, Red-Gate has recently purchased Cerebrata and, I’m assuming, will be rolling these products into the Red-Gate family soon.
http://www.cerebrata.com/
Sql Azure Performance Links
One of the things we found early on was that, however handy SQL Azure is, it’s a bit different than developing against and monitoring a local SQL 2008 instance. There are definite limitations to the tools support for SQL Azure that you have to get used to. The following link is to a blog post that includes a very nice collection of management queries that work against SQL Azure. These have been of great benefit to us and I wanted to share.
http://sqlserverperformance.wordpress.com/2011/03/11/a-small-collection-of-sql-azure-queries/
SQL Azure Limitations
Did I just say that SQL Azure has it’s limitations? It does and the link below provides some details on this. Does this mean I don’t like SQL Azure? Not at all, I’m a big fan and use it all the time. It’s just important to know the specifics of the tools you are using and what they are capable of and what they are not.
http://msdn.microsoft.com/en-us/library/ee336245.aspx
AzureWatch
A friend passed this on to me as something to consider to make my product a more “elastic” infrastructure that scaled up or down based on a set of predefined rules that were automatically applied. I don’t have any first-hand experience using it but it’s worth knowing things like this exist.
http://www.paraleap.com/AzureWatch
Azure Membership and Session Providers
Here is a nice CodePlex project providing membership and session providers that are compatible with Windows/SQL Azure.
http://azureproviders.codeplex.com/
Using SQL Azure for Session State
A nice blog post on using SQL Azure for Session state. The solution described in this link is a bit older than the providers included in the CodePlex project above.
http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx
Pro SQL Azure (Book)
This is a great book I recently picked up that has helped give us a better understanding of the SQL Azure platform and it’s capabilities.
http://www.amazon.com/Pro-Azure-Experts-Voice-NET/dp/1430229616/ref=sr_1_1?ie=UTF8&qid=1322854522&sr=8-1
Last night I gave a talk at the St. Louis .NET User Group regarding .NET Reactive Extensions (Rx) and their basic use. While Rx has been around for a number of years and I’ve seen a number of presentations at various conferences and industry events I still feel it isn’t as widely understood or adopted to the level I feel it’s capable of.
My recent interest in Rx has been due to my heavy involvement with some very complex Silverlight and RIA Services applications. In these environments (especially with RIA services) the managing of asynchronous data access and the coordination and timing of events leads to a complex mess of code in specific scenarios. In looking to streamline all data access and event code I returned to what I had previously learned of Rx and decided to research or build a clean infrastructure to bring the simplicity of the Rx IObservable subscriber model to our data layer and to bridge RIA Services and Rx in such a way as the complexity of our solution can be managed easier. I have started down this road and found some great concepts in others solutions on the web. Over the next few days and weeks I’ll be posting more on using Rx with RIA Services to build better Silverlight applications. For now, I just wanted to include some pointers to some great Rx content on the web to get things started.
For those of you interested in getting into Rx, the following links would be my recommendation on where to start:
Rx Homepage: http://msdn.microsoft.com/en-us/devlabs/gg577609
Rx Beginners Guide: http://msdn.microsoft.com/en-us/devlabs/gg577611
Great Keynote Overview: http://channel9.msdn.com/posts/DC2010T0100-Keynote-Rx-curing-your-asynchronous-programming-blues
Team Blog: http://blogs.msdn.com/b/rxteam/
Community Rx Wiki: http://rxwiki.wikidot.com/
Channel 9 Videos: http://channel9.msdn.com/tags/Rx/
RxSandbox: http://mnajder.blogspot.com/2010/03/rxsandbox-v1.html
Great Blog Series by Lee Campbell: http://leecampbell.blogspot.com/2010/08/reactive-extensions-for-net.html
For those of you interested in my slide deck and sample source code you can find that here.
Last week I was fortunate enough to spend time in Redmond on Microsoft’s campus for the 2011 Microsoft MVP Summit. It was great to hang out with a number of old friends and get the opportunity to talk tech with the various product teams up at Microsoft. The weather wasn’t exactly sunny but Microsoft always does a great job with the Summit and everyone had a blast (heck, I even got to run the bases at SafeCo field)
While much of what we saw is covered under NDA, there a ton of great things in the pipeline from Microsoft and many things that are already available (or just became so) that I wasn’t necessarily aware of.
The purpose of this post is to share some of the info I learned on resources and tools available to .NET developers today. Please let me know if you have any questions (or if you know of something else cool which might benefit others). Enjoy!
Visual Studio 2010 SP1
Microsoft has issued the RTM release of Visual Studio 2010 SP1. You can download the full SP1 on MSDN as of today (March 10th to the general public) and take advantage of such things as:
- Silverlight 4 is included in the box (as opposed to a separate install)
- Silverlight 4 Profiling
- WCF RIA Services SP1
- Intellitrace for 64-bit and SharePoint
- ASP.NET now easily supports IIS Express and SQL CE
Want a description of all that’s new beyond the above biased list (which arguably only contains items I think are important)? Check out this KB article.
Portable Library Tools CTP
Without much fanfare Microsoft has released a CTP of a new add-in to Visual Studio 2010 which simplifies code sharing between projects targeting different runtimes (i.e. Silverlight, WPF, Win7 Phone, XBox). With this Add-In installed you can add a new project of type “Portable Library” and specify which platforms you wish to target. Once that is done, any code added to this library will be limited to use only features which are common to all selected frameworks. Other projects can now reference this portable library and be provided assemblies custom built to their environment. This greatly simplifies the current process of sharing linked files between platforms like WPF and Silverlight.
You can find out more about this CTP and how it works on this great blog post.
Visual Studio Async CTP
Microsoft has also released a CTP of a set of language and framework enhancements to provide a much more powerful asynchronous programming model. Due to the focus on async programming in all types of platforms (and it being the ONLY option in Silverlight and Win7 phone) a move towards a simpler and more understandable model is always a good thing.
This CTP (called Visual Studio Async CTP) can be downloaded here. You can read more about this CTP on this blog post.
MSDN Code Samples Gallery
Microsoft has also launched new code samples gallery on their MSDN site: http://code.msdn.microsoft.com/. This site allows you to easily search for small samples of code related to a particular technology or platform. If a sample of code you are looking for is not found, you can request one via the site and other developers can see your request and provide a sample to the site to suit your needs. You can also peruse requested samples and, if you find a scenario where you can provide value, upload your own sample for the benefit of others. Samples are packaged into the VS .vsix format and include any necessary references/dependencies. By using .vsix as the deployment mechanism, as samples are installed from the site they are kept in your Visual Studio 2010 Samples Gallery and kept for your future reference.
If you get a chance, check out the site and see how it is done. Although a somewhat simple concept, I was very impressed with their implementation and the way they went about trying to suit a need. I’ll definitely be looking there in the future as need something or want to share something.
MSDN Search Capabilities
Another item I learned recently and was not aware of (that might seem trivial to some) is the power of the MSDN site’s search capabilities. Between the Code Samples Gallery described above and the search enhancements on MSDN, Microsoft is definitely investing in their platform to help provide developers of all skill levels the tools and resources they need to be successful.
What do I mean by the MSDN search capability and why should you care?
If you go to the MSDN home page (http://msdn.microsoft.com) and use the “Search MSDN with Big” box at the very top of the page you will see some very interesting results. First, the search actually doesn’t just search the MSDN library it searches:
- MSDN Library
- All Microsoft Blogs
- CodePlex
- StackOverflow
- Downloads
- MSDN Magazine
- Support Knowledgebase
- (I’m not sure it even ends there but the above are all I know of)
Beyond just searching all the above locations, the results are formatted very nicely to give some contextual information based on where the result came from. For example, if a keyword search returned results from CodePlex, each row in the search results screen would include a large amount of information specific to CodePlex such as:
Looking at the above results immediately tells you everything from the page views to the CodePlex ratings.
All in all, knowing that this much information is indexed and available from a single search location will lead me to utilize this as one of my initial searches for development information.
Many of my clients are actively using Silverlight 4 and RIA Services to build powerful line of business applications. Getting things set up correctly is critical to being to being able to take full advantage of the RIA services plumbing and when developers struggle with the setup they tend to shy away from the solution as a whole. I’m a big proponent of RIA services and wanted to take the opportunity to share some of my experiences in setting up these types of projects. In late 2010 I presented a RIA Services Master Class here in St. Louis, MO through my firm (ArchitectNow) and the information shared in this post was promised during that presentation.
One other thing I want to mention before diving in is the existence of a number of other great posts on this subject. I’ve learned a lot from many of them and wanted to call out a few of them. The purpose of my post is to point out some of the gotchas that people get caught up on in the process but I would still encourage you to do as much additional research as you can to find the perfect setup for your needs.
Here are a few additional blog posts and articles you should check out on the subject:
- Visual Studio.NET 2010
- Silverlight 4.0
- WCF RIA Services for Visual Studio 2010
- Entity Framework 4.0
I also wanted to point out that the screenshots came from my personal development box which has a number of additional plug-ins and frameworks loaded so a few of the screenshots might not match 100% with what you see on your own machines.
Also, the examples given in this post are done in C#…sorry to you VB folks but the concepts are 100% identical.
Setting up anew RIA Services Project
This section will provide a step-by-step walkthrough of setting up a new RIA services project using a shared DLL for server side code and a simple Entity Framework model for data access. All projects are created with the consistent ArchitectNow.RIAServices filename prefix and default namespace. This would be modified to match your companies standards.
- First, open Visual Studio and open the new project window via File->New->Project. In the New Project window, select the Silverlight folder in the Installed Templates section on the left and select “Silverlight Application” as your project type. Verify your solution name and location are set appropriately. Note that the project name we specified in the example below ends with .Client. This indicates the name which will be given to our Silverlight project. I consider Silverlight a client-side technology and thus use this name to reflect that. Click Ok to continue.

- During the creation on a new Silverlight 4 project you will be prompted with the following dialog to create a new web ASP.NET web project to host your Silverlight content. As we are demonstrating the setup of a WCF RIA Services infrastructure, make sure the “Enable WCF RIA Services” option is checked and click OK. Obviously, there are some other options here which have an effect on your solution and you are welcome to look around. For our example we are going to leave the ASP.NET Web Application Project selected. If you are interested in having your Silverlight project hosted in an MVC 2 application or a Web Site project these options are available as well. Also, whichever web project type you select, the name can be modified here as well. Note that it defaults to the same name as your Silverlight project with the addition of a .Web suffix.

- At this point, your full Silverlight 4 project and host ASP.NET Web Application should be created and will now display in your Visual Studio solution explorer as part of a single Visual Studio solution as follows:

- Now we want to add our WCF RIA Services projects to this same solution. To do so, right-click on the Solution node in the solution explorer and select Add->New Project. In the New Project dialog again select the Silverlight folder under the Visual C# node on the left and, in the main area of the screen, select the WCF RIA Services Class Library project template as shown below. Make sure your project name is set appropriately as well. For the sample below, we will name the project “ArchitectNow.RIAServices.Server.Entities”. The .Server.Entities suffix we use is meant to simply indicate that this particular project will contain our WCF RIA Services entity classes (as you will see below). Click OK to continue.

- Once you have created the WCF RIA Services Class Library specified above, Visual Studio will automatically add TWO projects to your solution. The first will be an project called .Server.Entities (using our naming conventions) and the other will have the same name with a .Web extension. The full solution (with all 4 projects) is shown in the image below. The .Entities project will essentially remain empty and is actually a Silverlight 4 class library that will contain generated RIA Services domain objects. It will be referenced by our front-end Silverlight project and thus allow for simplified sharing of code between the client and the server. The .Entities.Web project is a .NET 4.0 class library into which we will put our data access code (via Entity Framework). This is our server side code and business logic and the RIA Services plumbing will maintain a link between this project and the front end. Specific entities such as our domain objects and other code we set to be shared will be copied automatically into the .Entities project to be used in both the front end and the back end.

- At this point, we want to do a little cleanup of the projects in our solution and we will do so by deleting the “Class1.cs” class from both the .Entities project and the .Entities.Web project. (Has anyone ever intentionally named a class “Class1”?)
- Next, we need to configure a few references to make RIA Services work. THIS IS A KEY STEP THAT CAUSES MANY HEADACHES FOR DEVELOPERS NEW TO THIS INFRASTRUCTURE! Using the Add References dialog in Visual Studio, add a project reference from the *.Client project (our Silverlight 4 client) to the *.Entities project (our RIA Services class library). Next, again using the Add References dialog in Visual Studio, add a project reference from the *.Client.Web project (our ASP.NET host project) to the *.Entities.Web project (our back-end data services DLL). To get to the Add References dialog, simply right-click on the project you with to add a reference to in the Visual Studio solution explorer and select “Add Reference” from the resulting context menu. You will want to make sure these references are added as “Project” references to simplify your future debugging. To reiterate the reference direction using the project names we have utilized in this example thus far: .Client references .Entities and .Client.Web reference .Entities.Web. If you have opted for a different naming convention, then the Silverlight project must reference the RIA Services Silverlight class library and the ASP.NET host project must reference the server-side class library.
- Next, we are going to add a new Entity Framework data model to our data services project (.Entities.Web). We will do this by right clicking on this project (ArchitectNow.Server.Entities.Web in the above diagram) and selecting Add->New Project. In the New Project dialog we will select ADO.NET Entity Data Model as in the following diagram. For now we will call this simply SampleDataModel.edmx and click OK.

- It is worth pointing out that WCF RIA Services is in no way tied to the Entity Framework as a means of accessing data and any data access technology is supported (as long as the server side implementation maps to the RIA Services pattern which is a topic beyond the scope of this post). We are using EF to quickly demonstrate the RIA Services concepts and setup infrastructure, as such, I am not providing a database schema with this post but am instead connecting to a small sample database on my local machine. The following diagram shows a simple EF Data Model with two tables that I reverse engineered from a local data store. If you are putting together your own solution, feel free to reverse engineer a few tables from any local database to which you have access.

- At this point, once you have an EF data model generated as an EDMX into your .Entites.Web project YOU MUST BUILD YOUR SOLUTION. I know it seems strange to call that out but it important that the solution be built at this point for the next step to be successful. Obviously, if you have any build errors, these must be addressed at this point.
- At this point we will add a RIA Services Domain Service to our .Entities.Web project (our server side code). We will need to right-click on the .Entities.Web project and select Add->New Item. In the Add New Item dialog, select Domain Service Class and verify the name of your new Domain Service is correct (ours is called SampleService.cs in the image below). Next, click "Add”.

- After clicking “Add” to include the Domain Service Class in the selected project, you will be presented with the following dialog. In it, you can choose which entities from the selected EDMX to include in your services and if they should be allowed to be edited (i.e. inserted, updated, or deleted) via this service. If the “Available DataContext/ObjectContext classes” dropdown is empty, this indicates you have not yes successfully built your project after adding your EDMX. I would also recommend verifying that the “Generate associated classes for metadata” option is selected. Once you have selected the appropriate options, click “OK”.

- Once you have added the domain service class to the .Entities.Web project, the resulting solution should look similar to the following:

- Note that in the solution you now have a SampleDataModel.edmx which represents your EF data mapping to your database and a SampleService.cs which will contain a large amount of generated RIA Services code which RIA Services utilizes to access this data from the Silverlight front-end. You will put all your server side data access code and logic into the SampleService.cs class. The SampleService.metadata.cs class is for decorating the generated domain objects with attributes from the System.ComponentModel.DataAnnotations namespace for validation purposes.
- FINAL AND KEY CONFIGURATION STEP! One key step that causes significant headache to developers configuring RIA Services for the first time is the fact that, when we added the EDMX to the .Entities.Web project for our EF data access, a connection string was generated and placed within a newly generated App.Context file within that project. While we didn’t point it out at the time you can see it in the image above. This connection string will be required for the EF data model to successfully locate it’s data. Also, when we added the Domain Service class to the .Entities.Web project, a number of RIA Services configuration options were added to the same App.Config file. Unfortunately, when we ultimately begin to utilize the RIA Services infrastructure, our Silverlight UI will be making RIA services calls through the ASP.NET host project (i.e. .Client.Web). This host project has a reference to the .Entities.Web project which actually contains the code so all will pass through correctly EXCEPT the fact that the host project will utilize it’s own Web.Config for any configuration settings. For this reason we must now merge all the sections of the App.Config file in the .Entities.Web project into the Web.Config file in the .Client.Web project. I know this is a bit tedious and I wish there were a simpler solution but it is required for our RIA Services Domain Service to be made available to the front end Silverlight project. Much of this manual merge can be achieved by simply cutting and pasting from App.Config into Web.Config. Unfortunately, the <system.webServer> section will exist in both and the contents of this section will need to be manually merged. Fortunately, this is a step that needs to be taken only once per solution. As you add additional data structures and Domain Services methods to the server no additional changes will be necessary to the Web.Config.
Next Steps
At this point, we have walked through the basic setup of a simple RIA services solution. Unfortunately, there is still a lot to know about RIA services and we have not even begun to take advantage of the plumbing which we just configured (meaning we haven’t even made a single RIA services call). I plan on posting a few more introductory posts over the next few weeks to take us to this step. If you have any questions on the content in this post feel free to reach out to me via this Blog and I’ll gladly point you in (hopefully) the right direction.
Resources
Prior to closing out this post, I wanted to share a number or resources to help you get started with RIA services. While I plan on posting more on the subject, I didn’t invent any of this stuff and wanted to give credit to the following areas for helping me put a lot of these pieces into place. The books and online resources below will go a long way to making you extremely productive with RIA services in the shortest time possible. The only thing required of you is the dedication to take advantage of the resources available.
Books
Pro Business Applications with Silverlight 4
http://www.amazon.com/Pro-Business-Applications-Silverlight-4/dp/1430272074/ref=sr_1_2?ie=UTF8&qid=1291048751&sr=8-2
Silverlight 4 in Action
http://www.amazon.com/Silverlight-4-Action-Pete-Brown/dp/1935182374/ref=sr_1_1?ie=UTF8&qid=1291048751&sr=8-1
Pro Silverlight for the Enterprise (Books for Professionals by Professionals)
http://www.amazon.com/Pro-Silverlight-Enterprise-Books-Professionals/dp/1430218673/ref=sr_1_3?ie=UTF8&qid=1291048751&sr=8-3
Web Content
RIA Services
Silverlight

2011 Event Recap
Event Overview
During the weekend of January 14th through January 16th, the St. Louis area technology community participated in a national GiveCamp event. With Microsoft’s assistance, similar events were held simultaneously in the following citie
s:
- Austin, Texas
- Phoenix, Arizona
- Birmingham, Alabama
- Colorado Springs, Colorado
- Dallas, Texas
- Atlanta, Georgia
- Houston, Texas
- Nashville, Tennessee
- Dallas, Pennsylvania
- Fayetteville, Arkansas
- New York City, New York
- Malvern, Pennsylvania
- Redmond, Washington
- St. Louis, Missouri
The coordinated events were held on Martin Luther King weekend and made possible via a large number of great national sponsors and local volunteers.
More information on the National GiveCamp initiative can be found on the national website at: http://www.givecamp.org. You can also follow them on Twitter @GiveCamp. The hashtag “#GiveCamp” is also frequently used with GiveCamp information.
The URL for information on the St. Louis GiveCamp is: http://www.givecampstl.com.
St. Louis GiveCamp
After working with the St. Louis chapter of the United Way to solicit over 30 proposals from local and regional non-profit organizations, the St. Louis organizers narrowed our final list of project selections down to 11 great organizations with IT needs we felt we could address within the course of a long weekend.
On the evening of Friday, January14th, representatives from these 11 agencies came together with over 60 volunteers from the St. Louis technology community too kick off a long weekend of problem solving and development fueled by pizza and caffeine.
The projects, some of which are described below, ranged from complete redesign and branding of websites to internal volunteer tracking applications written on such widely disparate platforms as Microsoft Access and Silverlight RIA services. One project even included onsite IT support including the running of conduit and installation of new servers. All agencies provided onsite volunteers to work closely with the various project teams to design highly customized solutions to suite their particular needs.
The event was held at Washington Universities CAIT center in Clayton. The donation of the CAIT facilities was a large factor in the success of this year’s event as it provided all teams with an excellent working environment consisting of labs, projectors, whiteboards, and computers pre-loaded with many different development tools and technologies.
Many great sponsors helped provide food and refreshments to all St. Louis volunteers including Domino’s Pizza who provided our location with 50 large pizzas and Coke donated 15 cases of soda. The St. Louis volunteers also consumed three large (28” and 10-lbs) Pointersaurus pizzas from Pointers Pizza. While not the healthiest of weekends in terms of food, the donated food went a long way to keep all the team members focused on delivering great solutions to those in need.
After working long hours from Friday evening through late Sunday afternoon, the event drew to a close with an opportunity for recognition for each of the teams. Each team leader presented their agencies solution to all the teams. They demonstrated the improvements of the new solution over the previous processes and discussed how the solution would affect the day-to-day work at their particular agency. After a raffle of numerous prizes to our volunteers (which ranged from free versions of Office 2010 Professional to a Kuerig coffee maker), volunteers from both the non-profit agencies and the technology community headed out to spend the few remaining hours of their weekend with family and friends…and most likely doing something far less important than the 2+ days they spent using their skills to help others.
If you were one of the great volunteers who donated your time and talents to this year’s event, I thank you. I hope you consider doing so again for next year’s event as we try to grow this concept to do even more to help our communities and our neighbors.
Projects
This year’s GiveCamp event in St. Louis chose 11 agencies to support throughout our weekend of work. Each agency responded to an RFP distributed through the United Way. Upon selection, each agency was assigned a local volunteer “lead” who would ultimately be responsible for running the team of volunteers to deliver their solution. These 11 leads coordinated logistics with their particular agencies in the days and weeks leading up to our event so that, when the Friday night kick off arrived, each lead had a very good idea of his agencies needs and had a general architecture and project plan in place. On the
first evening of the event, each lead gathered 4-5 volunteers into a team that would be focused solely on delivering the specified solution to the agency. The ultimate goal was to deliver a 100% complete solution by the closing ceremonies on Sunday evening. Ultimately, a few of our projects did have some wrap-up work occur the week after the event but, for the most part, all projects were successful in delivering great solutions to every agency through the hard work and dedication of all team members.
The following agencies were those chosen for this year’s event. Even if you were not involved this year as a volunteer, we encourage you to consider becoming involved with these agencies (or others in your area) as we were all humbled by the great things they do on a daily basis.
Project Descriptions
(The following list is incomplete and I will be adding more project overviews as I confirm information from each lead.)
Alton Crisis Food Center
· Lead: Ian Lackey
The Crisis Food Center team built an application to track information regarding the service provided by the Alton Crisis Food Center. The food center needs this information to report to The United Away as well as others to secure financing for providing services to its clients. In addition, having this information in a digital format will allow for analysis of trends not previously identifiable. The application developed during GiveCamp consisted of a Silverlight 4 user interface taking advantage of SQL Server 2008 and RIA Services to provide a rich, data entry application for use by the agency volunteers. DiscountAsp.net provided free hosting for the final solution and the Crisis Food Center can now better track all aspects of the services they provide to others.
Employment Connection
· Lead: Jacob Adams
· URL: http://employmentstl.org/
The overall goal of the Employment Connection volunteers was to give the agency a new image to help it appeal to new employers and partners. This goal encompassed two separate projects: the development of a new website and the development of new marketing materials. The new site, in addition to being visually appealing and more organized, will make future content management easier. It will also provide reduced hosting and software costs for the agency. The second project was to create new marketing material for Employment Connection. This work included brochures, a newsletter, and an email marketing template. In addition to the tangible work performed, the volunteers also shared design and branding tips with the agency's representative. The final web solution for the Employment Connection was built on ????
Illinois Center for Autism
· Lead: Muljadi Budiman
· URL: http://www.illinoiscenterforautism.org/
Illinois Center for Autism provides support and assistance for guardianship, health care, skill training, care and service facilitation for children and young adults that have autism. One of the core services that they offer is schooling. They currently have over 150 students and needed a way to better track their students and attendance. They were currently using a collection of Excel workbooks to store attendance info for each and every one of these children on a day-to-day basis. They were also performing significant double entry into multiple workbooks so as to get different report formats. They reached out to GiveCamp for help in streamlining this process to provide better recordkeeping.
It was ultimately decided that a simple Microsoft Access application was the best solution for their needs. The new application provides an easy way for attendance taker to easily group by classroom, record attendance, generate billing, per student attendance, quarterly school-grouped attendance and a summary per student attendance reports. The data stored is easily accessible and can be used to generate other reports or to try to see if a trend is occurring. They foresee the application as improving the efficiency on their report generation process which currently takes 5 hours every month. They believe the new solution will cut this time down to a matter of minutes.
Pictures






I am proud to announce that, with one week to go, the St. Louis Day of .NET 2010 is almost upon us.
I have been pretty swamped with Day of .NET organization tasks this year (as well as growing a small business and building out my own development team) and haven’t spent too much time blogging. That said, I wanted to get this post out to share some great news about the conference.
For those of you who don’t know much about the conference, it is called the St. Louis Day of .NET 2010 conference and will be held at the Ameristar Casino Conference Center on Friday and Saturday, August 20th and 21st, 2010. Registration is still open and more information can be found on our conference site at www.stldodn.com.
So how are things shaping up this year you ask?
First, we are very humbled that we have exceeded 600 attendees. The venue can support over 1,000 so we aren’t too cramped for space but we are still scrambling to make sure all our logistics our worked out to make navigation as painless as possible. If you are one of those 600, thank you for signing up and we look forward to seeing you at the event.
Second, as I write this, we are sending out update emails to all 600 attendees with an announcement that our final session agenda is now posted and we are providing an online session builder where attendees can pick what they want to see and print their own customized session agenda in PDF format.
We have 109 unique sessions planned for this year and they will be delivered by 56 great regional and national presenters. The thing that I am the most proud of in being involved with these events is that these speakers travel from all over the country to speak at our event with no compensation other than knowing they are sharing their passion with others and for the camaraderie of other developers. We couldn’t be happier with the content we are providing and we hope all attendees take the time to say thanks to these presenters for making something like this possible.
We are proud to host a Friday afternoon keynote by Brian Goldfarb, the Microsoft Director of Product Management for Developer Platforms. Brian is coming to St. Louis to share information on a wide array of current and future technologies and will focus on Silverlight 4.0 and even discuss some of the mobile options with Silverlight. We are excited to have Brian out and even more excited to get all our attendees into a single room (for the first time in our 3 years as a conference).
On Friday evening (August 20th), we are hosting a networking and social event at the HOME Nightclub at the Ameristar. We are providing hors’devours and even some entertainment and encouraging all attendees to take the opportunity to mingle with their peers and expand their professional network. This is always a fun event where we get to see a lot of familiar faces and to make some great new friends.
This year we are welcoming 12 sponsors to our vendor fair and we couldn’t be prouder of the response we received when asking for sponsorship support from our community. We feel the vendor fair is an important part of the conference and it goes a long way in promoting our community and keeping key sponsors involved with developers from many different organizations.
Another new addition to this years event is the introduction of a Charity Book Fair (which is near and dear to my heart and something I’ve been trying to get going for a few years). The ideas is that many developers have accumulated technical books over the years that are probably, for whatever reason, accumulating dust on their shelves. These books might not have any more use to their owners but we believe they do have the possibility of being of value to someone. For this reason we are asking developers to bring these old books to our conference and donate them to this great cause. While at the event, developers can look through and purchase any of the donated books for $3. All proceeds from this event are being donated to St. Louis United Way where it can be put to good use benefiting a wide array of local organizations.
That’s about all of the major updates I have for now regarding this event. I’m personally very excited to get things underway but, I must admit, I will also be a bit relieved when it is over and I can get back to my normal life and will hopefully have some more time to blog about all the great technology stuff I’ve had the opportunity to be doing.
Since everyone else is getting in their final thoughts…I thought I’d jump on the bandwagon. For anyone who hasn’t been following me on Twitter or Facebook over the last week, I was fortunate enough to get the opportunity to spend a week in Redmond, Washington at Microsoft’s yearly MVP Summit. While “Twitterverse” (i.e. #mvp10) sometimes makes things sound like one big party it was actually a very fascinating week I was very proud to be involved with. I had never before had the opportunity to visit Microsoft’s campus and, as a first year MVP, I was very much looking forward to the opportunity. But, before getting to the summit itself, I know I’ve been asked a few times lately about the MVP program so I thought I’d give a brief overview of the program for the uninitiated (those MVP’s reading this can skip this).
So what is an MVP anyway?
The MVP program is essentially a vehicle in which Microsoft recognizes and supports a select group of individuals who are active in the software community and recognized experts with specific technologies. Microsoft recognizes MVP’s in more than 90 countries and 40 languages.
While the definition of “active” in the technical community varies, most MVP’s are authors, frequent presenters, or host conferences and/or user groups. Nearly all MVP’s are frequent contributors to online forums, blogs, or other repositories of information regarding their specific focus. All of this “activity” essentially equates to a group of people who are passionate about what they do and eager to share that knowledge with others. They are loud voices amongst other developers or power users and care deeply about their technology and want to share that knowledge with others.
In terms of technology focus, the MVP program recognizes members within a specific technology area based on their expertise. This area of focus allows individuals targeted access to Microsoft teams and support.
There are currently around 90 technology areas recognized by this program including such things as:
- C#
- VB.NET
- SilverLight
- Client App Dev (which covers WPF)
- SQL Server
- Visual Studio.NET Team Foundation Server
- XBox
- Zune
- Access
- Office
- Help
- IronRuby (there is one MVP for IronRuby which I met over beers)
- FoxPro
- Windows
- And many, many more…
The MVP program runs on a per-year basis and accepts nominations for new members and membership renewal from both the general community or Microsoft employees. After a vetting and review process, new or renewed members to the MVP program are provided with a unique level of access into Microsoft that includes such things as direct access to product teams, MSDN subscriptions, access to early builds of new software, an invitation to the Summit, and access to many other remote product presentations usually held via teleconference or live meeting.
All in all, the MVP program is a win-win relationship between Microsoft and some of their key supporters amongst the end-user and developer communities. By providing these individuals a high level of support and visibility within Microsoft they foster a relationship that culminates in these individuals helping raise the quality of Microsoft products through candid input and feedback and with the MVP’s supporting the growth and adoption of these new technologies within the Microsoft consumer ecosystem.
If you would like to learn more about the program, would like to search for an MVP near you, or would like to submit someone you know to the program as a potential MVP, you can do all of these things here: http://mvp.support.microsoft.com/
MVP Summit 2010
A well known MVP perk is the ability to attend the yearly MVP Summit. The 2010 Summit was held in both Bellevue, Washington and at Microsoft’s main campus in Redmond. This year’s Summit was attended by over 1300 MVP’s from over 70 countries. The idea behind the Summit is to bring these experts together in Redmond to interact closely with the Microsoft product teams and allow these product teams to let MVP’s see all the work and strategic direction going into future products and releases while soliciting feedback from the MVP’s on product features, quality, usage, etc. Obviously, such an open collaboration comes with the necessary NDA agreements which serve to protect Microsoft’s intellectual property and financial interests but allows the product teams to be very candid with the MVP’s and opens the door for very open and honest discussion regarding product quality and direction. To this end, this year’s summit included over 700 sessions put on by hundreds of Microsoft product team members across dozens of products.
So that is what it was…but what did I think?
My Impressions of MVP Summit 2010
Over the years I’ve had the opportunity to attend many regional and national conferences including Tech-Ed’s, PDC’s, and Mix’s. Between these conferences and my own involvement in various groups and events I went into my first MVP Summit already able to call many fellow MVP’s my good friends. In addition to those whom I already thought of as friends, I was familiar with many other MVP’s with whom I regularly interact at other events. The St. Louis area now boasts 7 MVP’s that I’m aware of and 5 of us were able to attend this year’s Summit.
That said, out of all of the previous conferences or events I’ve been able to attend, I found the 2010 MVP Summit to be the most fascinating, educational, and fulfilling technology event I’ve ever attended. Obviously, the bigger conferences like PDC and Tech-Ed have a much larger attendance but these conference pull a mix between passionate and outspoken technologists and those people who just had enough money left in their budget to attend a conference. At the MVP Summit EVERYONE I interacted with was extremely knowledgeable and passionate about their technology area (and technology in general) and everyone was open and excited about talking tech with their peers. Anyone who knows me knows that I love to talk and love to talk about technology even more. What made this event so special was the fact that everyone else felt the same way. It was like going to computer camp with 1000 people with the exact same interests and passion.
Microsoft was the most gracious of hosts and every member of every product team I talked to was excited to show off what they’ve been doing and took the time to answer every question and explain every decision. They went out to dinners and evening parties with MVP’s and didn’t miss a single opportunity all week to make the event both memorable and useful in terms of accomplishing the goals of soliciting honest feedback and building a strong relationship.
Each of the sessions I attended was well put together and to the point. Not much “fluff” was included as the general assumption could be made that they were talking to a room of people who knew the “marketing line” on any given technology. I found that, during these sessions and when talking about a product or feature, most MVP’s fell into one of two camps: those who immediately saw potential and countless possibilities with a technology or those who immediately pointed out design or implementation flaws and always wanted more. That wasn’t necessarily a bad thing and it led to some great debates that usually spilled over to happy hour discussions over beers.
The use of Twitter during this event was also extraordinary as the “collective consciousness” of the attendees was constantly visible via the #mvp10 Twitter feed. The camaraderie of all attendees was evident as lunches, dinners, happy hours, and evening parties were scheduled globally on Twitter and anyone and everyone showed up to attend. Whether sitting in a hotel lobby waiting for a shuttle or at breakfast with a table full of strangers, the discussion was always great. Everyone was open and excited to learn what everyone else was up to and you always felt comfortable and as if you were in a room amongst friends.
Coincidentally, this year’s Summit fell during the first week of the Vancouver Winter Olympics and, with Seattle only 2 hours south of Vancouver, a few MVP’s made the trip up to the Olympics for a day or so. Also, due to the geographic diversity of the attendees, many evenings were spent at the local pub cheering on your countries hero’s in Vancouver. The Canadians wore their Maple Leaves especially proudly throughout the event.
All in all, it was an experience unlike any I’ve had in my professional career and I have a stack of future blog posts queued up to discuss some key development areas I spent time covering at the Summit. My NDA keeps me from providing too much content on new or undisclosed platforms or features but not everything we covered fell into this category and I spent a lot of time at sessions or in hotel lobbies discussing some great tools and platforms which are publicly available today and which I think deserve more focus in the projects we are currently building.
So, after a great week in Seattle, and a few hours home in St. Louis with my family, I now find myself in Minneapolis, Minnesota finishing this blog post and preparing for a morning presentation on Visual Studio.NET 2010 and TFS 2010 at Microsoft’s Minneapolis offices. So I’ll close this post with a big THANK YOU to my wife and all the other MVP’s spouses who put up with the time away from home we spend doing what we love (and hanging out with other geeks ;)
And to all the MVP’s reading this…I hope to see you all in Redmond next year…
I wanted to share information on an upcoming development tour through the Midwest that I’m involved with. It’s called the Drive Your Development with Visual Studio.NET 2010 tour and you can find more information on what it’s about and where it will be on Clint’s blog here: http://www.notsotrivial.net/blog/post/2010/01/05/Tour-Announcement-e28093-Drive-Your-Development-with-Visual-Studio-2010.aspx.
I will be presenting alongside Clint Edmonson and Jeff Fattic who are both great presenters as well as experts in all things VS.NET and TFS related so it should be a lot of fun.
The sessions themselves are focused on discussing and demonstrating the great new features of VS.NET 2010 and Team Foundation Server 2010 and how they can be used effectively by development teams of any size.
All events are free so register now for a location near you (as seating is limited).
If you have any questions about sessions themselves or the dates/venues don’t hesitate to let me know.
Microsoft recently held their Windows 7 Launch event in St. Louis where I was very fortunate to be able to deliver the Windows 7 introduction to developers track (opposite Mike Benkovich from BenkoTips.com).
This St. Louis event was held at the AMC Theater’s in Creve Coeur, Missouri and supposedly drew 1200 local IT resources (roughly 600 for the developer track and 600 for the IT pro track but I didn’t get an exact count from anyone). I was involved with the developer track and in my auditorium I had roughly 250+ people who fell into one of two categories: first, those who were software developers and interested in Win7 as a new platform for rich client development or, second, those who were interested in Win7 as a consumer tool and took advantage of the opportunity to learn a bit more about the OS (and possibly just to get the free copy given away at the launch event :)
For those of you who are .NET developers and interested in developing applications which take advantage of the great features of Windows 7, information can be found below.
API CodePack
I would first start you out by pointing you to the Windows API CodePack for .NET. This is a set of assemblies you can utilize from your .NET application to easily access all of the cool features of Windows 7. Things such as:
Windows 7 Taskbar Jump Lists, Icon Overlay, Progress Bar, Tabbed Thumbnails, and Thumbnail Toolbars.
Windows 7 Libraries, Known Folders, non-file system containers.
Windows Shell Search API support, a hierarchy of Shell Namespace entities, and Drag and Drop functionality for Shell Objects.
Explorer Browser Control.
Shell property system.
Windows Vista and Windows 7 Common File Dialogs, including custom controls.
Windows Vista and Windows 7 Task Dialogs.
Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite and WIC have partial support)
Sensor Platform APIs
Extended Linguistic Services APIs
Power Management APIs
Application Restart and Recovery APIs
Network List Manager APIs
Command Link control and System defined Shell icons.
“PhotoView” Sample Application
Another great Windows 7 resource for .NET developers is utilizing this sample application as a starting point. It’s called XP2Win7 and is a sample photo viewer that demonstrates a clean way to have a single application which exposes the appropriate functionality depending on the OS it is running on. It runs effectively in XP, Vista, and Win 7 while adding OS specific features based on it’s host. On a Windows 7 machine it supports Jump Lists, MultiTouch, etc. It’s definitely worth the look to see some cool Win 7 features in action.
Sessions
At this recent launch event, my three sessions were related to Windows 7 developer topics. I covered the following topics:
Taking Your Application to the Next Level with Windows 7
Basically this talk covered common compatibility issues with moving legacy applications into Windows 7. It also talked about a number of breaking changes in Windows 7 when compared to previous Windows OS platforms. We also introduced newer concepts such as the Jump Lists, the new Task Bar, breaking changes when moving form XP to Vista, Troubleshooting Packs, etc.
My presentation can be found here: Presentation
Beyond Human Interaction with Windows 7 Sensor and Location Platform
Here we talked about the new sensor platform and used a cool Freescale Sensor board for the demo’s. We talked about the Win7 Ambient light sensor and used the board to demonstrate an accelerometer sensor. The final part of this session discussed location sensors. I had some pretty cool demo’s for this one including modification to the XNA Racing Starter Kit which allowed me to play the game with the board and the accelerometer and also use the ambient light sensor to affect the night/day aspect of the game.
If you are interested in the board I used for the demo you can buy the exact board here. The cost is ~$30 according to their site.
My presentation can be found here: Presentation
Building next Generation UI with Multitouch and Windows Ribbon in Windows 7
The final talk I gave related to the new Windows Ribbon and the Multitouch capabilities in Windows 7. I was using an HP TouchSmart Notebook with a 64-bit version of Windows 7 and the full TouchPack loaded on it. The demonstrations were pretty cool and I got to play some games on the big screen.
Many people came up to me after the show and asked where they could find info on this laptop and here you go: Laptop Info.
I definitely foresee a day where all laptops have these same capabilities.
My presentation can be found here: Presentation
Resources
In addition to sharing the presentation, the links below will definitely help any .NET developer learn to take advantage of the great new developer oriented features of the Windows 7 platform:
Compatibility Resources
Windows Application Compatibility Center
http://msdn.microsoft.com/en-us/windows/aa904987.aspx
Application Compatibility on TechNet
http://technet.microsoft.com/en-us/windows/aa905066.aspx
Application Compatibility Online Remediation
http://readyset7.com/workshops
Application Compatibility in Windows 7 Training Kit
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=1c333f06-fadb-4d93-9c80-402621c600e7
API and Other Dev Resources
Windows Developer Center on MSDN
http://msdn.microsoft.com/en-us/windows/dd433113.aspx
Windows Application Compatibility Developer Center
http://www.msdn.microsoft.com/en-us/windows/aa904987.aspx
Windows 7 Remediation Labs
http://www.readyset7.com/workshops
Windows 7 Training Kit for Developers
http://go.microsoft.com/?linkid=9681321
“PhotoView” Reference Application (XP2Win7Project)
http://code.msdn.microsoft.com/XP2Win7
Windows 7 Blog for Developers
www.windowsteamblog.com/blogs/developers.aspx
Windows 7 on Channel 9
http://channel9.msdn.com/tags/Windows+7
This last weekend I had the opportunity to head up to Des Moines, Iowa and give a presentation at the a regional developer event called the Iowa Code Camp. Due to a bunch of recent travel and speaking commitments (including the Windows 7 Launch event in St. Louis and spending next week in LA for PDC) I decided a weekend in Des Moines would make a very nice little trip for the family. During my time at the conference my wife and three little girls took the opportunity to hit the local zoo and the malls and other local attractions.
In the essence of full disclosure, this was my first
significant trip to Iowa. I’d never been to Des Moines (or too many other places in Iowa) although I did grow up in neighboring Nebraska. My trip didn’t do much for Iowa football as both (previously undefeated) Iowa and Iowa State lost on the Saturday of my presentation (although Nebraska beat Oklahoma that night which was pretty impressive to watch from enemy territory). My first impressions of Iowa were fantastic. The West Des Moines area (where this conference was held) was a nice or nicer than most other places I’ve had the opportunity to visit.
The conference itself was held at the Des Moines Area Community College (DMACC) and this was one of the most impressive community colleges I’ve ever been to. It was by no means exceptionally big but it was a great venue for this type of event and had more technology devoted to learning than any other community college I’ve ever seen. The hallways literally had museum exhibits devoted to the evolution of the PC. I found a Macintosh exhibit with an Imagewriter printer like I had when I was a kid. They even had an old Altair with basic code on “tape”. From talking to conference organizers this community college is a big supporter of the local community and it sounded like meetings and other events are frequently held there so kudos to them.
Being from rural Nebraska I know that too often these smaller markets get overlooked for national conferences or marketing attention. Talented developers come from all areas of our country
whether urban or rural and Iowa seems to have more than most areas traditionally considered rural. This means its ultimately up to these local developers and other community members to take the initiative to step up and host these things themselves with whatever support and resources they can get. Not only does it take the initiative of the community, but it takes sponsors and other local organizations like the DMACC to recognize the value of community based knowledge sharing and for these organizations to step forward with donations of prizes and money so that the events themselves are possible. The guys in Iowa not only had over 200 attendees (I’m not exactly sure of their final count) but their conference was as well organized as anything I’ve attended (and they obviously learned a bit from our mistakes up here St. Louis ;) Not only was it well organized but it appeared that they had some great and involved sponsors which says a lot for the local community.
I want to tip my hat to the following organizers (and any I forgot but were involved). I realize how much time and work go into an event like this well before and after the day of the event itself (which is actually the easy part). These guys hit a home run and were truly champions for their region. Congrats guys!
Tim Barcz
Javier Lozano
Levi Rosol
Greg Sohl
Chris Missal
Greg Wilson (who proudly hosts his blog on SharePoint :)
Nick Parker
Chris Sutton
Keith Dahlby
(Check out their blogs by clicking on the links above)
As far as my trip, I had a great time at the conference and in Iowa in general and, from the buzz on Twitter and elsewhere, it looks like many others did too. I wish the organizers the best of luck in the future and I hope they can continue to host such an event and learn and grow (and I’ll gladly be back if the opportunity arises).
Thanks again,
-Kevin