<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Buck Woody</title><subtitle type="html">Carpe Datum!</subtitle><id>http://sqlblog.com/blogs/buck_woody/atom.aspx</id><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/default.aspx" /><link rel="self" type="application/atom+xml" href="http://sqlblog.com/blogs/buck_woody/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61129.1">Community Server</generator><updated>2011-10-31T10:23:23Z</updated><entry><title>Application Lifecycle Management Overview for Windows Azure</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspx</id><published>2012-02-07T14:58:39Z</published><updated>2012-02-07T14:58:39Z</updated><content type="html">&lt;p&gt;Developing in Windows Azure is at once not that much different from what you’re familiar with in on-premises systems, and different in significant ways. Because of these differences, developers often ask about the specific process to develop and deploy a Windows Azure application - more formally called an Application Lifecycle Management, or ALM. &lt;/p&gt;  &lt;p&gt;There are specific resources you can use to learn more about various parts of ALM - I’ve referenced those at the end of this post. But ALM has multiple definitions, from the governance of code injection, domain upgrade, testing, process flow and more. Many developers are interested in the finer-grained information, like how do I develop and deploy an application? What tools do I need, and how do I get the code running somewhere that I can test? &lt;/p&gt;  &lt;p&gt;I’ll cover the very high-level process here, and refer you to specifics at the end of each section, so that you can take it all in at one viewing, and then bookmark for more detail when you need more information. I won’t be covering processes like Continuous Integration or Agile and other methodologies in this post - I’ll blog those later. &lt;/p&gt;  &lt;h2&gt;Initial Development&lt;/h2&gt;  &lt;p&gt;You start with writing code. You have three ways to do this. You can use Visual Studio (even the Express Edition Works), Eclipse, or by &lt;a href="https://www.ibm.com/developerworks/webservices/library/ws-restful/" target="_blank"&gt;leveraging the REST API format&lt;/a&gt;. You can do this in a standalone (non-connected) environment like your laptop. &lt;/p&gt;  &lt;p align="left"&gt;Using Visual Studio is one of the simplest methods to create an Azure application, allowing you to combine the Azure components you want to leverage (Storage, Compute, SQL Azure, the Service Bus, etc.) along with the on-premises code you have now or are creating. Once you’ve installed and patched Visual Studio, just download and install the Windows Azure Software Development Kit (SDK) and you’ll have not only all the API’s you need to talk to Azure, but a fully functioning local environment to run and test your code before you deploy it. You’ll also get a robust set of samples. You can download what you need for all of that (free) here: &lt;a href="http://www.windowsazure.com/en-us/develop/downloads/"&gt;http://www.windowsazure.com/en-us/develop/downloads/&lt;/a&gt; . There’s a step-by-step process here: &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee336122.aspx"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://msdn.microsoft.com/en-us/magazine/ee336122.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can also use Eclipse to develop for Windows Azure. You won’t get the full runtime environment in just that kit alone, but you can use this successfully on a Linux system. I have several folks using this method. The downloads and documentation for that is here: &lt;a href="http://www.windowsazure4e.org/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.windowsazure4e.org/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use REST API’s to hit Azure Assets and control them. Not my preferred method, but possible. There are REST API’s for various sections of Azure. You can find the main reference for that here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#9bbb59"&gt;&lt;font color="#c0504d"&gt;&lt;strong&gt;&lt;em&gt;Note: &lt;/em&gt;&lt;/strong&gt;We recently demonstrated using a Cloud-based Integrated Development Environment (IDE) for Node.js deployment to Windows Azure. More on that here:&lt;/font&gt; &lt;/font&gt;&lt;a href="http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;Deploying to a Test Instance&lt;/h2&gt;  &lt;p&gt;After you write the code, you’ll need to test it somewhere. The Azure Emulator on your development laptop is for a single user on that laptop, and it also has some subtle differences from the production fabric as you might imagine. Normally you’ll set up a small subscription to run and test the application, just like you would have a set of test servers. Each subscription has its own management keys and certificates, so this assists in keeping the testing environment separate for billing and control. &lt;/p&gt;  &lt;p&gt;More on that general information here: &lt;a href="http://msdn.microsoft.com/en-us/library/ff803362.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff803362.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Deploying to Production&lt;/h2&gt;  &lt;p&gt;Once you have developed the code and tested it, you need to move it to a location where users can access it. In reality, there is no physical difference in the type of machines, fabric or any other component in “Production” Windows Azure accounts and the “Test” accounts, but you’ll most often pick smaller systems to deploy on in testing, and you’ll probably keep the URL in the plain format.&lt;/p&gt;  &lt;p&gt;In the Production Windows Azure account, the team normally limits the access to the account for deployment to a separate set of developers. This ensures code flow and control. A DNS name is normally mapped to the longer, Microsoft-generated URL so that your users access the application or data the way you want them to. &lt;/p&gt;  &lt;p&gt;More on setting up an account here: &lt;a href="http://techinch.com/2010/06/14/setup-your-windows-azure-account/"&gt;http://techinch.com/2010/06/14/setup-your-windows-azure-account/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Managing Code Change&lt;/h2&gt;  &lt;p&gt;With the application deployed, there are two broad tasks you need to consider. One is managing changes through the application, and the other involves management, monitoring and performance tuning for an application.&lt;/p&gt;  &lt;p&gt;To make a code change, the standard ALM process is followed, just as above. You can use command-line tools to automate the process as you would with an on-premises system. A vide on that shows you how: &lt;a href="http://www.microsoftpdc.com/2009/SVC25"&gt;http://www.microsoftpdc.com/2009/SVC25&lt;/a&gt;. Normally this is used with an “In-Place” upgrade into Production Account, since your testing is completed in a separate account. More on that process here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;One difference is the “VIP Swap” process you can use for the final push to Production. In essence, this allows you to have two copies of the application running on the Production account, with a quick way to cut over and back when you’re ready. The process for that is detailed here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For monitoring, you have several options. You should enable the Windows Azure Diagnostics in your code - more on that here: &lt;a href="http://archive.msdn.microsoft.com/WADiagnostics"&gt;http://archive.msdn.microsoft.com/WADiagnostics&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;You can observe uptime and other information on the Windows Azure Service Dashboard, where you can also consume the uptime as an RSS feed: &lt;a href="http://www.windowsazure.com/en-us/support/service-dashboard/"&gt;http://www.windowsazure.com/en-us/support/service-dashboard/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;From there, you can also use System Center to monitor not only Windows Azure deployments but internal applications as well. The Management Pack and documentation for that is here: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=11324"&gt;http://www.microsoft.com/download/en/details.aspx?id=11324&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;There are also 3rd-party tools to manage Windows Azure. More on that here: &lt;a href="http://www.bing.com/search?q=monitor+Windows+Azure&amp;amp;form=OSDSRC"&gt;http://www.bing.com/search?q=monitor+Windows+Azure&amp;amp;form=OSDSRC&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Other References: &lt;/h3&gt;  &lt;p&gt;There is a lot more detail in this official reference: &lt;a href="https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/"&gt;https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bryan Group explains the ramifications of the Secure Development Lifecycle (SDL) with lots of collateral you can review: &lt;a href="http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx"&gt;http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41593" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Development" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx" /><category term="Developer" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx" /><category term="Tips" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Tips/default.aspx" /><category term="Design" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx" /><category term="Planning" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Planning/default.aspx" /><category term="Best Practices" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx" /><category term="Process" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Process/default.aspx" /><category term="Links" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Links/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Application Architecture" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx" /><category term="Concepts" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx" /><category term="System Center Operations Manager" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/System+Center+Operations+Manager/default.aspx" /></entry><entry><title>Book Review (Book 8) - The Elements of Persuasion</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/30/book-review-book-8-the-elements-of-persuasion.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/30/book-review-book-8-the-elements-of-persuasion.aspx</id><published>2012-01-30T14:57:23Z</published><updated>2012-01-30T14:57:23Z</updated><content type="html">&lt;p&gt;This is a continuation of the books I challenged myself to read to help my career - one a month, for year. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"&gt;&lt;u&gt;You can read my first book review here&lt;/u&gt;&lt;/a&gt;. The book I chose for January 2012 was: &lt;a href="http://www.amazon.com/Elements-Persuasion-Storytelling-Better-Business/dp/0061179035/ref=pd_bbs_sr_1/104-8397785-8954328?ie=UTF8&amp;amp;s=books&amp;amp;qid=1187892925&amp;amp;sr=8-1" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;The Elements of Persuasion by Richard Maxwell and Robert Dickman&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why I chose this Book: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I mentioned in a previous review, I think good storytelling is an essential part of any career. Communication is basic in not only our professional but personal lives, and everyone I’ve met responds well to stories, from children to executive audiences. Not only that, learning to tell a story helps you formulate concepts about the topic, which is yet another way of learning. &lt;/p&gt;  &lt;p&gt;I heard about this book from a couple of folks, and it landed within search of “storytelling” and “business”. Whenever I just search for “Storytelling” I either end up with lists of stories (which is fine) or lists of children’s books on storytelling (which is also fine) but neither of these are quite what I’m looking for.&lt;/p&gt;  &lt;p&gt;A quick search on Amazon and I located the book, and then a quick check of my various e-library offerings and I downloaded it to my laptop for reading. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is a “selling” book, but not like you might think. It’s not a book of a quick sale like at a car-lot or a “quick-sale” environment. It’s more along the lines at the executive level and longer-term sales - those involve stories as well. &lt;/p&gt;  &lt;p&gt;Sadly, this is another “business book” - the kind I normally don’t like much. There are typical case-study layouts with lots of examples, but in my mind not enough didactic information to actually help you develop a good story-telling mantra.&amp;#160; &lt;/p&gt;  &lt;p&gt;Even so, I learned some interesting things about the process these authors use. Some of the case studies are interesting, and I did pull out that a story should work towards a single, defining sentence. This isn’t unique to this book, but it is a reinforcement of what I’ve learned elsewhere. Although nothing to do with storytelling, I did like the reference to &lt;a href="http://www.lockheedmartin.com/us/aeronautics/skunkworks/14rules.html" target="_blank"&gt;Lockheed’s “14 Rules&lt;/a&gt;”, which I hadn’t read before. They also break down the storytelling process into five elements, which is actually covered better (in my mind) in a book called “&lt;a href="http://www.amazon.com/20-Master-Plots-Build-Them/dp/1599635372/ref=sr_1_1?ie=UTF8&amp;amp;qid=1327938189&amp;amp;sr=8-1" target="_blank"&gt;20 Master Plots&lt;/a&gt;” , which may actually be the storytelling book I’ve been searching for. &lt;/p&gt;  &lt;p&gt;Or perhaps I should just write the one I’m looking for. &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3036.wlEmoticon_2D00_smile_5F00_2.png" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At any rate, not sure I would recommend this book to others - perhaps as a check-out, but not a purchase, at least if this is for the same reason I looked it up.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw Notes: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I read, I take notes - it’s called “reading with a pencil”. These are the notes I made to myself, in no particular order and with no context other than the book itself: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Stories are interesting to us all. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Describes five elements in a story, but in fact this is for only one type of story. Other books describes more story types. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Very standard business book, but there are good tips in some of the chapters. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Explained how to connect with the audience, good points Spends a lot of time referring to other books The book of five rings Work towards a single, memorable sentence. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Changes partway through into stories about stories. This is better. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;A mix of storytelling and sales, although this was touted for sales, feels much more like selling than storytelling, advertisements. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Interesting story about memory championships, where contestants memorize cards. They use unusual stories. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin:0in 0in 0pt;" class="MsoPlainText"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Look up Lockheed and the 14 rules &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41442" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Career" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx" /><category term="Book Review" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx" /><category term="Learning" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Learning/default.aspx" /><category term="How I work" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/How+I+work/default.aspx" /></entry><entry><title>Team Foundation Server (TFS) in the Cloud - My Experience So Far</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/24/team-foundation-server-tfs-in-the-cloud-my-experience-so-far.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/24/team-foundation-server-tfs-in-the-cloud-my-experience-so-far.aspx</id><published>2012-01-24T12:45:13Z</published><updated>2012-01-24T12:45:13Z</updated><content type="html">&lt;p&gt;I recently joined a software development project that involves not only myself and other internal Microsoft employees, but a partner and a customer as well. We are building a hybrid solution that uses assets on premises as well as Windows Azure for processing. When we put the team together we picked a methodology (Agile) for the project (we use multiple methodologies at Microsoft - whatever the project needs) and then we started talking about Source Control. &lt;/p&gt;  &lt;p&gt;We’re all comfortable with various tools for check-in-check-out, branching, and so on. We have all used GIT, SVN, and TFS. Some of us have even used Source Safe in past, but that’s another post. &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6661.wlEmoticon_2D00_smile_5F00_2.png" /&gt; Each company has a full set of Source Control systems in place. But using each other’s systems requires logins, firewalls and the like - so we decided to use the &lt;a href="http://tfspreview.com/" target="_blank"&gt;TFS Service Preview&lt;/a&gt; to run the entire project from “the cloud”. Here are my experiences with that. &lt;/p&gt;  &lt;p&gt;The process was really simple. In fact, we talked about using the cloud TFS in the first SCRUM, and the team was working from the Work Items list that afternoon. The original account login provides a web interface to allow people to join the team. Each of us happened to have a Live.Com address, so we just invited those addresses to join and they got a link, like this: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;projectname.tfspreview.com&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I’m using Visual Studio, and it’s a requirement for TFS preview to have SP1 installed, and this patch: &lt;span style="font-family:'Calibri','sans-serif';color:#1f497d;font-size:11pt;mso-fareast-font-family:calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=212065" target="_blank"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;KB2581206&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;From there, I opened Visual Studio and navigated from the main menu to Team and then Connect to Team Foundation Server. I’m given this menu: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5001.tfs_2D00_2.jpg_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="tfs-2.jpg" border="0" alt="tfs-2.jpg" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1778.tfs_2D00_2.jpg_5F00_thumb.png" width="244" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Selecting port 443 and HTTPS (for security) and then ensuring the lower link has the “tfs” appended as the location, I opened the project. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7167.tfs_2D00_3_5F00_2.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="tfs-3" border="0" alt="tfs-3" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5584.tfs_2D00_3_5F00_thumb.jpg" width="244" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(This VSTS screenshot is of a project I did in my University of Washington class I teach - I never show client code or names in a blog post)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;From there it’s a normal set of operations. Right now the preview doesn’t have some things I’d really like, such as an automated build or some of the testing tools, but &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/14/team-foundation-server-on-windows-azure.aspx" target="_blank"&gt;you can read this blog entry to learn more about the entire sign-up process, and what the team has planned&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Each day I log in to the project, and I’m given this new sign-in option: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7635.tfs_2D00_1_5F00_2.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="tfs-1" border="0" alt="tfs-1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3438.tfs_2D00_1_5F00_thumb.jpg" width="244" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I click the option, and I open the environment, hit My Work Items query, and get to work. All in all, a seamless - although basic - experience. The speed at which we could set up and work on a project was really sweet. It’s remarkable how un-remarkable this is - I just do my work each day, everything is running and backed up in the cloud. I think that’s the point. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41263" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Development" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx" /><category term="Developer" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx" /><category term="Web" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Web/default.aspx" /><category term="Process" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Process/default.aspx" /><category term="How I work" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/How+I+work/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /></entry><entry><title>Bug-Out Bags and Cloud Architecture Considerations</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/20/bug-out-bags-and-cloud-architecture-considerations.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/20/bug-out-bags-and-cloud-architecture-considerations.aspx</id><published>2012-01-20T17:00:58Z</published><updated>2012-01-20T17:00:58Z</updated><content type="html">&lt;p&gt;I served in the U.S. Military for a while, and as part of my training we had to maintain a “Bug-Out Bag”, which was a large duffle-bag full of certain items that we could live on/fight with in an emergency. I’ve carried the spirit of that idea forward with me into civilian life, in Florida and especially here in the Pacific Northwest.&lt;/p&gt;  &lt;p&gt;In Florida we dealt with the threat of hurricanes - I went through four of those in one year that hit my area. You’re without power, it floods quickly, and it gets wicked hot. You roof might be gone, whatever. Here in the Pacific Northwest, I live near one of the largest volcano's in the world, we have flooding, and recently we were hit with an ice-storm. Now I’ve lived all over the world, from Alaska to North Dakota and &lt;a href="http://en.wikipedia.org/wiki/Shemya" target="_blank"&gt;even near the Kamchatka Peninsula in Russia&lt;/a&gt;, and I can handle the snow. But ice - that’s a toughie no matter where you live. We had so much that it split my little pine tree in front of the house in half. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8168.P1030729.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="P1030729" border="0" alt="P1030729" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6180.P1030729_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5428.P1030728.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="P1030728" border="0" alt="P1030728" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7178.P1030728_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We lost power - although I think the folks at Puget Sound Energy did an amazing job at getting us back up in less than 24 hours, but we weren’t worried anyway. That bug-out bag mentality carried forward to a “second pantry” we keep in the garage. &lt;/p&gt;  &lt;p&gt;We have a large plastic box (that will fit in the back of the Subaru) with dried goods like pasta, and canned goods and even a little cook stove. We have 25 gallons of clean water in Jerry-Cans. We have batteries, candles and matches. And we have flashlights around every door. We use supplies from the “pantry” to fill our house pantry, and then refill the emergency one from the grocery store. That way everything is fresh, rotated, and we can “bug-out” here at home or on the road. &lt;/p&gt;  &lt;p&gt;So what does this have to do with Distributed Computing Architectures?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;It’s the thought process&lt;/em&gt;. In both the military and civilian life, I’ve done a few things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Sat down and thought carefully about exactly what I need. Did I include a can-opener? A small shovel to dig out of whatever I got stuck in? Then I weed out what I *really* don’t need.&lt;/li&gt;    &lt;li&gt;Put those things into a small, manageable container. &lt;/li&gt;    &lt;li&gt;Tried them - even when (especially when) I didn’t have an emergency&lt;/li&gt;    &lt;li&gt;Tweaked the process to see what I could do better.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Have you done this when you moved an app to the “cloud”? Each of these has a computing parallel - do you know what you would do if you couldn’t access the Distributed Computing Environment?&lt;/p&gt;  &lt;p&gt;I’ve found these thoughts are actually a great place to start - keeps the process simplified from the start, and gives you a sense of assurance when you’re asked if you can recover from an emergency. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41196" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Best Practices" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx" /><category term="Disaster Recovery" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Disaster+Recovery/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Application Architecture" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx" /><category term="Concepts" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx" /></entry><entry><title>Cloud Computing In Action: How I work with Live Mesh, SkyDrive, and Office Live Workspace</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/16/cloud-computing-in-action-how-i-work-with-live-mesh-skydrive-and-office-live-workspace.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/16/cloud-computing-in-action-how-i-work-with-live-mesh-skydrive-and-office-live-workspace.aspx</id><published>2012-01-16T14:27:44Z</published><updated>2012-01-16T14:27:44Z</updated><content type="html">&lt;p&gt;Recently I had an tweetversation with a couple of friends on some confusion around two of our products: &lt;a href="http://explore.live.com/skydrive" target="_blank"&gt;SkyDrive&lt;/a&gt; and &lt;a href="http://explore.live.com/windows-live-essentials-other-programs?T1=t4&amp;amp;os=other" target="_blank"&gt;Live Mesh&lt;/a&gt;. Like most of our software, there’s no single way to do things. That can be a strength or it can cause that confusion. They asked if I would blog how I work with these two products, and what advantages there are to this way of working. &lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;font color="#c0504d"&gt;Before I start - this is specific to these two Microsoft products. &lt;/font&gt;&lt;/em&gt;&lt;a href="http://www.urbandictionary.com/define.php?term=fanboi" target="_blank"&gt;&lt;em&gt;&lt;font color="#c0504d"&gt;If you’re a fanboi of another product&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font color="#c0504d"&gt;, that’s great. Awesome. Go for it. You don’t have to use these. There’s no law about it or anything. It’s all good. I use the products you see below because I evaluated lots of them, and these work the best for me - not because I work at Microsoft. But do what makes you happy. &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Let’s start with what each of these products do. Live Mesh synchronizes files to various locations. You can create a file on one PC, save it, and then when you fire up another PC that file will be copied from the original location. It’s a mirror of the file, and it exists in both places. You can change the file on the second location, and it will be copied back to the other system, stepping right on top of it. &lt;/p&gt;  &lt;p&gt;SkyDrive is a storage system. You can store lots of data in there - larger than most of the other free offerings. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/office/sbs/Office_Live_Workspace.aspx" target="_blank"&gt;Office Live Workspaces&lt;/a&gt; allows you to integrate SkyDrive into your local copy of Microsoft Office, so that you can create, save and edit a document and it will be stored in SkyDrive, and not only that, it will keep a local, synced copy so that you can work offline. But it also has a web-based subset of Microsoft Office. You can create, edit and work with Microsoft Office documents with no software installed at all. From Linux, Mac, a cell phone, whatever has a browser. In fact, we’ve released one of my favorite products, OneNote, in iPhone and iPad flavors, which also buffer down the file as if you had a PC and Microsoft Office. &lt;/p&gt;  &lt;p&gt;I rely on these each of these products every day. Here’s how I use them. &lt;/p&gt;  &lt;p&gt;I use Live Mesh to copy my entire “Data” directory - files, music, everything - from my home “server” to my work and other systems. Since SkyDrive has a limit, I only send certain files to SkyDrive using Mesh. Just the ones I need access to from non Microsoft-OS devices. Of course, this means I have to leave my home server turned on - which I do anyway since it’s my media server, web server, TV, etc. But everything else I sync to about four computers running Windows. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0876.mesh1_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px;" title="mesh1" border="0" alt="mesh1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1263.mesh1_5F00_thumb.png" width="466" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For my OneNote files - quickly becoming the center of my universe - and anything else I want to access from anywhere, all the time, I use SkyDrive and Live Office. Here’s how that works.&lt;/p&gt;  &lt;p&gt;If it’s an MP3, Visual Studio Code, a training video or whatever my customer needs, I save it in SkyDrive, mark it public, and send them the link. Done. Any device that can render these can access the file over the web. Since I play in a group on Sunday, I even put my music there (I use MuseScore) and then I can pop the music up on my netbook right at the pulpit and leave the paper at home.&lt;/p&gt;  &lt;p&gt;For OneNote or other Microsoft Office documents, I create the document first in Office Live. Once the file is open, and before I even type in it, I click the button marked “Open in OneNote” (or Word, or Excel, or whatever) and from them on I have that file linked in the local system, and a shadow copy for working offline. I can also work with that document from the web using my Linux or Apple OS’s if needed. I recently attended a very Microsoft-hostile environment, so everything from the presentation to the code review for Windows Azure I did from Live Office and my SkyDrive, all from my Linux Laptop. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0383.mesh2_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px;" title="mesh2" border="0" alt="mesh2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4174.mesh2_5F00_thumb.png" width="426" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As I’ve always said - use what works. This arrangement gives me the ultimate flexibility. I have my data from Live Mesh synchronized on multiple systems. More than once I’ve deleted something I needed, or changed something. I simply boot up the other device without being connected to the web, copy the old version off, and then let it connect and sync. I also back up my home server once a week to a set of local drives, so I have offsite and onsite backups. I can work from anywhere I have a browser, or someone that will let me borrow a device. I have all my presentations ready to present from any system, even if mine breaks. &lt;/p&gt;  &lt;p&gt;Hopefully this helps - and hopefully it inspires you to write a blog entry on how you use your favorite cloud products. There are always multiple ways to do things, and I love to learn. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41063" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="How I work" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/How+I+work/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /></entry><entry><title>Stand-Up Cloud Computing</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/09/stand-up-cloud-computing.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/09/stand-up-cloud-computing.aspx</id><published>2012-01-09T13:33:28Z</published><updated>2012-01-09T13:33:28Z</updated><content type="html">&lt;p&gt;When I was very young, I asked my uncle for career advice. He went silent, thinking for a bit, and then said: “People who work sitting down make more than people who work standing up.” I’m not certain how true that really is, but my career as a technology professional has led me to work in a seated position for most of my life. &lt;/p&gt;  &lt;p&gt;Turns out, that’s a bad thing. Although I consider myself pretty fit, eating right, sleeping well and working out several times a week in addition to a morning walk with the family each day, I always look for low-barrier ways to stay healthy. When I first moved to the Pacific Northwest to work for Microsoft, I noticed several folks working at tall desks with no chairs. Some even had treadmills. I chalked it up to the ethos here; and certainly not something I would do. &lt;/p&gt;  &lt;p&gt;But this year that changed. I noticed that my back was a little stiffer when I got done with my 12-13 hour days of work. For the last couple of years, I’ve worked from home, so I don’t attend meetings (at least in person) as often or have to walk very far to do almost any part of my job. I start work around 6 in the morning, and sometimes get so focused that I don’t moved for many hours. &lt;a href="http://mashable.com/2011/04/22/standup-desks/" target="_blank"&gt;I read an article on how bad sitting really is&lt;/a&gt;, and after further investigation thought I might give one of those stand-up desks a try. &lt;/p&gt;  &lt;p&gt;The research led me to believe that you don’t actually have to use a stand-up desk per-se, you can also use an alternate chair or just get up every so often. But I wanted to try this out, and figured that I would be more likely to take a break and sit every hour than I would to remember to stand every hour. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Before&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My office desk is fairly typical, but I do have a decent office chair. That’s after going through probably six or seven chairs in the last few years. I have good lighting, a speakerphone, a web cam and two monitors. I also have the typical flotsam and jetsam of desk clutter, although I’m neater than some. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8662.P1030706.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030706" border="0" alt="P1030706" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8267.P1030706_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5531.P1030707.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030707" border="0" alt="P1030707" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4848.P1030707_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This arrangement has suited me well since I’ve been working at home. I had something similar in an office environment, although I didn’t always have the option of a decent chair. I didn’t go through the trouble of bringing one of my own in; I just put up with whatever I got, or could “appropriate” from an empty office or conference room.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Build&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My criteria were fairly simple: the experiment had to cost less than 100.00, and be at the proper height and size to hold my keyboard, trackball, phone and monitors so that I could type with my elbows staying at a 90 degree angle. &lt;/p&gt;  &lt;p&gt;After researching standing desks, 100.00 was going to be impossible, not even for a used one. I visited several thrift shops in the area (I do that a lot anyway to donate and to buy) and didn’t find anything that worked. Of course, when you’re faced with finding cheap furniture, you naturally turn to the most amazing store on the planet. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ikea.com/us/en/" target="_blank"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://www.creativeroots.org/wp-content/uploads/2009/08/ikea-logo.jpg" width="263" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Before I left, I measured the top area and height of my desk, and wrote down acceptable measurements based on how I high I stood, the stuff I needed the top to hold, and the distance I needed for my typing to be done at the right height. Measurements in hand, I headed to the store. &lt;/p&gt;  &lt;p&gt;I found a coffee table - &lt;a href="http://www.ikea.com/us/en/catalog/products/10104295/" target="_blank"&gt;a really cheap one (19.00) called (oddly) LACK&lt;/a&gt; and brought it home to begin the surreal process of assembling something bought at Ikea. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2476.P1030709.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030709" border="0" alt="P1030709" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8750.P1030709_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7178.P1030710.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030710" border="0" alt="P1030710" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1738.P1030710_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Happily, this was REALLY simple. Four lag bolts hold the legs on, and eight screws punched into the wood (or at least wood-like) to attach the shelf. My original thought was that I would move the shelf up higher than the Ikea instructions, and then use the pull-out tray from my desk to put the keyboard and trackball on. However, that was not to be. On investigation I found that the tray was not hung underneath the desk, but attached at the sides. That meant I had to either buy another tray, or place the keyboard on top, necessitating standing two inches higher. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The After&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Researching trays, I found they were terribly expensive. These things used to be everywhere, so I was surprised that they aren’t as easy to get as they once were. Off to the thrift store to see what they had. I found an older tray, but it looked flimsy. I then found a child’s plastic picnic table. The plastic was strong, and 1.5 inches thick. I figured I needed some padding to stand on anyway, so I bought the table, pulled off the legs, and wrapped some padding in an older rug. This brought the total cost of the build to 25.00 and 2.00 for an espresso and a cinnamon bun at Ikea (I would be burning these calories off with my new desk, after all). &lt;/p&gt;  &lt;p&gt;&lt;img src="http://2.bp.blogspot.com/_47gvaXgPZHk/S1aBhxhSXvI/AAAAAAAAEB4/HBal11co7KI/s320/Photo+1200.jpg" width="237" height="178" /&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6012.P1030717.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030717" border="0" alt="P1030717" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2476.P1030717_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I re-routed all my cables, and everything fit correctly. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6012.P1030711.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030711" border="0" alt="P1030711" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4442.P1030711_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8750.P1030713.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030713" border="0" alt="P1030713" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8171.P1030713_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2804.P1030714.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="P1030714" border="0" alt="P1030714" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0825.P1030714_5F00_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;My Early Conclusions&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first day was easy. I thought - well I should have done this a LONG time ago! My back wasn’t that sore, and I didn’t feel that tired. &lt;/p&gt;  &lt;p&gt;Then I woke up the next morning. My feet were sore, although not terribly. The second day, I had to sit down each hour. Not just wanted to sit down - needed to. I play in a group at Church on Sunday, so I put my guitar in the office and spent 5 minutes each hour (roughly - sometimes I have calls that are longer than that) and practice a little sitting down. That helped a lot. &lt;/p&gt;  &lt;p&gt;I’ve now been at the desk for four days, and I don’t need the breaks as often. I also find I need to shift around a lot, which of course burns even more calories and is better for me. I honestly think the treadmill desk might be easier than a standing one. We’ll see if I go that far someday. &lt;/p&gt;  &lt;p&gt;The verdict so far? Glad I’ve done this. If it doesn’t work out, I’ll just re-purpose the coffee table and go back to sitting - although I’m pretty stubborn and will probably stick with this for a while. I’ll let you know if I change back, and why.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4454.P1030719.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="P1030719" border="0" alt="P1030719" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2476.P1030719_5F00_thumb.jpg" width="184" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My executive assistant hasn’t changed her office arrangement at all. She still keeps her (Ikea) chair just like she’s had it since she started working with me, and dutifully stays at her workstation for the entire 12-13 hours each day. We do, however, take our lunchtime walk still. She burns her calories that way, and thinks it’s better than just standing around all the time. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2388.P1030705.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="P1030705" border="0" alt="P1030705" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8662.P1030705_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40908" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Personal" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Personal/default.aspx" /><category term="How I work" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/How+I+work/default.aspx" /></entry><entry><title>Valentine’s Day and Your Career</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2012/01/03/valentine-s-day-and-your-career.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2012/01/03/valentine-s-day-and-your-career.aspx</id><published>2012-01-03T13:53:17Z</published><updated>2012-01-03T13:53:17Z</updated><content type="html">&lt;p&gt;The new year has begun. It’s traditional to make “Resolutions” at this time, but &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2010/01/04/new-year-s-goals-not-new-year-s-resolutions.aspx" target="_blank"&gt;as I’ve mentioned before, I don’t do that. I make goals instead.&lt;/a&gt; I like things to be measurable, and I hold myself accountable to those goals - some of which deal with my professional life.&lt;/p&gt;  &lt;p&gt;But you might not buy into all that. Perhaps you’re the kind of person who doesn’t buy Valentine’s day cards, or take your significant other out for dinner on Valentine’s day. After all, &lt;a href="http://www.deathandtaxesmag.com/53027/valentines-day-and-its-pagan-roots/" target="_blank"&gt;it’s a manufactured, made up holiday from the greeting-card companies, right&lt;/a&gt;? Somebody just decided to come up with a day to make you do something you don’t normally do. &lt;/p&gt;  &lt;p&gt;Here’s a tip: do it anyway. Buy the flowers. Jump into the hype. Yes, it’s a made-up holiday. Yes, they’re making money off of you. But take that person out for the nicest dinner you can find. Treating someone you love in a special way on a periodic date &lt;a href="http://www.psychologytoday.com/blog/marriage-and-parenting-in-todays-culture/201002/just-do-it-men-and-valentines-day" target="_blank"&gt;is shown to increase the bond in a relationship&lt;/a&gt;, simply &lt;em&gt;because&lt;/em&gt; it’s a ritual date that others keep. The ritual &lt;em&gt;is&lt;/em&gt; the magic. &lt;/p&gt;  &lt;p&gt;What does this have to do with New Year’s, or your career? &lt;em&gt;Everything&lt;/em&gt;. Not to burst a bubble here, but the universe is not aware of human timekeeping mechanisms. The New Year is just as artificial as Valentine’s day. In fact, many other cultures don’t even count the 1st of January as the New Year. But it’s OK - just like Valentine’s day, you can use the “start of the new year” as a time to focus on something you need to do.&lt;/p&gt;  &lt;p&gt;It’s pretty simple to do this - but of course simple != easy. Goals need to be realistic - so sit down sometime this week, and follow this process:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Write down where you want to be in a year in your career. Make it specific. An award, a position, a company, a raise. Write it down.&lt;/li&gt;    &lt;li&gt;Write down a few books you want to read that will help you get there. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/12/30/book-review-book-7-think-stats.aspx" target="_blank"&gt;Blog about these books&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Write down the people you need to talk to, inside your company and out. Send an invite out to these people to chat. Do that this week.&lt;/li&gt;    &lt;li&gt;Write down the things you need to accomplish for that goal in your job.&lt;/li&gt;    &lt;li&gt;Tell others you are doing these things, and what you expect.&lt;/li&gt;    &lt;li&gt;Implement your plan. &lt;/li&gt;    &lt;li&gt;Review your plan and adjust as needed each month.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Yes, the “new year” is artificial, like Valentine’s day. So what. Use it to get where you need to go. &lt;/p&gt;  &lt;p&gt;Happy New Career.&amp;#160;&amp;#160; &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40780" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Career" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx" /></entry><entry><title>Windows Azure Storage (WAS) Internals - Achieving Consistency</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/12/13/windows-azure-storage-was-internals-achieving-consistency.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/12/13/windows-azure-storage-was-internals-achieving-consistency.aspx</id><published>2011-12-13T16:05:50Z</published><updated>2011-12-13T16:05:50Z</updated><content type="html">&lt;p&gt;Windows Azure Storage has three primary components - a Queue, a Binary Large Object (BLOB) store (two types of these), and Table Storage. &lt;/p&gt;  &lt;p&gt;Storage of data on-premises is fairly well understood - but there components of it that you may not consider. When you move to a distributed architecture, certain factors should be taken into account, such as consistency. Consistency means that when you store a datum it should be available in the same bit format across the calling mechanism. In other words, if you store a picture with a certain name, whenever you call that name that particular picture should show up. That might sound obvious - but when you begin to scale horizontally, it’s a big consideration. Systems are spread out over multiple physical racks, which are further separated into separate “fault domains” each with its own power, networking and so on, and in Windows Azure, the storage is replicated to ensure high-availability. &lt;/p&gt;  &lt;p&gt;Some “cloud” systems relax the consistency target to allow for the highest speed throughput. This might allow inconsistent reads, meaning that the datum recorded in the naming system would be available yet, or that it might allow an older version of the datum to be read. In Windows Azure, we took the position that the consistency is of the highest importance. We achieved this through constructs such as the Location Service (LS), Stream, Partition and Front-End layers, and separate replication engines. Of key importance in a system that allows high consistency is in the naming and object access protocols - in fact, these turn out to be some of the most pivotal. &lt;/p&gt;  &lt;p&gt;Windows Azure Storage has a complex arrangement to ensure this high consistency. You can read some very deep internals &lt;a href="http://sigops.org/sosp/sosp11/current/2011-Cascais/printable/11-calder.pdf"&gt;here&lt;/a&gt;.&amp;#160; And a video of the talk held at an ACM conference is &lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;a href="http://www.youtube.com/watch?v=QnYdbQO0yj4"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;here&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40354" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Storage" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Storage/default.aspx" /></entry><entry><title>How Microsoft helps you NOT break your Windows Azure Application: Storage Services Versioning</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/12/06/how-microsoft-helps-you-not-break-your-windows-azure-application-storage-services-versioning.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/12/06/how-microsoft-helps-you-not-break-your-windows-azure-application-storage-services-versioning.aspx</id><published>2011-12-06T14:42:57Z</published><updated>2011-12-06T14:42:57Z</updated><content type="html">&lt;p&gt;&lt;font size="2"&gt;One of the advantages of using Windows Azure to run your code is that you don’t have to constantly manage upgrades on your platform. While that’s a big advantage indeed, it immediately brings up the question - how do the upgrades happen? Microsoft upgrades the Azure platform in periodic increments, and the components that are affected are documented. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;This brings up another question - upgrades mean change, and change can sometimes alter the way you might implement a feature. What if you have taken a dependency on some feature in your code that has been altered by an upgrade? Windows Azure does have an Application Lifecycle Management (ALM) Process, which I’ll reference at the end of this post. But beyond that, there are some features we’ve put into place that will help you manage many of these changes. One of those is being able to set the version of storage features you would like your code to use. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Windows Azure is made up of three main component areas: Computing, Storage and a group of features called the Application Fabric. You can use these components together or separately, depending on what you would like your application to do. In this post I’ll deal with the version control in the storage subsystem - in other posts I’ll explain how to track and in some cases control the versions of the other components you work with.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;When you send a request to a Windows Azure resource, you’re actually using a &lt;a href="http://en.wikipedia.org/wiki/REST" target="_blank"&gt;REST&lt;/a&gt; call. That’s a three-part call to the system that has a request (called a URI), a header, and a body of code you want to send. So a typical call, such as to a table, might look like this example, which changes the properties of a Blob: &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;URI&lt;/strong&gt;:       &lt;br /&gt;&lt;font color="#0000ff"&gt;PUT http://myaccount.table.core.windows.net/?restype=service&amp;amp;comp=properties HTTP/1.1&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;Header&lt;/strong&gt;:       &lt;br /&gt;&lt;font color="#0000ff"&gt;&lt;font style="background-color:#ffff00;"&gt;x-ms-version: 2011-08-18&lt;/font&gt;        &lt;br /&gt;x-ms-date: Tue, 30 Aug 2011 04:28:19 GMT        &lt;br /&gt;Authorization: SharedKey        &lt;br /&gt;myaccount:Z1lTLDwtq5o1UYQluucdsXk6/iB7YxEu0m6VofAEkUE=        &lt;br /&gt;Host: myaccount.table.core.windows.net&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;Body&lt;/strong&gt;:      &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;       &lt;br /&gt;&amp;lt;StorageServiceProperties&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Logging&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Version&amp;gt;1.0&amp;lt;/Version&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Delete&amp;gt;true&amp;lt;/Delete&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Read&amp;gt;false&amp;lt;/Read&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Write&amp;gt;true&amp;lt;/Write&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RetentionPolicy&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Days&amp;gt;7&amp;lt;/Days&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/RetentionPolicy&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Logging&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Metrics&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Version&amp;gt;1.0&amp;lt;/Version&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;IncludeAPIs&amp;gt;false&amp;lt;/IncludeAPIs&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RetentionPolicy&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Days&amp;gt;7&amp;lt;/Days&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/RetentionPolicy&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Metrics&amp;gt;        &lt;br /&gt;&amp;lt;/StorageServiceProperties&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;em&gt;(&lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh452240.aspx" target="_blank"&gt;&lt;em&gt;Source&lt;/em&gt;&lt;/a&gt;&lt;em&gt; of this code)&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;You can see that I’ve highlighted a portion of the header block - that’s where you set the version of the Storage Services you would like to use. You can find a list of the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dd894041.aspx" target="_blank"&gt;features introduced in each version here&lt;/a&gt;. &lt;/font&gt;&lt;font size="2"&gt;It’s not a requirement of adding that element to the header, but it’s best practices to do so. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;You don’t have to use REST calls directly, however. It’s more common to use the API in the Software Development Kit to just change the property in your IDE environment - the setting you’re looking for there is the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh343266.aspx"&gt;Set Storage Service Properties&lt;/a&gt; call. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Interestingly, rather than a breaking change you might run into an unexpected behavior if you are not aware of these parameters. In some code I recently reviewed a newer feature from the storage system failed when it was called. On inspection I found that the developer had used an older codeblock from a previous version of the storage system - he was not aware you can set the version of storage in the call. We changed the header to the latest version, and everything worked as expected. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The Storage Services Versioning and the changes for each version: &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dd894041.aspx"&gt;&lt;u&gt;&lt;font color="#4f81bd" size="2" face="Arial"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/dd894041.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font color="#000000" face="Arial"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;Windows Azure Application Lifecycle Management: &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff803362.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff803362.aspx&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;font color="#000000" size="2" face="Arial"&gt;&lt;a href="http://channel9.msdn.com/posts/Windows-Azure-Jump-Start-03-Windows-Azure-Lifecycle-Part-1"&gt;http://channel9.msdn.com/posts/Windows-Azure-Jump-Start-03-Windows-Azure-Lifecycle-Part-1&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/Australia/Tech-Ed-Australia-2011/COS201"&gt;http://channel9.msdn.com/Events/TechEd/Australia/Tech-Ed-Australia-2011/COS201&lt;/a&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40161" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Developer" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx" /><category term="Design" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx" /><category term="Testing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Testing/default.aspx" /><category term="Latest Version" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Latest+Version/default.aspx" /><category term="Documentation" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Documentation/default.aspx" /><category term="Upgrades" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Upgrades/default.aspx" /><category term="Data" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx" /><category term="Installation and Upgrade" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Installation+and+Upgrade/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Storage" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Storage/default.aspx" /><category term="Service Packs" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Service+Packs/default.aspx" /></entry><entry><title>Windows Azure Best Practices: Affinity Groups</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx</id><published>2011-11-29T04:43:00Z</published><updated>2011-11-29T04:43:00Z</updated><content type="html">&lt;p&gt;When you create a Windows Azure application, you&amp;rsquo;ll pick a subscription to put it under. This is a billing container - underneath that, you&amp;rsquo;ll deploy a Hosted Service. That holds the Web and Worker Roles that you&amp;rsquo;ll deploy for your applications. Along side that, you use the Storage Account to create storage for the application. (In some cases, you might choose to use only storage or Roles - the info here applies anyway)&lt;/p&gt;
&lt;p&gt;As you are setting up your environment, you&amp;rsquo;re asked to pick a &amp;ldquo;region&amp;rdquo; where your application will run.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1258.Affinity_5F00_2.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px;" title="Affinity" border="0" alt="Affinity" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0763.Affinity_5F00_thumb.png" width="244" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you choose a Region, you&amp;rsquo;ll be asked where to put the Roles. You&amp;rsquo;re given choices like Asia, North America and so on. This is where the hardware that physically runs your code lives. We have lots of fault domains, power considerations and so on to keep that set of datacenters running, but keep in mind that this is where the application lives.&lt;/p&gt;
&lt;p&gt;You also get this selection for Storage Accounts. When you make new storage, it&amp;rsquo;s a best practice to put it where your computing is. This makes the shortest path from the code to the data, and then back out to the user.&lt;/p&gt;
&lt;p&gt;One of the selections for the location is &amp;ldquo;Anywhere U.S.&amp;rdquo;. This selection might be interpreted to mean that we will bias towards keeping the data and the code together, but that may not be the case. There is a specific abstraction we created for just that purpose: Affinity Groups.&lt;/p&gt;
&lt;p&gt;An Affinity Group is simply a name you can use to tie together resources. You can do this in two places - when you&amp;rsquo;re creating the Hosted Service (shown above) and on it&amp;rsquo;s own tree item on the left, called &amp;ldquo;Affinity Groups&amp;rdquo;. When you select either of those actions, You&amp;rsquo;re presented with a dialog box that allows you to specify a name, and then the Region that&amp;nbsp; names ties the resources to. Choose a specific region - not one of the "Anywhere" choices.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8512.Affinity2_5F00_2.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px;" title="Affinity2" border="0" alt="Affinity2" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3324.Affinity2_5F00_thumb.png" width="244" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now you can select that Affinity Group just as if it were a Region, and your code and data will stay together. That helps with keeping the performance high.&lt;/p&gt;
&lt;p&gt;Official Documentation: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh531560.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/hh531560.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40041" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Best Practices" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Book review (Book 6) - Wikinomics</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/11/22/book-review-book-6-wikinomics.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/11/22/book-review-book-6-wikinomics.aspx</id><published>2011-11-22T14:35:02Z</published><updated>2011-11-22T14:35:02Z</updated><content type="html">&lt;p&gt;This is a continuation of the books I challenged myself to read to help my career - one a month, for year. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;You can read my first book review here&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. The book I chose for November 2011 was: &lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;font size="3"&gt;&lt;font size="2" face="Arial"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;a href="http://www.amazon.com/gp/product/B001UE7DC8/?tag=imreading-20"&gt;&lt;span style="mso-bidi-font-family:arial;"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Arial"&gt;Wikinomics: How Mass Collaboration Changes Everything, by Don Tapscott&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why I chose this Book: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ve heard a lot about this book - was one of the “must read” kind of business books (many of which are very “fluffy”) and supposedly deals with collaborating using technology - so I want to see what it says about collaborative efforts and how I can leverage them.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I &lt;em&gt;really&lt;/em&gt; disliked this book. I’ve never been a fan of the latest “business book”, and sadly that’s what this felt like to me. A “business book” is what I call a work that has a fairly simple concept to get across, and then proceeds to use various made-up terms, analogies and other mechanisms to fill hundreds of pages doing it. &lt;/p&gt;  &lt;p&gt;This perception is at my own – the book is pretty old, and these things go stale quickly. The author’s general point (at least what I took away from it) was: Open Source is good, proprietary is bad. Collaboration is the hallmark of successful companies. In my mind, you can save yourself the trouble of reading this work if you get these two concepts down. &lt;/p&gt;  &lt;p&gt;Don’t get me wrong – open source is awesome, and collaboration is a good thing, especially in places where it fits. But it’s not a panacea as the author seems to indicate. For instance, he continuously uses the example of MySpace to show a “2.0” company, which I think means that you can enter text as well as read it on a web page. All well and good. But we all know what happened to MySpace, and of course he missed the point entirely about this new web environment: low barriers to entry often mean low barriers to exit. &lt;/p&gt;  &lt;p&gt;And the open, collaborative company being the best model – well, I think we all know a certain computer company famous for phones and music that is arguably quite successful, and is probably one of the most closed, non-collaborative (at least with its customers) on the planet. So that sort of takes away that argument. &lt;/p&gt;  &lt;p&gt;The reality of business is far more complicated. Collaboration is an amazing tool, and should be leveraged heavily. However, at the end of the day, after you do your research you need to pick a strategy and stick with it. Asking thousands of people to assist you in building your product probably will not work well. &lt;/p&gt;  &lt;p&gt;Open Source is great – but some proprietary products are quite functional as well, have a long track record, are well supported, and will probably be upgraded. &lt;/p&gt;  &lt;p&gt;Everything has its place, so use what works where it is needed. There is no single answer, sadly. &lt;/p&gt;  &lt;p&gt;So did I waste my time reading the book? Did I make a bad choice? Not at all! Reading the opinions and thoughts of others is almost always useful, and it’s important to consider opinions other than your own. If nothing else, thinking through the process either convinces you that you are wrong, or helps you understand better why you are right.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39940" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Career" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx" /><category term="Book Review" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx" /></entry><entry><title>The Data Scientist</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/11/15/the-data-scientist.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/11/15/the-data-scientist.aspx</id><published>2011-11-15T15:00:18Z</published><updated>2011-11-15T15:00:18Z</updated><content type="html">&lt;p&gt;A new term - well, perhaps not that new - has come up and I’m actually very excited about it. The term is Data Scientist, and since it’s new, it’s fairly undefined. I’ll explain what I &lt;em&gt;think&lt;/em&gt; it means, and why I’m excited about it.&lt;/p&gt;  &lt;p&gt;In general, I’ve found the term deals at its most basic with analyzing data. Of course, we all do that, and the term itself in that definition is redundant. There is no science that I know of that does not work with analyzing lots of data. But the term seems to refer to more than the common practices of looking at data visually, putting it in a spreadsheet or report, or even using simple coding to examine data sets. &lt;/p&gt;  &lt;p&gt;The term Data Scientist (as far as I can make out this early in it’s use) is someone who has a strong understanding of data sources, relevance (statistical and otherwise) and processing methods as well as front-end displays of large sets of complicated data. Some - but not all - Business Intelligence professionals have these skills. In other cases, senior developers, database architects or others fill these needs, but in my experience, many lack the strong mathematical skills needed to make these choices properly. &lt;/p&gt;  &lt;p&gt;I’ve divided the knowledge base for someone that would wear this title into three large segments. It remains to be seen if a given Data Scientist would be responsible for knowing all these areas or would specialize. There are pretty high requirements on the math side, specifically in graduate-degree level statistics, but in my experience a company will only have a few of these folks, so they are expected to know quite a bit in each of these areas. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Persistence&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first area is finding, cleaning and storing the data. In some cases, no cleaning is done prior to storage - it’s just identified and the cleansing is done in a later step. This area is where the professional would be able to tell if a particular data set should be stored in a Relational Database Management System (RDBMS), across a set of key/value pair storage (NoSQL) or in a file system like HDFS (part of the Hadoop landscape) or other methods. Or do you examine the stream of data without storing it in another system at all? &lt;/p&gt;  &lt;p&gt;This is an important decision - it’s a foundation choice that deals not only with a lot of expense of purchasing systems or even using Cloud Computing (PaaS, SaaS or IaaS) to source it, but also the skillsets and other resources needed to care and feed the system for a long time. The Data Scientist sets something into motion that will probably outlast his or her career at a company or organization.&lt;/p&gt;  &lt;p&gt;Often these choices are made by senior developers, database administrators or architects in a company. But sometimes each of these has a certain bias towards making a decision one way or another. The Data Scientist would examine these choices in light of the data itself, starting perhaps even before the business requirements are created. The business may not even be aware of all the strategic and tactical data sources that they have access to. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Processing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once the decision is made to store the data, the next set of decisions are based around how to process the data. An RDBMS scales well to a certain level, and provides a high degree of ACID compliance as well as offering a well-known set-based language to work with this data. In other cases, scale should be spread among multiple nodes (as in the case of Hadoop landscapes or NoSQL offerings) or even across a Cloud provider like Windows Azure Table Storage. In fact, in many cases - most of the ones I’m dealing with lately - the data should be split among multiple types of processing environments. This is a newer idea. Many data professionals simply pick a methodology (RDBMS with Star Schemas, NoSQL, etc.) and put all data there, regardless of its shape, processing needs and so on. &lt;/p&gt;  &lt;p&gt;A Data Scientist is familiar not only with the various processing methods, but how they work, so that they can choose the right one for a given need. This is a huge time commitment, hence the need for a dedicated title like this one. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Presentation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is where the need for a Data Scientist is most often already being filled, sometimes with more or less success. The latest Business Intelligence systems are quite good at allowing you to create amazing graphics - but it’s the data behind the graphics that are the most important component of truly effective displays. &lt;/p&gt;  &lt;p&gt;This is where the mathematics requirement of the Data Scientist title is the most unforgiving. In fact, someone without a good foundation in statistics is not a good candidate for creating reports. Even a basic level of statistics can be dangerous. Anyone who works in analyzing data will tell you that there are multiple errors possible when data just seems right - and basic statistics bears out that you’re on the right track - that are only solvable when you understanding why the statistical formula works the way it does. &lt;/p&gt;  &lt;p&gt;And there are lots of ways of presenting data. Sometimes all you need is a “yes” or “no” answer that can only come after heavy analysis work. In that case, a simple e-mail might be all the reporting you need. In others, complex relationships and multiple components require a deep understanding of the various graphical methods of presenting data. Knowing which kind of chart, color, graphic or shape conveys a particular datum best is essential knowledge for the Data Scientist. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why I’m excited&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I love this area of study. I like math, stats, and computing technologies, but it goes beyond that. I love what data can do - how it can help an organization. I’ve been fortunate enough in my professional career these past two decades to work with lots of folks who perform this role at companies from aerospace to medical firms, from manufacturing to retail. &lt;/p&gt;  &lt;p&gt;Interestingly, the size of the company really isn’t germane here. I worked with one very small bio-tech (cryogenics) company that worked deeply with analysis of complex interrelated data. &lt;/p&gt;  &lt;p&gt;So&amp;#160; watch this space. No, I’m not leaving Azure or distributed computing or Microsoft. In fact, I think I’m perfectly situated to investigate this role further. We have a huge set of tools, from RDBMS to Hadoop to allow me to explore. And I’m happy to share what I learn along the way. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39814" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Developer" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx" /><category term="DBA" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/DBA/default.aspx" /><category term="SQL Server" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Server/default.aspx" /><category term="Career" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx" /><category term="SQL Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx" /><category term="Data" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx" /><category term="Data Professional" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Data+Professional/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Concepts" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx" /><category term="Business Intelligence" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Business+Intelligence/default.aspx" /></entry><entry><title>Developing a Cost Model for Cloud Applications</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx</id><published>2011-11-08T15:30:49Z</published><updated>2011-11-08T15:30:49Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; - &lt;em&gt;&lt;font color="#c0504d"&gt;please pay attention to the date of this post. As much as I attempt to make the information below accurate, the nature of distributed computing means that components, units and pricing will change over time. The definitive costs for Microsoft Windows Azure and SQL Azure are located here, and are more accurate than anything you will see in this post:&lt;/font&gt;&lt;/em&gt; &lt;a title="http://www.microsoft.com/windowsazure/offers/" href="http://www.microsoft.com/windowsazure/offers/"&gt;http://www.microsoft.com/windowsazure/offers/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When writing software that is run on a Platform-as-a-Service (PaaS) offering like Windows Azure / SQL Azure, one of the questions you must answer is how much the system will cost. I will not discuss the comparisons between on-premise costs (which are nigh impossible to calculate accurately) versus cloud costs, but instead focus on creating a general model for estimating costs for a given application. &lt;/p&gt;  &lt;p&gt;You should be aware that there are (at this writing) two billing mechanisms for Windows and SQL Azure: “Pay-as-you-go” or consumption, and “Subscription” or commitment. Conceptually, you can consider the former a pay-as-you-go cell phone plan, where you pay by the unit used (at a slightly higher rate) and the latter as a standard cell phone plan where you commit to a contract and thus pay lower rates. In this post I’ll stick with the pay-as-you-go mechanism for simplicity, which should be the maximum cost you would pay. From there you may be able to get a lower cost if you use the other mechanism. In any case, the model you create should hold. &lt;/p&gt;  &lt;p&gt;Developing a good cost model is essential. As a developer or architect, you’ll most certainly be asked how much something will cost, and you need to have a reliable way to estimate that. Businesses and Organizations have been used to paying for servers, software licenses, and other infrastructure as an up-front cost, and power, people to the systems and so on as an ongoing (and sometimes not factored) cost. When presented with a new paradigm like distributed computing, they may not understand the true cost/value proposition, and that’s where the architect and developer can guide the conversation to make a choice based on features of the application versus the true costs.&lt;/p&gt;  &lt;p&gt;The two big buckets of use-types for these applications are customer-based and steady-state. In the customer-based use type, each successful use of the program results in a sale or income for your organization. Perhaps you’ve written an application that provides the spot-price of &lt;em&gt;foo&lt;/em&gt;, and your customer pays for the use of that application. In that case, once you’ve estimated your cost for a successful traversal of the application, you can build that into the price you charge the user. It’s a standard restaurant model, where the price of the meal is determined by the cost of making it, plus any profit you can make. &lt;/p&gt;  &lt;p&gt;In the second use-type, the application will be used by a more-or-less constant number of processes or users and no direct revenue is attached to the system. A typical example is a customer-tracking system used by the employees within your company. In this case, the cost model is often created “in reverse” - meaning that you pilot the application, monitor the use (and costs) and that cost is held steady. This is where the comparison with an on-premise system becomes necessary, even though it is more difficult to estimate those on-premise true costs. For instance, do you know exactly how much cost the air conditioning is because you have a team of system administrators? This may sound trivial, but that, along with the insurance for the building, the wiring, and every other part of the system is in fact a cost to the business. &lt;/p&gt;  &lt;p&gt;There are three primary methods that I’ve been successful with in estimating the cost. None are perfect, all are demand-driven. The general process is to lay out a matrix of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#9b00d3"&gt;components&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#9b00d3"&gt;units&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#9b00d3"&gt;cost per unit&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;and then multiply that times the usage of the system, based on which components you use in the program. That sounds a bit simplistic, but using those metrics in a calculation becomes more detailed. In all of the methods that follow, you need to know your application. The components for a PaaS include computing instances, storage, transactions, bandwidth and in the case of SQL Azure, database size. In most cases, architects start with the first model and progress through the other methods to gain accuracy. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple Estimation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The simplest way to calculate costs is to architect the application (even UML or on-paper, no coding involved) and then estimate which of the components you’ll use, and how much of each will be used. Microsoft provides two tools to do this - one is a simple slider-application located here: &lt;a href="http://www.microsoft.com/windowsazure/pricing-calculator/"&gt;http://www.microsoft.com/windowsazure/pricing-calculator/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7587.cost_2D00_1_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="cost-1" border="0" alt="cost-1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4861.cost_2D00_1_5F00_thumb.png" width="244" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The other is a tool you download to create an “Return on Investment” (ROI) spreadsheet, which has the advantage of leading you through various questions to estimate what you plan to use, located here: &lt;a href="https://roianalyst.alinean.com/msft/AutoLogin.do?d=176318219048082115"&gt;https://roianalyst.alinean.com/msft/AutoLogin.do?d=176318219048082115&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7178.cost_2D00_2_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="cost-2" border="0" alt="cost-2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7266.cost_2D00_2_5F00_thumb.png" width="244" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can also just create a spreadsheet yourself with a structure like this:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;Program Element&lt;/td&gt;        &lt;td&gt;Azure Component&lt;/td&gt;        &lt;td&gt;Unit of Measure&lt;/td&gt;        &lt;td&gt;Cost Per Unit&lt;/td&gt;        &lt;td&gt;Estimated Use of Component&lt;/td&gt;        &lt;td&gt;Total Cost Per Component&lt;/td&gt;        &lt;td&gt;Cumulative Cost&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Of course, the consideration with this model is that it is difficult to predict a system that is not running or hasn’t even been developed. Which brings us to the next model type. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Measure and Project&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A more accurate model is to actually write the code for the application, using the Software Development Kit (SDK) which can run entirely disconnected from Azure. The code should be instrumented to estimate the use of the application components, logging to a local file on the development system. A series of unit and integration tests should be run, which will create load on the test system. &lt;/p&gt;  &lt;p&gt;You can use standard development concepts to track this usage, and even use Windows Performance Monitor counters. The best place to start with this method is to use the Windows Azure Diagnostics subsystem in your code, which you can read more about here: &lt;a href="http://blogs.msdn.com/b/sumitm/archive/2009/11/18/introducing-windows-azure-diagnostics.aspx"&gt;http://blogs.msdn.com/b/sumitm/archive/2009/11/18/introducing-windows-azure-diagnostics.aspx&lt;/a&gt; This set of API’s greatly simplifies tracking the application, and in fact you can use this information for more than just a cost model. &lt;/p&gt;  &lt;p&gt;After you have the tracking logs, you can plug the numbers into ay of the tools above, which should give a representative cost or in some cases a unit cost.&lt;/p&gt;  &lt;p&gt;The consideration with this model is that the SDK fabric is not a one-to-one comparison with performance on the actual Windows Azure fabric. Those differences are usually smaller, but they do need to be considered. Also, you may not be able to accurately predict the load on the system, which might lead to an architectural change, which changes the model. This leads us to the next, most accurate method for a cost model. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sample and Estimate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Using standard statistical and other predictive math, once the application is deployed you will get a bill each month from Microsoft for your Azure usage. The bill is quite detailed, and you can export the data from it to do analysis, and using methods like regression and so on project out into the future what the costs will be. I normally advise that the architect also extrapolate a unit cost from those metrics as well. This is the information that should be reported back to the executives that pay the bills: the past cost, future projected costs, and unit cost “per click” or “per transaction”, as your case warrants.&lt;/p&gt;  &lt;p&gt;The challenge here is in the model itself - statistical methods are not foolproof, and the larger the sample (in this case I recommend the entire population, not a smaller sample) is key. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;References and Tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Articles: &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/patrick_butler_monterde/archive/2010/02/10/windows-azure-billing-overview.aspx"&gt;http://blogs.msdn.com/b/patrick_butler_monterde/archive/2010/02/10/windows-azure-billing-overview.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/gg213848.aspx"&gt;http://technet.microsoft.com/en-us/magazine/gg213848.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.codingoutloud.com/2011/06/05/azure-faq-how-much-will-it-cost-me-to-run-my-application-on-windows-azure/"&gt;http://blog.codingoutloud.com/2011/06/05/azure-faq-how-much-will-it-cost-me-to-run-my-application-on-windows-azure/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/johnalioto/archive/2010/08/25/10054193.aspx"&gt;http://blogs.msdn.com/b/johnalioto/archive/2010/08/25/10054193.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/02/08/qampa-how-can-i-calculate-the-tco-and-roi-when.aspx"&gt;http://geekswithblogs.net/iupdateable/archive/2010/02/08/qampa-how-can-i-calculate-the-tco-and-roi-when.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Other Tools: &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cloud-assessment.com/"&gt;http://cloud-assessment.com/&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://communities.quest.com/community/cloud_tools"&gt;http://communities.quest.com/community/cloud_tools&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39707" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Development" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx" /><category term="Design" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx" /><category term="SQL Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Application Architecture" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx" /></entry><entry><title>Windows Azure Use Case: Supplementing Infrastructure</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/11/01/windows-azure-use-case-supplementing-infrastructure.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/11/01/windows-azure-use-case-supplementing-infrastructure.aspx</id><published>2011-11-01T13:22:01Z</published><updated>2011-11-01T13:22:01Z</updated><content type="html">&lt;p&gt;I’ve explained before that Windows Azure is a Platform as a Service - at its simplest, that means that you write software and Azure runs it for you. But what if you are a shop that normally buys “off the shelf” software, and the only software you write is an internal utility here and there - can you still use Windows Azure?&lt;/p&gt;  &lt;p&gt;Absolutely. Windows Azure is made up of several components, such as computing, storage and other objects you can call in code. And as such, some companies have extended software and hardware you can use that is backed by Windows Azure. In some cases that’s simply software you can use like you would any other - making Azure a “Software as a Service”, which I’ll write about later.&lt;/p&gt;  &lt;p&gt;But in other cases the software a vendor provides a utility you can use for your infrastructure. For instance - “BlobShare”, a free codeplex offering, allows you to create a place where you can upload and download files securely. It allows you to hook in your local Windows accounts (without sending names and passwords over the Internet) or even Google, LiveID or Yahoo logins to access the files. You can think of it as a “corporate DropBox”. Download it and read more about it here: &lt;a href="http://blobshare.codeplex.com/"&gt;http://blobshare.codeplex.com/&lt;/a&gt; and learn how to hook in Active Directory here: &lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;a href="http://blogs.msdn.com/b/vbertocci/archive/2011/10/31/blobshare-sample-acs-protected-file-sharing.aspx"&gt;&lt;u&gt;&lt;font color="#0000ff" size="2" face="Arial"&gt;http://blogs.msdn.com/b/vbertocci/archive/2011/10/31/blobshare-sample-acs-protected-file-sharing.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:'Calibri','sans-serif';font-size:11pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=blobshare&amp;amp;DownloadId=295232" width="634" height="306" /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Another option along these lines is using a hardware appliance to store data in Azure. This has a particular attraction, since some of these appliances (&lt;a href="http://www.storsimple.com/product-overview/" target="_blank"&gt;such as the offerings from StorSimple&lt;/a&gt;) do more than just act as a storage target. The device plugs into the network as storage, moves the data to Windows Azure, de-duplicates (thus saving storage costs), encrypts, acts as a backup device, works with SharePoint and more. No coding is required to use their solution, and it can even act as a Disaster Recovery site. &lt;/p&gt;  &lt;p&gt;Storage isn’t the only way to use Windows Azure in place of infrastructure. Using the Application Fabric Service Bus, you can perform some functions of data access and transfer between companies that used to take a VPN setup - which is no longer required. the caching function in the Service Bus can even relieve the need to upgrade a server for performance. And of course SQL Azure allows you to access a SQL Server database without any server at all. &lt;/p&gt;  &lt;p&gt;So if you’re thinking that Windows and SQL Azure aren’t for you, think again. Start with the problem you have, and see what options you have for solving it. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39516" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="SQL Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx" /><category term="Cloud" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx" /><category term="Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx" /><category term="Windows Azure" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx" /><category term="Cloud Computing" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx" /><category term="Azure Use Cases" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure+Use+Cases/default.aspx" /></entry><entry><title>Book Review (Book 5) - The Cloud of Unknowing</title><link rel="alternate" type="text/html" href="http://sqlblog.com/blogs/buck_woody/archive/2011/10/31/book-review-book-5-the-cloud-of-unknowing.aspx" /><id>http://sqlblog.com/blogs/buck_woody/archive/2011/10/31/book-review-book-5-the-cloud-of-unknowing.aspx</id><published>2011-10-31T16:23:23Z</published><updated>2011-10-31T16:23:23Z</updated><content type="html">&lt;p&gt;This is a continuation of the books I challenged myself to read to help my career - one a month, for year. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;You can read my first book review here&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. The book I chose for October 2011 was: &lt;span style="font-family:'Bookman Old Style','serif';color:#333333;mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;a href="http://www.amazon.com/gp/product/B00295S2X6/?tag=imreading-20"&gt;&lt;span style="mso-bidi-font-family:arial;"&gt;&lt;u&gt;&lt;font color="#0000ff" size="2" face="Arial"&gt;The Cloud of Unknowing, Anonymous&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font size="2" face="Arial"&gt;: The role of faith in life. Once again, this is out of order, but the book came in from a hold at the library so I’ll do this one now.&lt;/font&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;        &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why I chose this Book: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This book is probably the most far afield for many of my readers – some folks don’t hold a faith, others have faiths that are different from mine. That’s fine – I think this is still an intriguing read. &lt;/p&gt;  &lt;p&gt;However this is a religious work – if you’re not into that sort of thing, it’s completely OK. As I’ve mentioned early-on, a book list for your career can include many kinds of books. Faith is such a part of my life that I find it impossible to separate from my day-to-day efforts. To that end, a little about this book is in order. &lt;/p&gt;  &lt;p&gt;The book was written in the 14th century by an unknown, anonymous author, probably a Carthusian monk in Europe. It’s a work involving the deep thoughts around the intersection of intellection over contemplation. Contemplation is what ancient Catholics called meditation, or focus. It’s a really deep work involving philosophical history, specifically in the Christian tradition. Even as old and philosophical as it is, many contemporary writers, singers (Like Leonard Cohen) and others have referenced it, used it words, or developed entire works around it. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So what did I learn? Actually quite a bit, specifically on the role in contemplation in life. As a technologist, I tend to stay incredibly busy and the temptation is always to be very scattered. But lack of focus is often the enemy of getting things done correctly. Focusing on what really matters and being in the moment is a powerful tool in professional life. It has taught me that now, more than ever, I need to decide what I will not give a lot &lt;/p&gt;  &lt;p&gt;As I mentioned, this is a religious work – it has far more value to me there than in the pure business sense, although I find those two linked irrevocably. The way I treat others in both personal and business relationships is my character – which I strive to improve every day. &lt;/p&gt;  &lt;p&gt;I highly recommend you read something that is internal like this in your career development. Money, success and fame are not all that there is – and those things are not separated from who you are as a person.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39496" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://sqlblog.com/members/BuckWoody.aspx</uri></author><category term="Career" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx" /><category term="Book Review" scheme="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx" /></entry></feed>
