<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Rob Gillen&amp;#39;s WebLog</title><subtitle type="html">Random comments on MPF, Provisioning, and .NET Development</subtitle><id>http://weblogs.asp.net/rgillen/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/rgillen/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2007-11-01T23:29:31Z</updated><entry><title>Codestock Session</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/06/26/codestock-session.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/06/26/codestock-session.aspx</id><published>2009-06-27T01:04:39Z</published><updated>2009-06-27T01:04:39Z</updated><content type="html">&lt;p&gt;[This is cross posted from &lt;a href="http://rob.gillenfamily.net/post/Codestock-Session.aspx"&gt;here&lt;/a&gt;]&lt;/p&gt;  &lt;p&gt;&lt;a href="http://codestock.org"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 15px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="nerdSkull_logo_2009" border="0" alt="nerdSkull_logo_2009" align="left" src="http://weblogs.asp.net/blogs/rgillen/nerdSkull_logo_2009_091C8A70.png" width="155" height="240" /&gt;&lt;/a&gt; I’d like to thank all of you who attended my session today at CodeStock. I had a great time talking with you all and sharing my experiences with SharePoint and TFS with you all. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Downloads from today’s session:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://cid-0ca99f1c887519c0.skydrive.live.com/self.aspx/Public/CodeStock09/CodeStock02.pptx"&gt;Powerpoint Deck&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://cid-0ca99f1c887519c0.skydrive.live.com/self.aspx/Public/CodeStock09/STSDev%7C_rgillen.zip"&gt;My customized version of STSDev&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://cid-0ca99f1c887519c0.skydrive.live.com/self.aspx/Public/CodeStock09/GeneralSamples.zip"&gt;The Samples I built in prep for today&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://cid-0ca99f1c887519c0.skydrive.live.com/self.aspx/Public/CodeStock09/CodeStockSamples.zip"&gt;The samples we built during the session today&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, I promised a collection of links for the tools I had installed.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://stsdev.codeplex.com/"&gt;STSDev on CodePlex&lt;/a&gt; (this does *not* contain most of the fixes demonstrated today) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=sharepointinstaller"&gt;SharePoint Installer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sandcastle.codeplex.com/"&gt;Sand Castle&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://shfb.codeplex.com/"&gt;Sand Castle Help File Builder&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;Zoomit&lt;/a&gt; – Utility for zooming in and out during a presentation &lt;/li&gt;    &lt;li&gt;&lt;a href="http://smarttools.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22111#DownloadId=56023"&gt;Smart Tools Enhanced Site Actions&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7135295" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/rgillen/archive/tags/.NET/default.aspx" /><category term="MOSS" scheme="http://weblogs.asp.net/rgillen/archive/tags/MOSS/default.aspx" /><category term="SharePoint" scheme="http://weblogs.asp.net/rgillen/archive/tags/SharePoint/default.aspx" /><category term="Build" scheme="http://weblogs.asp.net/rgillen/archive/tags/Build/default.aspx" /><category term="TFS" scheme="http://weblogs.asp.net/rgillen/archive/tags/TFS/default.aspx" /><category term="CodeStock" scheme="http://weblogs.asp.net/rgillen/archive/tags/CodeStock/default.aspx" /></entry><entry><title>Customizations to STSDev 1.3</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/06/23/customizations-to-stsdev-1-3.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/06/23/customizations-to-stsdev-1-3.aspx</id><published>2009-06-23T15:08:34Z</published><updated>2009-06-23T15:08:34Z</updated><content type="html">&lt;p&gt;[This is cross-posted from &lt;a href="http://rob.gillenfamily.net/post/Customizations-to-STSDev-13.aspx" target="_blank"&gt;here&lt;/a&gt;]&lt;/p&gt;  &lt;p&gt;As part of my session on Deployment and build using TFS and SharePoint for &lt;a href="http://codestock.org" target="_blank"&gt;CodeStock 09&lt;/a&gt; I took the source code from the STSDev project on CodePlex (&lt;a href="http://stsdev.codeplex.com"&gt;http://stsdev.codeplex.com&lt;/a&gt;) and made a number of modifications. Some of these I would classify as clearly bugs, but most of them are simply adjustments to the core to fit my needs/desires. I’m documenting them here and providing a zip of the source for the benefit of those attending my session. These changes and source code are completely unsupported and you use them at your own risk. That being said, I hope that they are helpful and speed you in your integration between SharePoint and TFS. NOTE: unless specified, all of these changes are to the “Core” project. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;First minor change is that I moved the solution file up one level to the parent folder. This is truly nothing but a nit-pick but seems to make source control trees happier and therefore something that I almost always do. &lt;/li&gt;    &lt;li&gt;Upgraded the projects/solutions to Visual Studio 2008 &lt;/li&gt;    &lt;li&gt;Added an app.config file with an assembly binding redirect pushing old references to Microsoft.Build.Framework to utilize version 3.5.0.0. This is one of the changes needed to get support for .NET 3.5 working properly. &lt;/li&gt;    &lt;li&gt;Changed the target framework property for the stsdev.csproj to .NET Framework 3.5. This change, in concert with the previous, allows the 3.5 selection in the UI to work properly. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change: &lt;/strong&gt;Support for alternate bin paths. The 1.3 version as published on CodePlex always uses the compiler output in projectdir\bin\debug when assembling the *.wsp file. This happens regardless of what build configuration you have selected (yes, even release). This doesn’t work for TFS builds since the output is, by default, in a different location on the build server. To support this use case, the following changes were made:       &lt;ul&gt;       &lt;li&gt;Program.cs: Changes were made prior to calling &lt;font face="Courier New"&gt;SolutionBuilder.RefreshDeploymentFiles&lt;/font&gt; to support the passing in of an additional parameter indicating the alternate bin path. &lt;/li&gt;        &lt;li&gt;Changed the Create method of Builders\DeploymentFiles\CabDdfBuilder.cs to accept the alternateBinPath as an additional parameter. &lt;/li&gt;        &lt;li&gt;Changed the Create method of Builders\DeploymentFiles\CabDdfBuilder.cs such that, if an alternate bin path is provided, it will use that value when adding references to assemblies rather than the otherwise-hard-coded /bin/debug/ &lt;/li&gt;        &lt;li&gt;Updated the first overload of the RefreshDeploymentFiles method in SolutionBuilder.cs to pass the alternate bin path to the second overload of RefreshDeploymentFiles. &lt;/li&gt;        &lt;li&gt;Updated the second overload of the RefreshDeploymentFiles method in SolutionBuilder.cs to build the TargetPath from the alternateBinPath if provided and otherwise to use the default. &lt;/li&gt;        &lt;li&gt;Updated the second overload of the RefreshDeploymentFiles method in SolutionBuilder.cs to pass the alternateBinPath parameter to CabDdfBuilder.Create(). &lt;/li&gt;        &lt;li&gt;Updated the CompleteSolution method in SolutionBuilder.cs to pass an empty value for alternateBinPath to RefreshDeploymentFiles since, during the initial project creation, it is ok to utilize the default /bin/debug path. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change:&lt;/strong&gt; When creating a project, always create a parent solution directory in the same way that Visual Studio defaults to. This is helpful when working in a source controlled environment with multiple projects in the same solution. To support this feature, the following changes were made:       &lt;ul&gt;       &lt;li&gt;Changed the &amp;lt;REFRESH /&amp;gt; property in Resources\Common\Microsoft.SharePoint.targets.xml to utilize the $(ProjectDir) variable rather than $(SolutionDir). &lt;/li&gt;        &lt;li&gt;Changed the Create method of SolutionFiles\SolutionFileBuilder.cs to accept the solution directory as an additional parameter. &lt;/li&gt;        &lt;li&gt;Changed the Create method of SolutionFiles\SolutionFileBuilder.cs to change the directory for where the solution file is created &lt;/li&gt;        &lt;li&gt;Changed the Create method of SolutionFiles\SolutionFileBuilder.cs to reference the *.csproj file in subdirectory rather than in the same directory as the *.sln file. &lt;/li&gt;        &lt;li&gt;Added&amp;#160; a property called ProjectDirectory to SolutionBuilder.cs to hold the full path to the project directory (now distinguished from SolutionDirectory). &lt;/li&gt;        &lt;li&gt;Updated the RunCreateSolutionWizard method in SolutionBuilder.cs to set the Project Directory property. &lt;/li&gt;        &lt;li&gt;Updated the InitializeSolution method of SolutionBuilder.cs to create the new (child) project directory and update the location appropriately &lt;/li&gt;        &lt;li&gt;Updated the InitializeSolution method of SolutionBuilder.cs to set the SolutionBuilder.TargetPath based on the ProjectDirectory property rather than the SolutionDirectory value. &lt;/li&gt;        &lt;li&gt;Updated the CreateDeploymentFiles method of SolutionBuilder.cs to use the proper path for the files (based on ProjectDirectory). &lt;/li&gt;        &lt;li&gt;Updated the RefreshDeploymentFiles() (first overload) method of SolutionBuilder.cs to optionally set the ProjectDirectory property if it isn’t already set. &lt;/li&gt;        &lt;li&gt;Updated the second overload of the RefreshDeploymentFiles method of SolutionBuilder.cs to set the current directory to the value of ProjectDirectory if it is set, and otherwise to use the SolutionDirectory value. &lt;/li&gt;        &lt;li&gt;Updated the second overload of the RefreshDeploymentFiles method of SolutionBuilder.cs to utilize the ProjectDirectory value rather than the SolutionDirectory path. &lt;/li&gt;        &lt;li&gt;Updated the LoadSolutionConfigFile method in SolutionBuilder.cs to use the ProjectDirectory property and remove the pathing ambiguity that was leading to incorrect path lookups. &lt;/li&gt;        &lt;li&gt;Updated the CompleteSolution method in SolutionBuilder.cs to pass the SolutionDirectory property to SolutionFileBuilder.Create() since it can no longer assume that the solution file should be in the same directory as the project file. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change:&lt;/strong&gt; Added support for the Release|AnyCPU project configuration to support integration with TFS Build. In support of this feature, the following changes were made:       &lt;ul&gt;       &lt;li&gt;Added &amp;lt;REFRESH-TEAMBUILD&amp;gt; property in Resources\Common\Microsoft.SharePoint.targets.xml file. The value of this property is similar to that of &amp;lt;REFRESH /&amp;gt; but has an additional parameter referencing the alternate bin path that TFS creates by default. &lt;/li&gt;        &lt;li&gt;Added a Release target in Resources\Common\Microsoft.SharePoint.targets.xml. This is targeted specifically at the TFS build and is therefore similar to the ReleaseBuild target but calls the $(REFRESH-TEAMBUILD) exe rather than $(REFRESH) &lt;/li&gt;        &lt;li&gt;Added a “Release” value to the Configurations string array in SolutionBuilder.cs. This causes the release config to be added to the generated solution and project files. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change:&lt;/strong&gt; We utilize SharePoint Installer to create a nicely-packaged version of the resulting solution making it nearly brain-dead easy to install a new solution. The only real thing unique or project-specific in a SharePoint Installer package is the setup.exe.config file that passes a number of parameters to the executable allowing it to adapt for your particular solution package. This feature change causes STSDev to generate the initial draft of this file and to add it to the solution items. To this end, the following changes were made:       &lt;ul&gt;       &lt;li&gt;Created a new file, SolutionFiles\SetupConfigFileBuilder.cs to represent the template and logic for the SetupConfigFileBuilder class. &lt;/li&gt;        &lt;li&gt;Updated the CompleteSolution method in SolutionBuilder.cs to call SetupConfigFileBuilder.Create and create the new config file. &lt;/li&gt;        &lt;li&gt;Updated SolutionFiles\SolutionFileBuilder.cs to include a pointer to setup.exe.config and thereby include it in the solution. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change:&lt;/strong&gt; We utilize Sand Castle and Sand Castle Help File Builder to produce developer-targeted API documents for our projects. Sand Castle Help File Builder needs a configuration file (xml) with a number of property values to configure it to run properly. This feature allows the basic file to be generated by STSDev and for it to be added to the solution items collection. To this end, the following changes were made:       &lt;ul&gt;       &lt;li&gt;Created a new file, SolutionFiles\SandcastleHelpFileBuilder.cs to represent the template and logic for the SandcastleHelpFileBuilder class. &lt;/li&gt;        &lt;li&gt;Updated the CompleteSolution method in SolutionBuilder.cs to call SandcastleHelpFileBuilder.Create and create the configuration file. &lt;/li&gt;        &lt;li&gt;Updated SolutionFiles\SolutionFileBuilder.cs to include a pointer to the generated *.shfb file and thereby include it in the solution. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Major Change:&lt;/strong&gt; By default, STSDev would not only generate manifest.xml and the ddf file, but it would add these files to the project. While in many cases this is innocous, it causes heartburn in a source-controlled environment. Firstly, purely generated files have no business being in your source tree. Secondly, since the user doesn’t edit them, once they are checked in, they are most often left as such, resulting in errors on compile because the files are marked as read only, preventing stsdev.exe from updating them properly. To this end, the CreateDeploymentFiles method of SolutionBuilder.cs has been updated to remove the calls to ProjectBuilder.AddSourceFile() following ManifestBuilder.Create() and CabDdfBuilder.Create(). &lt;/li&gt;    &lt;li&gt;Added an image, PlanetIcon.gif to the resources section and replaced all hard-coded references to africanpith.jpg with references to PlanetIcon.gif. This is nothing more than a branding change for the output projects and has no other affect on the program’s functionality. Affected files include: stsdev.csproj, SolutionProviders\SimpleFeatureSolutionProvider.cs (AddSolutionItems method), Builders\SourceFiles\FeatureBuilder.cs (Create method) &lt;/li&gt;    &lt;li&gt;Adjusted the InitilaizeSolutionProviders method of&amp;#160; UserInterface\SelectSolutionType.cs to select by default the Web Part Solution (C# Assembly) project type on load rather than the empty solution. This change is nothing other than a convenience feature during testing and use (that’s almost always the project type I use). &lt;/li&gt;    &lt;li&gt;Adjusted the RefreshDeploymentFiles method of SolutionBuilder.cs to fix some seemingly obvious bugs in Console output using incorrect values. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Following the session on Friday, I’ll update this post with the actual source code and any other changes made during the presentation. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7132596" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/rgillen/archive/tags/.NET/default.aspx" /><category term="SharePoint" scheme="http://weblogs.asp.net/rgillen/archive/tags/SharePoint/default.aspx" /><category term="Build" scheme="http://weblogs.asp.net/rgillen/archive/tags/Build/default.aspx" /><category term="TFS" scheme="http://weblogs.asp.net/rgillen/archive/tags/TFS/default.aspx" /><category term="Team System" scheme="http://weblogs.asp.net/rgillen/archive/tags/Team+System/default.aspx" /><category term="CodeStock" scheme="http://weblogs.asp.net/rgillen/archive/tags/CodeStock/default.aspx" /></entry><entry><title>Speaking at CodeStock</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/06/23/speaking-at-codestock.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/06/23/speaking-at-codestock.aspx</id><published>2009-06-23T15:06:27Z</published><updated>2009-06-23T15:06:27Z</updated><content type="html">&lt;a href="http://codestock.org"&gt;&lt;img style="margin: 0px 5px 5px 0px; display: inline" border="0" alt="Join me at CodeStock" align="left" src="http://codestock.org/Marketing/blog_badge.png" width="140" height="150" /&gt;&lt;/a&gt;   &lt;p&gt;[This is cross-posted from &lt;a href="http://rob.gillenfamily.net/post/Speaking-at-CodeStock.aspx" target="_blank"&gt;here&lt;/a&gt;]&lt;/p&gt;  &lt;p&gt;I’m privileged to have been given the opportunity to speak at &lt;a href="http://codestock.org" target="_blank"&gt;CodeStock&lt;/a&gt; (details below) this coming Friday. I’ll be speaking on the topic of Deploying and Packaging SharePoint solutions using TFS. The abstract for my session is: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Have you been using the VS Extensions for SharePoint to create SharePoint packages and found yourself wondering how best to integrate with your source control platform and build system? Consistent packaging of SharePoint solutions can be a challenge and is not for the faint of heart. Come to this session and learn how our team utilizes TFS, Team Build, SandCastle, SharePoint Installer, and STSDev in concert to produce consistent installation packages for our SharePoint/MOSS environment.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://codestock.org"&gt;CodeStock&lt;/a&gt; is about Community. For Developers, by Developers (with love for SysAdmins and DBAs too!). Last year an idea started at CodeStock to mix Open Spaces within a traditional conference. This year we're going to crank things up to 11 and rip off the knob - and you're being drafted to help! &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Keynote by Microsoft RIA Architect Evangelist Josh Holmes &lt;/li&gt;    &lt;li&gt;From Developer to Business Owner roundtable with guest Nick Bradbury creator of HomeSite, TopStyle, and FeedDemon &lt;/li&gt;    &lt;li&gt;50+ break out sessions + Open Spaces (self-organizing sessions) &lt;/li&gt;    &lt;li&gt;Grand Prize: VSTS 2008 Team Suite with MSDN Premium &lt;/li&gt;    &lt;li&gt;Virtual sessions with Jeffery Richter and John Robbins &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Space is limited so register today at &lt;a href="http://codestock.org"&gt;&lt;strong&gt;CodeStock.org&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7132595" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/rgillen/archive/tags/.NET/default.aspx" /><category term="SharePoint" scheme="http://weblogs.asp.net/rgillen/archive/tags/SharePoint/default.aspx" /><category term="Build" scheme="http://weblogs.asp.net/rgillen/archive/tags/Build/default.aspx" /><category term="TFS" scheme="http://weblogs.asp.net/rgillen/archive/tags/TFS/default.aspx" /><category term="CodeStock" scheme="http://weblogs.asp.net/rgillen/archive/tags/CodeStock/default.aspx" /></entry><entry><title>Common API Set for Cloud Storage?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/04/09/common-api-set-for-cloud-storage.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/04/09/common-api-set-for-cloud-storage.aspx</id><published>2009-04-09T19:12:13Z</published><updated>2009-04-09T19:12:13Z</updated><content type="html">&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rgillen/amazon_vs_azure_7B73CA32.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="amazon_vs_azure" border="0" alt="amazon_vs_azure" align="left" src="http://weblogs.asp.net/blogs/rgillen/amazon_vs_azure_thumb_41F0BA3B.png" width="204" height="84" /&gt;&lt;/a&gt; I’m working on a project which has as one of its goals the “publishing” of some very large datasets (order of 1PB) to the “cloud” for consumption by the general populous for use in scientific research. Rather than designing/inventing our own API, our decision has been to provide an interface consistent with the APIs produced by some of the leading cloud storage providers. Our goal would be that if someone is already used to/has tooling to working with cloud data sources such as Amazon’s S3 service or Microsoft’s Azure Blob storage, those same tools/experiences should directly apply by simply changing the http endpoint. &lt;/p&gt;  &lt;p&gt;Unfortunately, neither Amazon or Microsoft seem poised to provide an open source implementation of their interfaces (from a service host perspective) so we are faced with the challenge of reverse-engineering their server-side interfaces. Neither is overly complex, so this certainly isn’t rocket science, but as I’ve been digging/poking at them the last few days I’ve found myself wishing there was more commonality between them. There are certainly many similarities and the “lift” moving between them is not heavy, but that’s actually the rub… they are so similar in many ways that I find myself wondering why they aren’t identical… are the deltas actually adding any value, or are they simply the repercussions of different groups of people solving the same problem while trying to convince the world they are not copying one another. I should be clear that I’ve been focused on the REST APIs and haven’t spent any time with the SOAP interfaces so I can’t speak to the commonality or lack thereof at that level.&lt;/p&gt;  &lt;p&gt;From a client perspective, they are similar enough that there are many tools (both OSS and commercial) that can front-end either platform, so the differences aren’t *that* significant. John Spurlock has done some good work in providing some libraries for C# that provide wrappers for the REST APIs and a client application (&lt;a href="http://www.codeplex.com/spaceblock"&gt;http://www.codeplex.com/spaceblock&lt;/a&gt; and its foundation &lt;a href="http://www.codeplex.com/resourceful"&gt;http://www.codeplex.com/resourceful&lt;/a&gt;). and Alin Irimie has assembled a simple chart illustrating some of the similarities (&lt;a title="http://www.azurejournal.com/2008/11/amazon-s3-vs-azure-data-storage/" href="http://www.azurejournal.com/2008/11/amazon-s3-vs-azure-data-storage/"&gt;http://www.azurejournal.com/2008/11/amazon-s3-vs-azure-data-storage/&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7037467" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Cloud" scheme="http://weblogs.asp.net/rgillen/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://weblogs.asp.net/rgillen/archive/tags/Azure/default.aspx" /><category term="S3" scheme="http://weblogs.asp.net/rgillen/archive/tags/S3/default.aspx" /></entry><entry><title>Clouds and Traditional Hosting Companies</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/03/25/clouds-and-traditional-hosting-companies.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/03/25/clouds-and-traditional-hosting-companies.aspx</id><published>2009-03-25T21:14:04Z</published><updated>2009-03-25T21:14:04Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;NOTE: this blog has moved to &lt;/strong&gt;&lt;a href="http://rob.gillenfamily.net"&gt;&lt;strong&gt;http://rob.gillenfamily.net&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; Please update your links and feed readers appropriately.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rgillen/1220559416cloud_611A3CE5.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="1220559416cloud" border="0" alt="1220559416cloud" align="left" src="http://weblogs.asp.net/blogs/rgillen/1220559416cloud_thumb_4092FD33.jpg" width="248" height="166" /&gt;&lt;/a&gt; I sat on a conference call yesterday wherein we discussed our thoughts on where the cloud was going and how it was going to impact the “traditional” hoster. Our company has been working with hosters for many&amp;#160; years (I started in 2000 and they had been doing it before that) and have seen cycles of service come and go. It used to be that just providing personal web + email was all you had to do to be successful. Then, the “Application Service Provider” (ASP) model started and morphed into providing business-related services and eventually to where companies outsourced entire portions of their infrastructure (think Hosted Exchange, Hosted CRM, Hosted OCS). Throughout much of this, however, locality seemed important – not in reality, but in perception. The vast majority of people would choose to host their services with a company that was close to them, or they had learned by reference from a friend or colleague. &lt;/p&gt;  &lt;p&gt;As we walked through the current market directions, and in later conversations on the same topic, I’ve become more and more convinced that unless significant changes are made, the traditional “hoster” is destined for failure. Web hosting, data hosting, email, etc. are all being commoditized by the big boys (read Microsoft, Amazon, Google) making it almost impossible for the small hoster to compete. I expect to see a rise in the number of white label services, and also in the number of mixed-metaphor hosters – What I mean by this last statement is hosters who will present a unified stack of services to their customers and while much of those services may simply be white-labeled reselling of someone else’s services, some key aspects of the “stack” will be provided directly by the hoster. The key is specialization, or niche services. Maybe a hoster offers a specific financial or ERP system hosted and then marries that with services from other vendors.&lt;/p&gt;  &lt;p&gt;Another aspect of the call that was interesting to me was the postulation that these hosters were looking for ways to “get into the cloud” – I chuckled a little because they, of all people, understand the benefits of the cloud as they have been cornerstones of such for years. They’ve built their businesses on providing “cloud” hosted services. They understand where the margins are/are not – and know better than most that it’s all about scale. This is precisely why I think that the existing model is in trouble – a moderate size hoster with 1000 – 5000 servers simply cannot compete with the big three who are buying datacenter blocks in shipping container-units – each of which hold between 2000 and 4000 servers.&lt;/p&gt;  &lt;p&gt;The game is changing… those who innovate and adapt will be here tomorrow to talk about it. Those who don’t, won’t.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7001284" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/rgillen/archive/tags/Visual+Studio/default.aspx" /><category term="Cloud" scheme="http://weblogs.asp.net/rgillen/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://weblogs.asp.net/rgillen/archive/tags/Azure/default.aspx" /></entry><entry><title>2009 BJU Programming Contest</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/03/24/2009-bju-programming-contest.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/03/24/2009-bju-programming-contest.aspx</id><published>2009-03-25T00:27:35Z</published><updated>2009-03-25T00:27:35Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;NOTE: This blog has moved to: &lt;/strong&gt;&lt;a href="http://rob.gillenfamily.net"&gt;&lt;strong&gt;http://rob.gillenfamily.net&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;. Please update your links and feed readers accordingly.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rgillen/bju_logo_281876EA.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bob Jones University" border="0" alt="Bob Jones University" src="http://weblogs.asp.net/blogs/rgillen/bju_logo_thumb_07913738.jpg" width="579" height="96" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I had the privilege of being one of the alumni-judges at the annual &lt;a href="http://bju.edu"&gt;Bob Jones University&lt;/a&gt; Computer Science departments programming contest. This was the first time I’ve participated in this type of contest and I found it very interesting. The CS department had a fairly slick harness for executing the contest and supporting the judging in multiple languages and multiple platforms. As with anything of this nature, there were a few bumps in the road, but nothing of any consequence.&lt;/p&gt;  &lt;p&gt;The contest turned out wonderfully… we&amp;#160; had around 35 contestants (I lost count because we overflowed the one room and had to use a different room). There were 10 problems of various difficulties to be solved in a 3-hour time window. The contestants could solve the problems in any order, and could choose both their platform (Windows/Linux) and their language (C#, Java, Python, C++, Ruby). To my surprise, many of the contestants switched between languages rather than using just one as I would have expected. Every contestant solved at least one problem properly and all of the problems were solved by at least one person. The distribution of problems solved was pretty balanced as well.&lt;/p&gt;  &lt;p&gt;As a judge, my job was to monitor the queue for submitted answers, run the submissions through the test harness and reply on the results back to the contestant. I was a bit amazed (though I shouldn’t have been) at the wide variety of coding styles and levels of verbosity to solve the same problems. The contestants could also submit questions to the judges, and the favorite for the day was “can I leave and not come back?”. &lt;/p&gt;  &lt;p&gt;I’d like to congratulate the winners and all of the contestants for a fine job and look forward to participating in next year’s event.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6997442" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Theory" scheme="http://weblogs.asp.net/rgillen/archive/tags/Theory/default.aspx" /></entry><entry><title>Misplaced Modifier?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2009/03/13/misplaced-modifier.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2009/03/13/misplaced-modifier.aspx</id><published>2009-03-13T10:11:27Z</published><updated>2009-03-13T10:11:27Z</updated><content type="html">&lt;p&gt;I was on a few websites this morning (go figure) and noticed a handful of visual missteps (mostly minor). One of them was on the Mix 09 conference page and made me chuckle a little. &lt;/p&gt;  &lt;p&gt;On the page talking about being able to watch Mix online (&lt;a title="http://visitmix.com/News/Watch-MIX-Online-Ask-the-Gu" href="http://visitmix.com/News/Watch-MIX-Online-Ask-the-Gu"&gt;http://visitmix.com/News/Watch-MIX-Online-Ask-the-Gu&lt;/a&gt;) they, I think, are trying to encourage you to leave a comment. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rgillen/image_761F623A.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="152" alt="image" src="http://weblogs.asp.net/blogs/rgillen/image_thumb_636A6883.png" width="373" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Or, they really don’t like me, and are simply telling me to leave.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6957222" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Mix" scheme="http://weblogs.asp.net/rgillen/archive/tags/Mix/default.aspx" /></entry><entry><title>Project Templates for SharePoint Development</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/12/09/project-templates-for-sharepoint-development.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/12/09/project-templates-for-sharepoint-development.aspx</id><published>2008-12-09T12:33:00Z</published><updated>2008-12-09T12:33:00Z</updated><content type="html">&lt;p&gt;I've had the privilege of working with an organization for almost two years now doing alot of SharePoint development. There's a team of approximately 75 developers that cover the gammut of skill sets and experiences, most of whom are working, to some degree, with C# and SharePoint development. One of the things that has come up repeatedly, is "how do I get started"? or "what project template should I be using"? These are good questions without a completely clear answer. This post (and hopefully some following) are intended to discuss what we are using, how it evolves, what options we discarded, and why. I spent last Friday teaching a class attempting to bring our team up to speed as to how to structure their SharePoint solutions/projects in VS and get them integrated with Team Build and packaged for deployment in our organization. As the day wore on, I realized how "janky" the "elegant" solution I had been using felt to someone new to the problem set. The supposed elegance was simply relative to the pain I had been experiencing doing it the "old way"... there has to be a better answer for the causal SharePoint developer.&lt;/p&gt;&lt;p&gt;I should stop here to add a caveat that prior to this assignment I spend a year or so (on and off) working on a custom VSIP toolkit for Visual Studio that included custom project and item templates as well as menu items, dockable toolwindows, custom build tools, etc. so I'm a bit biased towards using the built-in extensibility hooks for Visual Studio (especially since its gotten so much easier with the 2008 release). &lt;br&gt;&lt;/p&gt;&lt;p&gt;A year and a half or so ago we started by looking at the WSS Extensions for Visual Studio.. these were interesting and "felt" like the right answer because "they were from Microsoft... certainly they must be the best approach". While this sounded good (and in theory should have worked out) we ended up with a handful of issues... the first being their very slow support for VS 2008. Secondly, we often found a webpart project that suddenly stopped working (i.e. F5 deploying) and couldn't figure out how to get it working again... there seemed to be a bit too much "magic" going on behind the scenes. Also, It was completely unclear how one would take the resultant project and integrate it into a build system (i.e. Team Build). I'm sure it is possible, but it didn't seem to add much value beyond the initial development.&lt;/p&gt;&lt;p&gt;We then looked at STSDev (codeplex.com/stsdev). This is an interesting project that is *almost* my silver bullet. I like the way the template projects are setup, the layout, and the work that the post-build events work (automatically maintaining the ddf and manifest files as well as building the wsp). I have a handful of gripes with how they layout the project structure (no root folder for the solution) and the variables they use (or don't) for certain things. My biggest gripe is that I'm left wondering why they didn't leverage the existing, built-in templating features for Visual Studio (i.e. why can't I go File --&amp;gt; Add New --&amp;gt; web Part). Why should I have to train developers on yet another paradigm for creating their projects? Is their launcher really any better? I think not.&amp;nbsp; That being said, to this day, this is still the mechanism we are using for the majority of our work, but my dissatisfaction with the tool is the driver for this post and quest for a better end-to-end solution.&lt;/p&gt;&lt;p&gt;Because many of our developers were building webparts based on the SmartPart, we found ourselves looking at the SmartTemplates project. There was some very interesting things learned from the way in which Jan implemented this, but still some difficulties presented themselves when we tried to look at this tool relative to the larger problem of our entire SharePoint development environment (webparts, "standard" features such as menu items or application pages, smart parts, and Team Build).&lt;/p&gt;&lt;p&gt;While at PDC, I found myself talking with the Blueprint guys (http://codeplex.com/blueprints). Near as I can tell this is the successor to the GAX tools and looks to be very interesting. I spent part of yesterday afternoon studying the approach and found some very nice features (i.e. ability to update/maintain the platform via an RSS subscription). Unfortunately, the platform is still in beta and, at least in my testing, doesn't feel ready for primetime... maybe in a few months...&lt;/p&gt;&lt;p&gt;So, today I'm going to start out very basic and investigate simply building a custom project template that uses the built-in T4 templating features of VS. The objective is to have a project template that a developer can click on that will create a web application project, configured for development of ascx controls as smart-parts, along with a folder structure similar to what STSDev gives you supporting the build and auto generation of wsp files, as well as preparing the project for Team Build.&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6775037" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/rgillen/archive/tags/.NET/default.aspx" /><category term="SharePoint" scheme="http://weblogs.asp.net/rgillen/archive/tags/SharePoint/default.aspx" /><category term="Team System" scheme="http://weblogs.asp.net/rgillen/archive/tags/Team+System/default.aspx" /></entry><entry><title>.NET is a Smorgasboard?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/11/26/net-is-a-smorgasboard.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/11/26/net-is-a-smorgasboard.aspx</id><published>2008-11-26T12:04:00Z</published><updated>2008-11-26T12:04:00Z</updated><content type="html">&lt;p&gt;Like many other .NET devs I often find myself expecting to be
current in all of the existing and up-coming tools/technologies in the
Microsoft/.NET platform. Frankly, I don't know how that is possible,
especially with the pace at which MSFT (not to mention the surrounding
ecosystem) is releasing tools and platforms. Over the past few years,
my approach has been to know "enough" about the various
tools/technologies so that I can be conversant, and also know when a
particular toolset applies to my current project, thereby warranting a
"deeper" dive into that area. Such has been the case for me with WPF
and WCF (much of my work over the past while has been in the
SharePoint/web space meaning WPF - until SilverLight - didn't have much
of a play and we hadn't yet seen a need to switch from standard ASMX
for our services). They fell into the bucket of tools I had seen while
walking along the smorgasboard, but I simply hadn't decided I needed to
consume them yet. &lt;br&gt;&lt;/p&gt;&lt;p&gt;Scott Hansleman describes the .NET
Framework and the MSFT tool suite as making it easy to "fall into
success" (I'm sure I'm not quoting him correctly, but the idea is the
same). Essentially, the tool set, while robust and quite capable, is
approachable and relatively easy to simply build something. Especially
when you compare it to other languages such as C++ -- in C#/.NET it is
relatively easy to build "okay" code, and not that hard to build good
code and almost (yes, there are plenty of exceptions) hard to write
*bad* code. It is much easier (at least in my opinion) to write bad
C/C++ code and much harder to write good C/C++ .code. I agree with him
100% - once you have a core competency on the platform, picking up the
basics of the "new" stuff becomes almost trivial&lt;br&gt;&lt;/p&gt;&lt;p&gt;I was
recently working on a project (someone else did most of the coding - I
did some of the design and proof-of-concept work) and I was able to see
this in action. We were building a security-focused app, being deployed
to a mixed environment of XP and Vista machines, and we had a 6-7 week
window to build it, test it, and have it deployed. We ended up building
a Windows Service that hosted a WCF service, a desktop application
using WPF, a webpart for SharePoint and an IIS-hosted WCF service. We
made heavy use of the cryptography libraries which, oddly (to me) were
one of the areas that the other developer had prior experience with,
however neither he nor I had done any real work with WCF and WPF. The
technologies offered us quite a bit as far as functionality and form,
even for two guys who weren't "experts" in them - that's where the
"magic" lies - I'm reasonably comfortable with the MSFT dev stack, and
I'm handed two completely new-to-me technologies, and with a relatively
small amount of effort, I'm able to use them in my application and reap
the benefits they bring. Now, certainly there's quite a bit more
functionality that WPF/WCF bring to the table than what we used or
"grok'd" during this project, but it did what we needed to and quickly
- making me want to dig further into those technologies and to use them
for other projects. &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6755034" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term=".NET WPF WCF" scheme="http://weblogs.asp.net/rgillen/archive/tags/.NET+WPF+WCF/default.aspx" /></entry><entry><title>Does the “Cloud” help the Public Sector?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/10/29/does-the-cloud-help-the-public-sector.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/10/29/does-the-cloud-help-the-public-sector.aspx</id><published>2008-10-29T14:14:57Z</published><updated>2008-10-29T14:14:57Z</updated><content type="html">&lt;p&gt;[Warning… rambling mind walk following]&lt;/p&gt;  &lt;p&gt;I’m here at PDC 2008 and having a rather good time attending sessions, talking with experts, speaking with vendors, etc. It has been a pretty good conference and I’ve done a better job than previously at managing my ability to pay attention (i.e. I don’t necessarily *have* to attend a session during every available slot, and, amazingly, there’s a good chance that taking a break b/t will help me pay attention better at the next one…&lt;/p&gt;  &lt;p&gt;Anyway, I’ve been thinking about the Windows Azure announcements and having discussions with a couple of my colleagues and also the CIO where I’ve been working for the past couple of years and I’m left wondering what value the “cloud” and the cloud computing platform provides me with… Don’t get me wrong… I completely get it for the consumer market… there is huge value there, and some of my work with some non-profits and consumer-facing organizations might benefit significantly from these services. I can even see benefits in some internal-to-the-same-business corporate scenarios, however I think the uptake is going to be slow simply due to an unwillingness (warranted or not) for companies to “trust” Microsoft (or Google or Amazon for that matter) with their core corporate data.&lt;/p&gt;  &lt;p&gt;The problem for me, is that for the past few years I’ve been working at an institution in the US public sector… we’ve been “pushing the envelope” a good bit and are more willing than most to adopt new technologies… but I don’t think that I as an app architect for this organization, nor I as a citizen of this country, necessarily want us posting federal information to “a cloud” controlled by someone other than the same federal entity… and I don’t think that this is necessarily unique to the US federal space… I would have an equally difficult time seeing any other government being willing to take this leap of faith.&lt;/p&gt;  &lt;p&gt;However, the principals of the cloud are, in fact, very interesting… should those of us in the public sector be banished to a life of permanent disconnectedness? I think not… What I’m leaving the conference wondering… is how does a federal entity (for any country) provide a “safe cloud” to its users? One in which much of the flexibility/extensibility that is provided in the “public” cloud is still available, however wherein the data and services are completely controlled by the specific government… This, of course, brings up a number of issues… if the given agency completely hosts/controls the “cloud” services… do they cease to be “cloud” services and simply manifest themselves as renamed corporate services? This is certainly a possibility but then I think those of us within the various agencies/sectors need to think of ways to broaden the scope of smaller clouds that we will be building… can the Gov’t of India (US, Canada, or insert country name here) build a single set of “cloud” services that is available only for use by it’s authorized agencies and still see manifested the benefits of scale, abstraction, etc. that are being touted for the “public” cloud? Does a given government build a single cloud? or one for each agency? or some mix in the middle? Will MSFT (or some other vendor) provide tools and platforms that not only allow you to connect to “their” cloud, but also allow you to build your own cloud?&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6709925" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="PDC2008" scheme="http://weblogs.asp.net/rgillen/archive/tags/PDC2008/default.aspx" /></entry><entry><title>Isn’t it Time for 64Bit?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/09/03/isn-t-it-time-for-64bit.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/09/03/isn-t-it-time-for-64bit.aspx</id><published>2008-09-03T13:28:08Z</published><updated>2008-09-03T13:28:08Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’m getting frustrated with application vendors and their support for 64-bit O/Ses. I’d admit that a year or two ago the consumer-level device support for 64-bit O/Ses was a bit weak, but considering I can now walk into Best Buy and pick up a consumer-grade laptop that runs Vista 64, the major software vendors really need to get their act together. In the last few weeks I’ve been bitten by a “we don’t support 64-bit” story a number of times and it feels ridiculous… Maybe i’m an edge case, but every Vista Machine I own is 64-bit (work laptop, home desktop, my wife’s laptop, etc).&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I was writing code this AM attempting to integrate with QuickBooks 2008 and was forced to go back and re-compile with the processor-specific x86 switch due to the fact that their SDK doesn’t support 64-bit O/S.&lt;/li&gt;    &lt;li&gt;I had purchased a 3-computer license to ETrust Anti-Virus (Computer Associates) and upon recently replacing my home desktop and my wife’s computer I had to throw away those licenses and replace them with another vendor’s product because CA can’t figure out how to build an AntiVirus app for 64-bit Vista&lt;/li&gt;    &lt;li&gt;At work, I am forced to run a 32-bit Vista Virtual Machine because the tool provided by our workflow vendor for designing business processes doesn’t run on 64-bit (they claim they’ve been working on a 64-bit version and it should be out “any time”… but that was February…)&lt;/li&gt;    &lt;li&gt;At work we’ve been working on an electronic records system and are fighting with the vendor because they don’t support 64-bit OS on the server… &lt;em&gt;seriously?&lt;/em&gt; An enterprise-scale server-based product that has been around for a few years doesn’t yet support 64-bit? I’m amazed…&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6595144" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Theory" scheme="http://weblogs.asp.net/rgillen/archive/tags/Theory/default.aspx" /><category term="rant" scheme="http://weblogs.asp.net/rgillen/archive/tags/rant/default.aspx" /></entry><entry><title>Thinking the Cloud…</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/07/18/thinking-the-cloud.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/07/18/thinking-the-cloud.aspx</id><published>2008-07-18T15:03:05Z</published><updated>2008-07-18T15:03:05Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’ve been talking quite a bit with a co-worker about “the cloud” and how organizations can and will leverage it over time, and how application development/design may change as a result. Microsoft’s Sql Server Data Services (SSDS) is only one example of a major paradigm shift in the industry away from internal-only systems to treating certain things as commodity-style resources.&lt;/p&gt;  &lt;p&gt;I’ve been thinking through a problem for a non-profit that I work with wherein they needed to share approximately 7.5 GB worth of corporate documents amongst a geographically dispersed team. We’ve been facilitating this by using a WSS site hosted on a little box at my house for the last year or so, but have had increasing frustration with normal home-hosted issues (power blinks, server goes off while I’m out of town, etc.) so I’ve been researching how to solve this problem inexpensively but also well enough to “make the problem go away”. Because of the other discussions my co-worker and I have been having recently, I naturally looked for a “cloud-based” solution.&lt;/p&gt;  &lt;p&gt;Here’s the list of things I reviewed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft Office Live Small Business – &lt;a href="http://www.officelive.com"&gt;http://www.officelive.com&lt;/a&gt; – this looked to be a very interesting option… you sign up, get some custom domain mail accounts, a little website if you’d like, and some private space which is essentially a highly-tailored/restricted WSS platform. $15/month for 5GB of space. I contacted their helpline, they assured me I could add to that to meet my 7.5 GB requirement so I started uploading… after 4.9 GB (and a LOT of time – my poor cable modem…) I went to add another 5GB only to have the control panel deny me that option. Another call to customer service and the nice-but-feature-ignorant customer service representative told me “I sure thought you could do that but I guess not”. Cancelled the account and threw away the upload time… oh well… (UPDATE: I’ve since been called back by another rep who assured me that it was, in fact, possible and that all would be well, but the ship has sailed…) &lt;/li&gt;    &lt;li&gt;Microsoft Office Online (&lt;a href="http://www.officeonline.com"&gt;http://www.officeonline.com&lt;/a&gt;) – this is the full-blown version of Hosted SharePoint… would have been great however it is currently in beta and has no prices listed. Based on the target audience and the pricing for their hosted live meeting service, my gut tells me it is going to be too pricey for the non-profit to swallow so I moved on… &lt;/li&gt;    &lt;li&gt;SkyDrive – this would be great… it’s exactly what I needed… but I need 7.5 GB… not 5… I couldn’t find any way (even offering to pay) to get more than 5 GB… on to other options… &lt;/li&gt;    &lt;li&gt;&amp;lt;Insert your favorite file share here&amp;gt;: Found a bunch of services that might work… some of which I had heard of before, others I wasn’t sure of, some looked too good to be true, some I wasn’t convinced would be around long enough for me to get my data uploaded much less 4-5 years from now… &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Then, a friend recommended I look at Amazon S3 and I’m pretty glad he did. Amazon offers “Object Storage” in the cloud for very cheap prices… and expose a series of XML Web Services to interact with the service. It takes almost nothing to get setup, and there’s a number of code samples available on CodePlex (&lt;a href="http://codeplex.com"&gt;http://codeplex.com&lt;/a&gt;) to illustrate working with it. I’m currently playing with a share-ware tool called BucketExplorer (~$50) that works as a file client for the service and, besides being a resource hog, is workign fairly well. The best part about this solution is that it is incredibly cheap ($0.15/GB/Month!) and I can integrate it directly into our existing admin control panel without the staff knowing that the actual data “lives someplace else”. The Internet storage has become a commodity – something that I can just assume is available… pretty slick if you ask me.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rgillen/WindowsLiveWriter/ThinkingtheCloud_9B1A/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="338" alt="image" src="http://weblogs.asp.net/blogs/rgillen/WindowsLiveWriter/ThinkingtheCloud_9B1A/image_thumb.png" width="747" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6415922" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Theory" scheme="http://weblogs.asp.net/rgillen/archive/tags/Theory/default.aspx" /><category term="Cloud" scheme="http://weblogs.asp.net/rgillen/archive/tags/Cloud/default.aspx" /></entry><entry><title>Stop (re-)Inventing the Wheel!</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/06/22/stop-re-inventing-the-wheel.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/06/22/stop-re-inventing-the-wheel.aspx</id><published>2008-06-22T12:02:37Z</published><updated>2008-06-22T12:02:37Z</updated><content type="html">&lt;p&gt;This is more a personal reminder than anything else… &lt;/p&gt;  &lt;p&gt;In my “day job”, I’m working with an &lt;a href="http://ornl.gov" target="_blank"&gt;organization&lt;/a&gt; wherein we are coaching a group of about 80 developers to view opening Visual Studio as their last viable option when looking to solve a problem. This doesn’t mean coding is bad (I certainly hope not… if so, I think I’d be out of a job soon), but rather represents a mind-set that recognizes that we have an enormous collection of functionality/tools already available to us (we are building on top of MOSS 2007) and we need to fully vet the OOTB functionality prior to deciding we need to “roll our own” anything. Directly tied to this approach is the theory that using OOTB functionality and/or configuration of such (rather than raw coding) leads to better long-term maintainability and upgrade-ability, not to mention helping to avoid “hit by a bus” syndrome.&lt;/p&gt;  &lt;p&gt;However, sometimes the “preacher” needs to look inwardly and I found myself doing that this weekend. I was working on a project for a &lt;a href="http://kids4truth.com" target="_blank"&gt;non-profit organization I work with&lt;/a&gt;, and found myself looking at what I had amassed for solving the problem of site-wide search and was displeased. I immediately reverted to my “code first” tendencies (something I think every developer is born with) and began (mentally) listing the discrepancies with the current solution and designing a “right” solution. Thankfully, prior to actually writing any code, I was kicking around some blog posts and something in one of them (honestly don’t remember what/which) got me thinking of the various “existing” search engines and the fact that they often provide site-specific, nearly OOTB search dialogs that you can embed into your site. I kicked a couple of them around, and settled on one (ended up with the &lt;a href="http://dev.live.com" target="_blank"&gt;live.com search using the XML web services API&lt;/a&gt;), and, rather quickly had a fully-functioning search platform on my site… &lt;/p&gt;  &lt;p&gt;The “purist” in me immediately thinks of a couple of reasons why this solution “isn’t as good as what &lt;em&gt;&lt;strong&gt;I&lt;/strong&gt;&lt;/em&gt; would have built” (i.e. less control over the actual search results/order, less “immediacy” to updating the index, etc), but then my more realistic side kicks in and I realize that I’m not a search engine expert… not even close… &lt;a href="http://google.com" target="_blank"&gt;Some&lt;/a&gt; might argue as to wether or not those at &lt;a href="http://search.live.com" target="_blank"&gt;live.com&lt;/a&gt; are either :), but I can guarantee you that they are more so than I, and that the solution “they delivered” is much more accurate and flexible than I would have built… &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I found myself reminding myself to focus on where I can add value, and to leave the rest to others… that’s the only way to consistently deliver adaptable solutions in an environment where the surrounding technology is changing so quickly… &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6308380" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="MOSS" scheme="http://weblogs.asp.net/rgillen/archive/tags/MOSS/default.aspx" /><category term="Windows Live" scheme="http://weblogs.asp.net/rgillen/archive/tags/Windows+Live/default.aspx" /><category term="Theory" scheme="http://weblogs.asp.net/rgillen/archive/tags/Theory/default.aspx" /></entry><entry><title>Finally back where I want to be...</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2008/05/26/finally-back-where-i-want-to-be.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2008/05/26/finally-back-where-i-want-to-be.aspx</id><published>2008-05-27T01:53:39Z</published><updated>2008-05-27T01:53:39Z</updated><content type="html">&lt;p&gt;It's frustrating to me to find myself redoing things that I've done before or re-solving problems. Over the years at &lt;a href="http://go-planet.com"&gt;Planet&lt;/a&gt; I've been involved with different software teams each with different levels of rigor, however most all of them have had, at minimum, an automated build process of some sort (at least for the past 4 years or so). Some of these systems were elaborate msbuild driven systems while others were a cobbling together of batch scripts or PowerShell linking msbuild, &lt;a href="http://sourcegear.com"&gt;Vault&lt;/a&gt;, &lt;a href="http://fogcreeksoftware.com"&gt;FogBugz&lt;/a&gt; and &lt;a href="http://communityserver.org"&gt;Community server&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The customer I've been working with for the past 16 months has &amp;quot;bitten off&amp;quot; the entire TFS tree and I've been the prime developer responsible for implementing it and getting it going... all, of course, while doing &amp;quot;real work&amp;quot;. Further, (nearly) all of the work we've been doing has been SharePoint focused (custom list event handlers, web parts, site definitions, etc) which means any build must generate properly formed SharePoint Solution (*.wsp) files and the approaches to doing this and handling the installation/upgrade of such are pretty varied.&lt;/p&gt;  &lt;p&gt;This weekend I finally completed a build on a project that meets my &amp;quot;minimum requirements&amp;quot; for being a properly formed build. I'm pleased that I was able to, in relatively short order, apply it to another project verifying repeatability. Here's what we're doing:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;All build scripts are handled by TFS 2008 (using OOTB functionality)&lt;/li&gt;    &lt;li&gt;Solution manifest files and DDF files are maintained both in dev and production build by a customized version of stsdev v1.3 (&lt;a href="http://codeplex.com/stsdev"&gt;http://codeplex.com/stsdev&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;An &amp;quot;installer&amp;quot; is provided as part of the build (&amp;lt;buildRoot&amp;gt;/Install) that allows the back office team to simply double-click and go. We use the SharePoint Installer (&lt;a href="http://codeplex.com/sharepointinstaller"&gt;http://codeplex.com/sharepointinstaller&lt;/a&gt;) tool/framework to provide this function&lt;/li&gt;    &lt;li&gt;All required web.config settings are handled via the feature receiver allowing them to be properly installed/removed on activation/deactivation&lt;/li&gt;    &lt;li&gt;Developer-level documentation is provided for the build based on the /// comments in the code. We use Sand Castle (&lt;a href="http://codeplex.com/sandcastle"&gt;http://codeplex.com/sandcastle&lt;/a&gt;) to do the core generation and Sand Castle Help File Builder (&lt;a href="http://codeplex.com/shfb"&gt;http://codeplex.com/shfb&lt;/a&gt;) to assist with the build script integration (I tried DocProject - &lt;a href="http://codeplex.com/docproject"&gt;http://codeplex.com/docproject&lt;/a&gt; - but it pooched vs 2008 and never worked as described - hopefully it will be more stable when it exists beta).&lt;/li&gt;    &lt;li&gt;Passed Style Cop (MS Source Analysis) rules&lt;/li&gt;    &lt;li&gt;Passed Code Analysis rules&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I still have a ways to go prior to reaching my &amp;quot;nirvana&amp;quot;...&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Build should automatically run code analysis (this is certainly possible, I've simply not gotten it implemented yet)&lt;/li&gt;    &lt;li&gt;Build should automatically run source analysis (this is possible, I've simply not gotten it implemented yet)&lt;/li&gt;    &lt;li&gt;Full testing (unit and system) on build completion - Ideally it would spin up a VM, deploy the appropriate code, execute the test battery, clean up and report on the results.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Even so, it felt good to get a respectable build out the door and to know that it was process driven and repeatable.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6223536" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/rgillen/archive/tags/Visual+Studio/default.aspx" /><category term="Build" scheme="http://weblogs.asp.net/rgillen/archive/tags/Build/default.aspx" /><category term="TFS" scheme="http://weblogs.asp.net/rgillen/archive/tags/TFS/default.aspx" /></entry><entry><title>What I'm looking for...</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rgillen/archive/2007/11/01/what-i-m-looking-for.aspx" /><id>http://weblogs.asp.net/rgillen/archive/2007/11/01/what-i-m-looking-for.aspx</id><published>2007-11-02T04:29:31Z</published><updated>2007-11-02T04:29:31Z</updated><content type="html">&lt;p&gt;In a number of the posts I've been writing on the SOA/BPM conference I've referred to the applicability (or lack thereof) of a given approach to "the problem set" that I'm currently working on. I thought it might be good to describe what it is that I'm looking for and a little bit as to why.&lt;/p&gt; &lt;p&gt;I'm working at an organization with roughly 4,000 employees that is in the process of "drinking the MSFT Koolaid". We are deploying nearly every MSFT product and working hard to bring consistency to the platform both from a services aspect as well as the development paradigm. We are focusing on SAP backend, SQL data store, and SharePoint/Office Suite front-end.&lt;/p&gt; &lt;p&gt;We are also focusing on bringing a consistent story to the workflow problem, and, by "workflow" I really mean (well, at least for the purposes of this post) business process. We have business processes in SAP that have workflows behind them and use various means of interaction to keep it moving (i.e. nag-mails, etc.). We have similar workflows in SharePoint for document approval processes and the like. We also have a third set of workflows (business processes) that are either not automated at all, or not in any sort of consistent interface. It is this last set processes that I'm trying to "fix".&lt;/p&gt; &lt;p&gt;I have a couple of "rules":&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The interface must live in SharePoint (at least the end-user facing portion)  &lt;li&gt;The "workflow" aspects of the system should utilize one of the two existing execution engines we have running (SAP or WF in MOSS)  &lt;li&gt;The workflow designer should be comfortable for a business analyst to use, and preferably an extension to a tool they are already using (i.e. Visio add-in).  &lt;li&gt;The workflow designer should be able to map actual requirements to the steps in the process (where applicable) and serve as a documentation source of sorts.  &lt;li&gt;The process execution system must provide a webparts (or at least the ability to expose the data as webparts) for the following scenarios:  &lt;ol&gt; &lt;li&gt;Overall health of the system  &lt;li&gt;Current user's workflows currently in action  &lt;li&gt;Visual representation of a given&amp;nbsp;workflow process  &lt;li&gt;Analysis relative to the execution stats for each workflow instance and type  &lt;ol&gt; &lt;li&gt;i.e. X step of workflow Y is over the planned duration without having completed. Some indication should exist that this process is out of line  &lt;li&gt;i.e. Workflows of type X average Y days with the minimum being Z days and the maximum being T days. (and trends over time)&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;There must be a hard link between process definition and process execution. The File | Print approach is not sufficient  &lt;li&gt;The system should be standards-based. Meaning, I should be able to import/export the workflow definitions (at least at some level of granularity) to an industry standard such as BPEL or BPMN in order to be able to share or compare that process with other organizations.  &lt;li&gt;The system should be able to provide governance over the models.  &lt;li&gt;In all aspects possible, the system should provide a consistent story WRT the development paradigm we have selected (MSFT .NET, ASP.NET, Windows Workflow, SharePoint, etc.).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Reality...&lt;/p&gt; &lt;ol&gt; &lt;li&gt;I'm not exactly certain I'm ready to back down on any of the items above, however I'm coming to the conclusion that there may be a need for a "third" execution engine - meaning, all of the vendors that I saw that had platforms that did what I wanted, either used their own custom execution engine or hosted their own instance of WF separate from MOSS. Even MSFT pushed BizTalk as the "main" process execution engine for *serious* workflows.  &lt;li&gt;If reality point #1 is in fact true, the process execution platform should be based on WF allowing the developers to have a consistent development paradigm.&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4860289" width="1" height="1"&gt;</content><author><name>rgillen</name><uri>http://weblogs.asp.net/members/rgillen.aspx</uri></author></entry></feed>