<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Carpe Datum</title><subtitle type="html">Computing Flotsam and Jetsam</subtitle><id>http://blogs.msdn.com/b/buckwoody/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/buckwoody/atom.aspx" /><generator uri="http://telligent.com" version="5.6.583.20496">Telligent Community 5.6.583.20496 (Build: 5.6.583.20496)</generator><updated>2011-08-31T08:34:58Z</updated><entry><title>Application Lifecycle Management Overview for Windows Azure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspx</id><published>2012-02-07T15:58:39Z</published><updated>2012-02-07T15: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10264968" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Process" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Process/" /><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Links" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Links/" /><category term="System Center Operations Manager" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/System+Center+Operations+Manager/" /><category term="Planning" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Planning/" /><category term="Tips" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Tips/" /><category term="Best Practices" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Best+Practices/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Application Architecture" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Application+Architecture/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /></entry><entry><title>Book Review (Book 8) - The Elements of Persuasion</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/01/30/book-review-book-8-the-elements-of-persuasion.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/30/book-review-book-8-the-elements-of-persuasion.aspx</id><published>2012-01-30T15:57:23Z</published><updated>2012-01-30T15: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261765" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /><category term="Learning" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Learning/" /><category term="How I work" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/How+I+work/" /></entry><entry><title>Team Foundation Server (TFS) in the Cloud - My Experience So Far</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/01/24/team-foundation-server-tfs-in-the-cloud-my-experience-so-far.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/24/team-foundation-server-tfs-in-the-cloud-my-experience-so-far.aspx</id><published>2012-01-24T13:45:13Z</published><updated>2012-01-24T13: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: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; 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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10260038" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Process" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Process/" /><category term="Web" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Web/" /><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="How I work" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/How+I+work/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /></entry><entry><title>Bug-Out Bags and Cloud Architecture Considerations</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/01/20/bug-out-bags-and-cloud-architecture-considerations.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/20/bug-out-bags-and-cloud-architecture-considerations.aspx</id><published>2012-01-20T18:00:58Z</published><updated>2012-01-20T18: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10258924" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Disaster Recovery" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Disaster+Recovery/" /><category term="Best Practices" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Best+Practices/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Application Architecture" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Application+Architecture/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /></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://blogs.msdn.com/b/buckwoody/archive/2012/01/16/cloud-computing-in-action-how-i-work-with-live-mesh-skydrive-and-office-live-workspace.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/16/cloud-computing-in-action-how-i-work-with-live-mesh-skydrive-and-office-live-workspace.aspx</id><published>2012-01-16T15:27:44Z</published><updated>2012-01-16T15: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10257145" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="How I work" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/How+I+work/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /></entry><entry><title>Stand-Up Cloud Computing</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/01/09/stand-up-cloud-computing.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/09/stand-up-cloud-computing.aspx</id><published>2012-01-09T14:33:28Z</published><updated>2012-01-09T14: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10254571" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Personal" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Personal/" /><category term="How I work" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/How+I+work/" /></entry><entry><title>Valentine’s Day and Your Career</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2012/01/03/valentine-s-day-and-your-career.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2012/01/03/valentine-s-day-and-your-career.aspx</id><published>2012-01-03T14:53:17Z</published><updated>2012-01-03T14: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252683" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /></entry><entry><title>Book Review (Book 7) - Think Stats</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/12/30/book-review-book-7-think-stats.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/12/30/book-review-book-7-think-stats.aspx</id><published>2011-12-30T14:11:17Z</published><updated>2011-12-30T14:11:17Z</updated><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.msdn.com/b/buckwoody/archive/2011/12/30/book-review-book-7-think-stats.aspx" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"&gt;&lt;/iframe&gt;&lt;/div&gt;&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 December 2011 was: &lt;a href="http://www.amazon.com/gp/product/1449307116/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=greenteapre01-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399373&amp;amp;creativeASIN=1449307116" target="_blank"&gt;Think Stats, by Allen B. Downey&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why I chose this Book: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I originally chose another book for this month, but changed to this one after a difference in focus (sort of) in my technical career. That brings up a couple of interesting points right away. The first is that it’s OK to change a list - remember that the purpose of reading these books is to gain information that gets you closer to your professional goals. When you develop your list, you have a certain amount of knowledge, and as you read more, experience more, and are exposed to more, you get different information. When that happens, adapt. &lt;/p&gt;  &lt;p&gt;The second point is that your goal itself may change. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/15/the-data-scientist.aspx" target="_blank"&gt;I am focusing on “Big Data” this year&lt;/a&gt; and with the changes we’ve made in Windows and SQL Azure at Microsoft, this fits neatly with my professional goals personally and the company I work for. Actually, my goals in technology haven’t changed in the 27+ years I’ve worked in IT, in roles from electronics, programming, consulting, management, architect and in my current technical role here at Microsoft. I think that it has always been about data - everything in IT is an interface to data. And I have always wanted to be at the center of that. Data Science involves not just the sourcing, administration and movement of data, but in applying scientific (with an emphasis on mathematical) disciplines to get at the meaning the situation needs. &lt;/p&gt;  &lt;p&gt;So that brings me to this choice. My friend &lt;a href="http://www.brentozar.com/consultants/jeremiah-peschka/" target="_blank"&gt;Jeremiah Peschka&lt;/a&gt; found this resource for a role I am VERY interested in - the “Data Scientist”. It’s a combination of high-end mathematics, Data Analysis and Big Data. The resource is a series of books from O’Reilly for that very title. &lt;a href="http://shop.oreilly.com/category/deals/data-science-kit.do" target="_blank"&gt;You can find that here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Personally, I find the grouping of books a little cobbled together. They are all fine books, but I’m not certain how they lead you through the series of knowledge required for the topic, but that’s a post for another day. Within that series of books is the one I’m reviewing today. I started (since there is no implied order in the books) with the “Data Analysis” book, but it seemed to start in the middle of some topics I needed to research, so I switched to reading this one, and chose it as my December book. &lt;/p&gt;  &lt;p&gt;Another note here - December is a tough month. Since so many people take vacation time during this month, most of my clients try to get as much work in before the Holidays as possible. Since they are all doing that at once, it makes for a lot of overtime. Also, I travel to see family, which of course puts me out of pocket for a while myself. So staying on track with the books - especially one that makes heavy use of computing, math and focus is hard. So it’s tough to maintain your goals all of the time - but keeping in mind why you do this is the important thing. It will keep you on track. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This book focuses more on what the title says - it’s more about being mindful of the way you use statistics than the statistics themselves. It’s assumed you know not only the basics of statistics (&lt;a href="http://www.khanacademy.org/video/statistics--the-average?playlist=Statistics" target="_blank"&gt;I used these free lessons as a refresher&lt;/a&gt;, along with some of my old stats books) but how they are used.The author doesn’t stop to explain a lot of stats he uses, but periodically he does show why a given formula works the way it does. This is very useful, and helps with understanding the point of using one method over another. He also does a great job of using statistics to verify other statistics. &lt;/p&gt;  &lt;p&gt;Although it should be obvious, the meaning of the data is essential. We think about this when we deal with the result of data processing, but not necessarily when we work with the sources. For instance - as the author explained some central tendency, smoothing and so on using statistical methods, he introduced some numbers and asks you to guess the central number from the set. Dutifully you work out the answer, but in time he reveals that it’s a series of numbers on a die - which of course can only be whole numbers. The point is that you’re so focused on getting the right answer, you don’t define what the real problem is first. &lt;/p&gt;  &lt;p&gt;Another great tool&amp;#160; - and a fascinating study that I need to look into further - is the fact that you can often make at least educated inferences into data you might not imagine. For instance, he talks about the example of a series of train cars, numbered sequentially. You see a train car numbered “60” - can you guess with any certainty how many train cars the company has? Fascinating stuff. &lt;/p&gt;  &lt;p&gt;He includes a glossary at the end of each chapter. I found this a great approach for summarizing the information in one place, and really helpful in making sure I understood everything before moving on. I didn’t always, so I had to re-read parts of the book and freshen up my stats knowledge along the way as well. &lt;/p&gt;  &lt;p&gt;He uses &lt;a href="http://learnpythonthehardway.org/" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;Python as the language of choice&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; - which I found a bit unusual. Most of the stats profession uses something more like the &lt;a href="http://www.r-project.org/" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;R language&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;, which I’ve also started learning, and one of the other books in this series includes R as a primary subject. Because the author uses Python, he includes references to a series of libraries you add into it to work through the examples. Python certainly is a Data Scientist’s tool, just normally not for statistics. The author uses great examples and assignments, but doesn’t really follow up on those. I guess I’d rather see those introduced earlier in the chapter and explained better. He tends to jump around a bit, and his references are to Wikipedia, which isn’t always as reliable or thorough as it can be. But these are small quibbles. It’s a good book, and a I learned a lot reading it. In fact, I have lots of concepts to unpack based on what I read. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252042" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Computing/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /><category term="Learning" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Learning/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /></entry><entry><title>Windows Azure Storage (WAS) Internals - Achieving Consistency</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/12/13/windows-azure-storage-was-internals-achieving-consistency.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/12/13/windows-azure-storage-was-internals-achieving-consistency.aspx</id><published>2011-12-13T17:05:50Z</published><updated>2011-12-13T17: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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10247261" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Storage" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Storage/" /></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://blogs.msdn.com/b/buckwoody/archive/2011/12/06/how-microsoft-helps-you-not-break-your-windows-azure-application-storage-services-versioning.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/12/06/how-microsoft-helps-you-not-break-your-windows-azure-application-storage-services-versioning.aspx</id><published>2011-12-06T15:42:57Z</published><updated>2011-12-06T15: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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10244653" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Documentation" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Documentation/" /><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Latest Version" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Latest+Version/" /><category term="Testing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Testing/" /><category term="Upgrades" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Upgrades/" /><category term="Service Packs" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Service+Packs/" /><category term="Data" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data/" /><category term="Installation and Upgrade" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Installation+and+Upgrade/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Storage" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Storage/" /></entry><entry><title>Windows Azure Best Practices: Affinity Groups</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx</id><published>2011-11-29T05:43:00Z</published><updated>2011-11-29T05: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://blogs.msdn.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://blogs.msdn.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://blogs.msdn.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://blogs.msdn.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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242261" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Best Practices" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Best+Practices/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /></entry><entry><title>Book review (Book 6) - Wikinomics</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/22/book-review-book-6-wikinomics.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/11/22/book-review-book-6-wikinomics.aspx</id><published>2011-11-22T15:35:02Z</published><updated>2011-11-22T15: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: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; color: rgb(51,51,51); mso-bidi-font-family: arial; mso-ansi-language: en" lang="EN"&gt;&lt;font size="3"&gt;&lt;font size="2" face="Arial"&gt;&lt;span style="font-family: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; mso-bidi-font-family: arial; mso-ansi-language: en" lang="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: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; mso-bidi-font-family: arial; mso-ansi-language: en" lang="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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10239589" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /></entry><entry><title>The Data Scientist</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/15/the-data-scientist.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/11/15/the-data-scientist.aspx</id><published>2011-11-15T16:00:18Z</published><updated>2011-11-15T16: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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10237349" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="DBA" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/DBA/" /><category term="SQL Server" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Server/" /><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Business Intelligence" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Business+Intelligence/" /><category term="SQL Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Azure/" /><category term="Data" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data/" /><category term="Data Professional" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data+Professional/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /></entry><entry><title>Developing a Cost Model for Cloud Applications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx</id><published>2011-11-08T16:30:49Z</published><updated>2011-11-08T16: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 border="1" cellspacing="0" cellpadding="2" width="426"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="87"&gt;Program Element&lt;/td&gt;        &lt;td valign="top" width="44"&gt;Azure Component&lt;/td&gt;        &lt;td valign="top" width="40"&gt;Unit of Measure&lt;/td&gt;        &lt;td valign="top" width="57"&gt;Cost Per Unit&lt;/td&gt;        &lt;td valign="top" width="57"&gt;Estimated Use of Component&lt;/td&gt;        &lt;td valign="top" width="80"&gt;Total Cost Per Component&lt;/td&gt;        &lt;td valign="top" width="59"&gt;Cumulative Cost&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="87"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="44"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="40"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="57"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="57"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="80"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="59"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10235030" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="SQL Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Azure/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Application Architecture" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Application+Architecture/" /></entry><entry><title>Windows Azure Use Case: Supplementing Infrastructure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/01/windows-azure-use-case-supplementing-infrastructure.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/11/01/windows-azure-use-case-supplementing-infrastructure.aspx</id><published>2011-11-01T14:22:01Z</published><updated>2011-11-01T14: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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; 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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10232079" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="SQL Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Azure/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Azure Use Cases" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure+Use+Cases/" /></entry><entry><title>Book Review (Book 5) - The Cloud of Unknowing</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/31/book-review-book-5-the-cloud-of-unknowing.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/31/book-review-book-5-the-cloud-of-unknowing.aspx</id><published>2011-10-31T17:23:23Z</published><updated>2011-10-31T17: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: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; color: #333333; mso-bidi-font-family: arial; mso-ansi-language: en" lang="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: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; mso-bidi-font-family: arial; mso-ansi-language: en" lang="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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10231761" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /></entry><entry><title>Bonus Rant: Conference Speakers and the Golden Rule</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/20/bonus-rant-conference-speakers-and-the-golden-rule.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/20/bonus-rant-conference-speakers-and-the-golden-rule.aspx</id><published>2011-10-20T15:07:34Z</published><updated>2011-10-20T15:07:34Z</updated><content type="html">&lt;p align="center"&gt;&lt;span style="color: #993300; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;i&gt;Fair warning: This isn&amp;rsquo;t a technical post. This is my opinion, and not Microsoft&amp;rsquo;s.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;I&amp;rsquo;ve been a public speaker at events since 1980. &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;Interestingly, even though I&amp;rsquo;ve done this, it&amp;rsquo;s never been my paid job. I&amp;rsquo;ve &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;spoken on technical topics at groups as small as 5 people to over 10,000, in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;local and global events. I&amp;rsquo;ve been on TV, radio, on stage and on webcasts. I &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;teach at college as well.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;In all of that time, I&amp;rsquo;ve come to realize that speaking is &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;the easy part. To be sure, I put an extraordinary amount of work into my &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;presentations. I learn the topic, research speaking styles and communication&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;methods, fret over my demos and practice relentlessly. But I reiterate that &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;this is the easy part.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;span style="color: #008000; font-family: arial,helvetica,sans-serif; font-size: medium;"&gt;&lt;i&gt;The hard part is putting the events together.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;Most folks have no idea how hard it is to create, advertise, &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;pay for, staff, run and tear down a technical event. Even small ones. And the &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;folks that do it get none of the glory, none of the praise, and usually all of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;the criticism. These folks deserve way more respect than they get.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #008000; font-family: arial,helvetica,sans-serif; font-size: medium;"&gt;&lt;i&gt;And the worst offenders in not offering this respect are the speakers.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;Let me say that again &amp;ndash; some speakers are rude, arrogant and &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;disrespectful of the event planning groups that run their sessions. They have unrealistic &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;expectations, and I&amp;rsquo;ve seen some actively fight the requirements these teams &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;impose. From not delivering slides on time, to not following the rules the &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;event planners lay out, to not even calling when they don&amp;rsquo;t show up. Showing up and saying "I'm still working on my slides" with a smirk doesn't impress me as a listener at all - it just makes me think you're dismissing my time as unimportant as a listener. Your content should be nailed way before the event, not the day of. Practicing on the day of presentation is expected - changing it indicates unprofessionalism. Sorry, but there it is.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;I don&amp;rsquo;t bring up problems without suggesting some solutions &amp;ndash; &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;that&amp;rsquo;s my military training coming through.&amp;nbsp;:) Here&amp;rsquo;s what can fix this issue:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;All speakers should have to demonstrate they have assisted &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;in the logistics of an event somewhere. Or you don&amp;rsquo;t speak.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;All speakers should follow the rules. Don&amp;rsquo;t get your slides &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;in, don&amp;rsquo;t follow the rules? You don&amp;rsquo;t present. There are LOTS of people wanting&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;to speak.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;All speakers should follow the golden rule. Sure, you&amp;rsquo;re &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;special, just like everyone else. Understand that the event planners are there &amp;ndash; &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;with you &amp;ndash; to make the event a success. Treat them like you want to be treated.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;No, I&amp;rsquo;m not pointing anyone out. No, no one asked me to write &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;this post. I&amp;rsquo;ve just been on both sides of the fence, and you really have no &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;idea how difficult the logistics of an event are until you put one on. Want to &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;find out if I&amp;rsquo;m right? Volunteer at a local even like SQL Saturday, ask to help &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;out at PASS, TechEd, whatever. The point is, walk a mile in the shoes of the &lt;/span&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;event planner. It will make you a better presenter.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10228162" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Rant" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Rant/" /></entry><entry><title>Big Data and the Cloud - More Hype or a Real Workload?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/18/big-data-and-the-cloud-more-hype-or-a-real-workload.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/18/big-data-and-the-cloud-more-hype-or-a-real-workload.aspx</id><published>2011-10-18T14:57:36Z</published><updated>2011-10-18T14:57:36Z</updated><content type="html">&lt;p&gt;Last week Microsoft announced several new offerings for “Big Data” - and since I’m a stickler for definitions, I wanted to make sure I understood what that really means. What is “Big Data”? What size hard drive is that? After all, my laptop has 1TB of storage - is my laptop “Big Data”?&lt;/p&gt;  &lt;p&gt;There are actually a few definitions for this term, most notably those involving the &lt;a href="http://nosql.mypopescu.com/post/9621746531/a-definition-of-big-data" target="_blank"&gt;“Four V’s” Volume, Velocity, Variety and Variability&lt;/a&gt;. Others &lt;a href="http://nosql.mypopescu.com/post/10120087314/big-data-and-the-4-vs-volume-velocity-variety" target="_blank"&gt;disagree with this&lt;/a&gt; definition. I tend to try and get things into their simplest form, so I’m using this definition for myself:&lt;/p&gt;  &lt;p align="center"&gt;&lt;font color="#c0504d" size="3"&gt;Big data is defined as a &lt;em&gt;large set &lt;/em&gt;of &lt;em&gt;computationally expensive &lt;/em&gt;data that is &lt;em&gt;worked on simultaneously&lt;/em&gt;.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Let me flesh that out a&amp;#160; little. To be sure, “Big Data” has a larger size than say a few megabytes. The reason this is important is that it takes special hardware to be able to move large sets of data around, store it, process it and so on. (&lt;font color="#c0504d"&gt;large set&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;If you store a LOT of data, but only use a small portion of it at a time, that really isn’t super-hard to do. It’s mainly a storage issue at that point. But, if you do need to work with a large portion of the data at one time, then the memory, CPU and transfer components of the system have to adapt to be responsive - new ways to work with that data (game theory, knot-algorithms, map-reduce, etc.) need to be brought into play. (&lt;font color="#c0504d"&gt;computationally expensive&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;Once that data is loaded into the processing area (memory or whatever other mechanism is used) it must be worked on in parallel to come back in a reasonable time. You have two options here - you can scale the system up with more internal hardware (CPU’s, memory and so on) or you can scale it out to have multiple systems work on it at the same time using paradigms such as map/reduce and so on. Actually, when you lay this out in an architecture diagram, scale up or out doesn’t actually change the logical structure of the process - in scale out the network becomes the bus, and the nodes become more RAM and computing power. Of course, there are changes in code for how you stitch the workload back together. (&lt;font color="#c0504d"&gt;worked on simultaneously&lt;/font&gt;)&lt;/p&gt;  &lt;p&gt;So back to the original question. Is Big Data, as I have defined it here, a workload for Windows and SQL Azure? Absolutely! In fact, it’s probably one of the main workloads, and I believe it represents the latest, and perhaps also the earliest frontier of computing. Jim &lt;a href="http://research.microsoft.com/en-us/um/people/gray/" target="_blank"&gt;Gray, a former researcher here at Microsoft and a hero of mine, was working on this very topic.&lt;/a&gt; I believe as he did - all computing is simply an interface over data. &lt;/p&gt;  &lt;p&gt;Microsoft has multiple offerings on the topic of Big Data. In posts that follow from myself and my co-workers, we’ll explore when and where you use each one. Whether you are a data professional or a developer, this is the new frontier - &lt;a href="http://www.straightpathsql.com/archives/2011/10/microsoft-loves-your-big-data/" target="_blank"&gt;don’t wait to educate yourself&lt;/a&gt; on how to leverage Big Data for your organization. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Hadoop on Windows Azure and SQL Server&amp;#160; &lt;/strong&gt;- Microsoft’s &lt;a href="http://www.hortonworks.com/the-whys-behind-the-microsoft-and-hortonworks-partnership/" target="_blank"&gt;partnership to include Hadoop workloads on Windows Azure&lt;/a&gt; and &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27584" target="_blank"&gt;SQL Server/Parallel Data Warehouse (PDW)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;LINQ to HPC &lt;/strong&gt;- Microsoft’s High-Performance Computing SKU of &lt;a href="http://blogs.technet.com/b/windowshpc/archive/2011/05/20/dryad-becomes-linq-to-hpc.aspx" target="_blank"&gt;HPC is now in Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Azure Table Storage &lt;/strong&gt;- A &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh508997.aspx" target="_blank"&gt;key/value pair type storage with full partitioning&lt;/a&gt; that is immediately consistent, able to handle huge loads of data and works with any REST-compatible language&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;Other offerings &lt;/strong&gt;- Including the new &lt;a href="http://www.microsoft.com/en-us/sqlazurelabs/default.aspx" target="_blank"&gt;Data Explorer&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/news/headlines/daytona-071811.aspx" target="_blank"&gt;Project Daytona (with a Big Data Toolkit for Scientists and researchers)&lt;/a&gt;, &lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions/SQL-Server-2012-breakthrough-insight.aspx" target="_blank"&gt;Power View&lt;/a&gt; and more. &lt;/p&gt;  &lt;p&gt;The era of Big Data is here. And you can use Windows and SQL Azure to bring it to your organization. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226998" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="DBA" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/DBA/" /><category term="SQL Server" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Server/" /><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Conferences" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Conferences/" /><category term="PASS" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/PASS/" /><category term="Microsoft" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Microsoft/" /><category term="Policy Based Management" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Policy+Based+Management/" /><category term="SQL Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Azure/" /><category term="SQLServer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQLServer/" /><category term="Data" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data/" /><category term="Data Professional" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data+Professional/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Storage" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Storage/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /><category term="Azure Use Cases" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure+Use+Cases/" /></entry><entry><title>Creating a Distributed Computing System Using a Windows Azure Queue</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/11/creating-a-distributed-computing-system-using-a-windows-azure-queue.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/11/creating-a-distributed-computing-system-using-a-windows-azure-queue.aspx</id><published>2011-10-11T14:12:42Z</published><updated>2011-10-11T14:12:42Z</updated><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.msdn.com/b/buckwoody/archive/2011/10/11/creating-a-distributed-computing-system-using-a-windows-azure-queue.aspx" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;The Windows Azure Queue component, like all Windows Azure components (Roles, Storage, App Fabric, SQL Azure) can be used by itself or with other Windows Azure components. That’s why I refer to Windows Azure as “Distributed Computing” rather than “cloud”. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;Having a distributed off premise queue has a lot of use-cases. An interesting use-case is a company that wanted to harness the power of all of the PC’s and laptops in the company when they were not being used throughout the day. A developer wrote a screen-saver program that connected to an Azure Queue, pulling work off of the queue and placing an entry when it was done. In essence he had a partially connected distributed work relay system, and since he used a Windows Azure Queue, the system worked from anywhere in the world.                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;He uses an on-site central server (which was actually only a workstation-level system) that holds the computations in a scatter/gather paradigm. The computations are broken into less-than-8K chunks, so that it fits within a message. The server connects to a Windows Azure Queue, and places the message marked for computation. It also scrubs the Queue for completed work, and as part of the process puts that kind of message into a mapping function (queues are not guaranteed a message order).                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;The workstations that are not being used (even those systems at remote workers and travelers) connect to the same Windows Azure Queue when the system is not being used for a period of time, when the screen saver kicks in. It then takes one message from the queue, computes the information, and then sets a new message for the server to pick up with the answer. The workstation then deletes the message.                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;The Server picks up the completed work, processes it and then deletes that queue message. He also added logic to process messages for computation on the server as well, when the server function of adding work is not required.                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2438.AzureQueueDistributedSystem_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="AzureQueueDistributedSystem" border="0" alt="AzureQueueDistributedSystem" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3603.AzureQueueDistributedSystem_5F00_thumb.png" width="708" height="919" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;There are a few caveats here. This works because of the mapping function on the head server. Order is not guaranteed, so he includes a number for the function step as part of the message body, which cuts the size a bit. Also, he’s careful to watch the encoding, since Azure will hand binary back in Base64 format.                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;He’s found that there are enough systems to ensure that the messages are cleared every few days – important, since the Windows Azure Queue ages out after seven days. Also, he’s careful to use the CloudQueue.PeekMessage function when he wants to monitor the system – that function ensures that the message status doesn’t reset as “read” when he accesses it.                 &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;   &lt;p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;This is a great example of using the “cloud” as what it is intended to be – a distributed architecture you can use as needed to solve a business problem. It’s not an “all or nothing” proposition, but instead it is simply another set of components to use where you need them. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10223227" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Computing/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Storage" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Storage/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /><category term="Azure Use Cases" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure+Use+Cases/" /></entry><entry><title>Windows Azure Use-Case: Mobile Development</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/04/windows-azure-use-case-mobile-development.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/04/windows-azure-use-case-mobile-development.aspx</id><published>2011-10-04T15:11:50Z</published><updated>2011-10-04T15:11:50Z</updated><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.msdn.com/b/buckwoody/archive/2011/10/04/windows-azure-use-case-mobile-development.aspx" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;One of the most natural development use-cases for the Windows Azure platform is with mobile devices, such as smartphones, tablets and even embedded computers in cars and other devices. &lt;/p&gt;  &lt;p&gt;The reason this paradigm works so well is that most mobile devices are not as powerful as larger computers - they simply don’t have the room to power the device, keep it cool, and hold the components that they would like. So leveraging the computing power, data and networking capability from a massively distributed system is a natural fit.&lt;/p&gt;  &lt;p&gt;Mobile devices, by definition, are often constantly connected to the internet. That means that you can access Windows Azure components from these devices whenever they are connected, and you don’t have to open firewalls into your own computing environment. In fact, you don’t have to have an infrastructure at all to set this all up - the user has the client (mobile device) the Internet is your network, and Windows Azure runs your code. Nothing on-premise is needed. Of course, using a hybrid model you can include components from on-site into your design as well.&lt;/p&gt;  &lt;p&gt;So what are the main components of a mobile platform? There’s &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-868T" target="_blank"&gt;a great video by my friend Wade Wegner that you can watch here that covers these components step-by-step&lt;/a&gt;, but in a simple outline, here they are:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d"&gt;Client development environment and deployment&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Each mobile device has an operating system and environment that it works with. Windows Azure has full toolkits you can use to develop against the major platforms in use today. You’ll need the &lt;a href="http://www.microsoft.com/windowsazure/sdk/" target="_blank"&gt;Windows Azure Software Development Kit&lt;/a&gt; first (free) and a development environment (even the &lt;a href="http://www.microsoft.com/express" target="_blank"&gt;free Visual Studio Express edition&lt;/a&gt; is fine) and then you simply download the toolkits here:&lt;/p&gt;  &lt;p&gt;Windows Phone: &lt;a href="http://watwp.codeplex.com/"&gt;http://watwp.codeplex.com/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Android: &lt;a href="https://github.com/microsoft-dpe/wa-toolkit-android"&gt;https://github.com/microsoft-dpe/wa-toolkit-android&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;iOS (Apple): &lt;a href="https://github.com/microsoft-dpe/wa-toolkit-ios"&gt;https://github.com/microsoft-dpe/wa-toolkit-ios&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d"&gt;Security and authentication&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;From there, you need to log people in and out of the service you provide. You can certainly write your own authentication into Windows Azure if you wish, but it’s often far easier to allow your users to connect with an identity they’ve already established. This takes you out of the business of storing profiles, names and passwords. &lt;/p&gt;  &lt;p&gt;You can use multiple providers - and some of the easiest to work with and most popular are Windows Live, Facebook, Google and Yahoo. Using the Access Control Service (ACS) feature in Windows Azure, you can “point” to those providers and the user will be presented with those login screens. From there, you trust the provider to hold the names and passwords identifying the user. You can learn more about that process here: &lt;a href="http://www.wadewegner.com/2010/08/use-social-web-providers-in-less-than-5-minutes/"&gt;http://www.wadewegner.com/2010/08/use-social-web-providers-in-less-than-5-minutes/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Of course, you’re still able to write your own login logic, and you always control access to the assets the user can see. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d"&gt;Networking and connectivity&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With a mobile device, the carrier that the user has is responsible for the “last-mile” to the device. But with Windows Azure, you are using the some of the largest connections to the internet available - and you have three regions around the world to deploy your applications to. You’re able to select which region you want, so you can provide everything from code to data to the device in a reliable way.&lt;/p&gt;  &lt;p&gt;One caveat here - you need to ensure your code has logic to deal with connectivity issues. You don’t control the provider the device uses, so you should make decisions about caching, retry logic, disconnect messages and so on based on what your application does. Different parts of your application might require a specific strategy around what needs to be constantly connected and what can display on it’s own from the storage on the device. There are always tradeoffs for each of these decisions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d"&gt;Platform components&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure is a platform - which means that it isn’t a single unit or thing, it’s a group of components that work together. You can choose any or all of these components based on what your application needs to do. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Computing &lt;/em&gt;- With Windows Azure, you can call on standard computing resources to provide the front-end for your application, or to do the processing for your application logic. You might choose to embed the full client experience on the device, and simply have Windows Azure compute data or perform other logic. Or, you might choose to develop the entire application, front-end and all, on Windows Azure. This approach is sometimes the least “rich experience” method, but the most device-independent. Using the Windows Azure platform you can scale (even programmatically) from very small when the demand is low to thousands of compute resources based on higher demand, and back down again.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Storage &lt;/em&gt;- Windows Azure has multiple types of storage, from NoSQL-like table storage to binary large object storage for documents, music, videos, and so on. Your application can use storage independently - perhaps backing up the application’s data into Windows Azure and nothing else. Or, you can use storage with the computing resources. There is also a message queue that is part of the Windows Azure storage, allowing a fully REST-ful development paradigm which allows for scale. Queues are also interesting for a combinatorial approach - passing computing work between devices and then re-combining those. In fact, using this paradigm you could have your mobile device submit jobs to a super-computing fabric. &lt;/p&gt;  &lt;p&gt;The binary storage also has a Content Delivery Network (CDN) feature that moves the data closer to the user in an “edge” methodology. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Application Fabric &lt;/em&gt;- The Application Fabric component of Windows Azure is actually made up of yet more components. This is the area that holds the ACS mentioned earlier, and it also has a full Service Bus component for inter-process communication. You can also leverage a cache in this component to speed up your applications. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;SQL Azure &lt;/em&gt;- For mobile development, working with location-aware applications is a primary feature. SQL Azure is a Relational Database Management System (RDBMS) that has a Spatial Data capability, where you can work with not only Geodesic information on the mobile device, but geometric data as well. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d"&gt;Resources&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are many resources for Windows Azure development for mobile devices. The primary one is here: &lt;a href="http://www.microsoft.com/windowsazure/scenarios/mobile-applications/"&gt;http://www.microsoft.com/windowsazure/scenarios/mobile-applications/&lt;/a&gt; You can find code, videos, whitepapers, the toolkits and more from that link. In addition, be sure and &lt;a href="http://blog.wadewegner.com/" target="_blank"&gt;follow Wade Wegner’s blogs and postings for more information&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10219819" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Azure Use Cases" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure+Use+Cases/" /></entry><entry><title>Book Review (Book 4) - Predictably Irrational</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/10/03/book-review-book-4-predictably-irrational.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/10/03/book-review-book-4-predictably-irrational.aspx</id><published>2011-10-03T16:07:26Z</published><updated>2011-10-03T16:07:26Z</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;You can read my first book review here&lt;/a&gt;. The book I chose for August 2011 was: &lt;a href="http://www.amazon.com/gp/product/0061353248/?tag=imreading-20"&gt;Predictably Irrational, Revised and Expanded Edition: The Hidden Forces That Shape Our Decisions, by Dan Ariely&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;This is another non-technical book, or even a business book, but I believe that understanding the behavior of others - and more importantly, my own behavior. I’ve heard of this author before, and when I read the book reviews they spoke about the fact that people often do things that don’t make sense - even when they know that the actions don’t make sense.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I started this book out of the order I had originally selected, since I had put it on hold at the Seattle Public Library and it came in today. Interestingly, it came in an e-book format, which I really like. I can read and take notes at the same time on the Tablet-PC I use (a Lenovo X220). &lt;/p&gt;  &lt;p&gt;You have to read the introduction for this book to have its full impact. The author was burned over 70% of his body, and as he slowly recovered, he became an observer of those around him. He was able to watch as intelligent people behaved in ways that were intuitive, but did not produce the goals they really wanted. In other words, their actions (and even thoughts) went against what they really wanted to have. The key to using this book is to recognize this behavior in yourself and others.&lt;/p&gt;  &lt;p&gt;The author backs everything up with references to studies, data and other supporting evidence, but does not show that data in the book. If you’re the anal type, you might want more evidence right in the book. For my part, that wasn’t an issue. &lt;/p&gt;  &lt;p&gt;I also learned that I need to be self-aware. I read a little in these books on my list each night, and after each reading I was a little more surprised - and sometimes even disbelieving that I would act this way. But in fact, I do - as do we all. It’s quite an eye-opening experience to read this book.&lt;/p&gt;  &lt;p&gt;Another interesting topic was the fact of “relativity” - or where you start from in a negotiation. It’s why people who move from a low-cost area (like I did from Florida) to a high-cost one (Like Seattle where I live now) are so shocked by prices, and push back on them so hard. I’ve seen this play out when people are asked to use a pay-for-use model like a cloud system, when they are used to an all-you-can-eat license for on-premise system. Even when you add up all the costs of an on-premise system and show someone how much they spend, they don’t want to believe that. The relative pricing they are used to makes them believe that a cloud model is too expensive. &lt;/p&gt;  &lt;p&gt;I have to recommend this book to everyone in the tech industry - or in fact everyone that wants to advance in their career. I found myself over and over not wanting to believe what I was reading - that I would certainly never act in a way that doesn’t make sense. But I do - and we all do. Recognizing these patterns gives you an edge in working smarter, and understanding the people you work for and the ones that work for you. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw Notes: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I take notes as I read into OneNote - my favorite note-taking tool. These might not make sense in isolation, but here’s what I wrote down as I read:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;People do not always act in their own best interests&lt;/li&gt;    &lt;li&gt;Relativity helps with comparison issues&lt;/li&gt;    &lt;li&gt;Important to focus on staying objective&lt;/li&gt;    &lt;li&gt;Arbitrary coherence and anchoring are two behavior motivators&lt;/li&gt;    &lt;li&gt;People often look for a “middle choice” - hence low/med/high pricing models&lt;/li&gt;    &lt;li&gt;Theories of motivations are important to investigate further&lt;/li&gt;    &lt;li&gt;Primary decisions set coherency&lt;/li&gt;    &lt;li&gt;Bundle with free - Free is a powerful motivator&lt;/li&gt;    &lt;li&gt;Observation of other’s behavior leads to behavior control&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10219202" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /></entry><entry><title>Query SQL Azure and On-Premise Data in One Codeset</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/09/20/query-sql-azure-and-on-premise-data-in-one-codeset.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/09/20/query-sql-azure-and-on-premise-data-in-one-codeset.aspx</id><published>2011-09-20T16:26:23Z</published><updated>2011-09-20T16:26:23Z</updated><content type="html">&lt;p&gt;I was asked recently how to query SQL Azure along with an on-premise data source. There are actually lots of ways to do this, but a quick and simple method is to use LINQ - or Language Integrated Query. There are always pro's and con's for any data access methods, but I'll show this one as an example, one I've used in other places. It's important to understand what you're doing, and why.&lt;/p&gt;
&lt;p&gt;Note that the key here is in three parts - the connections, the DataRelation object space within the .NET environment, and the LINQ query that presents the data. I'll show this example in C#, and keep in mind that you don't even have to call the Azure SDK - this is all straight Tabular Data Stream (TDS) layer that SQL Server uses. Although I'm querying from SQL Server as well as SQL Azure, you could also query Oracle, XML, text files, even a Excel Spreadsheet. To keep it simple I'm querying two data sources, but you can include more in your tests.&lt;/p&gt;
&lt;p&gt;For this example I'll tie together two Purchase Order databases, assuming that a PO number is shared between them - a key relationship that may not exist for you. Be careful on that front.&lt;/p&gt;
&lt;p&gt;I'm using a special connection string for SQL Azure, since it requires a different format for the server name, login name and of course it needs to be encrypted. You can see that below. &lt;em&gt;As always, test systems only, your mileage may vary, don't run wth siccors.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;//Set up two connections, more are possible&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;SqlConnection companyConnection = new SqlConnection("Data Source=FirstServer;Server=tcp:[serverName].database.windows.net;Database=PurchaseOrders;User ID=[LoginForDb]@[serverName];Password=myPassword;Trusted_Connection=False;Encrypt=True;");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;SqlConnection lineItemConnection = new SqlConnection("Data Source=SecondServer;Integrated Security=SSPI;Initial Catalog=PurchaseOrders");&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;SqlDataAdapter headerAdapter = new SqlDataAdapter("SELECT * FROM Company", companyConnection);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;//Note: if this is to be a different source such as Oracle or text files, set up a different&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;//connection information above and possibly a different connection below&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;SqlDataAdapter lineitemAdapter = new SqlDataAdapter("SELECT * FROM LineItem", lineItemConnection);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;// This is the combined dataset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;DataSet companyLineItems = new DataSet();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;// Go get data from each dataset from above&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;headerAdapter.Fill(companyLineItems, "companies");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;lineitemAdapter.Fill(companyLineItems, "lineItems");&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;// Join them&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;DataRelation relation = companyLineItems.Relations.Add("CustLineItems",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp; companyLineItems.Tables["companies"].Columns["companyID"],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp; companyLineItems.Tables["lineItems"].Columns["companyID"]);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp; // Display the combined data&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;foreach (DataRow pRow in companyLineItems.Tables["companies"].Rows)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp; Console.WriteLine(pRow["companyID"]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;foreach (DataRow cRow in pRow.GetChildRows(relation))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;Console.WriteLine("\t" + cRow["LineItem"]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;Using Language Integrated Query (LINQ)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;Another method is to use Language Integrated Query (LINQ). LINQ is a single data query language used in .NET programming languages. It's completely integrated into the .NET framework, so developers use this construct quite often. I have an entire article on this technology here, so I won't repeat that information in this article.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;Here's a snippet of an example of two text files in C# (the SQL Server examples are longer, to be more clear I'm just using text files here):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;class PurchaseOrder&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string CompanyName { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string CompanyAddress { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int ID { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;int&amp;gt; LineItems { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;class PopulateCollection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; string[] POHeaders = System.IO.File.ReadAllLines(@"../../../POHeaders.csv");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // File example, Bucksoft,1234 Mockingbird Lane,1001&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] LineItems = System.IO.File.ReadAllLines(@"../../../LineItems.csv");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // File example, 1001, Product 234, Product 237, Product 341, Product 795&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Merge the data sources - This is the main part of the work&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumerable&amp;lt;PurchaseOrder&amp;gt; queryNamesLineItems =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from nameLine in POHeaders&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let splitName = nameLine.Split(',')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from itemLine in LineItems&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let splitLineItemLine = itemLine.Split(',')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where splitName[2] == splitLineItemLine[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new PurchaseOrder()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName = splitName[0],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyAddress = splitName[1],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID = Convert.ToInt32(splitName[2]),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LineItems = (from itemAsText in splitLineItemLine.Skip(1) // Do not show the key again&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select Convert.ToInt32(itemAsText)).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToList()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;PurchaseOrder&amp;gt; companys = queryNamesLineItems.ToList();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display each company's name and items&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var company in companys)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("The items are {0} {1} {2} {3} {4}", company.CompanyName, company.CompanyAddress, company.LineItems);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Keep console window open in debug mode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Press any key to exit.");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadKey();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000; font-family: courier new,courier; font-size: small;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214145" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="SQL Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/SQL+Azure/" /></entry><entry><title>Rip and Replace or Extend and Embrace?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/09/13/rip-and-replace-or-extend-and-embrace.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/09/13/rip-and-replace-or-extend-and-embrace.aspx</id><published>2011-09-13T12:20:05Z</published><updated>2011-09-13T12:20:05Z</updated><content type="html">&lt;p&gt;As most of you know, I don&amp;rsquo;t like the term &amp;ldquo;cloud&amp;rdquo; very&lt;br /&gt;much. It isn&amp;rsquo;t defined, which means it can be anything. I prefer &amp;ldquo;distributed&lt;br /&gt;computing&amp;rdquo;, which is more technically accurate and describes what you&amp;rsquo;re doing&lt;br /&gt;in more concrete terms.&lt;/p&gt;
&lt;p&gt;So when you think about Windows and SQL Azure, you don&amp;rsquo;t&lt;br /&gt;have to think about an entire product &amp;ndash; you can use parts of the system&lt;br /&gt;together or independently to accomplish what you need to do. You can use the&lt;br /&gt;computing functions, storage, and more and more I see folks leverage the&lt;br /&gt;Service Bus to enable current applications to expose things to the web.&lt;/p&gt;
&lt;p&gt;And that brings up the point of this post. Once you decide&lt;br /&gt;that a distributed architecture works to solve a problem, you&amp;rsquo;re faced with a&lt;br /&gt;decision: should you completely re-write your architecture to take advantage of&lt;br /&gt;the current systems or should you just fold in new code that makes the data or&lt;br /&gt;function available to the web?&lt;/p&gt;
&lt;p&gt;Of course, the answer is always &amp;ldquo;it depends&amp;rdquo; on the situation&lt;br /&gt;&amp;ndash; and it does. But unless you&amp;rsquo;re fixing a problem with current code, I usually&lt;br /&gt;advocate a migration approach. That means at the very least retaining the&lt;br /&gt;business logic (again, unless it&amp;rsquo;s not currently working) and as much of the&lt;br /&gt;code as you can. In fact, if you follow this paradigm, you&amp;rsquo;re on your way to&lt;br /&gt;making a Service Bus out of the functions you currently have. You can expose&lt;br /&gt;the results of a system rather than opening the system up. Let&amp;rsquo;s take an&lt;br /&gt;example.&lt;/p&gt;
&lt;p&gt;Assume for a moment that you have an order-taking system&lt;br /&gt;on-premise. That system performs many functions, one of which might creating a&lt;br /&gt;Purchase Order. Your system might be enclosed, meaning that it has an&lt;br /&gt;application that talks to a middle-tier, and then from there to a database&lt;br /&gt;system. A query is generated from a screen, and passed along to eventually&lt;br /&gt;compute, store and return a Purchase Order Number, along with other&lt;br /&gt;information. Imagine now that you wire up the code not only to return the PO&lt;br /&gt;number to the client, but to make that number available on an endpoint &amp;ndash;&lt;br /&gt;actually really not that hard to do.&lt;/p&gt;
&lt;p&gt;Now you can make that PO number available to the web using&lt;br /&gt;Azure. You could restrict who can make that call to the system, or open it up&lt;br /&gt;to a broader audience. Or instead of the PO Number, you could make a product&lt;br /&gt;list available. And you can go further than that &amp;ndash; EBay, for instance, uses the&lt;br /&gt;OData protocol (which is very cool in and of itself) which you can query from&lt;br /&gt;the web. You could compare your company&amp;rsquo;s product catalog to what is on EBay,&lt;br /&gt;and list the items you have there if there are no competitors in that space.&lt;br /&gt;And on and on it goes.&lt;/p&gt;
&lt;p&gt;So the point is this &amp;ndash; where you can, retain what works.&lt;br /&gt;Fold in systems like Azure where they make sense. Extend and Embrace.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10209853" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Computing/" /><category term="Best Practices" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Best+Practices/" /><category term="Data" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Data/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Application Architecture" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Application+Architecture/" /><category term="Application Fabric" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Application+Fabric/" /><category term="Azure Use Cases" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure+Use+Cases/" /></entry><entry><title>Plan for Diagnostics in Cloud Computing From the Git-Go</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/09/06/plan-for-diagnostics-in-cloud-computing-from-the-git-go.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/09/06/plan-for-diagnostics-in-cloud-computing-from-the-git-go.aspx</id><published>2011-09-06T14:11:22Z</published><updated>2011-09-06T14:11:22Z</updated><content type="html">&lt;p&gt;“Git-Go” is something we say in the South that means “right at the start”. I’ve seen several applications for on-premise systems that don’t have much in the way of diagnostics - the developers rely on a debugger, the event logs on the server and client workstation, and most of all, the ability to watch the system from end-to-end. &lt;/p&gt;  &lt;p&gt;This approach is a mistake for an on-premise system, and it’s definitely a problem for a distributed architecture. You simply do not own all of the components from end to end in a cloud environment, nor are you always able to attach a debugger or other remote monitoring tools to the various areas within the code path. So you need to make sure that from the very outset of your design that you build in diagnostics. My personal preference is to build a system such that a control file turns on deeper information gathering from the system, up to a minimal level.&lt;/p&gt;  &lt;p&gt;When I do that, I set a high level of logging, a medium level, and a moderate level. I normally use the deepest level of information during the testing and acceptance phase of the deployment, then switch to moderate and then the least level of information gathering. Also in my design I often set an error condition to begin gathering the deeper information along with the exception, where possible.&lt;/p&gt;  &lt;p&gt;There are decisions you need to make as to where to store the diagnostics (many operations in the cloud cost money), how often you collect them, and so on. You can get a quick overview on using the diagnostics that come with Windows Azure here: &lt;a href="http://www.azuresupport.com/2010/03/getting-started-with-windows-azure-diagnostics-and-monitoring/"&gt;http://www.azuresupport.com/2010/03/getting-started-with-windows-azure-diagnostics-and-monitoring/&lt;/a&gt; This is where you should start first. More detail on that: &lt;a href="http://msdn.microsoft.com/en-us/library/gg433048.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg433048.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My friend Dave Pallman has a great tool he’s released for free: &lt;a href="http://davidpallmann.blogspot.com/2009/03/azure-application-monitor-now-on.html"&gt;http://davidpallmann.blogspot.com/2009/03/azure-application-monitor-now-on.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If the issue is in storage apps: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have System Center, this is the quickest and easiest way to implement the monitoring – really handy: &lt;a href="http://pinpoint.microsoft.com/en-us/applications/windows-azure-application-monitoring-management-pack-release-candidate-12884907699"&gt;http://pinpoint.microsoft.com/en-us/applications/windows-azure-application-monitoring-management-pack-release-candidate-12884907699&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10206741" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Error Codes" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Error+Codes/" /><category term="Developer" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Developer/" /><category term="Development" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Development/" /><category term="Design" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Design/" /><category term="Testing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Testing/" /><category term="Link Lists" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Link+Lists/" /><category term="Best Practices" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Best+Practices/" /><category term="Troubleshooting" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Troubleshooting/" /><category term="Monitoring" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Monitoring/" /><category term="Cloud" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud/" /><category term="Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Azure/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Windows+Azure/" /><category term="Cloud Computing" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Cloud+Computing/" /><category term="Concepts" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Concepts/" /></entry><entry><title>Book Review (Book 3) - Favorite Folktales from Around the World</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/buckwoody/archive/2011/08/31/book-review-book-3-favorite-folktales-from-around-the-world.aspx" /><id>http://blogs.msdn.com/b/buckwoody/archive/2011/08/31/book-review-book-3-favorite-folktales-from-around-the-world.aspx</id><published>2011-08-31T15:34:58Z</published><updated>2011-08-31T15:34:58Z</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" target="_blank"&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 August 2011 was: &lt;span style="font-family: &amp;quot;Bookman Old Style&amp;quot;,&amp;quot;serif&amp;quot;; color: #333333; font-size: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: arial; mso-ansi-language: en; mso-fareast-language: en-us; mso-bidi-language: ar-sa" lang="EN"&gt;&lt;a href="http://www.amazon.com/Favorite-Folktales-Pantheon-Folklore-Library/dp/0394751884/ref=sr_1_1?ie=UTF8&amp;amp;qid=1307477450&amp;amp;sr=8-1" target="_blank"&gt;&lt;span style="mso-bidi-font-family: arial"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Times New Roman"&gt;Favorite Folktales from Around the World, by Jane Yolen&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&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;No, this isn’t a technical book or even a business work, but I believe that being able to tell a story is at the heart of almost everything I do in my career. From explaining technology to a broad audience to getting the point of a use-case across during an architectural design review, a story is a succinct way of ensuring that the germ of an idea is passed from the speaker to the listener. &lt;/p&gt;  &lt;p&gt;This book has a short introduction to each block of stories, gathered from cultures around the world as the title suggests. My thought was that studying stories would help me create my own. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I learned: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Being from the South of the U.S., I grew up in a culture of storytelling. Everyone I knew told stories for just about everything, so analogies and so on come naturally to me. But I have never stopped and actually dissected a story, to find out why it worked, and why I chose a particular story or story style for a given situation. &lt;/p&gt;  &lt;p&gt;I have a little confession here - I rarely just read the books I’m listing here on my blog without adding other references to them. I keep a dictionary handy in case I want to know the etymology of a word, since I believe word choices are important. I read other reviews on the work. And I try and find similar works to read at the same time to get a different perspective. While there are lots of anthologies of stories, I found a lack of quality work on using storytelling in the way I’m thinking. I was actually surprised at that. I only found a few books on storytelling, and most had to do with how you use a story, not how to tell or create one. It’s as if folks thing you already know how to fashion a story that will resonate, and you just need to know how to use them. Or they think you’re only telling stories to small children, but I think everyone loves a good story. Perhaps one day I’ll research this more and write my own book on how to tell a story. &lt;/p&gt;  &lt;p&gt;The book itself is arranged in groups of types of stories, such as “magical beings”, “truths and lies”, “smart and ignorant”, “the powerful and the weak” and so on. The author gives a short (too short, in my mind - would LOVE to hear more of what she thought) introduction to the type of story, and then multiple stories on that genre followed. Some are short, others are much longer, but all deal with the same topic, which at times made for repetitive reading. Did you know, for instance, that there are probably thousands of versions of “Cinderella”? You’ll read several in this book. &lt;/p&gt;  &lt;p&gt;As I read I learned that many stories have the same structure, that is, introduction and development of character, a “stressor” (situation or person) and a resolution. Even cultures that are comfortable with duality (like China and India) have a resolution to the story, whether positive or negative. This is interesting, because it seems a story should always be “round”, or complete. It sounds pat, or trite, but it’s just true. The main character can’t disappear from the storyline, the plot can’t change to something else entirely and so on. That, of course, deals with short stories - ones you can remember and tell again, not written, longer stories. &lt;/p&gt;  &lt;p&gt;I’ll end this review with one of my favorite stories from the book. Most are at least a couple of pages long, but this one struck me because it’s touted as the world’s shortest horror story - and that succinctness really resonates. See if you agree:&lt;/p&gt;  &lt;p&gt;“He awoke with a start, and reached for the lamp - and it was placed into his hand.” &lt;/p&gt;  &lt;p&gt;Scary. &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/8688.wlEmoticon_2D00_smile_5F00_2.png" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Raw Notes: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;I take notes as I read, calling that process “reading with a pencil”. I find that when I do that I pay attention better, and record some things that I need to know later. I’ll take these notes, categorize them into a OneNote notebook that I synchronize in my Live.com account, and that way I can search them from anywhere. I can even read them on the web, since the Live.com has a OneNote program built in. I took a TON of notes during this reading, but I don’t think it makes sense to post them this time. There were so many, and due to the structure of the book they were so random, that I don’t think reading through them would help much past what I’ve posted in the “What I learned” section. I’ll see if the raw notes from the next work are the same or if it makes sense to add them here.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10203710" width="1" height="1"&gt;</content><author><name>BuckWoody</name><uri>http://blogs.msdn.com/BuckWoody/ProfileUrlRedirect.ashx</uri></author><category term="Career" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Career/" /><category term="Book Review" scheme="http://blogs.msdn.com/b/buckwoody/archive/tags/Book+Review/" /></entry></feed>
