<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Buck Woody : Azure, SQL Azure, Book Review</title><link>http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/SQL+Azure/Book+Review/default.aspx</link><description>Tags: Azure, SQL Azure, Book Review</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Book Review (Book 1) - Programming Windows Azure by Siriram Krishnan</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx</link><pubDate>Tue, 28 Jun 2011 17:18:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36520</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/36520.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=36520</wfw:commentRss><description>&lt;div style="float:none;margin:0px;padding:4px 0px 4px 0px;" class="wlWriterHeaderFooter"&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;As part of my professional development, I&amp;rsquo;ve created a list of books to read throughout the year, starting in June of 2011. This a review of the first one, called &lt;a href="http://www.amazon.com/Programming-Windows-Azure-Microsoft-Cloud/dp/0596801971/ref=sr_1_1?ie=UTF8&amp;amp;qid=1307850128&amp;amp;sr=8-1" target="_blank"&gt;Programming Windows Azure by Siriram Krishnan&lt;/a&gt;. You can find my entire list of books I&amp;rsquo;m reading for my career here: &lt;a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx"&gt;http://blogs.msdn.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:x-small;"&gt;Why I Chose This Book:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;As part of my learning style, I try to read multiple books about a single subject. I&amp;rsquo;ve found that at least 3 books are necessary to get the right amount of information to me. This is a &amp;ldquo;technical&amp;rdquo; work, meaning that it deals with technology and not business, writing or other facets of my career. I&amp;rsquo;ll have a mix of all of those as I read along. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;I chose this work in addition to others I&amp;rsquo;ve read since it covers everything from an introduction to more advanced topics in a single book. It also has some practical examples of actually working with the product, particularly on storage. Although it&amp;rsquo;s dated, many examples normally translate. I also saw that it had pretty good reviews.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;strong&gt;What I learned:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;I learned a great deal about storage, and many useful code snippets. I do think that there could have been more of a focus on the application fabric - but of course that wasn&amp;rsquo;t as mature a feature when this book was written. I learned some great architecture examples, and in one section I learned more about encryption. In that example, however, I would rather have seen the examples go the other way - the book focused on moving data from on-premise to Azure storage in an encrypted fashion. Using the Application Fabric I would rather see sensitive data left in a hybrid fashion on premise, and connect to for the Azure application. Even so, the examples were very useful.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;If you&amp;rsquo;re looking for a good &amp;ldquo;starter&amp;rdquo; Azure book, this is a good choice. I also recommend the last chapter as a quick read for a DBA, or Database Administrator. It&amp;rsquo;s not very long, but useful. Note that the limits described are incorrect - which is one of the dangers of reading a book about any cloud offering. The services offered are updated so quickly that the information is in constant danger of being &amp;ldquo;stale&amp;rdquo;. Even so, I found this a useful book, which I believe will help me work with Azure better. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;strong&gt;Raw Notes:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;I take notes as I read, calling that process &amp;ldquo;reading with a pencil&amp;rdquo;. I find that when I do that I pay attention better, and record some things that I need to know later. I&amp;rsquo;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. Note that these are the raw notes, so they might not make a lot of sense out of context - I include them here so you can watch my though process.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#e36c0a;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;tab-stops:list .5in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;a href="http://www.amazon.com/Programming-Windows-Azure-Microsoft-Cloud/dp/0596801971/ref=sr_1_1?ie=UTF8&amp;amp;qid=1307850128&amp;amp;sr=8-1" target="_blank"&gt;&lt;span style="color:#e36c0a;mso-bidi-font-family:arial;"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-family:Arial;font-size:x-small;"&gt;Programming Windows Azure by Siriram Krishnan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;: Learning about how to select applications suitable for Distributed Technology. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Application Fabric gets the least attention; probably because it was newer at the time. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Very clear (Chapter One) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Good foundation &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Background and history, but not too much &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;I normally arrange my descriptions differently, starting with the use-cases and moving to physicality, but this difference helps me. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Interesting that I am reading this using Safari Books Online, which uses many of these concepts. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;Taught me some new aspects of a Hypervisor &lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:'Courier New';mso-ansi-language:en;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt; very low-level information about the Azure Fabric (not to be confused with the Application Fabric feature) (Chapter Two) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Good detail of what is included in the SDK. Even more is available now. CS = Cloud Service (Chapter 3) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Place Storage info in the configuration file, since it can be streamed in-line with a running app. Ditto for logging, and keep separated configs for staging and testing. Easy-switch in and switch out.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;(Chapter 4) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;There are two Runtime API&amp;rsquo;s, one of external and one for internal. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Realizing how powerful this paradigm really is. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Some places seem light, and to drop off but perhaps that&amp;rsquo;s best. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Managing API is not charged, which is nice. I don&amp;rsquo;t often think about the price, until it comes to an actual deployment (Chapter 5) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Csmanage is something I want to dig into deeper. API requires package moves to Blob storage first, so it needs a URL. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Csmanage equivalent can be written in Unix scripting using openssl. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Upgrades are possible, and you use the upgradeDomainCount attribute in the Service-Definition.csdef file &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Always use a low-privileged account to test on the dev fabric, since Windows Azure runs in partial trust. Full trust is available, but can be dangerous and must be well-thought out. (Chapter 6) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;Learned how to run full CMD commands in a web window &lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:'Courier New';mso-ansi-language:en;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt; not that you would ever do that, but it was an interesting view into those links. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;This leads to a discussion on hosting other runtimes (such as Java or PHP) in Windows Azure. I got an expanded view on this process, although this is where the book shows its age a little. Books can be a problem for Cloud Computing for this reason &lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:'Courier New';mso-ansi-language:en;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt; things just change too quickly. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;Windows Azure storage is not eventually consistent &lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:'Courier New';mso-ansi-language:en;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt; it is instantly consistent with multi-phase commit. Plumbing for this is internal, not required to code that. (Chapter 7) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;REST API makes the service interoperable, hybrid, and consistent across code architectures. Nicely done. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Use affinity groups to keep data and code together. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Side note: e-book readers need a common &amp;ldquo;notes&amp;rdquo; feature. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;There&amp;rsquo;s a decent quick description of REST in this chapter. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;Learned about CloudDrive code &lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:'Courier New';mso-ansi-language:en;"&gt;&amp;ndash;&lt;/span&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt; PowerShell sample that mounts Blob storage as a local provider. Works against Dev fabric by default, can be switched to Account. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Good treatment in the storage chapters on the differences between using Dev storage and Azure storage. These can be mitigated. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;No, blobs are not of any size or number. Not a good statement (Chapter 8) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Blob storage is probably Azure&amp;rsquo;s closest play to Infrastructure as a Service (Iaas). &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Blob change operations must be authenticated, even when public. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Chapters on storage are pretty in-depth. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Queue Messages are base-64 encoded (Chapter 9) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;The visibility timeout ensures processing of message in a disconnected system. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Order is not guaranteed for a message, so if you need that set an increasing number in the queue mechanism. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;While Queues are accessible via REST, they are not public and are secured by default. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Interesting &amp;ndash; the header for a queue request includes an estimated count. This can be useful to create more worker roles in a dynamic system. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Each Entity (row) in the Azure Table service is atomic &amp;ndash; all or nothing. (Chapter 10) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;An entity can have up to 255 Properties &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Use &amp;ldquo;ID&amp;rdquo; for the class to indicate the key value, or use the [DataServiceKey] Attribute. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;LINQ makes working with the Azure Table Service much easier, although Interop is certainly possible. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Good description on the process of selecting the Partition and Row Key. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;When checking for continuation tokens for pagination, include logic that falls out of the check in case you are at the last page. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;On deleting a storage object, it is instantly unavailable, however a background process is dispatched to perform the physical deletion. So if you want to re-create a storage object with the same name, add retry logic into the code. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Interesting approach to deleting an index entity without having to read it first &amp;ndash; create a local entity with the same keys and apply it to the Azure system regardless of change-state. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Although the &amp;ldquo;Indexes&amp;rdquo; description is a little vague, it&amp;rsquo;s interesting to see a Folding and Stemming discussion a-la the Porter Stemming Algorithm. (Chapter 11) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Presents a better discussion of indexes (at least inverted indexes) later in the chapter. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Great treatment for DBA&amp;rsquo;s in Chapter 11. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;We need to work on getting secondary indexes in Table storage. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;There is a limited form of transactions called &amp;ldquo;Entity Group Transactions&amp;rdquo; that, although they have conditions, makes a transactional system more possible. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Concurrency also becomes an issue, but is handled well if you&amp;rsquo;re using Data Services in .NET. It watches the Etag and allows you to take action appropriately. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;I do not recommend using Azure as a location for secure backups. In fact, I would rather have seen the examples in (Chapter 12) go the other way, showing how data could be brought back to a local store as a DR or HA strategy. Good information on cryptography and so on even so. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;Chapter seems out of place, and should be combined with the Blob chapter. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;(Chapter 13) on SQL Azure is dated, although the base concepts are OK. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="line-height:13.5pt;margin:0in 0in 0pt;background:white;color:#00b050;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level2 lfo1;tab-stops:list 1.0in;" class="MsoNormal"&gt;&lt;span style="font-family:'Bookman Old Style','serif';mso-bidi-font-family:arial;mso-ansi-language:en;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Nice example of simple ADO.NET access to a SQL Azure (or any SQL Server Really) database. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/ol&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=36520" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx">Book Review</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Computer books are dead. Well, some of them, anyway.</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/05/10/computer-books-are-dead-well-some-of-them-anyway.aspx</link><pubDate>Tue, 10 May 2011 13:58:23 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:35551</guid><dc:creator>BuckWoody</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/35551.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=35551</wfw:commentRss><description>&lt;p&gt;I read a lot. I mean a LOT. It seems that computer professionals have much in common with medical professionals – we have to read in order to stay on top of our game. For me, this used to mean web sites, magazines, and other print medium, and of course lots of books. I’ve even &lt;a href="http://buckwoody.com/BResume.html#Publications_and_Communications" target="_blank"&gt;written several computer books myself and had them published&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Whenever I teach a class, do a presentation, or hold an architectural design session on a new (or new to that person) technology, they usually follow up with “what’s a good book for learning X technology?” This happens so often that I have a list I keep of the titles I like for a particular subject – &lt;a href="http://www.facebook.com/apps/application.php?id=2397701323&amp;amp;ref=appd" target="_blank"&gt;you probably have similar book lists&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Windows, SQL Server, and other Microsoft products change on an average of around three or four year cycles. That’s enough time to play with a beta product, wait until it releases, and write a solid book about it, and have that in a decent market for sales, and allow people to read and recommend it. &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="3"&gt;Enter “the Cloud” – Distributed Computing.&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Windows Azure and SQL Azure don’t release every three years. Changes – some of them dramatic – release &lt;em&gt;every three or four months&lt;/em&gt;. You can’t even write a book that fast, much less update it that quickly and re-sell it. So what is a technical professional to do?&lt;/p&gt;  &lt;p&gt;Well, although I really like a couple of books I’ve read so far (especially this one, &lt;a href="http://oreilly.com/catalog/0790145308795/" target="_blank"&gt;print and e-book version here&lt;/a&gt;), they are out of date almost by the time they publish. Instead, I rely on blogs, the web, documentation from the vendor and how-to articles published online. Many of these, ironically, are stored, hosted or delivered using – wait for it – Windows Azure. That’s interesting because it’s a medium that describes itself – “reflection”, anyone? &lt;/p&gt;  &lt;p&gt;This brings up an interesting conundrum. Books have a version, are arranged, thought-out and categorized. Since I’m now getting information off of the web, it’s difficult to figure out whether that material is correct at the time, what level it’s aimed at – and forget about any coherent structure. It’s topic-by-topic. &lt;/p&gt;  &lt;p&gt;So, like most of you, I use links and favorites to arrange things. And I found myself making “virtual books” by essentially creating my own Table-Of-Contents. I’ve shared some of those, &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2010/11/16/windows-azure-learning-plan.aspx" target="_blank"&gt;such as my Windows and SQL Azure Learning Plan&lt;/a&gt;. The key is that I have to update that to ensure that the latest information is there – otherwise it becomes an organized list that is not authoritative.&lt;/p&gt;  &lt;p&gt;Don’t get me wrong – I still have tons of&amp;#160; (e-book format) books, especially on “conceptual” topics like development paradigms and so on. But when it comes to specifics and how-to’s – electronic medium is best for me. It’s more current, adaptable, searchable, interactive and immersive than books. But how long will I retain regular print-type books? We’ll see. Times, they are a changing – fast.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=35551" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx">Book Review</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Documentation/default.aspx">Documentation</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Personal/default.aspx">Personal</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Planning/default.aspx">Planning</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Process/default.aspx">Process</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Rant/default.aspx">Rant</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Tutorials/default.aspx">Tutorials</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Web/default.aspx">Web</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item></channel></rss>