<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8616895123812267995</id><updated>2012-02-16T11:50:41.139-05:00</updated><category term='Random'/><category term='Architecture'/><category term='RTM'/><category term='Flip4Mac'/><category term='.NET Silverlight Expression Blend MIX'/><category term='CompositeWPF'/><category term='Voting'/><category term='Code Camp'/><category term='AppFabric'/><category term='Consulting'/><category term='Azure Remote Desktop'/><category term='Bootcamp'/><category term='Sitefinity'/><category term='Azure Drive'/><category term='Silvleright'/><category term='DotNetRocks'/><category term='BizSpark'/><category term='CommerceServer'/><category term='Telestream'/><category term='Azure Tip'/><category term='Airports'/><category term='Fireworks'/><category term='Interview'/><category term='Azure'/><category term='Web'/><category term='ASP.NET'/><category term='Testing'/><category term='MongoDB'/><category term='MSDN'/><category term='Editorial'/><category term='Travel'/><category term='Atlanta'/><category term='Conference'/><category term='Mac'/><category term='Career'/><category term='SourceCode'/><category term='Software'/><category term='SQL Azure'/><category term='Windows Azure'/><category term='Codename Dallas'/><category term='SketchFlow'/><category term='User Group'/><category term='WMV'/><category term='Facebook'/><category term='backup'/><category term='Cloud computing'/><category term='Windows 7'/><category term='Azure SDK'/><category term='Blend'/><category term='Job Posting'/><category term='David Makogon'/><category term='Azure SDK 1.3'/><category term='Xaml'/><category term='VMWare'/><category term='IntelliTrace'/><category term='VisualStudio'/><category term='Jawbone'/><category term='GiveCamp'/><category term='FredNUG'/><category term='MVP'/><category term='Photography'/><category term='SpiderOak'/><category term='IIS'/><category term='blackbird pie'/><category term='SDK'/><category term='Azure SDK 1.4'/><category term='RockNUG'/><category term='PRISM'/><category term='SEO'/><category term='Expression'/><category term='twitter'/><category term='SSD'/><category term='Load Testing'/><category term='Injury'/><category term='CMS'/><category term='Azure Guest OS'/><category term='Patterns'/><category term='blogging'/><category term='Google Voice'/><category term='Training'/><category term='WPF'/><category term='Blog'/><category term='Entity Framework'/><category term='Azure Billing'/><category term='.NET'/><category term='Silverlight'/><category term='MIX'/><category term='BitLocker'/><title type='text'>Just a moment... David has a thought</title><subtitle type='html'>I love software construction, and I like to blog about it. I specialize in Microsoft's Windows Azure cloud computing platform, so that tends to be my most frequent topic.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-205774000303614859</id><published>2012-02-14T16:51:00.001-05:00</published><updated>2012-02-14T16:51:22.427-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MongoDB'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><title type='text'>Speaking at MongoDC Meetup, Feb. 15</title><content type='html'>&lt;p&gt;On Wednesday, Feb. 15, I’ll be speaking at my local MongoDB meetup group in the DC area. This talk will be all about running MongoDB on Windows Azure. A bit of code, a bit of cloud, a bit of “how does MongoDB and Windows Azure play nicely together.”&lt;/p&gt;  &lt;p&gt;The evening kicks off at 6:30. The &lt;a href="http://www.meetup.com/Washington-DC-MongoDB-Users-Group/events/48308922/" target="_blank"&gt;MongoDC Meetup page&lt;/a&gt; has more details and a link for signup. If you’re in the McLean, VA area, feel free to stop by and say hi!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-205774000303614859?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/205774000303614859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2012/02/speaking-at-mongodc-meetup-feb-15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/205774000303614859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/205774000303614859'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2012/02/speaking-at-mongodc-meetup-feb-15.html' title='Speaking at MongoDC Meetup, Feb. 15'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1550145582714349534</id><published>2011-10-16T08:29:00.001-04:00</published><updated>2011-10-16T08:29:29.679-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Career'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>New Role, Same Great Windows Azure Goodness</title><content type='html'>&lt;p&gt;It’s October already! This means I’m now three months late posting this little nugget. In July, I changed roles at Microsoft. I’m still in the Windows Azure ISV Incubation team, but no longer a member of the US East Region sub-team, I now have a broader position covering architecture and guidance across our worldwide team. Last year, as an Architect Evangelist (AE), I was working with specific ISV’s within my region (the mid-Atlantic states), providing architectural and technical guidance. This year, I’m still focused on Windows Azure application architecture for our ISV’s; however, I no longer cover a specific region. I’ll be providing architectural guidance for several key ISVs, as well as supporting our illustrious team of AE’s worldwide.&lt;/p&gt;  &lt;p&gt;One interesting side-effect of the new position: I’ve had the opportunity to broaden my view of opportunities and challenges when going beyond the US border. There are ISV challenges, such as data sovereignty. There are team dynamics differences within our organization, as roles vary in responsibility depending on region. There are differences in the general cloud computing landscape, where a particular cloud vendor has a strong presence in one region but little to no presence in another.&lt;/p&gt;  &lt;p&gt;My new team hosts a weekly internal&amp;#160; “power hour” Live Meeting for our Windows Azure architects worldwide, where we discuss various challenges when building or migrating our customers’ applications, and dive into details of new or updated Windows Azure features. Three power hours, actually: one for Americas, one for Europe, and one for Asia. I lead the Americas and Europe power hours. I plan to blog about a few tips &amp;amp; tricks based on some of these discussions (the non-NDA stuff, of course…).&lt;/p&gt;  &lt;p&gt;I’ve been traveling quite a bit over the past few months, with several trips to Seattle and one to Europe. As I write this post, I’m traveling yet again, only this time for a much-needed vacation with my wife (who’s shown considerable patience with me!). Destination: Aruba. Time for a bit of R&amp;amp;R…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1550145582714349534?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1550145582714349534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/10/new-role-same-great-windows-azure.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1550145582714349534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1550145582714349534'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/10/new-role-same-great-windows-azure.html' title='New Role, Same Great Windows Azure Goodness'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1736476685039275476</id><published>2011-06-29T11:47:00.001-04:00</published><updated>2011-06-29T11:47:05.501-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Job Posting'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Career'/><title type='text'>My team is hiring–Work with ISV’s and Windows Azure!</title><content type='html'>&lt;p&gt;I work with a really cool team at Microsoft. Our charter is to help Independent Software Vendors (ISV’s) build or migrate applications to the Windows Azure platform. We’re growing, and looking to fill two specific roles in the US:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Architect Evangelist &lt;/strong&gt;(DC area, Silicon Valley area). 80% technical, 20% business development experience. Excerpt from the job description:&lt;/p&gt;  &lt;p&gt; “You will be responsible for identifying, driving, and closing Azure ISV opportunities in your region. You will help these partners bring their cloud applications to market by providing architectural guidance and deep technical support during the ISV’s evaluation, development, and deployment of the Azure services. This position entails evangelizing the Windows Azure Platform to ISV partners, removing roadblocks to their deployment, and driving partner satisfaction.”&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Platform Strategy Advisor&lt;/strong&gt; (New York area).&amp;#160; 50% technical, 50% business development experience. Excerpt from the job description:&lt;/p&gt;  &lt;p&gt;“You will be responsible for identifying, driving, and closing Azure ISV opportunities in your region. You will help these partners bring their cloud applications to market by providing business model and architectural guidance and supporting them through their development and go-to-market activities. This position entails evangelizing the Windows Azure Platform to ISV partners, removing roadblocks to their deployment, and driving partner satisfaction.”&lt;/p&gt;  &lt;p&gt;Both of these roles are work-from-home positions, along with onsite customer visits and additional travel as necessary.&lt;/p&gt;  &lt;p&gt;Job postings are on LinkedIn and the Microsoft Careers site:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Architect Evangelist (Silicon Valley): &lt;a href="http://www.linkedin.com/jobs?viewJob=&amp;amp;jobId=1707248&amp;amp;trk=jobs_share_tw" target="_blank"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=3&amp;amp;jid=44605&amp;amp;jlang=EN" target="_blank"&gt;Microsoft Careers&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Platform Strategy Advisor (New York): &lt;a href="http://www.linkedin.com/jobs?viewJob=&amp;amp;jobId=1707252&amp;amp;trk=jobs_share_tw" target="_blank"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;amp;pg=0&amp;amp;so=&amp;amp;rw=2&amp;amp;jid=44606&amp;amp;jlang=EN" target="_blank"&gt;Microsoft Careers&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I’ll post an update as soon as the DC-area position is posted (should be later today).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1736476685039275476?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1736476685039275476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/06/my-team-is-hiringwork-with-isvs-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1736476685039275476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1736476685039275476'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/06/my-team-is-hiringwork-with-isvs-and.html' title='My team is hiring–Work with ISV’s and Windows Azure!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8677392185684192263</id><published>2011-05-25T11:20:00.001-04:00</published><updated>2011-05-25T11:20:16.482-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Why did the turtle cross the road?</title><content type='html'>&lt;p&gt;This morning, I was prepping a camera for my wife to take on our daughter’s field trip. This meant that I was surrounded by camera bodies, lenses, and a big cup of coffee.&lt;/p&gt;  &lt;p&gt;I just happened to look out the front window, as I saw two cars stop in front of my house. I saw what looked like a black, flattened basketball sitting in the middle of the road. A basketball with a head sticking out.&lt;/p&gt;  &lt;p&gt;Reaching for the nearest camera+lens combo (and almost knocking my coffee cup over), I bolted outside to get a closer look:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/Td0eKbdqKlI/AAAAAAAAArE/eebYO2RtjBo/s1600-h/IMG_0386%5B3%5D.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="IMG_0386" border="0" alt="IMG_0386" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/Td0eKz6rj5I/AAAAAAAAArI/NjoS_CkzGsA/IMG_0386_thumb%5B1%5D.jpg?imgmax=800" width="644" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Its shell looked to be about 15 inches long, along with some nails in need of a mani-pedi.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/Td0eLJgPm4I/AAAAAAAAArM/3TByc6ozqAE/s1600-h/IMG_0391%5B3%5D.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="IMG_0391" border="0" alt="IMG_0391" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/Td0eLD1OSCI/AAAAAAAAArQ/-vM2hmHkECs/IMG_0391_thumb%5B1%5D.jpg?imgmax=800" width="644" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I had time for one more close-up before another car drove up:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/Td0eLrHmxmI/AAAAAAAAArU/BTYxerbcj8o/s1600-h/IMG_0393%20%281%29%5B3%5D.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="IMG_0393 (1)" border="0" alt="IMG_0393 (1)" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/Td0eL81ilQI/AAAAAAAAArY/HSe4Oho29XY/IMG_0393%20%281%29_thumb%5B1%5D.jpg?imgmax=800" width="644" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So… why did the turtle cross the road? To remind me that there’s an entire world around me that doesn’t involve staring at a computer screen.&lt;/p&gt;  &lt;p&gt;Time to go back to work now, staring at the computer screen…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8677392185684192263?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8677392185684192263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/05/why-did-turtle-cross-road.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8677392185684192263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8677392185684192263'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/05/why-did-turtle-cross-road.html' title='Why did the turtle cross the road?'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_rKuJyBZ8UWY/Td0eKz6rj5I/AAAAAAAAArI/NjoS_CkzGsA/s72-c/IMG_0386_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5305954793525903846</id><published>2011-05-17T17:43:00.001-04:00</published><updated>2011-05-17T19:07:36.387-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK 1.4'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tip'/><title type='text'>Windows Azure Tip: Go Beyond 5 Endpoints per Role, beyond 25 per Deployment</title><content type='html'>&lt;p&gt;A few months ago, I &lt;a href="http://www.davidmakogon.com/2011/01/azure-tip-consider-remote-desktop-when.html" target="_blank"&gt;blogged&lt;/a&gt; about the impact Remote Desktop has on your Windows Azure Deployment. The basic premise was simple: Remote Desktop consumes one endpoint on each of your roles. And, if you only had one role in your deployment, you’d actually lose &lt;em&gt;two &lt;/em&gt;endpoints on your role, because of the Remote Desktop Forwarder. Given the restriction of 5 endpoints per role, having only three usable endpoints could be limiting if, say, you were trying to host a public-facing website (port 80), secure website (port 443), and a few WCF services (port 8000, and then… what???), all in a single role.&lt;/p&gt;  &lt;p&gt;This brings me to today’s tip: &lt;strong&gt;Go beyond 5 endpoints in a role&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The way deployments are set up, there &lt;em&gt;was&lt;/em&gt; a maximum of 25 total endpoints:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Five total roles per deployment &lt;/li&gt;    &lt;li&gt;Five endpoints per role &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;While there’s still an endpoint total in effect, there’s been a subtle change to role definitions, which went into effect some time in March. In fact, if you look at the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg441573.aspx" target="_blank"&gt;What’s New in Windows Azure&lt;/a&gt; &lt;/strong&gt;MSDN Library page, you’ll see the subtle change mentioned, under the &lt;em&gt;&lt;strong&gt;March 31, 2011 &lt;/strong&gt;&lt;/em&gt;update summary:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;A recent update has changed the manner in which endpoints can be distributed among roles in a hosted service. A service can now have a total of 25 input endpoints which can be allocated across the 5 roles allowed in a service. For example, you can allocate 5 input endpoints per role or you can allocate 25 input endpoints to a single role. Internal endpoints are limited to 5 per role. Input and Internal endpoints are allocated separately.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For internal endpoints (meaning inter-role communication only), nothing changes – only five per role. However, with input endpoints (meaning public-facing ports), you can divide the 25 up any way you want across your roles.&lt;/p&gt;  &lt;p&gt;Just for fun, I wanted to see what would happen if I went with all 25 input endpoints, along with five internal endpoints per role, across 5 roles.&lt;/p&gt;  &lt;p&gt;Here’s part of my web role’s endpoint definition, with 25 input endpoints and 5 internal endpoints.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TdL5S4Y2fBI/AAAAAAAAAqQ/Pm20Ng4uBIg/s1600-h/30endpoints%5B3%5D.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="30endpoints" border="0" alt="30endpoints" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TdL5TAUuk9I/AAAAAAAAAqU/FFAQ-1Ga8-E/30endpoints_thumb%5B1%5D.jpg?imgmax=800" width="489" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I added 4 more roles (all worker roles), with 5 internal endpoints apiece:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TdL5TXanH1I/AAAAAAAAAqY/jLA39qi_SlE/s1600-h/worker-role-5-endpoints%5B3%5D.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="worker-role-5-endpoints" border="0" alt="worker-role-5-endpoints" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TdL5TpRUEsI/AAAAAAAAAqc/PZMdMu-hdjs/worker-role-5-endpoints_thumb%5B1%5D.jpg?imgmax=800" width="644" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I published this to Windows Azure, and was able to see my website on each port. The default.aspx page shows the total endpoint count for my webrole, along with the port number for &lt;strong&gt;Endpoint15&lt;/strong&gt;, which is read from the role environment with this simple code:&lt;/p&gt;  &lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size: 9.8pt"&gt;txtInstanceCount.Text = &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoleEnvironment&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#000000"&gt;.CurrentRoleInstance.InstanceEndpoints.Count.ToString();&lt;br /&gt;txtEndpoint15.Text = &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoleEnvironment&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;.CurrentRoleInstance.InstanceEndpoints[&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;&amp;quot;Endpoint15&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;].IPEndpoint.Port.ToString();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font color="#000000" face="Georgia"&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I also enumerated the total endpoint count across the entire deployment.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The output shows that these ports, indeed, exist and are active. Take a good look at my total endpoint count!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TdL5UMu8cOI/AAAAAAAAAqg/c6R16LX7y68/s1600-h/lotsofports-webpage%5B7%5D.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="lotsofports-webpage" border="0" alt="lotsofports-webpage" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TdL5URiOdDI/AAAAAAAAAqk/6jSUcbdL5ms/lotsofports-webpage_thumb%5B3%5D.jpg?imgmax=800" width="558" height="484" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What this shows is:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;25 input endpoints on my web role, plus 5 internal endpoints on the same role&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;5 internal endpoints each on the 4 worker roles, adding another 20 endpoints.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;A grand total of&lt;strong&gt; 50 endpoints&lt;/strong&gt; in my deployment!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If anyone’s ever tried publishing to Windows Azure in the past, with more than 5 endpoints per role, you received a deployment error. This app published with no issues. Here’s a snapshot of the portal, with everything humming along:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TdL5UhfYtfI/AAAAAAAAAqo/fEhiFay9nVo/s1600-h/lotsofports-portal%5B3%5D.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="lotsofports-portal" border="0" alt="lotsofports-portal" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TdL5VIOGW0I/AAAAAAAAAqs/xYI15k50iO0/lotsofports-portal_thumb%5B1%5D.jpg?imgmax=800" width="644" height="423" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Disclaimer: I did not wire up all the endpoints to services. I’m assuming everything will work, since it published with no errors. Feel free to disprove this.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So, as you’re planning your Windows Azure role usage, you can breathe a bit easier if you were bumping into endpoint limitations. Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5305954793525903846?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5305954793525903846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/05/windows-azure-tip-go-beyond-5-endpoints.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5305954793525903846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5305954793525903846'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/05/windows-azure-tip-go-beyond-5-endpoints.html' title='Windows Azure Tip: Go Beyond 5 Endpoints per Role, beyond 25 per Deployment'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_rKuJyBZ8UWY/TdL5TAUuk9I/AAAAAAAAAqU/FFAQ-1Ga8-E/s72-c/30endpoints_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8976713559574838085</id><published>2011-02-13T11:34:00.000-05:00</published><updated>2011-04-15T19:08:25.916-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK 1.3'/><title type='text'>Windows Azure Tip: Overload your Web Role</title><content type='html'>&lt;p&gt;Recently, I blogged about &lt;a href="http://www.davidmakogon.com/2011/01/azure-tip-consider-remote-desktop-when.html" target="_blank"&gt;endpoint usage when using Remote Desktop&lt;/a&gt; with Windows Azure 1.3. The gist was that, even though roles support up to five endpoints, Remote Desktop consumes one of those endpoints, and an additional endpoint is required for the Remote Desktop forwarder (this endpoint may be on any of your roles, so you can move it to any role definition).&lt;/p&gt;  &lt;p&gt;To create the demo for the RDP tip, I created a simple Web Role with a handful of endpoints defined, to demonstrate the error seen when going beyond 5 total endpoints. The key detail here is that my demo was based on a &lt;strong&gt;&lt;em&gt;Web Role. &lt;/em&gt;&lt;/strong&gt;Why is this significant???&lt;/p&gt;  &lt;p&gt;This brings me to today’s tip: &lt;strong&gt;&lt;em&gt;Overload your Web Role.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First, a quick bit of history is in order. Prior to Windows Azure 1.3, there was an interesting limit related to Role definitions. The &lt;em&gt;Worker Role&lt;/em&gt; supported up to 5 endpoints. Any mix of &lt;em&gt;input &lt;/em&gt;and &lt;em&gt;external &lt;/em&gt;endpoints was supported. &lt;em&gt;Input &lt;/em&gt;endpoints are public-facing, while &lt;em&gt;internal&lt;/em&gt; endpoints are only accessible by role instances in your deployment. These &lt;em&gt;input&lt;/em&gt; and &lt;em&gt;internal&lt;/em&gt; endpoints supported http, https, and tcp.&lt;/p&gt;  &lt;p&gt;However, the &lt;em&gt;Web Role&lt;/em&gt;, while also supporting 5 total endpoints,&lt;em&gt;&amp;#160;&lt;/em&gt;only supported two &lt;em&gt;input &lt;/em&gt;endpoints: one http and one https. Because of this limitation, if your deployment required any additional externally-facing services (for example, a WCF endpoint ), you’d need a &lt;em&gt;Web Role &lt;/em&gt;for the customer-facing web application, and a &lt;em&gt;Worker Role&lt;/em&gt; for additional service hosting. When considering a live deployment taking advantage of Windows Azure’s SLA (which requires 2 instances of a role), this equates to a minimum of 4 instances: 2 &lt;em&gt;Web Role&lt;/em&gt; instances and 2 &lt;em&gt;Worker Role&lt;/em&gt; instances (though if your worker role is processing lower-priority background tasks, it might be ok to maintain a single instance).&lt;/p&gt;  &lt;p&gt;With Windows Azure 1.3, the &lt;em&gt;Web Role &lt;/em&gt;endpoint restriction no longer exists. You may now define endpoints any way you see fit, just like with a &lt;em&gt;Worker Role.&lt;/em&gt; This is a significant enhancement, especially when building low-volume web sites. Let’s say you had a hypothetical deployment scenario with the following &lt;em&gt;moving parts&lt;/em&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Customer-facing website (http port) &lt;/li&gt;    &lt;li&gt;Management website (https port) &lt;/li&gt;    &lt;li&gt;sftp server for file uploads (tcp port) &lt;/li&gt;    &lt;li&gt;MongoDB (or other) database server (tcp port) &lt;/li&gt;    &lt;li&gt;WCF service stack (tcp port) &lt;/li&gt;    &lt;li&gt;Some background processing tasks that work asynchronously off an Azure queue &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Let’s further assume that your application’s traffic is relatively light, and that the combining of all these services still provides an acceptable user experience . With Windows Azure 1.3, you can now run all of these &lt;em&gt;moving parts&lt;/em&gt; within a single &lt;em&gt;Web Role&lt;/em&gt;. This is easily configurable in the role’s property page, in the &lt;em&gt;Endpoints&lt;/em&gt; tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TajP0jNZTvI/AAAAAAAAAp4/T4clbSbsSXk/s1600-h/multiple-endpoints-v2%5B3%5D.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="multiple-endpoints-v2" border="0" alt="multiple-endpoints-v2" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TajP4g1a-dI/AAAAAAAAAp8/n7r3-Xmwaq0/multiple-endpoints-v2_thumb%5B1%5D.jpg?imgmax=800" width="644" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Your minimum usage footprint is now &lt;em&gt;2 instances!&lt;/em&gt; And if you felt like living on the wild side and forgoing SLA peace-of-mind, you could drop this to a single instance and accept the fact that your application will have periodic downtime (for OS updates, hardware failure/recovery, etc.).&lt;/p&gt;  &lt;h4&gt;Caveats&lt;/h4&gt;  &lt;p&gt;This example might seem a bit extreme, as I’m loading up&amp;#160; quite a bit in a single VM. If traffic spikes, I’ll need to scale out to multiple instances, which scales all of these services together. This is probably not an ideal model for a high-volume site, as you’ll want the ability to scale different parts of your system independently (for instance, scaling up your customer-facing web, while leaving your background processes scaled back).&lt;/p&gt;  &lt;p&gt;Don’t forget about Remote Desktop: If you plan on having an RDP connection to your overloaded Web Role, restrict your Web Role to only 3 or 4 endpoints (see my &lt;a href="http://www.davidmakogon.com/2011/01/azure-tip-consider-remote-desktop-when.html" target="_blank"&gt;Remote Desktop tip&lt;/a&gt; for more information about this).&lt;/p&gt;  &lt;p&gt;Lastly: Since you’re loading up a significant number of services on a single role, you’ll want to carefully monitor performance (CPU, web page connection latency, average page time, IIS request queue length,&amp;#160; Azure Queue length (assuming you’re using one to control a background worker process), etc. As traffic grows, you might want to consider separating processes into different roles.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8976713559574838085?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8976713559574838085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/02/azure-tip-overload-your-web-role-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8976713559574838085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8976713559574838085'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/02/azure-tip-overload-your-web-role-for.html' title='Windows Azure Tip: Overload your Web Role'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_rKuJyBZ8UWY/TajP4g1a-dI/AAAAAAAAAp8/n7r3-Xmwaq0/s72-c/multiple-endpoints-v2_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1721990365102862929</id><published>2011-01-31T19:07:00.001-05:00</published><updated>2011-01-31T19:40:00.919-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jawbone'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>The Jawbone: Icon for the dog, Era for the human</title><content type='html'>&lt;p&gt;Last week, I was the proud owner of a most-excellent Bluetooth headset, the Jawbone ICON. Compared to my years-old Motorola H700, the Jawbone was simply outstanding. I had owned this beautiful piece of technology less than 3 months, and I was still enjoying its newness, along with its excellent audio quality.&lt;/p&gt;  &lt;p&gt;Unfortunately, my puppy Nimbus felt that he, too, should have the privilege of playing with a Jawbone. As it turns out, Bluetooth headsets are not very durable as a chew-toy:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOuhDvwHI/AAAAAAAAAog/BsU8_Zvflhk/s1600-h/IMG_7464%5B3%5D.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="IMG_7464" border="0" alt="IMG_7464" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOvQBy7uI/AAAAAAAAAok/s-hoZIIf1ms/IMG_7464_thumb%5B1%5D.jpg?imgmax=800" width="644" height="430" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In a desperate plea for empathy, I &lt;a href="http://twitter.com/#!/dmakogon/status/30353469441310721" target="_blank"&gt;tweeted&lt;/a&gt; my Horrible Headset Happenstance to the world:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOvn-duPI/AAAAAAAAAoo/h19PR9b8CMY/s1600-h/jawbone-tweet%5B7%5D.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="jawbone-tweet" border="0" alt="jawbone-tweet" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TUdOwCbgmuI/AAAAAAAAAos/DjVVb_6SmjQ/jawbone-tweet_thumb%5B5%5D.jpg?imgmax=800" width="344" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The great folks at Jawbone Customer Support heard (ok, saw) my plea, along with the photo, and reached out to me. They told me they laughed when they saw my mutilated headset (and assured me they wept a bit, too). They assumed my dog must be &lt;em&gt;really cute &lt;/em&gt;to be able to get away with something this mischievous and still live to bark about it. I assured them he was:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOwSzYDqI/AAAAAAAAAow/wJOaK--HuVI/s1600-h/IMG_6389%5B3%5D.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="IMG_6389" border="0" alt="IMG_6389" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOwn2JlJI/AAAAAAAAAo0/sN8gWnhGpqs/IMG_6389_thumb%5B1%5D.jpg?imgmax=800" width="324" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Graciously, Customer Support offered to assist me in my replacement quest. I decided to eschew (no, not &lt;em&gt;chew&lt;/em&gt;) another ICON, and upgrade to the brand-newest Jawbone: &lt;a href="http://amzn.to/h6rMzy" target="_blank"&gt;The ERA&lt;/a&gt;. And much to my surprise, it arrived in the mail today. I can’t imagine these photos do it justice, but I wanted to share my unboxing experience. First, the box itself:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOw76OqTI/AAAAAAAAAo4/HN8IUQH8WXg/s1600-h/IMG_7765%5B3%5D.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="IMG_7765" border="0" alt="IMG_7765" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOxMclsaI/AAAAAAAAAo8/664-DjAbSXo/IMG_7765_thumb%5B1%5D.jpg?imgmax=800" width="324" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After staring at it for an undetermined amount of time, it was time to open it up:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOxqVd10I/AAAAAAAAApA/56wU5hcao5E/s1600-h/IMG_7766%5B3%5D.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="IMG_7766" border="0" alt="IMG_7766" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOx4YgPHI/AAAAAAAAApE/RPax1-CVRWs/IMG_7766_thumb%5B1%5D.jpg?imgmax=800" width="644" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And peeling back the front cover revealed a cornucopia of ear-fitting goodness.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOya3UsnI/AAAAAAAAApI/F_v2L13i7sM/s1600-h/IMG_7769%5B3%5D.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="IMG_7769" border="0" alt="IMG_7769" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TUdOykQfEQI/AAAAAAAAApM/VoK3Q2_dSBI/IMG_7769_thumb%5B1%5D.jpg?imgmax=800" width="324" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I gently removed the ERA from its perch and gave it a full charge. It was time… Time for its maiden voyage. I called my wife, listening intensely to the tonal quality of her phone ringing across the airwaves. She picked up, and I asked her to say something that I could quote to the world. “Anything,” I said. “Just lay it on me.” And she responded, so eloquently and with zero distortion:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“That’s what she said.”&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1721990365102862929?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1721990365102862929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/01/jawbone-icon-for-dog-era-for-human.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1721990365102862929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1721990365102862929'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/01/jawbone-icon-for-dog-era-for-human.html' title='The Jawbone: Icon for the dog, Era for the human'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_rKuJyBZ8UWY/TUdOvQBy7uI/AAAAAAAAAok/s-hoZIIf1ms/s72-c/IMG_7464_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5493723577050327734</id><published>2011-01-30T11:00:00.001-05:00</published><updated>2011-01-30T11:04:48.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BitLocker'/><category scheme='http://www.blogger.com/atom/ns#' term='SSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>My BitLocker Moment of Panic</title><content type='html'>&lt;p&gt;Back in October 2010, when I joined Microsoft, I received my shiny (well, matte) new laptop. Security is of paramount importance around here, and I had to enable BitLocker, included with Windows 7 Ultimate. The encryption process was actually painless. I saw minimum performance degradation, and the only (minor) annoyance was the bootup workflow, which requires a PIN to be entered prior to Windows booting.&lt;/p&gt;  &lt;p&gt;Fast-forward 2 months: I decided it was time for a performance boost, so I picked up a &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820139114&amp;amp;cm_re=kingston_256gb_ssd-_-20-139-114-_-Product" target="_blank"&gt;256GB Kingston SSD drive&lt;/a&gt;. It came with a copy of Acronis’ disk-cloning software, which made the transfer extremely easy. I contacted Microsoft IT Tech Support before doing the transfer, to see if there were any known caveats; the only thing they suggested was removing encryption prior to cloning. So I did, and the cloning went smoothly. I was back up and running with my new drive in about 2 hours, with BitLocker re-applied.&lt;/p&gt;  &lt;p&gt;So there I was, with my new SSD. I was set for &lt;em&gt;Blazing Speed&lt;/em&gt;. After 2 weeks, I was only seeing a moderate improvement, certainly not worthy of the high cost of the drive (my disk performance index jumped from about 5.4 to around 5.7). So I went hunting for SSD optimization information. Thanks to a tweet by Brian Prince, I found &lt;a href="http://www.zdnet.com/blog/bott/windows-7-and-ssds-setup-secrets-and-tune-up-tweaks/2910" target="_blank"&gt;a few good tips&lt;/a&gt; like disabling SuperFetch (which I did), updating the controller driver (which I did), and updating the BIOS (I held off).&lt;/p&gt;  &lt;h4&gt;So… what about the panic???&lt;/h4&gt;  &lt;p&gt;My performance index was now at 6.8, with a very noticeable performance improvement. But I wanted more, so I decided to update my BIOS. And that, my friends, did not go as planned.&lt;/p&gt;  &lt;p&gt;The BIOS upgrade itself was easy, thanks to Lenovo’s updater tool. It then told me to reboot, which I did. I was taken to the BitLocker PIN Entry screen, and I entered my secret key.&amp;#160; But then… BitLocker told me that something on my computer changed since last booting, and that I needed to enter my recovery key. &lt;em&gt;Oh, you mean that key on my USB drive? That key from when I encrypted my original drive?&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Yes, that’s right, I had not backed up my new key after re-encrypting. At this point, I was unable to boot. I was, um, &lt;em&gt;toast.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;Recovery&lt;/h4&gt;  &lt;p&gt;I know what you’re thinking: Just restore from a backup. Easy enough: I had one handy: my old drive, which had the OS relatively current. And my working files were all backed up to offsite storage. However, I kept thinking there was Some Important File I hadn’t backed up.&lt;/p&gt;  &lt;p&gt;On a whim, I decided to download the previous BIOS version from Lenovo. I created a bootable CD on another computer, and booted up. Interestingly, the DOS version of the BIOS updater gave a stern warning a about updating BIOS firmware when BitLocker is enabled (the Windows version has no such warning). I down-rev’d, rebooted, and… just like magic, I was able to boot once again into my SSD.&lt;/p&gt;  &lt;h4&gt;Lessons Learned&lt;/h4&gt;  &lt;p&gt;Maybe you’re way smarter than me and will never make this mistake, but I thought it be worth pointing out the obvious anyway:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When encrypting with BitLocker, &lt;em&gt;always &lt;/em&gt;create a recovery disk afterward.&lt;/li&gt;    &lt;li&gt;When updating BIOS firmware, be sure to suspend BitLocker prior to the update (you don’t need to unencrypt; you just need to suspend BitLocker).&lt;/li&gt;    &lt;li&gt;Prior to any type of system update when BitLocker is enabled, be sure to have a backup handy, &lt;em&gt;just in case.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5493723577050327734?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5493723577050327734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/01/my-bitlocker-moment-of-panic.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5493723577050327734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5493723577050327734'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/01/my-bitlocker-moment-of-panic.html' title='My BitLocker Moment of Panic'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6631059541672166302</id><published>2011-01-20T10:45:00.001-05:00</published><updated>2011-01-21T17:35:46.777-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Bootcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Azure Bootcamp Pittsburgh January 2010: Show Notes</title><content type='html'>&lt;p&gt;I had a fun time visiting Pittsburgh and presenting some Azure Goodness during Day 2 of the Azure Bootcamp! Thanks to &lt;a href="http://twitter.com/rj_dudley" target="_blank"&gt;Rich Dudley&lt;/a&gt; for inviting me – he organized a great event and the audience was very engaged. Rich, along with &lt;a href="http://twitter.com/SQLScott" target="_blank"&gt;Scott Klein&lt;/a&gt;, presented the bulk of the material.&lt;/p&gt;  &lt;p&gt;During my presentation, we discussed a few Azure-101 tips and hints. I did my best to capture them here. Please let me know if I missed any and I’ll update this post.&lt;/p&gt;  &lt;p&gt;My presentation slide deck is here:&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.office.live.com/embedicon.aspx/AzureBootcamp" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;h4&gt;Configuration Setting Publisher&lt;/h4&gt;  &lt;p&gt;With Azure v1.3, Web roles now run with full IIS, which means you’ll need to separately tell your web app to use the Azure configuration setting publisher. The easiest way to do this is in the Application_Start() method in global.asax:&lt;/p&gt;  &lt;pre style="line-height: normal; font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;protected&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; Application_Start(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; sender, &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;EventArgs&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt; e)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&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; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;CloudStorageAccount&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;.SetConfigurationSettingPublisher(&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; (configName, configSettingPublisher) =&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; {&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;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt; connectionString =&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;RoleEnvironment&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;.GetConfigurationSettingValue(configName);&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;#160;&amp;#160;&amp;#160;&amp;#160; configSettingPublisher(connectionString);&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; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="line-height: normal; font-family: "&gt;&lt;font color="#000000" face="Georgia"&gt;You’ll need this when working with the Azure Platform Training Kit samples, such as the Guestbook demo we walked through.&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Connection Strings&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When creating your new Azure application, your default diagnostic connection strings point to the local simulation environment:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TThYcg92HDI/AAAAAAAAAoQ/S6whVuUoMzg/s1600-h/devstorage%5B7%5D.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="devstorage" border="0" alt="devstorage" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TThYejsgAXI/AAAAAAAAAoY/BdSW8NrfhrI/devstorage_thumb%5B3%5D.jpg?imgmax=800" width="644" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When testing locally, this works fine. However, when you deploy to Azure, you’ll quickly discover that you have no local development storage, and must use “real” Azure storage. Don’t forget to change these settings &lt;em&gt;prior to publishing!&lt;/em&gt; This is easily done through Visual Studio:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TThYfSQ_6XI/AAAAAAAAAoE/sdp5stjvYf8/s1600-h/configurestorage%5B3%5D.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="configurestorage" border="0" alt="configurestorage" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TThYgATwvxI/AAAAAAAAAoM/Zdreuw6GmSE/configurestorage_thumb%5B1%5D.jpg?imgmax=800" width="644" height="463" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Queues and Poison Messages&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We talked a bit about handling &lt;em&gt;poison messages&lt;/em&gt; on a queue; that is, messages that consistently cause the processing code to not complete successfully. This could stem from any number of reasons, without a way to correct its processing while the role is running. If a message is failing to be processed simply because the GetMessage() timeout wasn’t set for a long-enough period of time, this can be adjusted when read a&amp;#160; 2nd (or 3rd, or nth) time from the queue.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So, assuming the message truly cannot be processed, it needs to be removed from the main queue permanently, and then stored in a separate &lt;em&gt;poison message area &lt;/em&gt;queue to be evaluated later (maybe the developer downloads these messages and tries processing them locally in a debugger…). The typical pattern is to allow message-processing to be retried a specific number of times (maybe allow for 3 attempts) or allowed to live for a specific amount of time before moving it to a poison area. This area could be another queue, an Azure table, etc.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here’s a very simple example of a queue-processing loop that incorporates a poison message queue:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="line-height: normal; font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;                while&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; (&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&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;#160;&amp;#160;&amp;#160;&amp;#160; {&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; msg = queue.GetMessage(&lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;TimeSpan&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;.FromMinutes(1));&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt; (msg == &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;.Sleep(&lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;TimeSpan&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;.FromSeconds(10));&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;continue&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt; (msg.DequeueCount &amp;gt; 3)&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; poisonQueue.AddMessage(&lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;CloudQueueMessage&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;(msg.AsString));&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; queue.DeleteMessage(msg);&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;continue&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font color="#008000"&gt;// process queue message normally&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#000000"&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;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; queue.DeleteMessage(msg);&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;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font color="#000000"&gt;There was a question that came up about queue processing time limits. A queue message processing timeout can be set from 30 seconds to two hours. See the &lt;a href="http://msdn.microsoft.com/en-us/library/dd179474.aspx" target="_blank"&gt;MSDN documentation&lt;/a&gt; for more detail.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6631059541672166302?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6631059541672166302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/01/azure-bootcamp-pittsburgh-show-notes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6631059541672166302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6631059541672166302'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/01/azure-bootcamp-pittsburgh-show-notes.html' title='Azure Bootcamp Pittsburgh January 2010: Show Notes'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_rKuJyBZ8UWY/TThYejsgAXI/AAAAAAAAAoY/BdSW8NrfhrI/s72-c/devstorage_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5291243377802825681</id><published>2011-01-20T00:04:00.001-05:00</published><updated>2011-01-20T00:28:10.413-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure Remote Desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tip'/><title type='text'>Azure Tip: Consider Remote Desktop when Planning Role Endpoints</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Azure roles offer the ability to configure endpoints for exposing things such as WCF services, web servers, and other services (such as MongoDB). Endpoints may be exposed externally or restricted to inter-role communication purposes. External endpoints may be http, https, or tcp, and internal endpoints may be http or tcp.&lt;/p&gt;  &lt;p&gt;Each role in a deployment can be configured to have up to 5 endpoints.&amp;#160; This can be any combination of external and internal endpoints. For instance, you might configure a worker role with 3 input endpoints (meaning the outside world can reach these endpoints) and two internal endpoints (meaning only other role instances in your deployment can reach these endpoints). If you’re optimizing your Azure deployment for a cost-saving configuration, you might be combining multiple services into a single role.&lt;/p&gt;  &lt;p&gt;This brings me to today’s tip: &lt;strong&gt;&lt;em&gt;Consider Remote Desktop when planning role endpoints.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Remote Desktop is a new capability of Azure SDK v1.3. You now have the ability to RDP into any specific instance of your deployment. It might not seem obvious (it wasn’t to me until I received a deployment error), but Remote Desktop consumes an endpoint for its RemoteAccess module (leaving you with 4 to work with). If, say, you had 5 endpoints defined, and you then enabled Remote Desktop and attempted to deploy from Visual Studio, you’d see something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TTfH50lzpII/AAAAAAAAAn0/BuXffe9SP3o/s1600-h/deployment-error%5B5%5D.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="deployment-error" border="0" alt="deployment-error" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TTfH6ZMsaJI/AAAAAAAAAn4/oNMf8f8bPZ8/deployment-error_thumb%5B3%5D.jpg?imgmax=800" width="855" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What might seem even &lt;em&gt;less &lt;/em&gt;obvious is that your Azure deployment requires an RDP RemoteForwarder module as well. This module is responsible for handling all RDP traffic and forwarding it to the appropriate role instance. Just like the RemoteAccess module, this forwarding module consumes an endpoint. But this doesn’t necessarily mean you’re down to 3 endpoints to work with, as your deployment only requires a single role to be designated as the forwarder. You can enable it on &lt;em&gt;any role &lt;/em&gt;in your deployment, so you can move the forwarder to a role with less endpoints in use. Of course, if you don’t need any more than 3 endpoints, you can leave the forwarder as-is.&lt;/p&gt;  &lt;p&gt;You can see the settings for RemoteAccess and RemoteForwarder if you look at the &lt;em&gt;Settings &lt;/em&gt;tab of your role’s properties:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TTfCRDyOi0I/AAAAAAAAAns/1UmsRvUtx6U/s1600-h/rdp-settings%5B3%5D.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="rdp-settings" border="0" alt="rdp-settings" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TTfCRx4-D_I/AAAAAAAAAnw/VIz7_siapJ4/rdp-settings_thumb%5B1%5D.jpg?imgmax=800" width="644" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So… as you plan your Azure deployment, keep Remote Desktop in mind when working through your endpoint configurations. RDP is a very powerful debugging tool, and requires at least one endpoint on each of your roles (possibly two, especially if you only have one role defined).&lt;/p&gt;  &lt;h4&gt;Additional information&lt;/h4&gt;  &lt;p&gt;Jim O’Neil has &lt;a href="http://blogs.msdn.com/b/jimoneil/archive/2010/12/29/azure-home-part-13-remote-desktop-configuration.aspx" target="_blank"&gt;this post&lt;/a&gt; detailing RDP configuration for the Azure@home project.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5291243377802825681?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5291243377802825681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2011/01/azure-tip-consider-remote-desktop-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5291243377802825681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5291243377802825681'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2011/01/azure-tip-consider-remote-desktop-when.html' title='Azure Tip: Consider Remote Desktop when Planning Role Endpoints'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_rKuJyBZ8UWY/TTfH6ZMsaJI/AAAAAAAAAn4/oNMf8f8bPZ8/s72-c/deployment-error_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8678283292909094143</id><published>2010-12-28T17:16:00.001-05:00</published><updated>2010-12-28T17:18:29.679-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Injury'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>Engaging the hand break</title><content type='html'>&lt;p&gt;I was enjoying a peaceful day on Christmas with my family.&amp;#160; Santa hooked us up with an XBox and Kinect, which took over the TV room. My son scored a guitar+amp starter kit, which he promptly took to his bedroom and started working through the lessons.&lt;/p&gt;  &lt;p&gt;Eventually (and miraculously), the kids grew tired and finally went to bed.&amp;#160; Then, nearing midnight, my son awoke and called me to his room. I entered on autopilot, not thinking of potential roadblocks such as an elongated cardboard guitar box strewn across the doorjamb. And that's when my foot made first contact and sent me flying through the air, hands outstretched in front of me.&lt;/p&gt;  &lt;p&gt;I might have made it all the way to the far wall, had it not been for the foot of his bed being directly in my flight path. My outstretched right hand connected solidly with his Cargo bed. The clearest memory I have, while engaging the hand brake, is the sound my bone made upon contact. I hoped it was simply a cracked knuckle, but the X-Ray proved otherwise.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TRphybNmvEI/AAAAAAAAAnk/rBgCCc0nzNk/s1600-h/fracture%5B6%5D.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="fracture" border="0" alt="fracture" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TRphylm3Q2I/AAAAAAAAAno/lWjm7Yp1baI/fracture_thumb%5B4%5D.jpg?imgmax=800" width="349" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have&amp;#160; a metacarpal shaft fracture [also known as a Boxer's Fracture, a common injury to boxers who connect with the last two knuckles of their hand during a punch].&amp;#160; My right hand will be immobilized for 2-3 weeks while the bone fuses itself back together.&lt;/p&gt;  &lt;p&gt;Luckily I’m left-handed so I’m still relatively functional. I reprogrammed my mouse for left handed operation, and I'm taking advantage of speech-to-text to reduce the need to type.&lt;/p&gt;  &lt;p&gt;After this experience I no longer doubt the validity of ER incompetence stories:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The check-in nurse at the front desk asked for my ID and if it still had a current address (“Yes,” I replied). Upon checkout, she once again asked for my ID and if the address had changed. I informed her that during my ER stay, I moved to a new house.&amp;#160; She said, “Really?” It took a few moments before she returned to reality and realized the absurdity of her question (and my answer).&lt;/li&gt;    &lt;li&gt;My nurse had no idea how to cut gauze with normal scissors,&amp;#160; spending almost a half-minute on a 4-inch cut (with a quizzical expression on her face the entire time).&lt;/li&gt;    &lt;li&gt;The ER doctor refused to believe my story, convinced that I was in a brawl (contrary to &lt;a href="http://twitter.com/#!/Tableteer/status/19618912752631809" target="_blank"&gt;twitter rumors&lt;/a&gt;, I did not beat up someone who was dissing Azure).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So there it is: the story of my broken hand.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8678283292909094143?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8678283292909094143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/12/engaging-hand-break.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8678283292909094143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8678283292909094143'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/12/engaging-hand-break.html' title='Engaging the hand break'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_rKuJyBZ8UWY/TRphylm3Q2I/AAAAAAAAAno/lWjm7Yp1baI/s72-c/fracture_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5402133467820013508</id><published>2010-11-06T14:59:00.001-04:00</published><updated>2010-11-06T14:59:33.445-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Presentation Materials: CMAP Code Camp, Fall 2010</title><content type='html'>&lt;p&gt;For those who attended my Azure Quick-Start or Azure Tips-n-Tricks sessions at CMAP Code Camp on Nov. 6, here are the slide decks and demo projects I went through.&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.office.live.com/embedicon.aspx/CMAPCC/2010-11-06-Azure" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Each of the slide decks also includes a list of new Azure features announced at PDC 2010.&lt;/p&gt;  &lt;p&gt;Thanks for all the great questions! Feel free to post additional questions or comments here.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5402133467820013508?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5402133467820013508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/11/presentation-materials-cmap-code-camp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5402133467820013508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5402133467820013508'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/11/presentation-materials-cmap-code-camp.html' title='Presentation Materials: CMAP Code Camp, Fall 2010'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-4212349268690320885</id><published>2010-10-24T06:06:00.006-04:00</published><updated>2010-10-24T08:20:53.841-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>New employer, new Azure role</title><content type='html'>For over five years, I’ve been fortunate to work for &lt;a href="http://www.rdacorp.com/" target="_blank"&gt;RDA&lt;/a&gt;, a consultancy headquartered in Baltimore, MD. The company is a class act, with great people.&amp;nbsp; I’ve worked on nearly 20 engagements, with technology all over the .NET map. My last day with RDA was Wednesday. Let me elaborate a bit…&lt;br /&gt;&lt;br /&gt;About two years ago, I started working with Azure, Microsoft’s cloud computing platform. My first project was with Coca Cola Enterprises. Then, in 2010, I spent almost 6 months “on loan” to Microsoft, as an Azure Virtual Technology Specialist. In my V-TS role, I worked with over a dozen customers, helping them with Azure migration solutions.&lt;br /&gt;&lt;br /&gt;Over the past year, I’ve been speaking about Azure all over the Mid-Atlantic, at user groups, code camps, and even an Azure Bootcamp. If you couldn’t tell by now, let me spell things out for you: I really, &lt;em&gt;really &lt;/em&gt;enjoy working with, and teaching, Azure.&lt;br /&gt;&lt;br /&gt;On October 1, only a few short weeks ago, I was honored with an Azure MVP Award from Microsoft (I &lt;a href="http://www.davidmakogon.com/2010/10/ive-been-awarded-azure-mvp.html" target="_blank"&gt;blogged about this&lt;/a&gt; earlier). I couldn’t be happier! Through the MVP program, I’ve met some seriously-talented Azure folks that share my enthusiasm and passion for the platform.&lt;br /&gt;&lt;br /&gt;Ironically, at the same time the MVP announcement came out, I had been looking into a new role at another company. A perfect-fit role, one that I simply could not say no to. A role that would be dedicated to Azure.&lt;br /&gt;&lt;br /&gt;The role? &lt;em&gt;Azure Architect Evangelist, Mid-Atlantic.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The company? &lt;em&gt;Microsoft&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;I'll be a member of the Developer and Platform Evangelism (DPE) team. My primary responsibility will be working with ISVs, helping them migrate their applications to Azure. As this position specifically covers the mid-Atlantic area, I won't have to relocate.&lt;br /&gt;&lt;br /&gt;And that brings me to today. I’m sitting on a plane, en route to Redmond. I officially become a Microsoftee tomorrow morning, only 3 days days before the Azure-heavy Professional Developers Conference, being held on the Microsoft campus. The PDC will be a great way to kick off my Microsoft career.&lt;br /&gt;&lt;br /&gt;With Microsoft as my new employer, I’ll have to step down as an active MVP, effective Monday morning. However, that little technicality has no bearing on my developer community participation. In fact, I have three talks scheduled in November: Two Azure talks Nov. 6 at CMAP Code Camp in Columbia, MD, and an Azure+MongoDB talk at the Mongo DC conference, Nov. 18.&lt;br /&gt;&lt;br /&gt;I’ll close this post out now, as I have lots to do (including another Azure post). I’m totally stoked about this career move!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-4212349268690320885?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/4212349268690320885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/10/my-new-azure-career.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4212349268690320885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4212349268690320885'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/10/my-new-azure-career.html' title='New employer, new Azure role'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8893540609062457210</id><published>2010-10-14T21:00:00.001-04:00</published><updated>2010-10-14T21:00:53.667-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Presentation Materials: Richmond Code Camp, Fall 2010</title><content type='html'>&lt;p&gt;For those who attended either my Azure Quick-Start or Azure Tips n Tricks, I posted the slide decks and a few demo projects that served as the basis for those talks.&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.office.live.com/embedicon.aspx/RichmondCC/Fall2010-Azure" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;The tips-n-tricks slide deck has more details than what we covered during the session, along with links to various reference articles, blog posts, and company websites.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8893540609062457210?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8893540609062457210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/10/presentation-materials-richmond-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8893540609062457210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8893540609062457210'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/10/presentation-materials-richmond-code.html' title='Presentation Materials: Richmond Code Camp, Fall 2010'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7938623304780616372</id><published>2010-10-03T14:15:00.001-04:00</published><updated>2010-10-03T14:15:23.025-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Richmond Code Camp Oct 9, 2010: 2 Azure Talks</title><content type='html'>&lt;p&gt;Code Camp season is underway, and for me, the season kicks off in Richmond, where I’ll be presenting two back-to-back Azure talks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Azure Quick-Start. &lt;/em&gt;In this intro-level session, I’ll show how to quickly get up and running with Azure, including a tour of the Azure portal, Visual Studio integration, and what it takes to build and launch your first app.&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Azure Tips, Tricks, and How-To’s. &lt;/em&gt;This session goes a bit deeper, and assumes you know the basics of Azure (if you attend my first session, you should be all set). I have a bunch of real-world items I’ll be running through, complete with code samples, that you can use in your own Azure projects.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are about 40 sessions overall this year at Richmond Code Camp. If you’re in the Richmond, VA area on the 9th, please come by, say hi, and enjoy the day!&lt;/p&gt;  &lt;p&gt;Learn more about Richmond Code Camp and sign up&amp;#160; &lt;a href="http://richmondcodecamp.org/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7938623304780616372?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7938623304780616372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/10/richmond-code-camp-oct-9-2010-2-azure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7938623304780616372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7938623304780616372'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/10/richmond-code-camp-oct-9-2010-2-azure.html' title='Richmond Code Camp Oct 9, 2010: 2 Azure Talks'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6372130263112855023</id><published>2010-10-02T13:24:00.001-04:00</published><updated>2010-10-02T13:30:40.302-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVP'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>I’ve been awarded Azure MVP!</title><content type='html'>&lt;p&gt;October 1, 2010: A day I’ll remember for a long time. I was on an early flight home from Seattle after 3 amazing days with the Azure team, participating in a Software Design Review (SDR). I was headed home to my family, and to support my wife during this difficult time (she lost her father a week ago).&lt;/p&gt;  &lt;p&gt;Being October 1, I knew that it was MVP award day. Naturally, my plan was to stare at my email client , hoping my magic powers would help deliver some good news to me.&lt;/p&gt;  &lt;p&gt;My flight took off at 7:15am. I distracted myself with Vittorio Bertocci’s new Windows Identity Foundation book until WiFi was available. The book caught the attention of the gentleman next to me, who develops against Amazon’s AWS, and we spent a bit of time discussing Azure and its benefits.&lt;/p&gt;  &lt;p&gt;Shortly after crossing into Montana (courtesy of FlightAware),&amp;#160; I received “The Email,” welcoming me to the inaugural group of Azure MVPs! I found it only fitting that we were passing through cloud cover at the time, and ironic that the first person I told was an AWS guy (and yes, I now have his business card and plan to visit his group in Atlanta).&lt;/p&gt;  &lt;p&gt;I’m truly honored to be the recipient of this award, and thankful for all the support I’ve received from the developer community. I first got involved in the community back in October 2008, when Microsoft’s &lt;a href="http://blogs.msdn.com/b/zxue/" target="_blank"&gt;Dr. Z&lt;/a&gt; invited me to speak at tech&lt;em&gt;days&lt;/em&gt; ‘08 in Washington, DC. Since then, I’ve had the opportunity to speak at many user groups, code camps, webcasts, podcasts such as &lt;a href="http://www.communitymegaphonepodcast.com/Show/10/CMAP-Code-Camp" target="_blank"&gt;Community Megaphone&lt;/a&gt;, and even an &lt;a href="http://azurebootcampvb.eventbrite.com/" target="_blank"&gt;Azure Bootcamp&lt;/a&gt;. I’ve met some great people at these events, and it has greatly enriched my life (I can only hope I’ve had some positive effect on theirs as well).&lt;/p&gt;  &lt;p&gt;My family has been very understanding and supportive of my speaking and blogging activities (although my wife no longer believes that I’ll be off the computer “in just a minute…”).&amp;#160; &lt;a href="www.rdacorp.com" target="_blank"&gt;RDA&lt;/a&gt;, my employer, supports my efforts as well, and co-sponsored the Azure Bootcamp. And, last but not least, I owe a debt of gratitude to Microsoft for presenting me with an MVP!&lt;/p&gt;  &lt;p&gt;Sheesh – I feel like one of those long-winded Academy Award winners who rambles too long and &lt;em&gt;get-off-the-stage&lt;/em&gt; music kicks in. Time to get back to techy goodness, especially Windows Azure Goodness! I have some cool things to blog about, including my adventures with MongoDB running in Azure.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6372130263112855023?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6372130263112855023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/10/ive-been-awarded-azure-mvp.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6372130263112855023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6372130263112855023'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/10/ive-been-awarded-azure-mvp.html' title='I’ve been awarded Azure MVP!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1403803324724391336</id><published>2010-09-20T10:41:00.001-04:00</published><updated>2010-09-20T10:41:31.630-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MongoDB'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>MongoDB on Azure: Boston, Sept. 20</title><content type='html'>&lt;p&gt;A few months ago, I had the pleasure of working with the folks at 10gen to explore the feasibility of running their MongoDB document-centric database on the Azure platform.&lt;/p&gt;  &lt;p&gt;I had planned on presenting this in Boston today at the &lt;a href="http://www.10gen.com/conferences/mongoboston2010" target="_blank"&gt;MongoDB Conference&lt;/a&gt;. In my place, Microsoft's Mark Eisenberg will be presenting MongoDB on Azure.&lt;/p&gt;  &lt;p&gt;I will be posting a short series on this as well, including:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The challenges (and solutions) of hosting MongoDB in Azure, including scalability, management, and client-side accessibility&lt;/li&gt;    &lt;li&gt;How to run a standalone MongoDB database instance in an Azure worker role.&lt;/li&gt;    &lt;li&gt;How to configure and run a MongoDB replica set spanning several worker roles&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For more information about 10gen, visit their &lt;a href="http://www.10gen.com" target="_blank"&gt;company website&lt;/a&gt;, or the &lt;a href="http://www.mongodb.org" target="_blank"&gt;MongoDB&lt;/a&gt; website.&lt;/p&gt;  &lt;p&gt;Follow Mark Eisenberg on &lt;a href="http://twitter.com/AzureBizAndTech" target="_blank"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1403803324724391336?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1403803324724391336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/09/mongodb-on-azure-boston-sept-20.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1403803324724391336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1403803324724391336'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/09/mongodb-on-azure-boston-sept-20.html' title='MongoDB on Azure: Boston, Sept. 20'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5949448049850812087</id><published>2010-09-19T06:53:00.001-04:00</published><updated>2010-09-19T17:44:36.219-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Mid-Atlantic Developer Community Leadership Summit–Sept. 18</title><content type='html'>&lt;p&gt;Yesterday I had the honor of attending an all-day Developer Community leadership summit, where user group leaders, code camp organizers, and speakers gathered to discuss how to manage the Mid-Atlantic developer community events in the coming year.&lt;/p&gt;  &lt;p&gt;Andrew Duthie, our local Developer Evangelist, was our fearless leader and provided a great environment for us, complete with food, drink, and Youtube-worthy dance moves (if someone has video, please send me the link!). I’d be remiss without a tip o’ the hat to Andrew’s wife and kids who helped out considerably.&lt;/p&gt;  &lt;p&gt;We had representation from INETA as well: Rob Zelt (INETA President), Frank La Vigne (membership mentor, DC, DE, MD, NJ and NY), and Kevin Griffin (membership mentor, VA).&lt;/p&gt;  &lt;p&gt;On to the event and its purpose. We spent the morning introducing ourselves, many of which have only known each other through online conversations (Twitter is great for this – maybe we should call ourselves the &lt;em&gt;Under-140&lt;/em&gt; crowd?). We also talked about what we hope to discuss and achieve during the summit. Personally, I hoped to discuss ways of encouraging more community participation. As a group, we settled in on a few key topics. I’ll mention four in particular: Community Growth Management, Finding New Speakers, Planning in the Large, and The Big Event. &lt;/p&gt;  &lt;h4&gt;Community Growth Management&lt;/h4&gt;  &lt;p&gt;We have an interesting problem in the Mid-Atlantic: An ever-growing developer community, with an equally-growing number of community events. Covering Pennsylvania, West Virginia, Maryland, DC, and Virginia, we have user groups and special interest groups covering basic programming, databases, content management systems, cloud computing, C64, and just about anything else to do with software development. These groups meet in the evenings, and we’re starting to see some overlap.&lt;/p&gt;  &lt;p&gt;If that wasn’t enough, we have the larger day-long events: SharePoint Saturdays, SQL Saturdays, and Code Camps. With maybe a dozen such events typically taking place in the spring and fall, it’s becoming a challenge to find speakers. Then there’s the issue of attendance: how to choose between all of these great events???&lt;/p&gt;  &lt;p&gt;One thing was clear: we needed to up our game when it came to scheduling. We talked about using resources like Community Megaphone to publish upcoming events, along with incorporating its event widget in our community websites and blogs. We also talked about taking advantage of mailing lists, with newsletters published to the lists with upcoming events.&lt;/p&gt;  &lt;p&gt;User group scheduling is certainly important. Some areas might have only one or two main user groups, but other areas, such as the DC area, there are a very large number of groups (CMAP and related SIGs, BaltoMSDN, FredNUG, RockNUG, DCDNUG, Capital Area Cloud Computing User Group, CapArea.NET and related SIGs, and more). That’s quite a few user groups in one concentrated area for attendees to choose from.&lt;/p&gt;  &lt;p&gt;Large event event scheduling seemed to be a bigger challenge though. This fall, a few of the code camps such as Philly and Richmond overlapped, which makes it improbable for speakers to present at both events (though it &lt;em&gt;might &lt;/em&gt;be possible to attend a kickoff keynote and&amp;#160; morning presentation in Philly, sprint to Richmond, and arrive in time for some awesome SWAG…).&lt;/p&gt;  &lt;p&gt;Moving forward, I think the group will push forward with Community Megaphone, the Mid Atlantic Devs mailing list, and the new list server being set up by Steve Presley.&lt;/p&gt;  &lt;h4&gt;Finding New Speakers&lt;/h4&gt;  &lt;p&gt;How do you encourage people to speak at events? Many people attend local user groups on a regular basis, and it would be so beneficial to these individuals and to the community if they would give a talk at an upcoming event. We talked about some of the benefits that may or may not be obvious: Personal growth and learning; exposure (who knows might be in the audience, waiting to snatch you away from your over-cautious CTO’s company?); and networking were key benefits we could point out when talking to user community participants.&lt;/p&gt;  &lt;p&gt;A few of the user groups, such as RockNUG, have occasional lightning-round style meetings, where several small (5-10 minute) presentations are given. These are much easier to prepare for, and offer a great way for someone to get introduced to speaking. It’s perfectly acceptable for these topics to be beginner-level, and the presenter doesn’t need to be an expert in their presentation topic – it’s all about sharing information with other people in the community.&lt;/p&gt;  &lt;h4&gt;Planning in the Large&lt;/h4&gt;  &lt;p&gt;Dux Raymond, who runs some crazy-big SharePoint Saturday events, gave his insight on running such large events, covering planning, costs, sponsors, venues, advertising and more.&amp;#160; There’s quite a bit that goes into pulling off such an event, and it was great hearing this information first-hand.&lt;/p&gt;  &lt;p&gt;This talk helped inspire us when discussing The Big Event…&lt;/p&gt;  &lt;h4&gt;The Big Event&lt;/h4&gt;  &lt;p&gt;We have some seriously forward-thinking people in this community (I guess I should mention pride too?). With events such as Codestock and Devlink, it was only a matter of time that someone said – Hey, what about a Mega Dev Event in the Mid Atlantic??? There was no shortage of enthusiasm and discussion around this, from the likes of &lt;em&gt;The Kevins &lt;/em&gt;(Hazzard and Griffin), Rich Dudley, Brian Lanham, Joel Cochran, Pete Brown, Dane Morgridge, Frank La Vigne, Pete Brown, and, oh, a dozen or two others whose names I only wish I wrote down!&lt;/p&gt;  &lt;p&gt;Based on the short but energetic talk about The Big Event, I can definitely see this happening, with a core group of volunteers stepping up to coordinate things. Someone suggested an Olympics-style plan over several years, where the venue would move to a different area annually. There was some jockeying for being the host city. I wonder if we’ll have a bidding war? Rock-Paper-Scissors battle?&lt;/p&gt;  &lt;h4&gt;Final Thoughts&lt;/h4&gt;  &lt;p&gt;From a personal perspective, I got quite a bit out of this event, especially around the topic of community involvement. I’m looking forward to some upcoming conversations with a few people I know… &lt;/p&gt;  &lt;p&gt;As a community speaker, I have a renewed appreciation for what it takes to organize and run user groups,code camps, and large events. There are some seriously talented and dedicated people who make this happen. Some of these behind-the-scenes details tend to get lost in the noise, especially when you arrive at an event and everything is working smoothly, as planned.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5949448049850812087?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5949448049850812087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/09/mid-atlantic-developer-community.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5949448049850812087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5949448049850812087'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/09/mid-atlantic-developer-community.html' title='Mid-Atlantic Developer Community Leadership Summit–Sept. 18'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-4317872692398242094</id><published>2010-09-15T21:21:00.000-04:00</published><updated>2010-09-15T21:21:08.391-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Presenting an intro to Azure, September 16</title><content type='html'>I'll be heading down to Alexandria, VA Thursday, September 16 to talk about the Azure cloud computing platform. This talk will be at the Capital Area Cloud Computing User Group.&lt;br /&gt;&lt;br /&gt;I'll be talking about the core features of Azure, such as Compute, Storage, and SQL Azure. Of course, no talk would be complete without demos - including the coolest little database management tool for SQL Azure, Code-Name Houston.&lt;br /&gt;&lt;br /&gt;For more details and directions, head on over &lt;a href="http://cloud.championwriters.com/meetings.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-4317872692398242094?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/4317872692398242094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/09/presenting-intro-to-azure-september-16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4317872692398242094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4317872692398242094'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/09/presenting-intro-to-azure-september-16.html' title='Presenting an intro to Azure, September 16'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2728394098039144691</id><published>2010-08-30T19:43:00.001-04:00</published><updated>2010-08-30T19:43:08.302-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Presenting A Night Of Azure! RockNUG Sept. 8</title><content type='html'>&lt;p&gt;On Wednesday, September 8, I’ll be taking over both the n00b presentation and the Featured presentation at the &lt;a href="www.rocknug.org" target="_blank"&gt;Rockville .NET User Group&lt;/a&gt; in Rockville, MD. I’ll be filling your heads with lots and lots of Azure, Microsoft’s most-excellent cloud computing platform!&lt;/p&gt;  &lt;p&gt;If you’re new to Azure, the n00b session is the place to be! We’ll have our very first Azure application up and running in a few minutes, and we’ll learn about the basic moving parts. &lt;/p&gt;  &lt;p&gt;For the Feature Presentation, we’ll build on our basic application, mixing in features from the three different Azure “portals”:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Azure – this deals with the virtual machines and highly-scalable storage&lt;/li&gt;    &lt;li&gt;SQL Azure – this is SQL Server, cloud-style!&lt;/li&gt;    &lt;li&gt;AppFabric – this provides connectivity and access control&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;For those who would like to follow along: &lt;/strong&gt;We’ll be taking things pretty slow in the n00b session. If you’d like to try building your first Azure app along with me, you’ll need to a few things first – see details &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&amp;amp;displaylang=en#Requirements" target="_blank"&gt;here&lt;/a&gt;. A quick summary to get up and running:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Vista, 2008, or Windows 7 (sorry, XP folks…)&lt;/li&gt;    &lt;li&gt;Visual Studio 2010 Web Developer Express or any version from your MSDN subscription (Professional, Ultimate, etc.)&lt;/li&gt;    &lt;li&gt;SQL Server 2005 Express or above&lt;/li&gt;    &lt;li&gt;Azure SDK 1.2 + Visual Studio Tools&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2728394098039144691?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2728394098039144691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/08/presenting-night-of-azure-rocknug-sept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2728394098039144691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2728394098039144691'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/08/presenting-night-of-azure-rocknug-sept.html' title='Presenting A Night Of Azure! RockNUG Sept. 8'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6503693076860234508</id><published>2010-08-20T23:13:00.005-04:00</published><updated>2010-08-22T08:22:15.786-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tip'/><title type='text'>Azure Tip of the Day: Determine if running in Dev Fabric or Azure Fabric</title><content type='html'>One potential goal, when writing a new Azure application, is to support running in both Azure-hosted and non-Azure environments. The SDK gives us an easy way to check this:&lt;br /&gt;&lt;pre style="line-height: normal;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;RoleEnvironment&lt;/span&gt;&lt;span style="color: black;"&gt;.IsAvailable)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Consolas;"&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="font-family: Consolas;"&gt;&lt;span style="color: black;"&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; &lt;/span&gt;&lt;span style="color: green;"&gt;// Azure-specific actions&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Consolas;"&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;/pre&gt;&lt;br /&gt;With this check, you could, say, build a class library that has specific behaviors depending on the environment in which it’s running.&lt;br /&gt;&lt;br /&gt;Now, let’s assume the Azure environment &lt;em&gt;is &lt;/em&gt;available, and you need to take a specific action depending on whether you’re running in the Dev Fabric vs. the Azure Fabric. Unfortunately, there’s no specific method or property in RoleEnvironment that helps us out.&lt;br /&gt;&lt;br /&gt;This brings me to today’s tip: &lt;strong&gt;&lt;em&gt;Determining whether an app is running in Dev Fabric or Azure Fabric.&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The Deployment ID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While there’s no direct call such as &lt;span style="color: #2b91af; font-family: Consolas;"&gt;RoleEnvironment&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Consolas;"&gt;.InDevFabric&lt;/span&gt;, there’s a neat trick I use, making it trivial to figure out.&lt;b&gt;&lt;i&gt; A disclaimer first: &lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;This trick is dependent on the specific way the Dev Fabric and Azure Fabric generate their Deployment IDs. This could possibly change with a future SDK update.&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Whenever you deploy an Azure application, the deployment gets a unique Deployment ID. This value is available in:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: #2b91af;"&gt;RoleEnvironment&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: black;"&gt;.DeploymentId.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;As it turns out, the deployment ID has two different formats, depending on runtime environment:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;ul&gt;&lt;li&gt;Dev Fabric: The deployment ID takes the form of&amp;nbsp; &lt;strong&gt;&lt;span style="font-family: Consolas;"&gt;deployment(n)&lt;/span&gt;, &lt;/strong&gt;where &lt;em&gt;n&lt;/em&gt; is sequentially incremented with each Dev Fabric deployment. &lt;/li&gt;&lt;li&gt;Azure Fabric: The deployment ID is a Guid. &lt;/li&gt;&lt;/ul&gt;With this little detail, you can now write a very simple method to determine whether you’re in Dev Fabric or Azure Fabric:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; white-space: pre;"&gt;&lt;span style="color: black;"&gt; IsRunningInDevFabric()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="line-height: normal;"&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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;span style="color: green;"&gt;// easiest check: try translate deployment ID into guid&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;&lt;span style="color: black;"&gt; guidId;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;&lt;span style="color: black;"&gt;.TryParse(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;RoleEnvironment&lt;/span&gt;&lt;span style="color: black;"&gt;.DeploymentId, &lt;/span&gt;&lt;span style="color: blue;"&gt;out&lt;/span&gt;&lt;span style="color: black;"&gt; guidId))&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;false&lt;/span&gt;&lt;span style="color: black;"&gt;;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// valid guid? We're in Azure Fabric&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&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;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="color: black;"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// can't parse into guid? We're in Dev Fabric&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Consolas;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&amp;nbsp;Taking this one step further, I wrote a small asp.net demo app that prints out the deployment ID, along with the current instance ID. For example, here’s the output when running locally in my Dev Fabric:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="line-height: normal;"&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TG9EUpfNQ1I/AAAAAAAAAl4/TM6wYbVGhmE/s1600-h/BrowserCap-DevFabric%5B3%5D.png"&gt;&lt;img alt="BrowserCap-DevFabric" border="0" height="259" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TG9EXWb9fKI/AAAAAAAAAl8/_krlm_y_VfE/BrowserCap-DevFabric_thumb%5B1%5D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="BrowserCap-DevFabric" width="637" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&amp;nbsp;Here’s the same app, published to, and running in, the Azure Fabric:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TG9EaIlVFJI/AAAAAAAAAmA/8bHRgZ4oWAg/s1600-h/BrowserCap-AzureFabric%5B3%5D.png"&gt;&lt;img alt="BrowserCap-AzureFabric" border="0" height="282" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TG9EcnHeC7I/AAAAAAAAAmE/RFgcjuRQD4g/BrowserCap-AzureFabric_thumb%5B1%5D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="BrowserCap-AzureFabric" width="829" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Try it yourself&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I uploaded my demo code so you can try it out yourself. You’ll need to change the diagnostic storage account information in the asp.net role configuration, prior to deploying it to Azure.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-9153bb9d3667f0eb.office.live.com/embedicon.aspx/AzureTips/DevFabricOrAzureFabric.zip" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6503693076860234508?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6503693076860234508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/08/azure-tip-of-day-determine-if-running.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6503693076860234508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6503693076860234508'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/08/azure-tip-of-day-determine-if-running.html' title='Azure Tip of the Day: Determine if running in Dev Fabric or Azure Fabric'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/TG9EXWb9fKI/AAAAAAAAAl8/_krlm_y_VfE/s72-c/BrowserCap-DevFabric_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8241817970547176456</id><published>2010-08-15T11:10:00.001-04:00</published><updated>2010-08-16T13:51:46.833-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tip'/><title type='text'>Azure Tip of the Day: Separate Diagnostic Storage Account</title><content type='html'>&lt;p&gt;Recently I was helping someone debug a bizarre Azure Table storage issue. For some reason, the role’s state went into a busy/running loop as soon as the OnStart() event handler attempted to set up some Azure tables. To make matters worse, once the startup code attempted to connect to the storage account and create a table, we no longer received Trace log output. This doesn’t help much when the only log message is “In OnStart()…”.&lt;/p&gt;  &lt;p&gt;To get our diagnostics back, we created a separate storage account exclusively for diagnostics. Once we did this, we had an uninterrupted flow of trace statements, even though the table-access code was still having issues with the table storage account.&lt;/p&gt;  &lt;p&gt;This leads me to my tip of the day: &lt;em&gt;&lt;strong&gt;Set up a separate storage account for diagnostics&lt;/strong&gt;. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Aside from isolating storage connectivity issues, there are other benefits to having a separate storage account for diagnostics:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can have a separate access key for diagnostics, granting this to a broader audience. For instance, you could give out the access key for people to use inside a diagnostics tool such as Cerabrata’s Diagnostics Manager, without having to give out the access key to your production data storage account. &lt;/li&gt;    &lt;li&gt;Storage accounts have a transactional limit of approx. 500 transactions / second. Beyond that, and the Azure fabric throttles your access. If your app is writing even a single trace statement to diagnostic tables for every real data transaction, you’re doubling your transaction rate and you could experience throttling much sooner than expected. &lt;/li&gt;    &lt;li&gt;An additional storage account does not necessarily equate to additional cost. You’re simply billed for the storage you consume. If the total amount of storage across two accounts remains the same as with a single account, your cost will remain the same. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Setting things up&lt;/h4&gt;  &lt;p&gt;First head to the Azure portal, and set up two accounts. I advise putting them in the same affinity group, alongside your Azure services.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TGgDXSpvzCI/AAAAAAAAAlY/OHbfP1Z59P0/s1600-h/twostorageaccts%5B13%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="twostorageaccts" border="0" alt="twostorageaccts" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TGgDYS_0RWI/AAAAAAAAAlc/rY8vS91IlgI/twostorageaccts_thumb%5B11%5D.png?imgmax=800" width="427" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Each account will have its own access keys. Simply configure both in your role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TGgDZC-zFgI/AAAAAAAAAlg/gupOgsmrWys/s1600-h/connectionstrings%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="connectionstrings" border="0" alt="connectionstrings" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TGgDaPdwl8I/AAAAAAAAAlk/outKWCe1oLQ/connectionstrings_thumb%5B1%5D.png?imgmax=800" width="1011" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Now, all that’s left is specifying the diagnostic storage account for the DiagnosticMonitor, and the data storage account for “real” data access.&amp;#160; For instance, this example enables the DiagnosticsMonitor using &lt;strong&gt;MyAppDiagnosticStorage&lt;/strong&gt;, while the table service uses &lt;strong&gt;MyAppDataStorage&lt;/strong&gt;:&lt;/p&gt;    &lt;pre style="font-family: consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;bool&lt;/span&gt; OnStart()&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&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; &lt;span style="color: #2b91af"&gt;DiagnosticMonitor&lt;/span&gt;.Start(&lt;span style="color: #a31515"&gt;&amp;quot;MyAppDiagnosticStorage&amp;quot;&lt;/span&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; &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceInformation(&lt;span style="color: #a31515"&gt;&amp;quot;Writing to diagnostic storage&amp;quot;&lt;/span&gt;);&lt;br /&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; &lt;span style="color: blue"&gt;var&lt;/span&gt; dataStorageAccount = &lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&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;#160;&amp;#160;&amp;#160;&amp;#160; .FromConfigurationSetting(&lt;span style="color: #a31515"&gt;&amp;quot;MyAppDataStorage&amp;quot;&lt;/span&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; &lt;span style="color: blue"&gt;var&lt;/span&gt; tableClient = dataStorageAccount.CreateCloudTableClient();&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; tableClient.CreateTableIfNotExist(&lt;span style="color: #a31515"&gt;&amp;quot;MyTable&amp;quot;&lt;/span&gt;);&lt;br /&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; &lt;span style="color: #2b91af"&gt;RoleEnvironment&lt;/span&gt;.Changing += RoleEnvironmentChanging;&lt;br /&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; &lt;span style="color: blue"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;base&lt;/span&gt;.OnStart();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;That’s it! &lt;br /&gt;&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8241817970547176456?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8241817970547176456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/08/azure-tip-of-day-separate-diagnostic.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8241817970547176456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8241817970547176456'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/08/azure-tip-of-day-separate-diagnostic.html' title='Azure Tip of the Day: Separate Diagnostic Storage Account'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/TGgDYS_0RWI/AAAAAAAAAlc/rY8vS91IlgI/s72-c/twostorageaccts_thumb%5B11%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5409959542396306862</id><published>2010-07-20T19:31:00.001-04:00</published><updated>2010-07-20T19:31:02.723-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Come learn Azure in DC, July 28!</title><content type='html'>&lt;p&gt;I’ll be heading out to the Washington DC DotNet User Group July 28 to present an introduction to Azure. I’ll give a quick overview of the platform, then dive into code samples showing how to build and deploy an Azure application to the cloud. I’ll also show SQL Azure, the cloud-equivalent of SQL Server.&lt;/p&gt;  &lt;p&gt;The meeting starts at 6:30. If you plan on attending, please register &lt;a title="Registration page" href="http://dcdnug.eventbrite.com/" target="_blank"&gt;here&lt;/a&gt; so the group can plan accordingly.&lt;/p&gt;  &lt;p&gt;For more information about DCDotNetUG, including directions, please visit their homepage at &lt;a href="http://www.dcdnug.org" target="_blank"&gt;www.dcdnug.org&lt;/a&gt;. Directions are on their &lt;a href="http://dcdnug.org/dnn/ContactUs.aspx" target="_blank"&gt;Contact Us&lt;/a&gt; page.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5409959542396306862?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5409959542396306862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/07/come-learn-azure-in-dc-july-28.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5409959542396306862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5409959542396306862'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/07/come-learn-azure-in-dc-july-28.html' title='Come learn Azure in DC, July 28!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8609429593374246363</id><published>2010-07-02T13:18:00.001-04:00</published><updated>2010-07-02T13:46:35.587-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>Words speak louder than reactions</title><content type='html'>&lt;p&gt;I’ve heard the old expression so many times:&lt;strong&gt; &lt;em&gt;Actions speak louder than words.&lt;/em&gt;&lt;/strong&gt; That’s true, especially when the words sound like “I’m going to make the world a better place!” Or maybe , “Wait until you see this new program I’m going to build for you!” Truly, actions speak much, much louder than these words, especially if there’s no follow-through and the words simply turn into empty promises.&lt;/p&gt;  &lt;p&gt;But… let’s look at another type of action: the &lt;em&gt;knee-jerk reaction.&lt;/em&gt; How often have we taken a vengeful, spiteful, or anger-induced action before having a discussion about it? How often are those reactions a result of our emotions running amok before we have an opportunity to think about the ramifications of our reactions? If I do a bit of reflection, I can easily identify more than one occasion where I would have likely been better off talking something through than taking the action (the &lt;em&gt;reaction&lt;/em&gt;) that I ultimately took.&lt;/p&gt;  &lt;h4&gt;Today’s Knee-Jerk&lt;/h4&gt;  &lt;p&gt;I have a lake house that I rent out, in Lake Anna, Virginia. We take pride in our property, and most of our guests return each year, knowing we strive to provide the best vacation environment possible. Today, our cleaning company emailed me, letting me know that I’ve been fired as a customer, simply because I emailed a punchlist of not-so-favorable feedback from last week’s renters, and suggested that her cleaning crew absorb the cost of the cleaning.&lt;/p&gt;  &lt;p&gt;I certainly expected an email exchange, or possibly a phone call, with a settlement negotiation, perhaps. Maybe we split the cost? Maybe we educate this new crew on how to live up to expectations in the future? Instead, I received a terse email, stating that this situation is beyond acceptable, and that the cleaning company shouldn’t be financially responsible for such actions. So… &lt;em&gt;we quit.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;Do-the-right-thing attempt&lt;/h4&gt;  &lt;p&gt;Let’s face it: the damage was done, and it was unlikely that I’d be able to preserve a working relationship with this financially-struggling cleaning company. However, I took the high road and placed a well-crafted phone call to the business owner. I expressed the idea of open communication, and how, as a &lt;em&gt;service provider&lt;/em&gt;, they had every right to call and discuss the cleaning terms with me, and even negotiate a compromise.&lt;/p&gt;  &lt;p&gt;Alas, I was correct in my assumption: There was no way they were ever going to provide cleaning services to me again. They are running on extremely thin margins, they said. And since they already paid the errant cleaning crew, the company itself took the hit (less than $125), which now put them at financial risk. The bitterness and anger flowed through the phone line (it was on Skype, but you get the picture), and there was to be no compromise, no resolution, no happy-path.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Knee-Jerks in the software development world&lt;/h4&gt;  &lt;p&gt;Most of my readers are in the software development field, and probably don’t care too much about my cleaning crew woes. &lt;strong&gt;&lt;em&gt;However&lt;/em&gt;&lt;/strong&gt;: There’s a lesson in here for all of us: Communication is King, and should trump knee-jerk and emotional decisions! &lt;/p&gt;  &lt;p&gt;Knee-jerk reactions are &lt;em&gt;easy&lt;/em&gt;: Just sit back in your chair, fume for a while, and then act out your emotions with glee. It’s &lt;em&gt;much harder, in a fit of emotion, to engage rational thought and communicate directly with the person or entity causing you stress and grief.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Think about the net result you’re looking for: Do you &lt;em&gt;really &lt;/em&gt;want to pick a fight? Do you &lt;em&gt;really &lt;/em&gt;want to sever ties and damage a potentially-lucrative future business relationship? Being in the software field, I am amazed at &lt;em&gt;just how many people I keep running into over the years, from previous employment.&lt;/em&gt; As large as the industry is, sometimes that circle seems pretty small. I certainly want to keep these relationships alive and healthy!&lt;/p&gt;  &lt;h4&gt;Words over reaction&lt;/h4&gt;  &lt;p&gt;Will communication always lead to a satisfactory settlement? No way! However, I’m pretty sure that knee-jerk reactions will almost always lead to someone getting angry, hurt, disparaged, frustrated, and unwilling to work in a professional manner in the future.&lt;/p&gt;  &lt;p&gt;Is a polite, professional phone call or email easy? Not always, and certainly not as easy as a knee-jerk email filled with venom and animosity! This is no reason to avoid doing the right thing, and exercising diplomacy wherever possible.&lt;/p&gt;  &lt;p&gt;Today, I lost my cleaning crew. And this loss will have untold impact on their bottom line, as they can no longer showcase my business on their website or even use me as a reference for future work. &lt;em&gt;Was &lt;strong&gt;the reaction really worth it?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;As you run into your next on-the-job challenge, whether it’s with a teammate, your boss, your employee, or &lt;strong&gt;&lt;em&gt;your customer&lt;/em&gt;&lt;/strong&gt;: I urge you to consider words over reaction. &lt;/p&gt;  &lt;h4&gt;Related links&lt;/h4&gt;  &lt;p&gt;Our lake house website is &lt;a href="http://www.LakeAnnaDream.com" target="_blank"&gt;www.LakeAnnaDream.com&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8609429593374246363?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8609429593374246363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/07/words-speak-louder-than-reactions.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8609429593374246363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8609429593374246363'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/07/words-speak-louder-than-reactions.html' title='Words speak louder than reactions'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-795929820551486354</id><published>2010-06-29T18:33:00.001-04:00</published><updated>2010-07-05T14:24:43.797-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='AppFabric'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>Azure Bootcamp Prerequisites</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Updated 7/5/2010 with download link to SQL Server 2008 R2 Management Studio Express.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For those attending the Virginia Beach Azure Bootcamp, July 7 is only a week away! Kevin Griffin and I are going to hit the ground running, so you’ll want to spend some time getting all needed software installed. Here’s the list of what you’ll need, along with download links for each product.&lt;/p&gt;  &lt;p&gt;For more information about the bootcamp, please leave a comment.&lt;/p&gt;  &lt;p&gt;Kevin and I are both available via twitter. Kevin is &lt;a href="http://twitter.com/1kevgriff" target="_blank"&gt;@1kevgriff&lt;/a&gt;. I’m &lt;a href="http://twitter.com/dmakogon" target="_blank"&gt;@dmakogon&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Visual Studio&lt;/h4&gt;  &lt;p&gt;First, there’s the development environment. You’ll need one of the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Visual Web Developer 2010 Express&lt;/strong&gt;. This is a free edition that will let you build all of the samples we’ll be working with. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Visual Studio 2010&lt;/strong&gt;. If you have an MSDN subscription, you can download and install any version of VS2010 from MSDN. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Download Visual Web Developer 2010 Express &lt;a href="http://www.microsoft.com/express/downloads/#2010-Visual-Web-Developer" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Download Visual Studio 2010 from &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Azure SDK + Tools&lt;/h4&gt;  &lt;p&gt;You’ll need the latest SDK + Tools, version 1.2, released in June 2010. This includes Visual Studio extensions for the various cloud projects.&lt;/p&gt;  &lt;p&gt;Download the Azure SDK, version 1.2&amp;#160; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;AppFabric SDK&lt;/h4&gt;  &lt;p&gt;The AppFabric SDK version 1.0 was released April, 2010. The AppFabric SDK lets you build applications that take advantage of the Service Bus and Access Control services of Azure AppFabric. &lt;/p&gt;  &lt;p&gt;Download the AppFabric SDK, version 1.0&amp;#160; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=39856a03-1490-4283-908f-c8bf0bfad8a5&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Table / Blob Storage Viewer&lt;/h4&gt;  &lt;p&gt;Visual Studio 2010, in conjunction with the Azure Tools v1.2, provides a built-in table storage viewer. However, this is a read-only set of tools. To modify storage data, you’ll need a more advanced tool such as the freely-available Azure Storage Explorer or the commercial Cerebrata Cloud Storage Studio.&lt;/p&gt;  &lt;p&gt;Download the Azure Storage Explorer &lt;a href="http://azurestorageexplorer.codeplex.com/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Download the Cerebrata Cloud Storage Studio trial &lt;a href="https://www.cerebrata.com/Products/CloudStorageStudio/Download.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Azure Training Kit&lt;/h4&gt;  &lt;p&gt;You’ll need the Azure Platform Training Kit, June 2010 update. &lt;/p&gt;  &lt;p&gt;Download the training kit, June 2010&amp;#160; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=413e88f8-5966-4a83-b309-53b7b77edf78&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Folding @Home&lt;/h4&gt;  &lt;p&gt;Folding @Home is a distributed computing project. You’ll need both the Visual Studio project and the Folding@home client application.&lt;/p&gt;  &lt;p&gt;Download the Visual Studio 2010 project &lt;a href="http://distributed.blob.core.windows.net/media/Azure2010.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Download the Folding@home console application &lt;a href="http://www.stanford.edu/group/pandegroup/folding/release/Folding@home-Win32-x86-623.zip" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;h4&gt;SQL Server Management Studio 2008 R2&lt;/h4&gt;  &lt;p&gt;SSMS is the de facto SQL-editing tool. With SQL Azure, you’ll need the new Management Studio Express for SQL 2008 R2, as SSMS Express 2008 R2 supports SQL Azure script generation.&lt;/p&gt;  &lt;p&gt;Download SSMS 2008 R2 &lt;a title="SQL Server 2008 R2 Management Studio Express" href="http://www.microsoft.com/downloads/details.aspx?familyid=56AD557C-03E6-4369-9C1D-E81B33D8026B&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-795929820551486354?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/795929820551486354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-bootcamp-prerequisites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/795929820551486354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/795929820551486354'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-bootcamp-prerequisites.html' title='Azure Bootcamp Prerequisites'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5078450895265120447</id><published>2010-06-25T22:16:00.001-04:00</published><updated>2010-06-25T22:56:09.966-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>SQL Azure 50GB is Live!</title><content type='html'>&lt;p&gt;During Tech Ed this year, we learned about the new 50GB database limit for SQL Azure, up from 10GB. The go-live date was set for June 28th. Surprise – it’s live today! &lt;/p&gt;  &lt;h4&gt;How do I choose this new database size?&lt;/h4&gt;  &lt;p&gt;When creating your new database, select &lt;em&gt;&lt;strong&gt;Business&lt;/strong&gt;&lt;/em&gt; edition&lt;em&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/em&gt; and look at the &lt;em&gt;size&lt;/em&gt; dropdown:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TCVi8oZjAzI/AAAAAAAAAk4/8O5WAhaN4LQ/s1600-h/50GBdropdown%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="50GBdropdown" border="0" alt="50GBdropdown" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TCVi9GYii0I/AAAAAAAAAk8/cpW7tWF4ce4/50GBdropdown_thumb%5B1%5D.png?imgmax=800" width="644" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Notice that there are now five sizes to choose from. This sets the size limit, which also directly impacts monthly cost, as each 10GB increment runs $99.99 per month:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="265"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="150"&gt;         &lt;p align="right"&gt;Size: Business Edition&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="113"&gt;         &lt;p align="right"&gt;Monthly Rate&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="149"&gt;         &lt;p align="right"&gt;10GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="114"&gt;         &lt;p align="right"&gt;$99.99&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="149"&gt;         &lt;p align="right"&gt;20GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="114"&gt;         &lt;p align="right"&gt;$199.98&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="149"&gt;         &lt;p align="right"&gt;30GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="114"&gt;         &lt;p align="right"&gt;$299.97&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="149"&gt;         &lt;p align="right"&gt;40GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="114"&gt;         &lt;p align="right"&gt;$399.96&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="149"&gt;         &lt;p align="right"&gt;50GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="115"&gt;         &lt;p align="right"&gt;$499.95&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;But wait… there’s &lt;em&gt;more!&lt;/em&gt; Now take a look at the &lt;strong&gt;&lt;em&gt;Web &lt;/em&gt;&lt;/strong&gt;edition sizes:    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TCVi9WIYzjI/AAAAAAAAAlA/gDOeuSMo1z8/s1600-h/5GBdropdown%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="5GBdropdown" border="0" alt="5GBdropdown" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TCVi98ywDqI/AAAAAAAAAlE/aP95k18YHB0/5GBdropdown_thumb%5B1%5D.png?imgmax=800" width="644" height="258" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Web Edition pricing only has two tiers:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="260"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="141"&gt;         &lt;p align="right"&gt;Size: Web Edition&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="117"&gt;         &lt;p align="right"&gt;Monthly Rate&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;         &lt;p align="right"&gt;1GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="118"&gt;         &lt;p align="right"&gt;$9.99&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;         &lt;p align="right"&gt;5GB&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="119"&gt;         &lt;p align="right"&gt;$49.95&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h4&gt;Size and Price&lt;/h4&gt;  &lt;p&gt;The really nice thing about all these additional sizes: this sets your spending cap as well as size cap. For example: if you set your Business Edition database to 10GB, your monthly charge will never exceed $99.99 per month.&lt;/p&gt;  &lt;p&gt;Let’s make things more interesting. Let’s say you set up a 20GB Business Edition database. You are &lt;em&gt;not &lt;/em&gt;simply charged $199.98 per month. Rather, your monthly cost is amortized daily, with the daily rate based on the maximum size the database reaches on a given day.&lt;/p&gt;  &lt;p&gt;For this 5GB database, let’s say you stay under 1GB for the first 5 days. Those days will accrue at the 1GB rate. Then one day you go over 1GB. At that point, you start accruing at the 5GB rate. If your database ever drops back under 1GB, your daily accrual rate drops back to the 1GB rate.&lt;/p&gt;  &lt;p&gt;The same rate pattern applies to the Business edition, where the billing tiers are 10, 20, 30, 40, and 50GB.&lt;/p&gt;  &lt;h4&gt;Changing Sizes&lt;/h4&gt;  &lt;p&gt;Ok, so you set up your new database. Let’s say it’s Web Edition, 1GB. And you now realize you need the ability to grow your database to 5GB. No problem: just connect to the Master database and issue an &lt;strong&gt;ALTER DATABASE&lt;/strong&gt; command:&lt;/p&gt;  &lt;p&gt;&lt;font face="Lucida Console"&gt;ALTER DATABASE MyDatabase MODIFY (EDITION='WEB', MAXSIZE=5GB)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Until your actual database size exceeds 1GB, this change will not cause you to incur additional costs; you’ll still be billed at the 1GB rate.&lt;/p&gt;  &lt;h4&gt;More information&lt;/h4&gt;  &lt;p&gt;The SQL Azure blog has details about the new sizes, as well as all T-SQL for creating and altering databases, &lt;a href="http://blogs.msdn.com/b/sqlazure/archive/2010/06/16/10026036.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Today’s launch announcement is &lt;a href="http://blogs.msdn.com/b/sqlazure/archive/2010/06/25/10030461.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5078450895265120447?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5078450895265120447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/sql-azure-50gb-is-live.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5078450895265120447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5078450895265120447'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/sql-azure-50gb-is-live.html' title='SQL Azure 50GB is Live!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_rKuJyBZ8UWY/TCVi9GYii0I/AAAAAAAAAk8/cpW7tWF4ce4/s72-c/50GBdropdown_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8717168455038119012</id><published>2010-06-23T09:34:00.001-04:00</published><updated>2010-06-23T10:41:08.384-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure Drive'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure Guest OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Azure Guest OS 1.4</title><content type='html'>&lt;p&gt;On June 7, the Azure team introduced the latest SDK, version 1.2, supporting .NET 4 and other goodies. Along with the SDK, the Azure Guest OS was updated to version 1.3.&lt;/p&gt;  &lt;p&gt;A few days ago, a new Guest OS appeared: Version 1.4. Assuming Guest OS Auto-Upgrade is enabled, you’ve automatically been upgraded. If you have any older deployments that have a specific OS version in the service configuration file, simply change the OS version to “*”. If you visit the Azure portal, you’ll see this Guest OS:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TCIc-QL7ZjI/AAAAAAAAAkM/4J63PX57MWc/s1600-h/azure-os-14%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="azure-os-14" border="0" alt="azure-os-14" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TCIc-720ywI/AAAAAAAAAkQ/8X9LuXjto5k/azure-os-14_thumb%5B3%5D.jpg?imgmax=800" width="644" height="299" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you &lt;em&gt;don’t &lt;/em&gt;see 1.4, that means your service is set to a specific OS. You can choose 1.4 from the &lt;strong&gt;OS Settings…&lt;/strong&gt; dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TCIc_9Yk7GI/AAAAAAAAAkU/czjd1W3C5h4/s1600-h/azure-14-manual%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="azure-14-manual" border="0" alt="azure-14-manual" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TCIdA3J9IsI/AAAAAAAAAkY/4ERVdeMDozk/azure-14-manual_thumb%5B1%5D.jpg?imgmax=800" width="644" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;What’s new in 1.4?&lt;/h4&gt;  &lt;p&gt;There are a few changes you should be aware of.&lt;/p&gt;  &lt;h5&gt;Azure Drive fixes&lt;/h5&gt;  &lt;p&gt;If you’re taking advantage of Azure Drives in blob storage, be aware that there might be I/O errors under heavy load. OS 1.4 has a fix for this.&lt;/p&gt;  &lt;h5&gt;WCF Data Services fix&lt;/h5&gt;  &lt;p&gt;Guest OS 1.3 had a URL-encoding bug affecting Request URI’s when using LINQ. This is now fixed. &lt;/p&gt;  &lt;h5&gt;Security Patches&lt;/h5&gt;  &lt;p&gt;The latest security patches, through April 2010, have been applied to Guest OS 1.4, bringing it in line with Windows Server 2008 SP2.&lt;/p&gt;  &lt;h4&gt;Related Links&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/22/updates-to-windows-azure-drive-beta-in-os-1-4.aspx" target="_blank"&gt;Azure Storage Team blog post&lt;/a&gt; announcing Azure Drive Fix&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff729418.aspx" target="_blank"&gt;MSDN Library&lt;/a&gt;: Guest OS 1.4 Details, including LINQ details and specific security patches applied&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8717168455038119012?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8717168455038119012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-guest-os-14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8717168455038119012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8717168455038119012'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-guest-os-14.html' title='Azure Guest OS 1.4'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/TCIc-720ywI/AAAAAAAAAkQ/8X9LuXjto5k/s72-c/azure-os-14_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2989671616879177786</id><published>2010-06-11T17:42:00.001-04:00</published><updated>2010-06-12T23:33:08.871-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>NoVa Code Camp June 2010 Materials: Azure</title><content type='html'>&lt;p&gt;On Saturday, June 12, I presented “Azure: The Essential Setup Guide” at the Northern Virginia Code Camp. There were several great questions today. Two immediately come to mind. As I think of the others, I’ll add them here.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Can multiple roles be combined to run on a single virtual machine? &lt;/em&gt;No. Each role runs in its own VM instances. My advice is to build worker roles that handle multiple tasks. For instance, I gave an example in class where a single worker role processes both thumbnails and PDF generation based on different queue messages. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Does all code need to be added to a role, including code that used to reside in separate class libraries?&lt;/em&gt; Azure roles simply have to reference those class libraries – just add them to your solution and add a reference to the specific role that needs the library. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;When creating an Azure service, does it only store the code?&lt;/em&gt; The service definition has a specific URL as well as the data center &lt;em&gt;affinity. &lt;/em&gt;Affinity equates to the specific regional data center to run your code. Be sure that all of your related storage and services have the same affinity! This way, the bandwidth between them is free, and the speed is very fast (all communication stays within the data center).&lt;/li&gt;    &lt;li&gt;&lt;em&gt;When my virtual machine’s OS is upgraded, does Azure start a new instance before taking down the old instance? &lt;/em&gt;Azure will take down your instance and then re-launch it in an upgraded virtual machine. If you want to avoid downtime, run a minimum of two instances; at this point, Azure upgrades in server groups and won’t upgrade all at once.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I also called out a few tips and pointers:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When running your web role locally, be sure that the cloud project is set as the startup project. Make sure you see your website running on something like port 81, and that Visual Studio tells you it’s starting up the development fabric. If you’re running on some high-value random port, chances are you’re running in the asp.net development server.&lt;/li&gt;    &lt;li&gt;If you’re pushing code to the cloud, and you’re set up for more than one instance, be sure to delete your deployment at the end of the workday to conserve hours.&lt;/li&gt;    &lt;li&gt;When debugging locally, open the dev fabric UI (the Azure flag in the system tray). You can then view each running instance and see all of your Trace statements.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s the slide deck and our simple Hello Azure app:&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.office.live.com/embedicon.aspx/NoVaCC/2010-06-12-Azure" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;The slide deck contains the links we discussed and visited today.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;If you have any specific questions, or you recall a question or tip from class that I forgot to list above, please post a comment!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2989671616879177786?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2989671616879177786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/nova-code-camp-june-2010-materials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2989671616879177786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2989671616879177786'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/nova-code-camp-june-2010-materials.html' title='NoVa Code Camp June 2010 Materials: Azure'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5168411632905542060</id><published>2010-06-07T15:59:00.001-04:00</published><updated>2010-06-07T16:22:39.738-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><title type='text'>Azure SDK+Tools 1.2: Publishing and Monitoring!</title><content type='html'>&lt;p&gt;Today, Microsoft announced the availability of Azure SDK v1.2, with related tools for Visual Studio.&lt;/p&gt;  &lt;p&gt;In my last post, I covered support for .NET 4.0, as well as the integration of IntelliTrace for Azure applications. In this post, I’ll cover deployment and monitoring.&lt;/p&gt;  &lt;h3&gt;Deployment&lt;/h3&gt;  &lt;p&gt;Visual Studio makes it trivial to build an Azure application. However, unless you were using a build script configured to automate this task, publishing has been a two- (or three-) step process:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Build and create a service deployment package using Visual Studio&lt;/li&gt;    &lt;li&gt;(optionally) upload the deployment package to blob storage, using an Azure storage management tool such as &lt;a href="http://azurestorageexplorer.codeplex.com/" target="_blank"&gt;Azure Storage Explorer&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Through the Azure portal, select a deployment package either from your local disk or from blob storage.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This sequence was time-consuming, and there was no easy way to check on deployment status without either watching the portal’s website or running something like a PowerShell script to keep checking on your deployment status (both of which take your fingers and eyeballs away from Visual Studio).&lt;/p&gt;  &lt;p&gt;With the new Visual Studio tools in Azure 1.2, you now have a fully-integrated publishing setup! First, there’s the publishing wizard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1PpgC7HPI/AAAAAAAAAik/xIgozPGlx1k/s1600-h/azure-publish%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-publish" border="0" alt="azure-publish" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TA1PqEQCm_I/AAAAAAAAAio/YcQSlGIywM0/azure-publish_thumb%5B2%5D.jpg?imgmax=800" width="443" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice, up top, that you can choose between simply &lt;em&gt;creating &lt;/em&gt;your service package and actually &lt;em&gt;deploying &lt;/em&gt;your service package! You’ll need to configure the wizard to know about your subscription, which requires both a subscription ID and a certificate. Just drop down the Credentials dropdown and choose &lt;strong&gt;Add… &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1Pq-DiT3I/AAAAAAAAAis/iUOm1gGIl-0/s1600-h/azure-configureservice%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-configureservice" border="0" alt="azure-configureservice" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA1PrGl_kgI/AAAAAAAAAiw/CX0bUViP2Mc/azure-configureservice_thumb%5B2%5D.jpg?imgmax=800" width="501" height="315" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice that you now have an option for enabling IntelliTrace, as long as your roles target .NET 4 (see my &lt;a href="http://www.davidmakogon.com/2010/06/azure-sdktools-12-net-4-plus.html" target="_blank"&gt;previous post&lt;/a&gt; for more details, or &lt;a href="http://blogs.msdn.com/b/jnak/archive/2010/06/07/using-intellitrace-to-debug-windows-azure-cloud-services.aspx" target="_blank"&gt;Jim Nakashima’s post&lt;/a&gt; for even &lt;em&gt;more &lt;/em&gt;details).&lt;/p&gt;  &lt;p&gt;Once you finish filling out the Wizard and push OK, your service will be published asynchronously from Visual Studio, and its status is shown in the new Windows Azure Activity Log:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TA1Q_OquBEI/AAAAAAAAAi0/WtQi6vqb-1o/s1600-h/azure-deploy%5B9%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-deploy" border="0" alt="azure-deploy" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA1Q_UTWR4I/AAAAAAAAAi4/R5YMS3vB4-M/azure-deploy_thumb%5B7%5D.jpg?imgmax=800" width="644" height="128" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once the deployment is complete, you’ll see something like this in the History:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1Q_vQ_zOI/AAAAAAAAAi8/yDp6Qmvmu6E/s1600-h/azure-deploy-complete%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-deploy-complete" border="0" alt="azure-deploy-complete" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1RAUAfPmI/AAAAAAAAAjA/-A-x6pGTbhI/azure-deploy-complete_thumb%5B2%5D.jpg?imgmax=800" width="288" height="57" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And that’s it – no switching to the portal, no manual upload to blob storage. Just… a publishing wizard.&lt;/p&gt;  &lt;h3&gt;Monitoring&lt;/h3&gt;  &lt;p&gt;Ok, if the Azure Tools was &lt;em&gt;just &lt;/em&gt;baked-in deployment, I’d be happy. But wait – there’s more! Now there’s a baked-in service and storage viewer as well!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1SUnLy7zI/AAAAAAAAAjE/qpxznd2l_JM/s1600-h/azure-explorer2%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-explorer2" border="0" alt="azure-explorer2" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1SVEdsKbI/AAAAAAAAAjI/f5fnqb8ZFPY/azure-explorer2_thumb%5B2%5D.jpg?imgmax=800" width="270" height="353" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With the explorer, you’ll easily be able to view your service instances and storage data in blobs and tables. You even get filtering support. For instance, here’s a view of the WADLogs table, filtered to show all content dated after May 1:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1SVt_meAI/AAAAAAAAAjM/5i4up4VkDjQ/s1600-h/azure-table-filtering%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-table-filtering" border="0" alt="azure-table-filtering" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1SVw1yuCI/AAAAAAAAAjQ/bLrFZ3MDOFg/azure-table-filtering_thumb%5B2%5D.jpg?imgmax=800" width="534" height="193" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The explorer will show you the status of your services. For instance, I can see that my WebRole1 instance is running:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA1VC0Woq3I/AAAAAAAAAjU/CvO_SSxUYJU/s1600-h/azure-instance-running%5B6%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-instance-running" border="0" alt="azure-instance-running" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1VDI0xNQI/AAAAAAAAAjY/As2DmZ-29Yo/azure-instance-running_thumb%5B4%5D.jpg?imgmax=800" width="226" height="70" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I can also ask for my IntelliTrace logs from here (again, see my &lt;a href="http://www.davidmakogon.com/2010/06/azure-sdktools-12-net-4-plus.html" target="_blank"&gt;previous post&lt;/a&gt; for details).&lt;/p&gt;  &lt;p&gt;So you might be wondering: If there’s such a good explorer built into Visual Studio, why would I need a 3rd-party tool such as &lt;a href="http://azurestorageexplorer.codeplex.com/" target="_blank"&gt;Azure Storage Explorer&lt;/a&gt; or Cerebrata’s &lt;a href="http://www.cerebrata.com/Products/CloudStorageStudio/Default.aspx" target="_blank"&gt;Cloud Storage Studio&lt;/a&gt;? The simple answer is that the built-in explorer is read-only. You’ll be able to view your services and storage, but you won’t be able to modify anything. 3rd-party tools will give you the ability to upload content, suspend or upgrade instances, etc.&lt;/p&gt;  &lt;h3&gt;Go forth and publish!&lt;/h3&gt; These features are great additions to Visual Studio that simplify deployment and monitoring. Enjoy!  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5168411632905542060?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5168411632905542060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-sdktools-12-publishing-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5168411632905542060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5168411632905542060'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-sdktools-12-publishing-and.html' title='Azure SDK+Tools 1.2: Publishing and Monitoring!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_rKuJyBZ8UWY/TA1PqEQCm_I/AAAAAAAAAio/YcQSlGIywM0/s72-c/azure-publish_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-128706783526136218</id><published>2010-06-07T10:49:00.001-04:00</published><updated>2010-06-07T15:42:24.619-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='IntelliTrace'/><title type='text'>Azure SDK+Tools 1.2: .NET 4 Plus IntelliTrace!</title><content type='html'>&lt;p&gt;Today, Microsoft announced the availability of Azure SDK v1.2, with related tools for Visual Studio.&lt;/p&gt;  &lt;p&gt;This release is a big deal, both from an app-enabling point of view and from an ease-of-deployment point-of-view. Here’s a quick look at what’s new with Application Support, with .NET 4 and IntelliTrace. The next post will cover deployment.&lt;/p&gt;  &lt;h3&gt;Application support with .NET 4.0&lt;/h3&gt;  &lt;p&gt;The really big deal with v1.2 is support for the .NET 4 framework! Just choose .NET 4 as your target framework for any of your cloud-targeted projects:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA0G_wUo5bI/AAAAAAAAAg4/4Ze-jWcoMbM/s1600-h/dotnet4%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="dotnet4" border="0" alt="dotnet4" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA0HAWMujyI/AAAAAAAAAg8/Ip78haQNOpE/dotnet4_thumb%5B1%5D.jpg?imgmax=800" width="644" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you deploy your app to the cloud, you’ll see the all-new Guest OS 1.3 that supports .NET 4:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TA0HAsd8b4I/AAAAAAAAAhA/2nmeVQy6NmI/s1600-h/guestos13%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="guestos13" border="0" alt="guestos13" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA0HA1TGBiI/AAAAAAAAAhE/s0pUdJDt26Y/guestos13_thumb%5B1%5D.jpg?imgmax=800" width="644" height="304" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Sweet! And you can still manage your OS upgrades. If you want your existing apps to use an older OS version, just click &lt;strong&gt;OS Settings… &lt;/strong&gt;and configure your service for manual OS selection:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1Llk0y86I/AAAAAAAAAhc/ybR5r5zr31w/s1600-h/azure-os-manual%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-os-manual" border="0" alt="azure-os-manual" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA1LmBpP3hI/AAAAAAAAAhg/J22i06K8Gj0/azure-os-manual_thumb%5B5%5D.png?imgmax=800" width="644" height="237" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;IntelliTrace&lt;/h3&gt;  &lt;p&gt;As long as you choose .NET 4 as your role’s target framework, you’ll be all set for IntelliTrace with your Azure app. You enable IntelliTrace within the all-new Publish wizard. Note that you can still simply create a deployment package without actually publishing to Azure. For actual publishing, you’ll need to have a Storage account configured, as that’s where the deployment package is pushed to, prior to deploying it to your actual Azure Service:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA0OzpSdA_I/AAAAAAAAAhI/yItssjw9HV0/s1600-h/azure-publish%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-publish" border="0" alt="azure-publish" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA0O0XHbRKI/AAAAAAAAAhM/ZAnqJZZhDNg/azure-publish_thumb%5B1%5D.jpg?imgmax=800" width="547" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: The Intellitrace option is disabled for .NET 3.5 deployments.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once you’ve enabled IntelliTrace and deployed your app, you can access IntelliTrace data directly from Visual Studio. Just right-click your role instance and View IntelliTrace logs. Note that IntelliTrace is only available for roles with &lt;strong&gt;(IntelliTrace)&lt;/strong&gt; next to the service+slot name.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ViewIntelliTraceLogs" border="0" alt="ViewIntelliTraceLogs" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/TA0O1qYJeNI/AAAAAAAAAhY/hBLZah_hLWE/ViewIntelliTraceLogs_thumb%5B1%5D.png?imgmax=800" width="644" height="413" /&gt; &lt;/p&gt;  &lt;p&gt;And then… magic happens, right in Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/TA1LmbzVXzI/AAAAAAAAAhk/wJ_QggGOg_U/s1600-h/itrace-2%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="itrace-2" border="0" alt="itrace-2" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/TA1Lmj_U9vI/AAAAAAAAAho/_68Fq0gjpGM/itrace-2_thumb%5B1%5D.jpg?imgmax=800" width="644" height="145" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once this completes, you’ll see the IntelliTrace information presented in Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/TA1LnMap2II/AAAAAAAAAhs/z0qguZjQstk/s1600-h/itrace-3%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="itrace-3" border="0" alt="itrace-3" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/TA1LnxZxF-I/AAAAAAAAAhw/-S4vMNruaEM/itrace-3_thumb%5B3%5D.jpg?imgmax=800" width="557" height="403" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Go have fun!!!&lt;/h3&gt;  &lt;p&gt;This is a great Azure SDK release, especially with .NET 4 support. And IntelliSense is icing on the cake. Sweet, sweet cake…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-128706783526136218?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/128706783526136218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-sdktools-12-net-4-plus.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/128706783526136218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/128706783526136218'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/azure-sdktools-12-net-4-plus.html' title='Azure SDK+Tools 1.2: .NET 4 Plus IntelliTrace!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_rKuJyBZ8UWY/TA0HAWMujyI/AAAAAAAAAg8/Ip78haQNOpE/s72-c/dotnet4_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3483611421227401715</id><published>2010-06-04T12:24:00.000-04:00</published><updated>2010-06-04T12:24:24.974-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Interview with Microsoft Partner Network: Azure, November 2009</title><content type='html'>While out at PDC in November, I spent a bit of time talking with Microsoft's &lt;a href="http://twitter.com/johnjmcclelland/"&gt;John McClelland&lt;/a&gt; about Azure and customer adoption. This interview is now online &lt;a href="http://dmak.us/abphmo"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3483611421227401715?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3483611421227401715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/interview-with-microsoft-partner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3483611421227401715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3483611421227401715'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/interview-with-microsoft-partner.html' title='Interview with Microsoft Partner Network: Azure, November 2009'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7811881151611279586</id><published>2010-06-04T11:57:00.000-04:00</published><updated>2010-06-04T11:57:20.710-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Interview with Community Megaphone Podcast - May 8, 2010</title><content type='html'>During the &lt;a href="http://cmapcodecamp.org/"&gt;CMAP Code Camp&lt;/a&gt; on May 8, The Community Megaphone dynamic duo, &lt;a href="http://twitter.com/devhammer"&gt;Andrew Duthie&lt;/a&gt; and &lt;a href="http://twitter.com/danemorgridge"&gt;Dane Morgridge&lt;/a&gt;, showed up and hosted their first live podcast - &lt;a href="http://www.communitymegaphonepodcast.com/Show/10/CMAP-Code-Camp"&gt;&lt;b&gt;Episode #10&lt;/b&gt;&lt;/a&gt;. They interviewed several community speakers in attendance, including Yours Truly.&lt;br /&gt;&lt;br /&gt;I participated in a group discussion about the ever-growing user group presence in the Washington, DC area, with its newest addition being the &lt;a href="http://www.dcdnug.org/dnn/default.aspx"&gt;Washington DC .Net user group&lt;/a&gt;. &amp;nbsp;Following that, &lt;a href="http://twitter.com/joelcochran"&gt;Joel Cochran&lt;/a&gt; stepped in for Dane as Guest Host, along with &lt;a href="http://twitter.com/1kevgriff"&gt;Kevin Griffin&lt;/a&gt;&amp;nbsp;and &lt;a href="http://twitter.com/steveandrews"&gt;Steve Andrews&lt;/a&gt;, and I was interviewed about Azure. We discussed pricing, target audience, and migration. We definitely had fun, as things devolved into a debate around pronunciation (a theme that continued throughout the day with other interviews). Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7811881151611279586?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7811881151611279586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/06/interview-with-community-megaphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7811881151611279586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7811881151611279586'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/06/interview-with-community-megaphone.html' title='Interview with Community Megaphone Podcast - May 8, 2010'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2883031787881064836</id><published>2010-05-30T20:33:00.001-04:00</published><updated>2010-05-30T20:33:40.691-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>CMAP Code Camp May 2010 Materials: Azure</title><content type='html'>&lt;p&gt;On May 8, I presented two Azure talks: “The Essential Setup Guide” and “Taking Advantage of the Platform.” Here’s the slide deck and sample code I used for these talks:&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/CMAPCC/2010-05-08-Azure" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Thanks to all who attended. As most of you will recall, nearly everyone from the first session stayed around for the second session, so it ended up being like a double-length talk. Here are a few takeaways from the talks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We went over some of the basics of Azure, and the fact that it offers everything except the app: network, computers, operating systems, failover, storage, monitoring… &lt;em&gt;the works.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;We went over some of the terms. Remember that every “role” you create for Azure is nothing more than a definition for a &lt;em&gt;virtual machine.&lt;/em&gt; You can then deploy that role to Azure, and you can have any number of &lt;em&gt;instances &lt;/em&gt;(essentially copies) of a given role. You pay for the number of roles you deploy, and you can scale the number up or down depending on your needs.&lt;/li&gt;    &lt;li&gt;To get started, visit &lt;a href="http://www.azure.com"&gt;www.azure.com&lt;/a&gt; – from here, you can select &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&amp;amp;displaylang=en" target="_blank"&gt;Get Tools &amp;amp; SDK&lt;/a&gt;, which will have you on your way. You’ll also need to enable a few things on your local development machine. See &lt;a href="http://msdn.microsoft.com/en-us/library/dd179419.aspx" target="_blank"&gt;here&lt;/a&gt; for more details.&lt;/li&gt;    &lt;li&gt;We built and deployed a very simple Hello Azure demo, with nothing more than a web page. This demonstrated how easy it is to set up a new Hosted Service through the Azure Portal (&lt;a href="http://www.azure.com"&gt;www.azure.com&lt;/a&gt;). From Visual Studio, we right-clicked the cloud project and selected Publish. This packaged our entire cloud application into a single cspkg file that could then be selected through the portal.&lt;/li&gt;    &lt;li&gt;During the second session, we continued on our journey by looking at an application with tables and queues. We saw how straightforward it was to use both a local (dev fabric) queue and a real-life Azure-hosted queue. The SMS demo code (provided in the link above) has comments describing how to switch between the two. The same case is for the storage table: you may choose local (dev fabric) storage or Azure-hosted storage (you’ll have to set up a storage account in your Azure account).&lt;/li&gt;    &lt;li&gt;I briefly mentioned &lt;em&gt;affinity. &lt;/em&gt;Azure has 6 data centers throughout the world, two being in the United States. When you deploy a service, you can choose where it goes (or not choose at all). Here’s the key thing: &lt;em&gt;you want your service and your storage located in the same data center.&lt;/em&gt; By placing everything in the same data center, data transfer is super-speedy, and you won’t incur any bandwidth charges when reading and writing data with your Azure-hosted services. This is what affinity is all about, and when you create each service or storage, you’ll be able to specify its affinity.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If anyone’s interested in a 2-day Azure Deep Dive, I’ll be teaching a free 2-day Azure Bootcamp July 7-8 in Virginia Beach. Register &lt;a href="http://azurebootcamp.com/city/virginiabeach" target="_blank"&gt;here&lt;/a&gt;. If you can’t make it to my bootcamp, check out additional dates and venues &lt;a href="http://azurebootcamp.com/schedule" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2883031787881064836?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2883031787881064836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/05/cmap-code-camp-may-2010-materials-azure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2883031787881064836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2883031787881064836'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/05/cmap-code-camp-may-2010-materials-azure.html' title='CMAP Code Camp May 2010 Materials: Azure'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-52283336626635538</id><published>2010-05-22T21:31:00.001-04:00</published><updated>2010-05-22T21:42:49.229-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Richmond Code Camp May 2010 Materials: Azure talk</title><content type='html'>&lt;p&gt;On May 22, I presented “Azure: Taking Advantage of the Platform.” Here’s the slide deck, sample code, and sample PowerShell script from the talk:&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/RichmondCC/20100522-Azure" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Thanks to everyone who attended, and for all the great questions! Here are a few takeaways from the talk:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Azure portal is &lt;a href="http://www.azure.com"&gt;http://www.azure.com&lt;/a&gt;. Here’s where you’ll be able to administer your account. You’ll also see a link to download the latest SDK.&lt;/li&gt;    &lt;li&gt;To set up an MSDN Premium account, visit my blog post &lt;a href="http://dmak.us/azajuI" target="_blank"&gt;here&lt;/a&gt; for a detailed walkthrough.&lt;/li&gt;    &lt;li&gt;Download the SDK here. Then grab the Azure PowerShell cmdlets &lt;a href="http://dmak.us/9JFYtd" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;To understand the true cost of web and worker roles, visit my blog post &lt;a href="http://dmak.us/dgMW5v" target="_blank"&gt;here&lt;/a&gt;, and the follow-up regarding staging &lt;a href="http://dmak.us/abSrSW" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The official pricing plan is &lt;a href="http://www.microsoft.com/windowsazure/pricing/" target="_blank"&gt;here&lt;/a&gt;. MSDN Premium pricing details are &lt;a href="http://www.microsoft.com/windowsazure/offers/popup.aspx?lang=en&amp;amp;locale=en-US&amp;amp;offer=MS-AZR-0005P" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The Azure teams have several blogs, as well as voting sites for future features. I compiled a list of the blogs and voting sites &lt;a href="http://dmak.us/a1DLjy" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Remember to configure your service and storage to be co-located in the same data center. This is done by setting affinity when creating your services.&lt;/li&gt;    &lt;li&gt;While all storage access is REST-based, the Azure SDK has a complete set of classes that insulate you from having to construct properly-formed REST-based calls.&lt;/li&gt;    &lt;li&gt;We talked about the limited indexing available with table storage (partition key + row key). Don’t let this be a deterrent: Tables are scalable up to 100TB, where SQL Azure is limited to 50GB. Consider using SQL Azure for relational data, and offload content to table storage, creating a hybrid approach that offers both flexible indexing and massive scalability. You can reference partition keys in a relational table, for instance.&lt;/li&gt;    &lt;li&gt;Clarifying timestamps across different data centers and time zones (a question brought up in Brian Lanham’s Azure Intro talk): Timestamps are stored as UTC.&lt;/li&gt;    &lt;li&gt;Don’t forget about queue names: they must be all&lt;strong&gt; lower-case&lt;/strong&gt; letters, numbers, or dash (and must start and end with letter or number)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If anyone’s interested in a 2-day Azure Deep Dive, I’ll be teaching a free 2-day Azure Bootcamp July 7-8 in Virginia Beach. Register &lt;a href="http://dmak.us/9hKKhp" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-52283336626635538?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/52283336626635538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/05/richmond-code-camp-may-2010-materials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/52283336626635538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/52283336626635538'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/05/richmond-code-camp-may-2010-materials.html' title='Richmond Code Camp May 2010 Materials: Azure talk'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5676541453645116871</id><published>2010-05-21T12:35:00.001-04:00</published><updated>2010-05-21T12:36:43.234-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>AzureUG May 2010 Materials: Azure Intro</title><content type='html'>&lt;p&gt;On May 12, I presented an introduction to Azure. here’s the source code and slides from the talk.&lt;/p&gt; &lt;iframe title="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/AzureUG/AzureUG%202010-05-12"&gt;&lt;/iframe&gt;  &lt;p&gt;The code includes a simple hello-world app, along with the SMS app that takes advantage of a web role, worker role, queue, and table storage.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5676541453645116871?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5676541453645116871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/05/azureug-may-2010-materials-azure-intro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5676541453645116871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5676541453645116871'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/05/azureug-may-2010-materials-azure-intro.html' title='AzureUG May 2010 Materials: Azure Intro'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1416461740769976307</id><published>2010-05-15T15:37:00.001-04:00</published><updated>2010-05-15T16:12:25.965-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetRocks'/><title type='text'>.Net Rocks! in Richmond, VA</title><content type='html'>&lt;p&gt;&lt;a href="http://twitter.com/carlfranklin" target="_blank"&gt;Carl Franklin&lt;/a&gt; and &lt;a href="http://twitter.com/richcampbell" target="_blank"&gt;Richard Campbell&lt;/a&gt;, hosts of the &lt;a href="http://www.dotnetrocks.com/" target="_blank"&gt;.NET Rocks&lt;/a&gt; talk show, decided to take their show on the road.&lt;/p&gt; &lt;a href="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/12189415_rW3hf#867637821_qt7iz-A-LB"&gt;&lt;img src="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/IMG3524/867637821_qt7iz-S-1.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;They rented an RV, nerded it up with some serious GPS tracking hardware (see their &lt;a href="http://www.dotnetrocks.com/images/roadtriproute2010.jpg" target="_blank"&gt;complete trip&lt;/a&gt;), and drove it across the US, visiting &lt;a href="http://www.dotnetrocks.com/roadtrip.aspx" target="_blank"&gt;a bunch of cities&lt;/a&gt;, recording live shows, and demonstrating some cool Visual Studio 2010 tech.&lt;/p&gt; &lt;a href="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/12189415_rW3hf#867637003_wtaUu-A-LB"&gt;&lt;img src="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/IMG3506/867637003_wtaUu-S-1.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;On May 5, the DotNetMobile rolled into Richmond, VA (thanks to &lt;a href="http://twitter.com/kevinhazzard" target="_blank"&gt;Kevin Hazzard&lt;/a&gt; and the &lt;a href="http://richmonddotnet.org" target="_blank"&gt;Richmond .NET User Group&lt;/a&gt; for getting this venue on the map!). I hitched a ride with &lt;a href="http://twitter.com/cnromaine" target="_blank"&gt;Rusty Romaine&lt;/a&gt; and drove down from Maryland to see the show. Our guest host was &lt;a href="http://twitter.com/millermark" target="_blank"&gt;Mark Miller&lt;/a&gt;, creator of &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/" target="_blank"&gt;CodeRush&lt;/a&gt;. He and his wife &lt;a href="http://twitter.com/karenlee723" target="_blank"&gt;Karen Mangiacotti&lt;/a&gt; bantered back &amp;amp; forth onstage, covering everything from animated commas to an over-engineered Viking Ship school project (note to self: never bake vinegar-soaked wood in my oven). The recorded show can be heard &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=555" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/12189415_rW3hf#867639076_cBFZ8-A-LB"&gt;&lt;img src="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/IMG3576/867639076_cBFZ8-S-1.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After the show, I snagged a group shot with Carl and Richard, along with Mark and Karen,&amp;#160; ride-along winner &lt;a href="http://twitter.com/bendewey" target="_blank"&gt;Ben Dewey&lt;/a&gt;, and newly-annointed ride-along winner and &lt;a href="http://www.hrnug.org" target="_blank"&gt;HRNUG&lt;/a&gt; founder &lt;a href="http://twitter.com/1kevgriff" target="_blank"&gt;Kevin Griffin&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/12189415_rW3hf#867638727_JeToF-A-LB"&gt;&lt;img src="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/IMG3570/867638727_JeToF-S-1.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;More photos are posted &lt;a href="http://david.eventsintime.com/Events/DevCommunity/DotNetRocks/12189415_rW3hf#867638727_JeToF" target="_blank"&gt;here&lt;/a&gt;. Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1416461740769976307?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1416461740769976307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/05/net-rocks-in-richmond-va.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1416461740769976307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1416461740769976307'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/05/net-rocks-in-richmond-va.html' title='.Net Rocks! in Richmond, VA'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2580003164571383289</id><published>2010-05-05T07:50:00.001-04:00</published><updated>2010-05-05T08:04:19.990-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackbird pie'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Blackbird Pie: First Thoughts</title><content type='html'>&lt;p&gt;Yesterday I heard about Blackbird Pie, a new tool from Twitter to create embeddable tweets. This actually sounded like a useful tool, as there are times I embed screenshots in my posts, some of those being twitter captures. My hope was that with embedded tweets, they’d be interactive (e.g. clickable if there was a link).&lt;/p&gt;  &lt;p&gt;So off I went to &lt;a href="http://media.twitter.com/blackbird-pie"&gt;http://media.twitter.com/blackbird-pie&lt;/a&gt;. The claim was that it was &lt;em&gt;faster and easier&lt;/em&gt; to embed a tweet.&lt;/p&gt;  &lt;p&gt;My initial experience was, um, &lt;em&gt;slower and impossible&lt;/em&gt; to embed a tweet. Regardless of which tweet URL I inserted into the UI, I received notice that the tweet did not exist when, in fact, it did (sorry, no screenshot for that). And after only 3 or 4 attempts, I was told that I exceeded some limit. Eventually, the site slowed to a crawl and showed me this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S-Fba7ytwSI/AAAAAAAAAfA/-14VMc82iN8/s1600-h/blackbird-stressed%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blackbird-stressed" border="0" alt="blackbird-stressed" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S-FbbNHUADI/AAAAAAAAAfE/TN8pWABf-Qo/blackbird-stressed_thumb%5B1%5D.jpg?imgmax=800" width="354" height="106" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point, I gave up for the day.&amp;#160; And I was all set to move on, until I saw a bit more positive traffic about Blackbird Pie this morning. So I gave it one more attempt.&amp;#160; This time it loaded extremely fast and worked on a tweet that failed to render yesterday. The UI generated an embeddable chunk of html/css:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S-FdeEKpOVI/AAAAAAAAAfY/CSyHcIJHM8E/s1600-h/blackbird-code%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blackbird-code" border="0" alt="blackbird-code" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S-FdemY0DoI/AAAAAAAAAfc/Ufkg8_XK6_0/blackbird-code_thumb%5B1%5D.jpg?imgmax=800" width="324" height="161" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pasting this in to this blog post,&lt;strike&gt; “magic happens”&lt;/strike&gt;&lt;em&gt; my tweet gets embedded, though not rendered the way I expected:&lt;/em&gt;&lt;/p&gt; &lt;!-- http://twitter.com/dmakogon/status/13280435536 --&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.bbpbox{background:url(http://s.twimg.com/a/1272324988/images/themes/theme1/bg.png) #9ae4e8;padding:20px;}p.bbptweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px}p.bbptweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6}p.bbptweet span.metadata span.author{line-height:19px}p.bbptweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px}p.bbptweet a:hover{text-decoration:underline}p.bbptweet span.timestamp{font-size:12px;display:block}&lt;/style&gt;  &lt;div class="bbpBox"&gt;   &lt;p class="bbpTweet"&gt;Just looked at my dev calendar: 7 &lt;a class="tweet-url hashtag" title="#Azure" href="http://twitter.com/search?q=%23Azure" rel="nofollow"&gt;#Azure&lt;/a&gt; talks scheduled between now and Sept, including a 2-day bootcamp. &lt;a href="http://dmak.us/9VQX1r" rel="nofollow"&gt;http://dmak.us/9VQX1r&lt;/a&gt;&lt;span class="timestamp"&gt;&lt;a title="Mon May 03 02:13:22 +0000 2010" href="http://twitter.com/dmakogon/status/13280435536"&gt;less than a minute ago&lt;/a&gt; via web&lt;/span&gt;&lt;span class="metadata"&gt;&lt;span class="author"&gt;&lt;a href="http://twitter.com/dmakogon"&gt;&lt;img src="http://a3.twimg.com/profile_images/117882049/FacebookProfile-David_normal.jpg" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/dmakogon"&gt;David Makogon&lt;/a&gt;&lt;/strong&gt;           &lt;br /&gt;dmakogon&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt; &lt;!-- end of tweet --&gt;  &lt;p&gt;Just as advertised, my tweet is embedded, and it was incredibly easy.&lt;strike&gt; It included my twitter page background&lt;/strike&gt;. And… all links are preserved: twitter search, site URL, and my profile. &lt;strike&gt;Sweet!&lt;/strike&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE: &lt;em&gt;Once I published the post, I noticed that the embedded tweet looked nothing like it did inside Windows Live Writer. This is what it looked like prior to publishing, which is not how the actual embedded tweet appears:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S-Fde4kqjEI/AAAAAAAAAfg/EQ6wodhR4hI/s1600-h/blackbird-tweetwhileediting%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blackbird-tweetwhileediting" border="0" alt="blackbird-tweetwhileediting" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S-FdfLQsThI/AAAAAAAAAfk/0r3YRd6vt20/blackbird-tweetwhileediting_thumb.jpg?imgmax=800" width="244" height="156" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;There might be special tweaks required for embedding in Blogger posts…&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Twitter added some disclaimers, so I suspect this tool will be going through revisions pretty quickly as it rises in popularity. For instance, here’s the disclaimer when adding a URL to bake:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S-FbbQA1aYI/AAAAAAAAAfI/X4FALNDz-8s/s1600-h/blackbird-ownrisk%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blackbird-ownrisk" border="0" alt="blackbird-ownrisk" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S-Fbbgu5vjI/AAAAAAAAAfM/7aiVRi3wrZg/blackbird-ownrisk_thumb%5B1%5D.jpg?imgmax=800" width="350" height="68" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And here’s the disclaimer just following your baked tweet:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S-Fbb4N58pI/AAAAAAAAAfQ/tYdZhaglTyg/s1600-h/blackbird-disclaimer%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blackbird-disclaimer" border="0" alt="blackbird-disclaimer" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S-FbcA4CNqI/AAAAAAAAAfU/NE3c0spggDM/blackbird-disclaimer_thumb%5B1%5D.jpg?imgmax=800" width="350" height="71" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strike&gt;Disclaimers aside, this is very cool!&lt;/strike&gt; I like the idea of an interactive tweet, rather than an unclickable static image (or a static image that I have to wrap a hyperlink around). &lt;strong&gt;&lt;em&gt;However, this is not yet ready for prime time, as my embedded tweets are not rendering properly on Blogger.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2580003164571383289?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2580003164571383289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/05/blackbird-pie-first-thoughts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2580003164571383289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2580003164571383289'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/05/blackbird-pie-first-thoughts.html' title='Blackbird Pie: First Thoughts'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/S-FbbNHUADI/AAAAAAAAAfE/TN8pWABf-Qo/s72-c/blackbird-stressed_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-385598951703824361</id><published>2010-04-27T23:15:00.001-04:00</published><updated>2010-04-28T00:15:07.209-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>RockNUG April 2010 Materials: Silverlight 4</title><content type='html'>&lt;p&gt;On April 14th, I presented an introduction to Silverlight 4 and its new user interface enhancements. Here is the source code from the talk.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/RockNUG/2010-04-Silverlight4/RockNUG-2010-04-14.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;br /&gt;    &lt;br /&gt;Some takeaways we discussed:     &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;Out-of-browser support&lt;/h4&gt;  &lt;p&gt;Silverlight 4 now offers more capabilities when applications are installed out-of-browser. To enable this feature, look at the Silverlight project’s Properties. You’ll then see an option for enabling out-of-browser, follow    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S2EVR1Mm6xI/AAAAAAAAAY8/CAqoZsMeOKE/s1600-h/oob-option%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oob-option" border="0" alt="oob-option" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S2EVSNPU8MI/AAAAAAAAAZA/Un0GYYe6UDw/oob-option_thumb.png?imgmax=800" width="244" height="29" /&gt;&lt;/a&gt;     &lt;br /&gt;After selecting this option, view the out-of-browser settings:     &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S9etWJh6joI/AAAAAAAAAeY/aR3EPTnbmjw/s1600-h/oob%5B6%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="oob" border="0" alt="oob" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S9etWw_aLqI/AAAAAAAAAec/h8Lq-vVfcIE/oob_thumb%5B2%5D.jpg?imgmax=800" width="259" height="330" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;Here, you can customize the shortcut name and window title, as well as a description that pops up when you float the mouse over your desktop shortcut. In our demo app, I also set the window size, based on our MainPage user control. Going further, notice the checked box highlighted. This grants elevated privileges to our application when running out-of-browser, which offers some extra features (such as using the native network stack instead of the browser’s network stack).&lt;/p&gt;  &lt;p&gt;As an example of elevated network privileges, this app can communicate with the Klout social networking service (see &lt;a href="http://www.klout.com"&gt;www.klout.com&lt;/a&gt; for more details). When running out-of-browser, the app can retrieve a twitter user’s social relevance score. For example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S9etXTsdt7I/AAAAAAAAAeQ/T24uscfYOJ8/s1600-h/klout%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="klout" border="0" alt="klout" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S9etX8HZFwI/AAAAAAAAAeU/bCR1nPylbzg/klout_thumb.jpg?imgmax=800" width="240" height="244" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Note that this feature is disabled when running from the browser. Also note that Klout requires an API key. Simply visit &lt;a href="http://developer.klout.com/"&gt;http://developer.klout.com/&lt;/a&gt; to request an API key. Then simply open MainPageViewModel.cs and search for kloutKey. Now just place your key here and you should be up and running.&lt;/p&gt;  &lt;p&gt;Another cool out-of-browser feature is the Notification Window, similar to something you see in Microsoft Outlook in the bottom-right corner of your desktop when new mail arrives.&amp;#160; In the demo, drop a picture onto the drop target, and you’ll see a window pop up.&amp;#160; If you look at the code-behind, you’ll see two samples for setting up the notification window’s content. &lt;em&gt;Note: you won’t see the pop-up window if you’re running in the browser.&lt;/em&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;Debugging out-of-browser apps&lt;/h4&gt;  &lt;p&gt;While we didn’t look at this during the demo, here’s how to debug an out-of-browser app with Visual Studio 2010. First, set the Silverlight project as the startup project. Then run it, and install it out-of-browser. Now shut down the app, view the Silverlight project’s properties, and choose the Debug tab. Then simply choose the “Out-of-browser application” radio button:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S9e2QiTFXCI/AAAAAAAAAeg/7WFEmZy7VA8/s1600-h/Debugging%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Debugging" border="0" alt="Debugging" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S9e2Q0XgGII/AAAAAAAAAek/DNDzWxqMkKU/Debugging_thumb.jpg?imgmax=800" width="244" height="116" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s it. Now when you hit F5, your out-of-browser app should load, and your breakpoints will be hit as you’d expect.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Update checks&lt;/h4&gt;  &lt;p&gt;Ok, this was around in Silverlight 3, but since I attempted to show this and it refused to work, I thought I’d explain why, and how to make it work for you. For auto-update to work, the web app needs to be the startup project, not the Silverlight app. Once you set the correct startup project, the application update-check works just fine.&lt;/p&gt;  &lt;h4&gt;Media support&lt;/h4&gt; You now have access to all of your audio and video devices. When I demo’d this, we had two webcams to choose from. The first time you select a video device, you’ll see the Silverlight warning box. After you agree to allow the app to use the webcam, you won’t see the warning box again. There’s also an option to remember your preference so you won’t be prompted again when re-running the application. I added a Stop button, which returns the video rectangle to a green background.   &lt;br /&gt;  &lt;h4&gt;Improved mouse support&lt;/h4&gt; Silverlight 4 now has events for right-click actions, as well as mouse scroll wheel support. I demo’d right-click support by adding a popup window when right-clicking the drop-target button.   &lt;br /&gt;  &lt;h4&gt;Drag-n-drop support&lt;/h4&gt; You can now drag files from your desktop or file folders to a user interface element. I showed this by setting up a button as a drop-target. This button accepts image files such as png and jpg.   &lt;br /&gt;  &lt;h4&gt;Visual Studio improvements&lt;/h4&gt;  &lt;p&gt;While this isn’t specifically related to Silverlight 4, Visual Studio 2010 now has a built-in XAML Visualizer. This means you no longer need to open Expression Blend simply to layout your user controls. Blend still has a considerable feature set beyond that of Visual Studio, especially when managing visual states and animations. For general layout, the built-in visualizer should be fine.&lt;/p&gt;  &lt;h4&gt;Printing&lt;/h4&gt;  &lt;p&gt;I showed just how easy it is to create printable output by instantiating a new PrintDocument object, setting the PageVisual property to a part of the visual tree (such as the photo button, or the entire page), and executing the Print method.&lt;/p&gt;  &lt;h4&gt;Implicit Styles&lt;/h4&gt;  &lt;p&gt;In Silverlight 3, you were required to specify a style that targeted a specific control type &lt;em&gt;and &lt;/em&gt;give the style a name. Then, any control of that type would need to specify a style explicitly. For example, if you had 20 buttons, you’d first need to create a new button style and then reference that style from each button.&lt;/p&gt;  &lt;p&gt;In Silverlight 4, you can create an unnamed style (again targeting a specific control type). Now, for all controls of that type, they will automatically get styled with the unnamed “implicit” style you created. Don’t worry – you can still created explicitly-named styles, and controls specifying these named styles will override the implicit styling. Take a look at App.xml to see both an explicit and implicit style:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S9e2RJHTOGI/AAAAAAAAAeo/QYVcvIkGsK4/s1600-h/styles%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="styles" border="0" alt="styles" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S9e2Rr5lTbI/AAAAAAAAAes/eexGtU4rdZU/styles_thumb%5B1%5D.jpg?imgmax=800" width="391" height="134" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;Then look at the two buttons in the demo app:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S9e2SS2lnBI/AAAAAAAAAew/tUh9vF6ZyXo/s1600-h/styledbuttons%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="styledbuttons" border="0" alt="styledbuttons" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S9e2SjE-lLI/AAAAAAAAAe0/2_Ei9-aoMes/styledbuttons_thumb%5B1%5D.jpg?imgmax=800" width="243" height="84" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Lots more!&lt;/h4&gt;  &lt;p&gt;There are many more features in Silverlight 4, such as the new COM Interop support. For a more complete list, check out &lt;a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx" target="_blank"&gt;Tim Heuer’s post&lt;/a&gt;, where he provides descriptions or samples for each of the new features. Note that he Tim has a follow-up link to updates that were introduced in the Release Candidate. All of this applies to the official Silverlight 4 Release-To-Web (RTW) that shipped on April 15.&lt;/p&gt;  &lt;p&gt;To get started, visit the &lt;a href="http://www.silverlight.net/getstarted/silverlight-4/" target="_blank"&gt;Silverlight 4 developer page&lt;/a&gt; to grab the latest SDK and Silverlight developer runtime. You’ll also need Visual Studio 2010, which is available from MSDN. There’s also an Express version &lt;a href="http://www.microsoft.com/Express/" target="_blank"&gt;freely available for download&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-385598951703824361?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/385598951703824361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/rocknug-april-2010-materials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/385598951703824361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/385598951703824361'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/rocknug-april-2010-materials.html' title='RockNUG April 2010 Materials: Silverlight 4'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/S2EVSNPU8MI/AAAAAAAAAZA/Un0GYYe6UDw/s72-c/oob-option_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8699322412743003257</id><published>2010-04-26T10:00:00.001-04:00</published><updated>2010-04-28T11:23:20.645-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codename Dallas'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='AppFabric'/><category scheme='http://www.blogger.com/atom/ns#' term='Voting'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Azure Blogs and Team Voting Sites</title><content type='html'>I recently compiled a list of all blog sites used by the Azure team, as well as voting sites for future features. The entire post can be found &lt;a href="http://rdaarchitecture.blogspot.com/2010/04/azure-team-blogs-and-voting-sites.html" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8699322412743003257?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8699322412743003257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-blogs-and-team-voting-sites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8699322412743003257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8699322412743003257'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-blogs-and-team-voting-sites.html' title='Azure Blogs and Team Voting Sites'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1267854954736511890</id><published>2010-04-26T09:53:00.001-04:00</published><updated>2010-10-25T01:10:00.378-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Codename Dallas'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='AppFabric'/><category scheme='http://www.blogger.com/atom/ns#' term='Voting'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Azure team blogs and voting sites</title><content type='html'>The Azure team has several blogs announcing new features, Azure sites, integration tools, customer stories, and general platform updates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/windowsazure/" target="_blank"&gt;Windows Azure blog&lt;/a&gt; – visit this blog to see the latest platform updates, as well as OS updates and tools for platform integration&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/ssds/" target="_blank"&gt;SQL Azure blog&lt;/a&gt; – this blog is dedicated to the Azure-specific version of SQL Server.&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/netservices/" target="_blank"&gt;Azure AppFabric blog&lt;/a&gt; – this blog is specific to AppFabric features such as access control, service bus, and experimental features, called &lt;a href="http://blogs.msdn.com/netservices/archive/2010/03/11/now-available-the-windows-azure-platform-appfabric-labs-environment.aspx" target="_blank"&gt;AppFabric LABS&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/windowsazurestorage/" target="_blank"&gt;Azure Storage blog&lt;/a&gt; – this blog is dedicated to Azure Storage (blobs, tables, queues, and related SDK support), including code samples and useful tools.&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/dallas/" target="_blank"&gt;Codename Dallas blog&lt;/a&gt; – this blog covers the latest information about the new Azure data-provider service.&lt;/li&gt;&lt;/ul&gt;Aside from blogs, the Azure team is soliciting feedback for future features. You can cast your votes and be heard here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting" target="_blank"&gt;Windows Azure feature voting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34685-sql-azure-feature-voting" target="_blank"&gt;SQL Azure feature voting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/44459-sql-azure-data-sync-feature-voting" target="_blank"&gt;SQL Azure Data Sync feature voting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/40626-windows-azure-appfabric-feature-voting" target="_blank"&gt;AppFabric feature voting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/35889-microsoft-codename-dallas-feature-voting" target="_blank"&gt;Codename Dallas feature voting&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1267854954736511890?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1267854954736511890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-team-blogs-and-voting-sites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1267854954736511890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1267854954736511890'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-team-blogs-and-voting-sites.html' title='Azure team blogs and voting sites'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5134262180396822424</id><published>2010-04-23T19:47:00.001-04:00</published><updated>2010-04-23T19:47:55.263-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>May 12 – Launching and Monitoring your First Azure App</title><content type='html'>&lt;p&gt;Join me online May 12 at 4pm Eastern, when I present at the Azure User Group, hosted in LiveMeeting. During this talk, we’ll go over the basic building blocks of an Azure application. We’ll then create our first Azure app and see how to deploy it into the cloud. We’ll also see how to monitor an app once it’s deployed.&lt;/p&gt;  &lt;p&gt;Please register &lt;a title="Azure: Launching and Monitoring your First App" href="https://www.clicktoattend.com/register.aspx?eventid=147728" target="_blank"&gt;here&lt;/a&gt; if you’d like to attend.&lt;/p&gt;  &lt;p&gt;For more information about the Azure User Group, visit the &lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=2856493&amp;amp;trk=anet_ug_hm" target="_blank"&gt;LinkedIn group page&lt;/a&gt; or follow &lt;a href="http://twitter.com/azureug" target="_blank"&gt;AzureUG on twitter&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5134262180396822424?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5134262180396822424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/may-12-launching-and-monitoring-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5134262180396822424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5134262180396822424'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/may-12-launching-and-monitoring-your.html' title='May 12 – Launching and Monitoring your First Azure App'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-923620138519780106</id><published>2010-04-13T08:28:00.002-04:00</published><updated>2010-10-05T16:10:29.127-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure Billing'/><category scheme='http://www.blogger.com/atom/ns#' term='David Makogon'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Azure: Staging and Compute-Hour Metering</title><content type='html'>In &lt;a href="http://www.davidmakogon.com/2010/03/azure-true-cost-of-web-and-worker-roles.html" target="_blank" title="The True Cost of Web and Worker Roles"&gt;this post&lt;/a&gt;, I talked about how web and worker roles are considered live the moment they are deployed, whether stopped or running. I received a few follow-up questions about billing when using the Staging area, as well as clarification on how compute-hours are measured.&lt;br /&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Production and Staging&lt;/h3&gt;When deploying to Azure, you have a choice between Production and Staging:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S7pDsACKC3I/AAAAAAAAAdc/0WsEAU4R9Ao/s1600-h/prod-and-staging%5B3%5D.png"&gt;&lt;img alt="prod-and-staging" border="0" height="168" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pDxkiWcYI/AAAAAAAAAdg/9QfyNe2Ipbw/prod-and-staging_thumb%5B1%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="prod-and-staging" width="442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This comes in handy when upgrading your application. Let’s say you have an application already in Production, and you now have a new version you’d like to upgrade to. You can deploy that new version to a separate Staging area, which provides you with a separate “test URL” as well as any worker and web roles your application needs. You can run this app just like you’d run your production app. When you’re done testing, &lt;em&gt;swap staging and production.&lt;/em&gt; This is effectively a Virtual IP address swap, so your end-users simply see an upgraded application as soon as you choose to execute the swap. &lt;br /&gt;&lt;br /&gt;This is a terrific feature, allowing you to test an application without service disruption. It also allows you to quickly swap back to the previously-deployed version if something go wrong after deploying your new version to production.&lt;br /&gt;&lt;br /&gt;Once you’re sure your new version is working ok, &lt;em&gt;consider deleting your service from Staging. &lt;/em&gt;Be aware that &lt;strong&gt;&lt;em&gt;your staging area is also consuming virtual machine instances&lt;/em&gt;&lt;/strong&gt;. &lt;em&gt;Staging &lt;/em&gt;instances and &lt;em&gt;Production &lt;/em&gt;instances are equivalent: Each instance is a Virtual machine; &lt;em&gt;Staging&lt;/em&gt; instances are billed just like &lt;em&gt;Production&lt;/em&gt; instances. If you leave your service deployed to both Production and Staging, you will be accruing Compute-Hour charges for both. Just keep this in mind when estimating your monthly Azure costs.&lt;br /&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;How the hour is metered&lt;/h3&gt;As each application is deployed, its virtual machines are created. The moment those virtual machines are in place, metering begins. This includes &lt;em&gt;stopped &lt;/em&gt;services. For instance: assuming we clicked Deploy on the Production area of our service, and uploaded an application comprising one worker role and one web role, we’d then see our deployment in a stopped state:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S8RixtpeT9I/AAAAAAAAAd8/nKfobE2uB4Q/s1600-h/deployed-paused.png"&gt;&lt;img alt="deployed-paused" border="0" height="268" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pD7Nv4hkI/AAAAAAAAAeA/1tDvZ9VQ40Q/deployed-paused_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="deployed-paused" width="447" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;At this moment, the billing clock begins for each of the instances, and billing is based on a 60-minute window: If you deploy at 4:16pm, your 60-minute window is from 4:16pm to 5:16pm (it’s not 4pm-5pm). In this example, I have two roles, with a combined consumption of 2 compute-hours per clock-hour.&lt;br /&gt;If I decide to stop either of these roles before the entire hour is consumed, it’s still metered for the full hour.&lt;br /&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Multiple Deployments in a Clock-Hour&lt;/h3&gt;Let’s say I delete my deployment after only 5 minutes. And then I decide to deploy again to Production. At this moment, the clock starts again for my new deployment. Using our sample app above, with one worker role and one web role:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deploy to Production at 4:16pm, delete deployment at 4:21pm. &lt;strong&gt;Compute-hours billed: 2&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Deploy again to Production at 4:25pm, delete deployment at 4:30pm. &lt;strong&gt;Compute-hours billed: 2&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Total clock time: 14 minutes. Total compute-hours: 4&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;I realize this is a contrived example, but I want to emphasize the fine details of compute-hours:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Each instance is metered from the moment it comes to life in a Virtual Machine.&lt;/li&gt;&lt;li&gt;Compute-hours are rounded up to the nearest hour. So a service is metered at 1 compute-hour, whether it runs for only 5 minutes or 59 minutes.&lt;/li&gt;&lt;li&gt;Services deployed within the same clock-hour are completely unrelated, billing-wise. If you stop and delete your application and then deploy it again, all within the same clock-hour, you will still be billed separately for each deployment.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-923620138519780106?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/923620138519780106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-staging-and-compute-hour-metering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/923620138519780106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/923620138519780106'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/azure-staging-and-compute-hour-metering.html' title='Azure: Staging and Compute-Hour Metering'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pDxkiWcYI/AAAAAAAAAdg/9QfyNe2Ipbw/s72-c/prod-and-staging_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8289108746140888756</id><published>2010-04-07T18:29:00.001-04:00</published><updated>2010-04-08T18:42:27.706-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>April 14: Silverlight 4 Talk at RockNUG</title><content type='html'>&lt;p&gt;On Wednesday, April 14, I'll be giving a Silverlight 4 talk at the &lt;a href="http://www.rocknug.org/" target="_blank"&gt;Rockville .NET User Group&lt;/a&gt;.    &lt;br /&gt;    &lt;br /&gt;Silverlight 4 was first introduced at PDC in November, and has some really cool new enhancements. I'll be showing a bunch of these, and I’ll make my demo code available for you to download and try out on your own.&lt;/p&gt;  &lt;p&gt;Now for the even-cooler cool part: &lt;strong&gt;Silverlight 4 officially ships April 13&lt;/strong&gt;, &lt;em&gt;only one day prior to this talk!&lt;/em&gt; So this will be one of the first user group demos where you’ll see the officially-official Silverlight 4 in action! &lt;/p&gt;  &lt;p&gt;The fun starts at 6:30, when &lt;a href="http://msmvps.com/blogs/vcsjones/" target="_blank"&gt;Kevin Jones&lt;/a&gt; shows off debugging in Windows 7 and XP at the same time. Then we chow down on pizza and guzzle delicious carbonated beverages. And then it’s time for some Silverlight Goodness!&lt;/p&gt;  &lt;p&gt;Oh… did I mention door prizes???&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;See you there!&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8289108746140888756?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8289108746140888756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/april-14-silverlight-4-talk-at-rocknug.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8289108746140888756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8289108746140888756'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/april-14-silverlight-4-talk-at-rocknug.html' title='April 14: Silverlight 4 Talk at RockNUG'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8258619723327280419</id><published>2010-04-02T20:32:00.001-04:00</published><updated>2010-04-02T20:32:09.574-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><title type='text'>My New Shortlink</title><content type='html'>&lt;p&gt;I'm really enjoying the benefits of link-tracking, and I make use of &lt;a href="http://bit.ly" target="_blank"&gt;http://bit.ly&lt;/a&gt; on a daily basis. Recently I applied for a bit.ly Pro account, which I received today. In honor of the occasion, I registered a new short-name for all my new short links: &lt;a href="http://dmak.us"&gt;&lt;strong&gt;http://dmak.us&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What’s really cool: Now that I have my new shortlink, all my old &lt;a href="http://bit.ly"&gt;http://bit.ly&lt;/a&gt; links work with &lt;a href="http://dmak.us"&gt;http://dmak.us&lt;/a&gt; as well. For instance, both of these links go to &lt;a href="http://www.davidmakogon.com"&gt;http://www.davidmakogon.com&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;#160;&lt;a title="http://dmak.us/97RU2K" href="http://dmak.us/97RU2K"&gt;http://dmak.us/97RU2K&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://dmak.us/97RU2K" href="http://bit.ly/97RU2K"&gt;http://bit.ly/97RU2K&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Plus,&amp;#160; my statistics for older links remain unchanged.&lt;/p&gt;  &lt;p&gt;Currently bit.ly Pro is in beta. Applications are being accepted &lt;a href="http://spreadsheets.google.com/viewform?formkey=dEJEdEVuQnRtZG9kdjExb3NEczlud0E6MA"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you’re viewing this blog post, that means my new shortlink is working. Thanks for visiting!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8258619723327280419?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8258619723327280419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/04/my-new-shortlink.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8258619723327280419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8258619723327280419'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/04/my-new-shortlink.html' title='My New Shortlink'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8938325540036546128</id><published>2010-03-18T10:17:00.001-04:00</published><updated>2010-03-18T12:29:07.177-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GiveCamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Sitefinity'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>Installing Telerik’s Sitefinity CMS</title><content type='html'>&lt;p&gt;So I’m only a day away from heading to the &lt;a href="http://www.somdgc.org" target="_blank"&gt;east coast’s first Give Camp&lt;/a&gt;, where I’ll be working with about 100 other volunteers to build websites for non-profit organizations in the Southern Maryland area. &lt;strong&gt;&lt;em&gt;Shameless plug: If you’re a developer and you’re available this weekend, March 19-21, we still need more volunteers! Sign up at &lt;a href="http://www.somdgc.org" target="_blank"&gt;www.somdgc.org&lt;/a&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We’ll have only one little infinite weekend to accomplish this for 19 non-profits! So… then the question becomes, &lt;em&gt;how are we gonna get this done???&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The teams have several options, and it’s up to each team lead to decide on the most efficient technology for their team.&amp;#160; I heard at least one team is using &lt;a href="http://sharepoint.microsoft.com/Pages/Default.aspx" target="_blank"&gt;SharePoint&lt;/a&gt;, and several are using &lt;a href="http://www.dotnetnuke.com/" target="_blank"&gt;DotNetNuke&lt;/a&gt;. The only restriction we have: it must be hostable at &lt;a href="http://www.discountasp.net" target="_blank"&gt;DiscountASP&lt;/a&gt;, who’s sponsoring free hosting for all completed sites.&lt;/p&gt;  &lt;p&gt;Telerik is sponsoring &lt;a href="http://www.sitefinity.com/" target="_blank"&gt;Sitefinity&lt;/a&gt; CMS licenses, so I thought I’d install it and get familiar with it, as I haven’t used it before. I’m glad I took the time to work this out &lt;em&gt;before &lt;/em&gt;the actual Give Camp, as it took me a bit of time to work through the issues. So I’ll summarize the easiest way to blast through the install and avoid the issues I ran into.&lt;/p&gt;  &lt;h4&gt;Step 1: Follow the directions&lt;/h4&gt;  &lt;p&gt;No, I’m not being sarcastic here. After I simply downloaded and ran the setup, and received several errors (including the inability to create the telerik virtual directory), I did a bit of googling on bing, and found the &lt;a href="http://www.sitefinity.com/support/installation-guide.aspx" target="_blank"&gt;Sitefinity installation guide&lt;/a&gt;. While the guide calls out Vista, the steps work equally well in Windows 7. Seriously, follow this guide step-by-step, and you should be up and running.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://twitter.com/jrpendarvis" target="_blank"&gt;Jim Pendarvis&lt;/a&gt;, our Give Camp Fearless Leader, for pointing out this &lt;a href="http://tv.telerik.com/sitefinity/video/bullet-proof-guide-installing-sitefinity-3x" target="_blank"&gt;most-excellent webcast&lt;/a&gt; showing how to follow the directions. So now, with both the installation guide and the video, you’ll be all set.&lt;/p&gt;  &lt;h4&gt;Step 2: Follow the directions&lt;/h4&gt;  &lt;p&gt;Seriously, step 1 is what you need. But since I have a Step 2 now, let me call out a few things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Several steps reference the app pool configuration (mainly Step 2). If you are running a 64-bit Windows installation, you will likely see an HTTP error 404.17 when trying to run the Sitefinity Project Manager. This is because the app pool must be configured to run 32-bit applications. Here are &lt;a href="http://www.sitefinity.com/support/forums/sitefinity-3-x/set-up-installation/http-error-404-17.aspx" target="_blank"&gt;detailed instructions&lt;/a&gt; for doing this.&lt;/li&gt;    &lt;li&gt;The installation guide talks about creating databases, in Step 8. This will save much pain and anguish. Once you have your site created, manually create the database and then specify that database in Sitefinity’s Site Creation Wizard.&lt;/li&gt;    &lt;li&gt;When specifying your database, be sure to select the SQL Server 2005 / 2008 option, &lt;em&gt;even if you’re using SQL Express.&lt;/em&gt; For the database path, you can then point to localhost\SQLExpress&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Step 3: Start building your first Sitefinity CMS&lt;/h4&gt;  &lt;p&gt;Once I worked through the issues with the app pool and database, I was off and running. I built a very simple site just to get familiar with the product. It appears to be very straightforward and has several features that our non-profits are looking for (such as a discussion forum for members of their organization, a much-needed feature for the group I’m working with).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8938325540036546128?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8938325540036546128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/03/installing-teleriks-sitefinity-cms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8938325540036546128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8938325540036546128'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/03/installing-teleriks-sitefinity-cms.html' title='Installing Telerik’s Sitefinity CMS'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6501315243217454733</id><published>2010-03-12T14:48:00.001-05:00</published><updated>2010-10-05T16:07:02.926-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure Billing'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='David Makogon'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Azure: The true cost of web and worker roles</title><content type='html'>Since February 1, Azure customers are now being billed for their consumption of Azure resources. If you were an early adopter, you might have been spoiled by the free usage during CTP over the past year, or even during January of this year, when “mock bills” were generated but no actual costs accrued.&lt;br /&gt;Recently I’ve been fielding questions about the true expense of running Azure web roles and worker roles, including questions about Microsoft’s “free” account for MSDN Premium developers. Let me share a few tidbits here that will, hopefully, help you manage your Azure costs.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Roles and Virtual Machines&lt;/h3&gt;First things first: web and worker roles are hosted in virtual machines (VMs). Each role deploys to its own VM. So, if you have a web role for your Silverlight application, and a worker role for some background tasks (like periodically fetching data from an external source and storing it in SQL Azure), you will actually consume two VMs, one for each role.&lt;br /&gt;&lt;h3&gt;Virtual Machines and Instances&lt;/h3&gt;Ok, next up: &lt;em&gt;instances.&lt;/em&gt; At the most basic level, you could view a VM as synonymous with an &lt;em&gt;instance, &lt;/em&gt;and in the example above, you’d have two instances. Things take a twist, though, when you consider that Azure offers multiple VM sizes. The smallest size sets the baseline, and is equivalent to 1 instance:&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0" style="width: 400px;"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td valign="top" width="140"&gt;Type&lt;/td&gt;        &lt;td valign="top" width="141"&gt;Instance count&lt;/td&gt;        &lt;td valign="top" width="117"&gt;Cost per hour&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td valign="top" width="140"&gt;Small&lt;/td&gt;        &lt;td valign="top" width="141"&gt;1&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.12&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td valign="top" width="140"&gt;Medium&lt;/td&gt;        &lt;td valign="top" width="141"&gt;2&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.24&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td valign="top" width="140"&gt;Large&lt;/td&gt;        &lt;td valign="top" width="141"&gt;4&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.48&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td valign="top" width="140"&gt;Extra Large&lt;/td&gt;        &lt;td valign="top" width="152"&gt;8&lt;/td&gt;        &lt;td valign="top" width="148"&gt;0.96&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Each of the VMs vary by number of CPU cores, RAM and disk space. The price scales along with the instance count, so an Extra Large VM costs 8x what a Small VM costs.&lt;br /&gt;Instances running ‘round-the-clock effectively cost 24 hours x 0.12 x 30 days =&lt;strong&gt; $86 monthly &lt;/strong&gt;for a Small VM, up to about&lt;strong&gt; $690 monthly&lt;/strong&gt; for an Extra large VM.&lt;br /&gt;Microsoft bills in &lt;em&gt;instance-hours&lt;/em&gt;. So you might be billed 48 instance-hours on a given 24-hour period, which either means you had two Small VM running for 24 hours or one Medium VM running for 24 hours.&lt;br /&gt;&lt;h3&gt;Instances and Lifetimes&lt;/h3&gt;Now we’re getting to the fun part. Let’s say you just created a brand new Azure service, setting up a new name (like MyCoolApp.cloudapp.net). You just finished your first code iteration, and you publish your code to that new service of yours. Just two roles, both set up with one Small VM each.&lt;br /&gt;You might notice that it takes a few minutes to deploy your code to that new service. Why? Because Azure is spinning up new VMs for you. Why is that important? Hold that thought a moment…&lt;br /&gt;Ok, you’re done uploading and deploying, and &lt;em&gt;finally&lt;/em&gt;, the Azure dashboard tells you your app is running. &lt;strong&gt;&lt;em&gt;You are officially on the clock.&lt;/em&gt;&lt;/strong&gt; You are now being billed for your two instances.&lt;br /&gt;Now let’s get back to the point about your two new VMs. You might decide that, after your first set of tests, you’re going to &lt;em&gt;suspend &lt;/em&gt;your new service. That is, leave everything uploaded (so you can show off your new app to the Boss later today). Guess what: &lt;strong&gt;&lt;em&gt;You are still officially on the clock.&lt;/em&gt;&lt;/strong&gt; The simple truth is, Azure is still hosting two VMs for you, each taking up a “slot” in the cloud fabric. So you’re still being billed for it, whether the web and worker roles are running or suspended.&lt;br /&gt;&lt;h3&gt;Lifetimes and Clock time&lt;/h3&gt;Alright – if you’ve gotten this far, you’ve realized that your newly-deployed app, even in a suspended state, is going to burn through hours pretty quickly. And if you’re an MSDN Premium subscriber, with 750 free compute-hours monthly, you might have just done some quick math:&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;2 instances x 24 hours x 30 days = 1,440 hours !!!&lt;/strong&gt;&lt;/blockquote&gt;Essentially, your MSDN account is good for one Small VM (equal to 1 instance) running ‘round the clock, as that 1 instance burns just under 750 compute-hours.&lt;br /&gt;So you quickly scramble to delete your deployment from your service (don’t worry, your service definition, and fancy URL, stay in place; just your code and VMs get deleted). Lucky for you, your app was only live for about 10 minutes before you discovered this. So You can afford to deploy several times daily with little-to-no risk, as long as you delete the deployment after each test / demo cycle. Right?&lt;br /&gt;Well, not quite right. When you deploy a VM, you are billed hourly. So even if the VM is up for 10 minutes, you are billed for a compute-hour. Since our example is using two instances, we’ve consumed 2 compute-hours in a very short time.&lt;br /&gt;&lt;h3&gt;Clock time vs CPU time&lt;/h3&gt;This final per-instance tidbit might be obvious by now, but I’ll call it out anyway, just for good measure. Each VM, whether suspended or active, is costing you in compute-hours. And to take that one step further: Even VMs sitting around mostly idle &lt;em&gt;still consume compute-hours at the same rate.&lt;/em&gt; Let’s go back and think about that worker role we have. Maybe it wakes up every 24 hours and fetches temperature data, and stores it in your local database. Maybe that service call takes, oh, 10 seconds to retrieve all needed data, and another few seconds to store it. Then it goes to sleep for 23.99 hours. &lt;em&gt;You are still running at 0.12 cents per instance-hour.&lt;/em&gt;&lt;br /&gt;&lt;h2&gt;Cost-based architecture&lt;/h2&gt;&lt;h3&gt;What to do today&lt;/h3&gt;So here we are, fully armed with the true cost of these web and worker roles. And here we are, with our elegant Azure application architecture, with a web role for our Silverlight app, a WCF web role for our service tier, and one worker role for each 3rd-party service we want to interact with (that way, we have a very modular system, with each role doing only what it needs to). You probably see where I’m going with this: While our web role is going to be super-busy (and we might need to scale it up to handle our web traffic), and our WCF web role might have to be scaled up as well, our worker roles will likely remain at 1 instance per 3rd-party service.&lt;br /&gt;From a cost perspective, each of those worker roles, sitting almost-completely idle, is burning $86 monthly. Just three external services and you’re up to $250 per month.&lt;br /&gt;Going back to the MSDN Premium accounts, you would require 5 instances running, in order to test your application. That means you’d burn through your 750 hours in about 6 days.&lt;br /&gt;You will want to consider Azure’s pricing model when developing your architecture. The cost structure associated with instances and their lifetimes may mean making compromises such as rolling all of your 3rd-party integration code into a single worker role, and managing your polling intervals accordingly.&lt;br /&gt;&lt;h3&gt;Future-thinking&lt;/h3&gt;The Azure team is reaching out to the community, asking for input about future ideas, where you can suggest a new idea or vote on someone else’s idea&amp;nbsp; (&lt;strong&gt;check out the voting site &lt;/strong&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/" target="_blank" title="My Great Windows Azure Idea"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;). I want to draw your attention to a few ideas that could really help reduce cost:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/397209-provide-multiple-roles-per-instance?ref=title" target="_blank" title="Provide multiple roles per instance"&gt;Provide multiple roles per instance&lt;/a&gt;. The idea would be to host, say, all of your worker roles in a single instance. Maybe this wouldn’t help with your web roles, since they’ll likely be much busier, but for lower-usage worker roles, this could work out nicely. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/396309-provide-a-way-to-schedule-worker-roles-so-they-onl?ref=title" target="_blank" title="Provide a way to schedule worker roles so they only run when needed"&gt;Provide a way to schedule worker roles so they only run when needed&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/392901-make-it-less-expensive-to-run-my-very-small-servic?ref=title" target="_blank" title="Make it less expensive to run my very small service on Windows Azure"&gt;Make it less expensive to run my very small service on Windows Azure&lt;/a&gt;. While this topic is a bit heated, it’s gotten the attention of Mike Wickstrand, Senior Director of Azure Product Planning. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;What other great ideas would you add, to help create a more cost-effective model for your Azure rollout?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6501315243217454733?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6501315243217454733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/03/azure-true-cost-of-web-and-worker-roles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6501315243217454733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6501315243217454733'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/03/azure-true-cost-of-web-and-worker-roles.html' title='Azure: The true cost of web and worker roles'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3027123611947953148</id><published>2010-02-18T13:05:00.004-05:00</published><updated>2010-03-08T14:02:35.884-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework'/><title type='text'>Vote for upcoming Microsoft .NET Features</title><content type='html'>Microsoft has been very proactive in the Developer Community recently. Aside from forums, blogs, and tweets, I'm seeing more "voting" sites popping up, where developers may suggest and vote on new features or changes for upcoming software releases.&lt;br /&gt;&lt;br /&gt;Here's a list of feature-voting sites I know of, some hosted at UserVoice, some at Microsoft Connect . Please let me know if I've missed any and I'll add them.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://aspnet.uservoice.com/forums/41199-general" target="_blank"&gt;ASP.NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting" target="_blank"&gt;Azure&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/40626-windows-azure-appfabric-feature-voting" target="_blank"&gt;Azure AppFabric&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/pages/34685-sql-azure-feature-voting" target="_blank"&gt;SQL Azure&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/44459-sql-azure-data-sync-feature-voting" target="_blank"&gt;SQL Azure Data Sync&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions" target="_blank"&gt;WPF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions" target="_blank"&gt;Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://connect.microsoft.com/data/SearchResults.aspx?SearchQuery=WCF%2bData%2bServices" target="_blank"&gt;WCF Data Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://connect.microsoft.com/data/SearchResults.aspx?SearchQuery=Entity%2bFramework" target="_blank"&gt;Entity Framework&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3027123611947953148?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3027123611947953148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/02/vote-for-upcoming-microsoft-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3027123611947953148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3027123611947953148'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/02/vote-for-upcoming-microsoft-net.html' title='Vote for upcoming Microsoft .NET Features'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2381216860362317814</id><published>2010-02-04T14:49:00.003-05:00</published><updated>2010-02-10T18:25:27.211-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Feb 10 - A Taste of PDC: Silverlight 4 in Rockville, MD</title><content type='html'>&lt;span class="Apple-style-span" style="color: red;"&gt;Update: Due to the blizzardly weather here in Maryland, the February RockNUG meeting has been canceled. I'll be rescheduling this talk for April.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;s&gt;On Wednesday, February 10&lt;/s&gt;, I'll be giving a Silverlight 4 talk at the &lt;a href="http://www.rocknug.org/" target="_blank"&gt; Rockville .NET User Group&lt;/a&gt; monthly meeting. The Silverlight 4 beta was introduced at PDC in November and has some really cool new enhancements, including improved out of browser functionality, drag and drop, printing support, and Visual Studio enhancements. I'll also demonstrate some of the latest updates in the Silverlight Toolkit.&lt;br /&gt;&lt;br /&gt;If we make it through all of the demos, I'll show how to deploy a Silverlight app to Azure by pushing up our demo app.&lt;br /&gt;&lt;br /&gt;The fun starts at 6:30. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2381216860362317814?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2381216860362317814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/02/feb-10-silverlight-4-talk-rockville-md.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2381216860362317814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2381216860362317814'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/02/feb-10-silverlight-4-talk-rockville-md.html' title='Feb 10 - A Taste of PDC: Silverlight 4 in Rockville, MD'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1048747148445465759</id><published>2010-01-27T23:40:00.002-05:00</published><updated>2010-01-28T00:10:55.101-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='FredNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>FredNUG User Group – Silverlight 4 Presentation Materials</title><content type='html'>&lt;p&gt;On January 19th, I presented an introduction to Silverlight 4 and its new user interface enhancements. Here is the source code and PowerPoint from the talk.&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/FredNUG" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Some takeaways we discussed:&lt;/p&gt;  &lt;h4&gt;Out-of-browser support&lt;/h4&gt;  &lt;p&gt;Silverlight 4 now offers more capabilities when applications are installed out-of-browser. To enable this feature, look at the Silverlight project’s Properties. You’ll then see an option for enabling out-of-browser, follow&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S2EVR1Mm6xI/AAAAAAAAAY8/CAqoZsMeOKE/s1600-h/oob-option%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oob-option" border="0" alt="oob-option" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S2EVSNPU8MI/AAAAAAAAAZA/Un0GYYe6UDw/oob-option_thumb.png?imgmax=800" width="244" height="29" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;After selecting this option, view the out-of-browser settings:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S2EVSu6wsRI/AAAAAAAAAZE/-jpcWLqLagE/s1600-h/oob-settings%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oob-settings" border="0" alt="oob-settings" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S2EVS2W0heI/AAAAAAAAAZI/cCb0kWnuNz4/oob-settings_thumb.png?imgmax=800" width="200" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here, you can customize the shortcut name and window title, as well as a description that pops up when you float the mouse over your desktop shortcut. In our demo app, I also set the window size, based on our MainPage user control. &lt;/p&gt;  &lt;p&gt;We saw elevated trust in action with Tim Heuer’s &lt;a href="http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/network-authentication-trusted-network-access/" target="_blank"&gt;Twitter Example&lt;/a&gt;, where a WebClient call was made to the Twitter service without the need for a cross-domain policy, and where network credentials were specified. &lt;/p&gt;  &lt;p&gt;To demonstrate out-of-browser within our demo app,&amp;#160; I added another feature, “Notification Window,” to the demo code. This new feature allows you to pop up a notification box in the lower-right region of the screen,&amp;#160; similar to what you see with Microsoft Outlook. In the demo, drop a picture onto the drop target, and you’ll see a window pop up.&amp;#160; If you look at the code-behind, you’ll see two samples for setting up the notification window’s content. &lt;em&gt;Note: I intentionally omitted any code forcing you to install the demo as an out-of-browser app. This way, you can try out the notification window in the browser and observe the exception thrown.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Media support&lt;/h4&gt;  &lt;p&gt;You now have access to all of your audio and video devices. When I demo’d this, we had two webcams to choose from. . The first time you select a video device, you’ll see the Silverlight warning box. After you agree to allow the app to use the webcam, you won’t see the warning box again (until you restart the application). I added a Stop button, which returns the video rectangle to a green background.&lt;/p&gt;  &lt;h4&gt;Improved mouse support&lt;/h4&gt;  &lt;p&gt;Silverlight 4 now has events for right-click actions, as well as mouse scroll wheel support. I demo’d right-click support by adding a popup window when right-clicking the drop-target button.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Drag-n-drop support&lt;/h4&gt;  &lt;p&gt;You can now drag files from your desktop or file folders to a user interface element. I showed this by setting up a button as a drop-target. This button accepts image files such as png and jpg.&lt;/p&gt;  &lt;h4&gt;Visual Studio improvements&lt;/h4&gt;  &lt;p&gt;While this isn’t specifically related to Silverlight 4, Visual Studio 2010 now has a built-in XAML Visualizer. This means you no longer need to open Expression Blend simply to layout your user controls. Blend still has a considerable feature set beyond that of Visual Studio, but for general layout, the built-in visualizer should be fine.&lt;/p&gt;  &lt;h4&gt;Lots more!&lt;/h4&gt;  &lt;p&gt;There are many more features in Silverlight 4, such as the new printing capability and COM support. For a more complete list, check out &lt;a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx" target="_blank"&gt;Tim Heuer’s post&lt;/a&gt;, where he provides descriptions or samples for each of the new features.&lt;/p&gt;  &lt;p&gt;To get started, visit the &lt;a href="http://www.silverlight.net/getstarted/silverlight-4-beta/" target="_blank"&gt;Silverlight 4 developer page&lt;/a&gt; to grab the latest SDK and Silverlight developer runtime. You’ll also need Visual Studio 2010, which is currently in beta (Beta 2 Ultimate is available &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1048747148445465759?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1048747148445465759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/01/frednug-user-group-silverlight-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1048747148445465759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1048747148445465759'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/01/frednug-user-group-silverlight-4.html' title='FredNUG User Group – Silverlight 4 Presentation Materials'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_rKuJyBZ8UWY/S2EVSNPU8MI/AAAAAAAAAZA/Un0GYYe6UDw/s72-c/oob-option_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5918712986159476613</id><published>2010-01-27T16:39:00.000-05:00</published><updated>2010-01-27T16:39:23.123-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='MSDN'/><title type='text'>MSDN Premium Azure accounts</title><content type='html'>If you have an Azure account that you set up during the CTP (basically any time over the past year), you've no doubt received an email about upgrading it to a real account, or having your account disabled. You might have even wandered over to&amp;nbsp;&lt;a href="http://www.microsoft.com/windowsazure/pricing"&gt;Azure Pricing&lt;/a&gt;&amp;nbsp;site and saw the Introductory Special rates. And if you're an MSDN Premium subscriber, you probably jumped for joy when seeing the&lt;a href="http://www.microsoft.com/windowsazure/offers/popup.aspx?lang=en&amp;amp;locale=en-US&amp;amp;offer=MS-AZR-0005P"&gt; special MSDN plan&lt;/a&gt; set up with no monthly charges at all, including Azure storage, SQL Azure, and AppFabric usage.&lt;br /&gt;&lt;br /&gt;So of course, I jumped at the opportunity to sign up. And the process was relatively painless. It was easy to select the MSDN Premium plan. And then... there was billing.&lt;br /&gt;&lt;br /&gt;To complete the registration process, a credit card is required. My first thought is that I selected the wrong option. Or that I misread the MSDN Premium plan information. As it turns out, the credit card info is needed in case your account usage exceeds what's granted in the promotion (thanks to &lt;a href="http://blogs.msdn.com/SoCalDevGal/"&gt;Lynn Langit&lt;/a&gt;&amp;nbsp;&amp;nbsp;for the clarification). If you stay below the thresholds, no costs are incurred.&lt;br /&gt;&lt;br /&gt;So: Don't fear the credit card! Just keep an eye on your usage, and don't try hosting a commercial app on your free account...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5918712986159476613?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5918712986159476613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/01/msdn-premium-azure-accounts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5918712986159476613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5918712986159476613'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/01/msdn-premium-azure-accounts.html' title='MSDN Premium Azure accounts'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7897669141804382273</id><published>2010-01-20T13:06:00.000-05:00</published><updated>2010-01-20T13:06:39.869-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Voice'/><title type='text'>Google Voice and the Secret Sawbuck</title><content type='html'>&amp;nbsp;As of about two weeks ago, I joined the growing number of people with a Google Voice account. As I'm sure others know, there are some great features to this product, such as a unified phone number, online access to text messages/voicemail/call log, call redirection, etc.&lt;br /&gt;&lt;br /&gt;For those awaiting their invite, you'll be happy to know that you have the privilege of selecting your own Google Voice phone number. You can specify an area code (and GVoice presents you with a bunch of phone numbers within the one you chose). You can even enter any subset of numbers (maybe you just really want "90210" embedded in your number). But GVoice takes it up a notch: it lets you spell out a number with any alphanumeric mix (here's your chance to make your phone number U-CALL-ME or maybe DOTNET4 or whatever).&lt;br /&gt;&lt;br /&gt;There's one thing I wasn't aware of, though, that I stumbled into by accident today. Let's say you chose that super-snazzy number of yours. Like I did. Then, you had second thoughts. A quick trip to Settings presents you with a link to change your number. WSHEW!&lt;br /&gt;&lt;br /&gt;But WAIT! Here's the surprise. The "secret sawbuck," to be more precise: Upon clicking this seemingly-innocuous hyperlink, I was treated to this little gem:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_rKuJyBZ8UWY/S1dE-vZBIdI/AAAAAAAAAYo/xu7g-W4nM7Y/s1600-h/gvoice-upcharge.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_rKuJyBZ8UWY/S1dE-vZBIdI/AAAAAAAAAYo/xu7g-W4nM7Y/s320/gvoice-upcharge.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Not exactly what I was expecting. I guess I understand &lt;i&gt;why &lt;/i&gt;the $10 upcharge is in place. Without it, I'm guessing Google would see people changing their numbers on a whim, and this could be a great opportunity for telephone spammers.&lt;br /&gt;&lt;br /&gt;Still, I thought I'd point it out, so that new GVoice invitees are "in the know" before committing to their new number.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7897669141804382273?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7897669141804382273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/01/google-voice-and-secret-sawbuck.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7897669141804382273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7897669141804382273'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/01/google-voice-and-secret-sawbuck.html' title='Google Voice and the Secret Sawbuck'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rKuJyBZ8UWY/S1dE-vZBIdI/AAAAAAAAAYo/xu7g-W4nM7Y/s72-c/gvoice-upcharge.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-509957195711310370</id><published>2010-01-12T08:40:00.000-05:00</published><updated>2010-01-12T08:40:41.255-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silvleright'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><title type='text'>Jan. 19 - Silverlight 4 Talk at FredNUG</title><content type='html'>On Tuesday, Jan. 19, I'll be giving a Silverlight 4 talk at the &lt;a href="http://www.frednug.org/" target="_blank"&gt; Frederick .NET User Group&lt;/a&gt;. The Silverlight 4 beta was introduced at PDC in November and has some really cool new enhancements.&lt;br /&gt;&lt;br /&gt;The fun starts at 6:30. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-509957195711310370?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/509957195711310370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2010/01/jan-19-silverlight-4-talk-at-frednug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/509957195711310370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/509957195711310370'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2010/01/jan-19-silverlight-4-talk-at-frednug.html' title='Jan. 19 - Silverlight 4 Talk at FredNUG'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7664720276283266581</id><published>2009-11-14T10:02:00.001-05:00</published><updated>2010-06-04T12:13:40.664-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Testing'/><title type='text'>Web application load testing: My interview with LoadStorm</title><content type='html'>Scott Price, a founder of &lt;a href="http://www.loadstorm.com/" target="_blank"&gt;LoadStorm&lt;/a&gt;, recently interviewed me about my thoughts on web application load testing. The interview can be seen &lt;a href="http://bit.ly/4EDB2u" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7664720276283266581?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7664720276283266581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/11/web-application-load-testing-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7664720276283266581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7664720276283266581'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/11/web-application-load-testing-my.html' title='Web application load testing: My interview with LoadStorm'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-4640839780725126141</id><published>2009-10-31T12:43:00.002-04:00</published><updated>2009-10-31T12:43:57.519-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='SketchFlow'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Blend'/><title type='text'>Come Learn SketchFlow!</title><content type='html'>On Saturday, November 7, I'll be presenting an introduction to SketchFlow at the Central Maryland Association of .NET Professionals (CMAP) Code Camp in Columbia, Maryland.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A bit more info on my talk&lt;/strong&gt;:&lt;br /&gt;Microsoft's Expression Blend 3 has a baked-in tool called SketchFlow, targeted directly at prototyping your WPF and Silverlight applications.&amp;nbsp;In this talk, I'll walk through building a prototype and exercising several SketchFlow features available out-of-the-box. I'll also show how easy it is to distribute a prototype and get back annotated feedback from your reviewers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A bit more info about the code camp (&lt;/strong&gt;from &lt;a href="http://cmapcodecamp.org/"&gt;&lt;strong&gt;cmapcodecamp.org&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;):&lt;/strong&gt; The Code Camp will run from 8:30am - 5:30pm with 20-25 awesome sessions covering a wide range of database, software and portal development topics. It's totally free. No gimmicks. No sales pitches. Enjoy breakfast and lunch at no charge while you mingle with your peers&lt;strong&gt;. &lt;/strong&gt;To register for this event, visit &lt;a href="https://www.clicktoattend.com/invitation.aspx?code=141970"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For even &lt;strong&gt;more &lt;/strong&gt;info, visit &lt;a href="http://www.cmapcodecamp.org/"&gt;http://www.cmapcodecamp.org/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-4640839780725126141?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/4640839780725126141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/10/come-learn-sketchflow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4640839780725126141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4640839780725126141'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/10/come-learn-sketchflow.html' title='Come Learn SketchFlow!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8495838160969660438</id><published>2009-10-10T22:55:00.000-04:00</published><updated>2009-10-10T22:55:45.993-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='SketchFlow'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Blend'/><title type='text'>NoVa Code Camp - SketchFlow presentation materials</title><content type='html'>Today I presented an introduction to SketchFlow at the Northern Virginia Code Camp (&lt;a href="http://www.novacodecamp.org/" target="_blank"&gt;http://www.novacodecamp.org/&lt;/a&gt;). Thanks to those who attended my session!&lt;br /&gt;&lt;br /&gt;Here are the presentation materials.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-9153bb9d3667f0eb.skydrive.live.com/embedicon.aspx/NoVaCC/2009Oct-SketchFlow" style="background-color: #fcfcfc; height: 115px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Some takeaways we discussed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SketchFlow is &lt;em&gt;not &lt;/em&gt;just for WPF and Silverlight prototyping! While it certainly fits well with a WPF/Silverlight project because of the consistent toolset (using Blend for both prototyping and "real" form development), there's nothing stopping you from prototyping a WinForms or asp.net application.&lt;/li&gt;&lt;li&gt;SketchFlow has a built-in feedback and markup mechanism (for the reviewers), and annotations (for the prototype author)&lt;/li&gt;&lt;li&gt;SketchFlow provides a&amp;nbsp;screen navigation map, navigation links, and animation links. The latter allows you to provide "what-if" simulated user actions without actually wiring these animations up to a specific UI element. This is very useful to show alternate behaviors for a given action - recall the demo I showed with &lt;em&gt;PassEmployeeAnimation&lt;/em&gt; and &lt;em&gt;FailEmployeeAnimation.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;SketchFlow projects are simple to build and deploy. Silverlight deployment is easier than WPF deployment: just copy your packaged prototype to a website virtual directory, as we saw today on my laptop at http://localhost:9999/)&lt;/li&gt;&lt;li&gt;SketchFlow helps remove the distraction of &lt;em&gt;pixel-peepers &lt;/em&gt;who get distracted by exact look-n-feel of production-style user controls and graphics.&lt;/li&gt;&lt;li&gt;You can work with your prototype screens just like any other XAML form from a Silverlight or WPF app: you can easily view the XAML and make changes to things like a listbox DataTemplate (as I demonstrated with the Interview Question listbox).&lt;/li&gt;&lt;li&gt;Last, but not least: Since there's no real code behind the prototype, you won't get stuck in the &lt;em&gt;prototype-gets-turned-into-a-real-app &lt;/em&gt;trap.&lt;/li&gt;&lt;/ul&gt;I'll leave you with one final super-cool tidbit: After loading up the demo prototype, go to the &lt;strong&gt;File&lt;/strong&gt; menu and choose &lt;strong&gt;Export to Microsoft Word...&lt;/strong&gt;&amp;nbsp;&amp;nbsp; This feature builds a document for you complete with table of contents, screens, component screens, and navigation map. I generated Word output from today's demo and put it online along with the other demo files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8495838160969660438?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8495838160969660438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/10/nova-code-camp-sketchflow-presentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8495838160969660438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8495838160969660438'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/10/nova-code-camp-sketchflow-presentation.html' title='NoVa Code Camp - SketchFlow presentation materials'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6353835858188809963</id><published>2009-10-07T18:22:00.001-04:00</published><updated>2009-10-07T18:24:22.267-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Editorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Richmond Code Camp - A look back</title><content type='html'>Over the past year, I've been getting more involved in the software development user community. I've become an active member and presenter at the &lt;a href="http://www.rocknug.org/" target="_blank"&gt;Rockville .NET user group&lt;/a&gt;, presented at Microsoft TechDays 2008, and presented a few topics at the &lt;a href="http://www.novacodecamp.org/" target="_blank"&gt;Northern Virginia Code Camp&lt;/a&gt;, including *shameless plug* an upcoming&amp;nbsp;&lt;a href="http://bit.ly/1M8DKC" target="_blank"&gt;introduction to SketchFlow&lt;/a&gt; this Saturday, Oct. 10.&lt;br /&gt;&lt;br /&gt;A few days ago, I attended the &lt;a href="http://richmondcodecamp.org/" target="_blank"&gt;Richmond Code Camp&lt;/a&gt;, but as an attendee instead of a presenter. Though I'm still kicking myself for not signing up to speak there, I must admit that the Richmond Code Camp was a very valuable experience to me. In case you're on the fence about attending a Code Camp in your area, let me share a few of my takeaways and (possibly) sway your decision.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;For the community, by the community&lt;/strong&gt;&lt;br /&gt;Code Camps are free for attendees. And the content is presented by volunteers. At RCC, speaker experience varied from first-timer to seasoned MVP.&amp;nbsp;Some were local, some came from hundreds of miles away. Some showed slides, some cranked code. Regardless, these presenters took time to build some great learning material, posted samples on their blogs, and made themselves available for Q&amp;amp;A during (and even after) their sessions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;br /&gt;If you've been trying to meet some people who are knowledgeable (or experts) in a particular area, Code Camps are great for that. At RCC, there were experts in so many area: XNA, presentation patterns, .NET memory management, CLR and DLR inner workings, LINQ and expression trees, ORM, git... the list goes on and on. It was very easy to meet people, exchange contact info (twitter seemed to be the most popular way), find out about user groups, even inquire about possible career opportunities. I'm now following a slew of people I met at RCC, and it's great seeing the contributions they make to the developer community.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Not just for beginners&lt;/strong&gt;&lt;br /&gt;You might think Code Camps are more beginner-oriented. While there &lt;i&gt;are&lt;/i&gt;&amp;nbsp;beginner sessions (many, in fact), there are definitely advanced topics as well. At RCC, some of the more advanced topics covered expression trees and in-memory lambda compilation; C# garbage collection algorithms and performance issues; app dev with XML databases; and Cloud Computing with Azure, just to name a few.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Looking back&lt;/strong&gt;&lt;br /&gt;When I signed up for RCC, I was content just being an attendee. As soon as I showed up, though, I was kicking myself for not preparing a talk! This was a great group of people, and there was definitely a level of excitement buzzing through the halls (and on Twitter - just check out &lt;a href="http://bit.ly/zUwHa" target="_blank"&gt;#RicCC&lt;/a&gt;). This was a great venue for sharing.&lt;br /&gt;&lt;br /&gt;The Fall Season of Code Camps is upon us. Several are coming up soon, including Philadelpha PA, Charlotte NC, Columbia MD, and Reston VA just to name a few. If you have the time, I urge you to visit one, either as an attendee or as a presenter. If you've ever wanted to do a tech talk, but find the crowds intimidating, Code Camps are very relaxed and casual, with sometimes no more than 10-15 people in a classroom. And... people tend to be very understanding if things don't go exactly to plan (projector woes, lost slides, crashing code... "it" happens...).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;More info&lt;/strong&gt;&lt;br /&gt;To find out about the Code Camps and user group meetings in your area, check out&amp;nbsp;&lt;a href="http://www.communitymegaphone.com/" target="_blank"&gt;Community Megaphone&lt;/a&gt;, a great resource built by &lt;a href="http://blogs.msdn.com/gduthie/" target="_blank"&gt;G. Andrew Duthie&lt;/a&gt;, a Microsoft Developer Evangelist in the Northern Virginia area.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Did I sway you?&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6353835858188809963?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6353835858188809963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/10/richmond-code-camp-look-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6353835858188809963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6353835858188809963'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/10/richmond-code-camp-look-back.html' title='Richmond Code Camp - A look back'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-4653573219445997651</id><published>2009-09-17T13:16:00.001-04:00</published><updated>2009-09-17T14:45:50.278-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Silverlight Firestarter is online now</title><content type='html'>If you're interested in learning about Silverlight 3, it's being streamed live right now (&lt;a href="http://www.msdnevents.com/firestarter/online/index.html"&gt;here&lt;/a&gt;).&lt;br /&gt;The archived presentation will be available online in about a week.&lt;br /&gt;Slides are available &lt;a href="http://blogs.msdn.com/mithund/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Presenter pages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scott Guthrie: &lt;a href="http://weblogs.asp.net/scottgu/"&gt;http://weblogs.asp.net/scottgu/ &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tim Heuer: &lt;a href="http://timheuer.com/"&gt;http://timheuer.com&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Adam Kinney: &lt;a href="http://adamkinney.com/"&gt;http://adamkinney.com/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-4653573219445997651?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/4653573219445997651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/09/silverlight-firestarter-is-online-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4653573219445997651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4653573219445997651'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/09/silverlight-firestarter-is-online-now.html' title='Silverlight Firestarter is online now'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3873337634517367031</id><published>2009-09-10T16:06:00.000-04:00</published><updated>2009-09-10T16:06:18.039-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Blend'/><title type='text'>Upcoming talk: Intro to SketchFlow</title><content type='html'>On October 14, I'll be presenting an intro to SketchFlow, the UI prototyping tool built into Microsoft Expression Blend 3.0. The talk will be at the monthly Rockville .NET User Group meeting in Rockville, MD. See &lt;a href="http://www.rocknug.org/"&gt;http://www.rocknug.org/&lt;/a&gt; for more info and directions.&lt;br /&gt;&lt;br /&gt;Stick around afterward for Q&amp;amp;A, plenty of pizza, and an ASP.NET 4.0 talk by Kevin Jones, a local Microsoft MVP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3873337634517367031?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3873337634517367031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/09/upcoming-talk-intro-to-sketchflow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3873337634517367031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3873337634517367031'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/09/upcoming-talk-intro-to-sketchflow.html' title='Upcoming talk: Intro to SketchFlow'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8670705197424778311</id><published>2009-08-12T01:22:00.002-04:00</published><updated>2009-08-12T01:27:29.482-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='SourceCode'/><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><title type='text'>RockNUG materials: Intro to WPF</title><content type='html'>&lt;div&gt;For those of you that attended my WPF talk in July at RockNUG, the demos and slide deck are on my shared SkyDrive:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://cid-9153bb9d3667f0eb.skydrive.live.com/browse.aspx/RockNUG" target="_blank"&gt;http://cid-9153bb9d3667f0eb.skydrive.live.com/browse.aspx/RockNUG&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I also uploaded the WPF-based snippets tool that I was using, along with the c# snippets that I applied to the demo code. It's pretty easy to create your own snippets as well - the instructions are bundled in the zip file.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8670705197424778311?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8670705197424778311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/08/rocknug-materials-intro-to-wpf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8670705197424778311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8670705197424778311'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/08/rocknug-materials-intro-to-wpf.html' title='RockNUG materials: Intro to WPF'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3403033475192436816</id><published>2009-07-22T15:57:00.005-04:00</published><updated>2009-07-22T17:13:28.418-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='RTM'/><title type='text'>Windows 7 Availability Summary</title><content type='html'>&lt;div&gt;In case you're dying to get your hands on the upcoming Windows 7, the official availability schedule is now published. It can't be purchased until October 22, but if you're a Microsoft partner or software developer, you'll be able to get it much earlier.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;UPDATE: Both Windows 7 and Windows 2008 R2 have officially RTM'd.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows 7 RTM announcement &lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Windows 2008 R2 RTM announcement &lt;a href="http://blogs.technet.com/windowsserver/archive/2009/07/22/windows-server-2008-r2-rtm.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;Here's a chronological summary, which I originally posted &lt;a href="http://rdaarchitecture.blogspot.com/2009/07/windows-7-availability-summary.html" target="_blank"&gt;here&lt;/a&gt;:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Two days after official RTM: OEMs&lt;/li&gt;&lt;li&gt;August 6: Downloadable for ISVs, IHV's, TechNet subscribers, MSDN subscribers&lt;/li&gt;&lt;li&gt;August 7: Downloadable for Volume Licence with Software Assurance (English only)&lt;/li&gt;&lt;li&gt;August 16: Downloadable for Partner Program Gold / Certified members (English-only)&lt;/li&gt;&lt;li&gt;August 23: Downloadable for Action Pack subscribers (English Only)&lt;/li&gt;&lt;li&gt;September 1: Purchasing for Volume License without Software Assurance (no mention of specific language availability) &lt;/li&gt;&lt;li&gt;By October 1: Downloadable for Partner Program Gold / Certified members, Action Pack subscribers, TechNet subscribers, MSDN subscribers (remaining languages)&lt;/li&gt;&lt;li&gt;October 22: Purchasing at retail locations&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3403033475192436816?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3403033475192436816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/windows-7-availability-summary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3403033475192436816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3403033475192436816'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/windows-7-availability-summary.html' title='Windows 7 Availability Summary'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-4098067463644107883</id><published>2009-07-21T01:08:00.002-04:00</published><updated>2009-07-21T01:14:22.574-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Azure SDK July CTP - Multiple web and worker roles</title><content type='html'>For those of you playing around with Microsoft's cloud computing platform (Azure), the latest community technology preview of the SDK went out today. This comes only 2 weeks after the Azure platform was upgraded (back on July 7), and the SDK now supports deployment of multiple web roles and worker roles within a single cloud service.&lt;br /&gt;&lt;br /&gt;I just finished writing up details of the new cloud service creation wizard on the RDA Architecture blog. You can see that &lt;a href="http://rdaarchitecture.blogspot.com/2009/07/azure-sdk-july-ctp-multiple-web-and.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Microsoft Azure team published a feature summary and download link &lt;a href="http://blogs.msdn.com/windowsazure/archive/2009/07/20/july-ctp-of-windows-azure-sdk-released.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-4098067463644107883?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/4098067463644107883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/azure-sdk-july-ctp-multiple-web-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4098067463644107883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/4098067463644107883'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/azure-sdk-july-ctp-multiple-web-and.html' title='Azure SDK July CTP - Multiple web and worker roles'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2580704204028309707</id><published>2009-07-15T10:24:00.001-04:00</published><updated>2009-07-15T10:26:39.326-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Fireworks'/><title type='text'>Fireworks 2009</title><content type='html'>&lt;div&gt;Just a bit of fun - here's a set of fireworks I shot on the 4th. These were taken in Gaithersburg, MD, at the Montgomery County Fairgrounds.&lt;/div&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2F52273610%40N00%2Fsets%2F72157621501288824%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2F52273610%40N00%2Fsets%2F72157621501288824%2F&amp;set_id=72157621501288824&amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2F52273610%40N00%2Fsets%2F72157621501288824%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2F52273610%40N00%2Fsets%2F72157621501288824%2F&amp;set_id=72157621501288824&amp;jump_to=" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2580704204028309707?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2580704204028309707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/fireworks-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2580704204028309707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2580704204028309707'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/fireworks-2009.html' title='Fireworks 2009'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-5044119476277736876</id><published>2009-07-10T22:38:00.006-04:00</published><updated>2009-07-10T23:57:56.813-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='SpiderOak'/><title type='text'>SpiderOak saves the day in unexpected way</title><content type='html'>&lt;div&gt;Ok, I'll admit it - I'm a computer geek. After over 20 years in the industry, I still go gaga over the Next New Toy, regardless whether it's software or hardware. So, of course, I tas totally stoked last week when I finally broke down and purchased an offsite storage solution.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I'm sure everyone has an opinion on the best solution, but for my needs and my reasons, I bought SpiderOak. So far, it's been extremely easy to work with, across both Mac and Windows laptops and desktops. I found out that a single account supports all of my computers, as long as I don't exceed my storage allocation, and this has already come in very handy.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;But, as I'm not affiliated with SpiderOak an any way,  I'm not rambling to convince you to buy this product (although I'm guessing you'd greatly benefit from it). No, I'm here to pat myself on the back for finding an unintended use of this backup tool, one which helped considerably this morning.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I'm currently 200 miles from home, in a remote campsite (with a laptop and data card, of course). This morning, the family and  I treked out to one of these underground caverns. I, being the family photog, had chewed through all but one memory card during our vacation. I believe a 4-leter word might have danced across my lips as I noticed that I hadn't yet formatted the data card. This is when doubt set in - had I copied these pictures to my Mac yet? Of course! Most probably! I doubt I didn't! Um, I did, didn't I???&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It's not like I could call someone and have them go to my house and check. This would require 1) finding someone available, 2) giving that person my Mac password, and 3) walking someone through the steps of finding my files. This was not an enticing solution.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It was at that moment that I had my back-patting moment. I ran to the back of the car and fired up the laptop (yes, I dragged along, for fear of leaving it at the campsite). The family groaned in unison, but I convinced them to give me a few quick minutes to "check something," and to go find something fun in the gift shop (in the end, this suggestion cost me dearly, but that's another story).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After an agonizing 3 minutes, Vista was up, the data card was connected, and I was surfed into spideroak.com. A quick login later, and I was staring at my offsite file tree. A few more clicks, and I was all smiles. There, sitting in front of me, was a big fat file listing with all of my photos from my very last data card. Quick shutdown, quick in-camara card format, and quick trip to the gift shop (I was too late to thwart cheesy-gift-shop purchases), and we were off to the caverns, camera locked-n-loaded.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So: Kudos to SpiderOak for an easy-to-use tool that works just as advertised, with a very speedy and easy-to-navigate web interface. And, thanks for providing the bonus feature of allowing me to simply check for the existence of a set of files to ensure that I wasn't permanently deleting the only copy of my data.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Time to get back to vacation - the campfire is roaring and the back of my LCD is getting quite toasty. Good thing my laptop is backed up...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-5044119476277736876?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/5044119476277736876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/spideroak-saves-day-in-unexpected-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5044119476277736876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/5044119476277736876'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/spideroak-saves-day-in-unexpected-way.html' title='SpiderOak saves the day in unexpected way'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-989941881308678105</id><published>2009-07-07T20:35:00.003-04:00</published><updated>2009-07-07T21:03:49.696-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Telestream'/><category scheme='http://www.blogger.com/atom/ns#' term='WMV'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Flip4Mac'/><title type='text'>Flip4Mac 2.2.3.7 fixes WMV glitches</title><content type='html'>&lt;div&gt;While being a hardcore Microsoft .NET developer, I've been working on a Mac Pro for the past 15 months as my primary workstation. I've found a great balance, working with OSX as my core operating system and Vista under VMWare Fusion for my Windows development.  My biggest gripe so far has been the less-than-stellar support for WMV, which is video encoded with Microsoft's coding processor.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Most videos from Microsoft conferences and how-to's are WMV-encoded. I can't watch them smoothly in a virtual machine, so I'm usually watching these on my laptop.  I discovered Telestream's Flip4Mac last year, which allows the QuickTime player to play WMV-encoded video. This mostly works, but for some videos, the rendering becomes chunky or unreadable at times.  &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Today, Flip4Mac updated itself to version 2.2.3.7. This version seems to have finally fixed the chunky/unreadable video rendering issues. I went back to several videos that consistently failed to render, and they're all playing fine. For example, most of the videos at &lt;a href="http://www.endpoint.tv/"&gt;endpoint.tv&lt;/a&gt; had trouble rendering (for example, &lt;a href="http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Consuming-REST-services-with-HttpClient/" target="_blank"&gt;Consuming REST Services with HttpClient&lt;/a&gt;). They play fine now.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So if you're on a Mac and need to view WMV, I highly recommend Flip4Mac. Nicely done, Telestream!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-989941881308678105?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/989941881308678105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/flip4mac-2237-fixes-wmv-glitches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/989941881308678105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/989941881308678105'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/flip4mac-2237-fixes-wmv-glitches.html' title='Flip4Mac 2.2.3.7 fixes WMV glitches'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-147013860709451252</id><published>2009-07-02T22:15:00.007-04:00</published><updated>2009-07-04T00:01:05.792-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='RockNUG'/><category scheme='http://www.blogger.com/atom/ns#' term='User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='CompositeWPF'/><title type='text'>Upcoming talk July 8: Intro to WPF</title><content type='html'>&lt;div&gt;Next week (July 8), I'm presenting an intro to WPF at the Rockville .NET User Group (directions and info at &lt;a href="http://www.rocknug.org/"&gt;www.rocknug.org&lt;/a&gt;). Here's the synopsis of the talk:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;Yes, WPF lets you do some cool things with animation, but it is also a platform for building real world applications.  This presentation will start in shallow end of WPF basics and then dive deeper into architecture. I will cover the following topics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Why move from WinForms to WPF? Pros vs. (almost no) con's.&lt;/li&gt;&lt;li&gt;WPF architecture overview: what to know, what to embrace, etc.&lt;/li&gt;&lt;li&gt;Pattern focus: ViewModel&lt;/li&gt;&lt;li&gt;WPF vs. Silverlight (strictly from a feature perspective): What advantages and disadvantages are there?&lt;/li&gt;&lt;li&gt;Introduction to CompositeWPF (&lt;span style="font-style:italic;"&gt;this one goes to 11&lt;/span&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;Here's the schedule:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;6:30-7:00 - n00b Presentation: &lt;span style="font-weight:bold;"&gt;Getting Generic&lt;/span&gt; by Dean Fiala&lt;/li&gt;&lt;li&gt;7:00-7:30 - Pizza/Announcements&lt;/li&gt;&lt;li&gt;7:30-9:00 - Featured Presentation: &lt;span style="font-weight:bold;"&gt;WPF&lt;/span&gt; (me)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-147013860709451252?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/147013860709451252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/07/upcoming-talk-july-8-intro-to-wpf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/147013860709451252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/147013860709451252'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/07/upcoming-talk-july-8-intro-to-wpf.html' title='Upcoming talk July 8: Intro to WPF'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-2326303744366220705</id><published>2009-06-25T11:23:00.002-04:00</published><updated>2009-06-25T11:34:23.710-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><title type='text'>VMWare Fusion: Power-cycling a VM</title><content type='html'>For those who use VMWare Fusion (which is the Mac version of VMWare's virtual machine engine), I wanted to pass along this quick tip.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Every so often, one of my Vista VMs locks up on me. Typically it's during shutdown, but this morning it was actually during bootup. The normal Virtual Machine menu options &lt;b&gt;Shut Down Guest&lt;/b&gt; and &lt;b&gt;Restart Guest&lt;/b&gt; don't help at this point, because those are equivalent to clicking the Windows Start menu and selecting Shut down or Restart, and with Windows already locked up, that action doesn't do anything. And suspending the VM doesn't help, because when the VM's state is restored, so is its "locked up" condition.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All I wanted was a way to power-cycle my VM: force a shutdown just like pulling the plug. I finally discovered how to do this: After selecting the &lt;b&gt;Virtual Machine&lt;/b&gt; menu, hold down the &lt;b&gt;Option&lt;/b&gt; key. This changes two menu items:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Shutdown Guest&lt;/b&gt; becomes &lt;b&gt;Power Off&lt;/b&gt;. This is equivalent to yanking the power cord.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Restart Guest&lt;/b&gt; becomes &lt;b&gt;Reset&lt;/b&gt;. This is equivalent to yanking the power cord, plugging it back in, and restarting the machine.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-2326303744366220705?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/2326303744366220705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/06/vmware-fusion-power-cycling-vm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2326303744366220705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/2326303744366220705'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/06/vmware-fusion-power-cycling-vm.html' title='VMWare Fusion: Power-cycling a VM'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7858388892244610975</id><published>2009-06-18T16:11:00.001-04:00</published><updated>2009-06-18T16:13:07.232-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Cloud Computing User Group 6/18</title><content type='html'>I'll be in Reston, VA this evening for the Cloud Computing User Group. Tonight's presentation is about .NET Services, by Damon Squires of RDA.&lt;br /&gt;&lt;br /&gt;Info, signup and address here: https://www.clicktoattend.com/invitation.aspx?code=138684&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7858388892244610975?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7858388892244610975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/06/cloud-computing-user-group-618.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7858388892244610975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7858388892244610975'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/06/cloud-computing-user-group-618.html' title='Cloud Computing User Group 6/18'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8264789288228466875</id><published>2009-05-22T23:30:00.005-04:00</published><updated>2009-05-24T22:47:25.073-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='CompositeWPF'/><title type='text'>NoVa Code Camp Saturday!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rKuJyBZ8UWY/ShoGspTaH7I/AAAAAAAAASo/uML6h-V4jk8/s1600-h/speaking-nova-codecamp2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 150px;" src="http://1.bp.blogspot.com/_rKuJyBZ8UWY/ShoGspTaH7I/AAAAAAAAASo/uML6h-V4jk8/s400/speaking-nova-codecamp2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5339587672272412594" /&gt;&lt;/a&gt;&lt;br /&gt;It's finally here - this Saturday, starting at 8am, is the Northern Virginia Code Camp (&lt;a href="http://www.novacodecamp.org/" target="_blank"&gt;www.novacodecamp.org&lt;/a&gt;). Last I heard, registration is around 250 attendees.&lt;br /&gt;&lt;br /&gt;I just double-checked the schedule. My session, Intro to Composite Frameworks with Prism (now named CompositeWPF), is at 10:15.&lt;br /&gt;&lt;br /&gt;See the full schedule &lt;a href="http://www.novacodecamp.org/UpcomingCodeCamp/tabid/172/Default.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8264789288228466875?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8264789288228466875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/05/nova-code-camp-saturday.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8264789288228466875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8264789288228466875'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/05/nova-code-camp-saturday.html' title='NoVa Code Camp Saturday!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rKuJyBZ8UWY/ShoGspTaH7I/AAAAAAAAASo/uML6h-V4jk8/s72-c/speaking-nova-codecamp2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3019980810980206382</id><published>2009-05-20T23:45:00.001-04:00</published><updated>2010-06-04T12:26:02.880-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><title type='text'>ARCast.TV Interview: Architecting the UI to Improve Testability</title><content type='html'>A while back, I spoke with Zhiming Xue (&lt;a href="http://blogs.msdn.com/zxue/" target="_blank"&gt;Dr. Z&lt;/a&gt;), a Microsoft Architecture Evangelist, about improving UI testability. This interview is now available on &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-David-Makogon-on-Architecting-Interface-to-Improve-Testability/" target="_blank"&gt;ARCast&lt;/a&gt;. From the synopsis:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;quot;In this interview,David Makogon, senior consultant of RDA, discusses how to architect user interface  code to improve testability. A common issue associated with testing code that is  tightly tied to user interface (UI) such as a button click event is that when a  user interface is modified, the underlying code has to be re-tested. By  decoupling the UI code from core programming logic and behavior through use of  supervising controllers and views -- a modified Model View Controller (MVC)  design pattern that is well explained by &lt;a href="http://www.martinfowler.com/eaaDev/SupervisingPresenter.html" target="_blank"&gt;Martin  Fowler&lt;/a&gt;, the need to re-testing the code of the programming logic and  behavior is greatly reduced and even eliminated.&amp;quot;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3019980810980206382?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3019980810980206382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/05/arcasttv-interview-architecting-ui-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3019980810980206382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3019980810980206382'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/05/arcasttv-interview-architecting-ui-to.html' title='ARCast.TV Interview: Architecting the UI to Improve Testability'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-231512362219259693</id><published>2009-04-30T16:48:00.001-04:00</published><updated>2009-04-30T16:48:14.113-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Atlanta'/><category scheme='http://www.blogger.com/atom/ns#' term='Airports'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Surviving ATL</title><content type='html'>&lt;p&gt;This week, I found myself in Atlanta to work with a new client. As this was my first time flying into ATL, I guess I didn't get the memo about how to navigate smoothly through the airport and rental car process. While I sit here waiting for my plane to board, let me offer a few tidbits of wisdom, so that other travelers may avoid some frustrations. &lt;strong&gt;&lt;em&gt;If nothing else, read my blurb on airport security…&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Take the train&lt;/h4&gt;  &lt;p&gt;The terminals are connected by light-rail train. If you’re on an airline such as AirTran (which I’m on), you’re likely to end up in Gate C or D (the last one being E). I’m guessing it’s close to a mile to walk to baggage claim and ground transportation. Yes, there are people-mover ramps, but if you’re not up for the walk, do yourself a favor and hop on board for a quick ride.&lt;/p&gt;  &lt;h4&gt;Rental car – bypass the lines&lt;/h4&gt;  &lt;p&gt;Ah, the luxury of Avis Preferred. I finally made it to the main area of ATL and saw the Avis counter. I figured I could finagle my way into a car upgrade. Not a chance… I think the saying “Have a slow day…” applies here. Dozens on line, and the agents had no sense of urgency at all. Take my advice: If you’re Avis Preferred (or &lt;em&gt;Insert-your-favorite-rental-company Insert-your-favorite-Special-Program&lt;/em&gt;), head straight for the bus. From what I can tell, the bus only comes by every 10-15 minutes, so no dilly-dallying.&lt;/p&gt;  &lt;h4&gt;Enjoy Atlanta&lt;/h4&gt;  &lt;p&gt;I can’t suggest much, but I highly recommend Pappadeaux Seafood Restaurant.&lt;/p&gt;  &lt;h4&gt;Car rental return&lt;/h4&gt;  &lt;p&gt;If you’re returning a rental car, be sure your on-file credit card on your rental account is the one you plan on using. This makes the return process painless – they scan the car, inspect the car, print a receipt – DONE. I, on the other hand, needed to switch cards. BIG mistake, as now I had to head to the little Avis office and wait on line. Only 6 people in front of me, but it took about 30 minutes. When it was finally my turn, I stared in utter amazement as the agent started typing, one slow key at a time, my entire rental itinerary. I was going to comment about missing my flight, but I was too afraid I’d cause her to fat-finger a key and have to start over.&lt;/p&gt;  &lt;h4&gt;Airport security&lt;/h4&gt;  &lt;p&gt;&lt;em&gt;Ok, this one is a true gem&lt;/em&gt; (thanks to my co-worker Michael Sparks for tipping me off to this). Assuming you’re already checked in,&amp;#160; head straight to the North Terminal. Go to the far-left side of the terminal and follow the signs for the security checkpoint. There, tucked away to the left, is a set of check-in lanes that typically has no crowd (or at least much less than the other gates). The airport was very crowded when I arrived, but I was through security in just a few minutes.&lt;/p&gt;  &lt;p&gt;Safe travels!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-231512362219259693?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/231512362219259693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/04/surviving-atl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/231512362219259693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/231512362219259693'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/04/surviving-atl.html' title='Surviving ATL'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-1304347443327113005</id><published>2009-04-23T16:53:00.001-04:00</published><updated>2009-04-23T16:54:44.462-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Cloud Computing user group</title><content type='html'>In case any of you have free time tonight in the NoVa area - the Cloud Computing user group is meeting at the Microsoft office in Reston, VA. Info and registration &lt;a href="http://blogs.msdn.com/zxue/archive/2009/04/10/cloud-computing-user-group-meeting-april-23-2009-at-reston.aspx"&gt;here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Heading over there now...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-1304347443327113005?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/1304347443327113005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/04/cloud-computing-user-group.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1304347443327113005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/1304347443327113005'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/04/cloud-computing-user-group.html' title='Cloud Computing user group'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-8608305164958564895</id><published>2009-04-22T09:31:00.003-04:00</published><updated>2009-04-22T09:37:42.603-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PRISM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Intro to Composite App Frameworks with Prism</title><content type='html'>On May 23, I'll be speaking at the &lt;a href="http://www.novacodecamp.org"&gt;NoVa Code Camp&lt;/a&gt;. I'll be giving a talk on composite application frameworks, using Microsoft's Composite Application Guidance for WPF and Silverlight (previously known as Prism).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=137205"&gt;Registration&lt;/a&gt; is now open. The &lt;a href="http://novacodecamp.org/UpcomingCodeCamp/tabid/172/Default.aspx"&gt;schedule&lt;/a&gt; is up as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-8608305164958564895?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/8608305164958564895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/04/intro-to-composite-app-frameworks-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8608305164958564895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/8608305164958564895'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/04/intro-to-composite-app-frameworks-with.html' title='Intro to Composite App Frameworks with Prism'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7877673513366339581</id><published>2009-04-21T09:51:00.005-04:00</published><updated>2009-04-21T10:10:41.797-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Microsoft Developer Network on Facebook</title><content type='html'>Microsoft Developer Network (MSDN) now has a Silverlight 2 application that aggregates blogs, news, and videos for the east coast. The app, "MSDN East Coast News," is &lt;a href="http://www.facebook.com/apps/application.php?id=13024467231"&gt;here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Details about the app and its development are on &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/09/21/Silverlight-Facebook-Application-_1320_-MSDN-East-Coast-News-_2800_what-I_1920_ve-been-working-on-lately_2900_.aspx"&gt;Pete Brown's blog&lt;/a&gt;. Pete talks about some of the challenges integrating an app into Facebook's environment, with its moving-target API.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7877673513366339581?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7877673513366339581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/04/microsoft-developer-network-on-facebook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7877673513366339581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7877673513366339581'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/04/microsoft-developer-network-on-facebook.html' title='Microsoft Developer Network on Facebook'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6697992765845134364</id><published>2009-03-28T21:54:00.005-04:00</published><updated>2009-03-28T23:11:14.534-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Consultants: Listen up!</title><content type='html'>&lt;div&gt;I'm a mild-mannered software consultant. My day job consists of guidance, architecture, coding, automated unit testing, coffee consumption: All the fun stuff I love about software development. As if that didn't consume enough of my precious little time on earth, I have this hobby, a thing called photography. Over the past several years, it's evolved into a passion, then an obsession, and finally the potential for some fun side-work.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Up until now, I was content shooting my kids' sporting events (the baseball/soccer/volleyball parents do their share to cover my web hosting costs). Over the past two years, I [unofficially] shot two weddings (my biased opinion is that I out-shot the paid pro, but opinions are like...). Today was a big deal: an opportunity to score a real wedding shoot. Ok, maybe not "score," but at least deliver a compelling proposal.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As we're preparing our proposal, my co-photog and I found out (just a few short hours before our meeting) that the bride wants the "digital negatives." In the photography business, giving away negatives (whether film or digital) is typically taboo: once you give away the original source to an image, the new owner may cut the photog totally out of the loop. This impacts potential revenue as well as control of the photo's usage. So our knee-jerk reaction was something like &lt;span style="font-weight:bold;"&gt;No Way!&lt;/span&gt; But... we figured we could offer up at least some type of compromise: maybe charge a bunch for the digital files, or even agree to handing over a subset of the images but skip the book-layout tasks, saving a ton of labor.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So on we went to meet the bride and groom today, as well as the groom's dad. With a bit of trepidation.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As the bride flipped through our sample images and books, she kept revealing more and more of what she liked, didn't like, loved... along with some hidden gems: how she likes the casual, candid shots over formal stuff, how there are some family squabbles between specific people that shouldn't be photographed together...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Most importantly, &lt;span style="font-weight:bold;"&gt;we found out why she wanted the digital images&lt;/span&gt;: for email, desktop background, screensaver, and her digital photo frame. In fact, she despises the chore of printing photos. And until she saw our sample albums, she didn't even want to purchase any prints (now she's totally jazzed about it).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The moment we realized this, we were able to turn this into something positve: we scrawled it right on the contract: Free web-ready and desktop-ready digital images with every print ordered. The bride was happy. The groom was happy. The dad was happy. And the photog's? Score! The icing on the cake? They admitted that no other photographers interviewed would even consider parting with digital copies. Double-score!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So... time to circle back, and somehow relate this to software consulting. Between the original &lt;span style="font-style:italic;"&gt;customer requirements&lt;/span&gt; (a phone call the likes of "Hey David - these folks want us to shoot their wedding!"), and initial &lt;span style="font-style:italic;"&gt;statement of work&lt;/span&gt;, a new requirement popped up at the last minute. A poorly-defined requirement at that: a simple one-liner with no context. But that one-liner triggered an almost-catastrophic set of potential responses:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;No way! (definitely would have killed the proposal)&lt;/li&gt;&lt;li&gt;Sure, but you're gonna pay through the nose! (good chance that would have killed the proposal)&lt;/li&gt;&lt;li&gt;You must not know anything about the photography business! (nice way to insult the customer's intelligence, and kill the proposal)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-style:italic;"&gt;Do any of those responses sound similar to something you might have considered blurting out at some point in your past? C'mon, be honest...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Ok, so we avoided reacting, and instead simply mentioned this new requirement and asked her to give us a bit more information about the need for digital copies. And that's when the "why" behind the "what" surfaced. A very simple, sensible requirement. One that we could painlessly provide a solution for, as it had little impact on our workload and no significant risk to the contract's cost structure or the project itself.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In the end, we were able to deliver a proposal that directly met the customer's needs, simply because we asked questions and listened.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After all this rambling, I guess I'm just trying to remind myself (and others, if they've gotten this far) that listening and asking questions is such an important part of the requirements process. And, after reading the body language of the client, I realize it goes much deeper than that. By being able to ask the right questions, listen to the nuances and details of the responses, and then propose a sensible solution tailored for the customer, I believe this is where true business relationships are formed, and trust is established.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-weight:bold;"&gt;Were you listening???&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6697992765845134364?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6697992765845134364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/03/consultants-listen-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6697992765845134364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6697992765845134364'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/03/consultants-listen-up.html' title='Consultants: Listen up!'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-7544350226758081844</id><published>2009-03-18T16:48:00.009-04:00</published><updated>2009-04-21T10:14:12.605-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CommerceServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Expression'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='MIX'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><category scheme='http://www.blogger.com/atom/ns#' term='BizSpark'/><category scheme='http://www.blogger.com/atom/ns#' term='Blend'/><title type='text'>MIX 09 Keynote Recap</title><content type='html'>&lt;p&gt;Today's MIX 09 Keynote in Las Vegas was hosted by &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;. As much as I had hoped to attend, my Vegas trip didn't materialize. However, I watched the live stream and, to be honest, I was blown away by the sheer number of announcements. If you followed my &lt;a href="http://www.twitter.com/dmakogon"&gt;tweets&lt;/a&gt;, you probably have a good idea of all the technical goodness. Here's a consolidated summary, with links to the various downloads.&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Expression Web 3 &lt;/span&gt;&lt;ul&gt;&lt;li&gt;SuperPreview feature – view rendering across all browser types and versions. Split-screen designer, fullscreen-mode, allows comparison of “baseline” browser vew and alternative browser view side-by-side. Also “overlay” mode – stacks two browser views, to help identify differences.&lt;/li&gt;&lt;li&gt;Supports both local browsers and cloud service, to allow for rendering on browsers not installed locally (e.g. Safari for Mac)&lt;/li&gt;&lt;li&gt;Easy to compare multiple versions of IE without having each browser version installed&lt;/li&gt;&lt;li&gt;Beta available right now:&lt;a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx"&gt; http://www.microsoft.com/expression/try-it/blendpreview.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;ASP.NET 4.0&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web forms: more control over viewstate, html markup, improvements in data binding and url routing&lt;/li&gt;&lt;li&gt;Improvements to Ajax stack and jQuery support&lt;/li&gt;&lt;li&gt;Client–side templates and databinding, along with additional REST support&lt;/li&gt;&lt;li&gt;Velocity caching engine&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Visual Studio 2010&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Improved JavaScript, Ajax, jQuery scripting support, including intelliSense&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SharePoint editing/debugging within Visual Studio IDE&lt;/li&gt;&lt;li&gt;Publishing and deployment improvements, including database deployment&lt;/li&gt;&lt;li&gt;Still a CTP - get the latest &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;IIS7&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Ten new extensions available, including secure FTP, WebDAV, app request routing&lt;/li&gt;&lt;li&gt;Grab the new extensions &lt;a href="http://blogs.iis.net/mailant/archive/2009/03/18/iis-at-mix-2009-10-new-iis-server-extensions-and-web-app-gallery.aspx"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Microsoft Web Platform Installer&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Provides single source for all components required for Web platform installation.&lt;/li&gt;&lt;li&gt;Version 2 (beta) already includes support for just-released ASP.NET MVC 1.0.&lt;/li&gt;&lt;li&gt;Grab the latest v2 beta &lt;a href="http://www.microsoft.com/Web/downloads/platform.aspx"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Microsoft Web App Gallery&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Free apps to download and use&lt;/li&gt;&lt;li&gt;Anyone can add an app to the gallery&lt;/li&gt;&lt;li&gt;Visit the gallery &lt;a href="http://www.microsoft.com/web/gallery/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Commerce Server 2009&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Available now.&lt;/li&gt;&lt;li&gt;View detailed information &lt;a href="http://www.microsoft.com/commerceserver/en/us/default.aspx"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Azure Services Platform &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;FastCGI support (allows 3rd-party programming languages like php)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;.NET full trust&lt;/li&gt;&lt;li&gt;Raw ADO.NET support&lt;/li&gt;&lt;li&gt;View details &lt;a href="http://blog.smarx.com/posts/windows-azure-full-trust-and-fastcgi-php"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Microsoft BizSpark&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;New program designed to help startup companies get up and running quickly&lt;/li&gt;&lt;li&gt;Includes software and licensing support for 3-year period&lt;/li&gt;&lt;li&gt;Includes marketing, business development opportunities, hosting partners&lt;/li&gt;&lt;li&gt;Free to qualifying startups&lt;/li&gt;&lt;li&gt;Read details &lt;a href="http://www.microsoft.com/bizspark/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Demo performed by startup &lt;a href="http://www.stackoverflow.com/"&gt;StackOverflow.com&lt;/a&gt;, a BizSpark member&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Silverlight V3&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;GPU acceleration support (on Windows and Mac)&lt;/li&gt;&lt;li&gt;New CODEC support (h.264, aac, MPEG-4)&lt;/li&gt;&lt;li&gt;Raw bitstream API&lt;/li&gt;&lt;li&gt;Improved logging for media analytics&lt;/li&gt;&lt;li&gt;Perspective 3D&lt;/li&gt;&lt;li&gt;Bitmap / pixel API&lt;/li&gt;&lt;li&gt;Deep linking, navigation page framework (for interfacing with browser navigation)&lt;/li&gt;&lt;li&gt;ClearType support&lt;/li&gt;&lt;li&gt;Multi-touch support&lt;/li&gt;&lt;li&gt;Library caching (download and cache to local system)&lt;/li&gt;&lt;li&gt;Data binding improvements&lt;/li&gt;&lt;li&gt;Multi-tier data (support for data context updates in Silverlight pushing updates to the server)&lt;/li&gt;&lt;li&gt;Binary XML&lt;/li&gt;&lt;li&gt;Out-of-browser experience - Silverlight app runs like a desktop app, yet still within a sandbox (and still dependent only on the Silverlight runtime bits). Supported on both Windows and Mac&lt;/li&gt;&lt;li&gt;Offline awareness (with network status change events)&lt;/li&gt;&lt;li&gt;V3 download is apparently 40K less than V2 download!&lt;/li&gt;&lt;li&gt;Get the latest beta &lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;here&lt;/a&gt;. Warning: once you install the Beta tools, you now have a Silverlight 3-only development environment, so maybe go with a VPC...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;IIS Media Services&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;New product, available today.&lt;/li&gt;&lt;li&gt;Includes live streaming (in beta, available today)&lt;/li&gt;&lt;li&gt;Edge-caching. Akamai has already announced services to support this&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For more info and installation details, go &lt;a href="http://www.iis.net/media"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Expression Blend 3&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Includes new SketchFlow tool offering sketching/prototyping, complete with transitions, collaboration tool (free SketchFlow player), all built into Blend.&lt;/li&gt;&lt;li&gt;Version control support&lt;/li&gt;&lt;li&gt;Xaml IntelliSense&lt;/li&gt;&lt;li&gt;Photoshop PSD import, including preservation of layers (as well as the ability to selectively toggle layers)&lt;/li&gt;&lt;li&gt;Grab the preview &lt;a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-7544350226758081844?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/7544350226758081844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/03/mix-09-keynote-recap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7544350226758081844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/7544350226758081844'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/03/mix-09-keynote-recap.html' title='MIX 09 Keynote Recap'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-3574154971788369415</id><published>2009-03-18T13:22:00.002-04:00</published><updated>2009-03-18T15:28:57.490-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Silverlight Expression Blend MIX'/><title type='text'>MIX 09 Updates</title><content type='html'>I'll be publishing highlights from the MIX 09 keynote today. In the meantime, you can follow my &lt;a href="http://www.twitter.com/dmakogon"&gt;twitter feed&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-3574154971788369415?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/3574154971788369415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/03/mix-09-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3574154971788369415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/3574154971788369415'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/03/mix-09-updates.html' title='MIX 09 Updates'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6545196285986388992</id><published>2009-02-18T13:18:00.001-05:00</published><updated>2009-02-20T09:52:24.518-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PRISM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Windows Presentation Foundation: New composite app framework</title><content type='html'>It's an exciting day for WPF (ok, for me at least). Today, The new Composite Application Guidance for WPF was released (Feb 2009). You can grab it here: &lt;a href="http://msdn.microsoft.com/en-us/library/dd458809.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd458809.aspx&lt;/a&gt;&lt;div&gt;&lt;br /&gt;So what is this? Basically, if you're building any type of UI-driven application, you have a few choices for wiring up your "View" to the underlying logic driving the view. Here are two:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inline. This is where you jam all your code in the "code-behind." For instance: the user clicks a button, that button has a button_clicked() event handler, and you shove a bunch of code right into that event handler.&lt;/li&gt;&lt;li&gt;Model-View-Controller (or some derivative). This is where the "view" is limited to the UI portion of your app - buttons, boxes, etc. In the code-behind, you make a call to a "controller," notifying it that something happened (like HEY - THE USER CLICKED ME, THE SAVE BUTTON!!!). Then it's up to the controller to ask the view for stuff (like the info the user typed in) and save it to the model (maybe a database or something).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So the first step in cleaning up all those fat, monolithic apps of yours is moving from an inline model to an MVC model. Now... let's take it one step further: What happens when you start adding functionality to this big app, but the new functionality is relatively independent of the existing functionality? For instance, what if you have an order entry app, but you want the ability to view reports related to ordering, which has nothing to do with entry? And what if you want to build these modules in isolation, and test in isolation? And what if you have a whole bunch of these modules, and you'd like to pick-n-choose which modules to load (or not load), maybe depending on which user is logged into the application?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is where the Composite Application framework comes into play. It has an entire infrastructure for managing these modules in a loosely coupled way. A long time ago (a few years ago), Microsoft's Patterns and Practices team published a composite framework called the Smart Client Software Factory. This was for WinForms applications. Eventually a Web Client Software Factory was published. And now, with the advent of WPF, there's a composite application framework for it, too (though it's not a port - it's pretty much a rewrite). The framework for WPF is codenamed "Prism."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Version 1 was published last summer, and version 2 was published just this morning. I'll be digging into it and following up with another post, once I find some juicy tidbits to write about.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6545196285986388992?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6545196285986388992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/02/windows-presentation-foundation-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6545196285986388992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6545196285986388992'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/02/windows-presentation-foundation-new.html' title='Windows Presentation Foundation: New composite app framework'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616895123812267995.post-6306613810631058384</id><published>2009-02-17T11:36:00.000-05:00</published><updated>2009-02-17T11:38:54.115-05:00</updated><title type='text'>Welcome to my strange not-so-new world</title><content type='html'>Everything seems to be connected online these days. Emails, IM, social networking sites, photo galleries, blogs...I currently blog at &lt;a href="http://rdaarchitecture.blogspot.com"&gt;rdaarchitecture.blogspot.com&lt;/a&gt;, but that's specifically for software architecture and related guidance. here, I can go beyond that and write about other interests as well, especially photography. We'll see how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616895123812267995-6306613810631058384?l=www.davidmakogon.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.davidmakogon.com/feeds/6306613810631058384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.davidmakogon.com/2009/02/welcome-to-my-strange-not-so-new-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6306613810631058384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616895123812267995/posts/default/6306613810631058384'/><link rel='alternate' type='text/html' href='http://www.davidmakogon.com/2009/02/welcome-to-my-strange-not-so-new-world.html' title='Welcome to my strange not-so-new world'/><author><name>David Makogon</name><uri>http://www.blogger.com/profile/05166122279770270194</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg'/></author><thr:total>0</thr:total></entry></feed>
