<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.joshholmes.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Josh Holmes</title><link>http://www.joshholmes.com/blog/</link><description>What Box? Nobody told me about a box...</description><language>en-us</language><copyright>Josh Holmes</copyright><lastBuildDate>Tue, 16 Feb 2010 18:28:44 GMT</lastBuildDate><generator>newtelligence dasBlog 2.3.9074.18820</generator><managingEditor>josh@joshholmes.com</managingEditor><webMaster>josh@joshholmes.com</webMaster><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.joshholmes.com/JoshHolmes" /><feedburner:info uri="joshholmes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>42.14784</geo:lat><geo:long>-84.031232</geo:long><feedburner:emailServiceId>JoshHolmes</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=919aa860-dc7f-45b0-bbbe-04bd427315be</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,919aa860-dc7f-45b0-bbbe-04bd427315be.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,919aa860-dc7f-45b0-bbbe-04bd427315be.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=919aa860-dc7f-45b0-bbbe-04bd427315be</wfw:commentRss><title>WonderPlunge</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,919aa860-dc7f-45b0-bbbe-04bd427315be.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/_ffZlYvhAbQ/WonderPlunge.aspx</link><pubDate>Tue, 16 Feb 2010 18:28:44 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
I’ll get a better post up with a lot more detail once I’m able to get a little more&#xD;
time. I just didn’t want to keep you in suspense any longer. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Thank you to everyone who was so generous and donated. All told, with online, offline&#xD;
and matching funds, we raised a staggering $3522.11. Overall the event raised a little&#xD;
over $26k. That’s an awesome amount of money and the Special Olympics of Michigan&#xD;
will make it stretch. However, they are not done yet – there are more plunges happening&#xD;
this around Michigan. In fact, a guy who is plunging because of me is Jeremy Lance&#xD;
– you should donate to his plunge at &lt;a title="http://www.firstgiving.com/jer_" href="http://www.firstgiving.com/jer"&gt;http://www.firstgiving.com/jer_&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In short, here is a short video showing the polar plunge itself. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;span id="preserve88d288ad3df047d9b9d35a2e8870dc26" class="wlWriterPreserve"&gt;&lt;embed height="344" type="application/x-shockwave-flash" width="425" src="http://www.youtube.com/v/7i7uqOOqjEw&amp;amp;hl=en&amp;amp;fs=1" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Again – thank you to everyone who donated!&#xD;
&lt;/p&gt;&lt;p&gt;&lt;table border="0" cellspacing="0" cellpadding="4" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="center" align="middle" bgcolor="#285383"&gt;&lt;td width="24%" align="left"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Display Name&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td width="16%"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td width="12%"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Amount&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td width="48%" align="left"&gt;&#xD;
 &lt;font color="#ffffff"&gt;&lt;b&gt;Comment&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="2"&gt;&lt;td align="left"&gt;&#xD;
brian gorbett &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
even though i missed the plunge, u r awesome!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Rebecca and Paul Foret &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$15.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="3"&gt;&lt;td align="left"&gt;&#xD;
Cal evans &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Michael Letterle &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
One of the many reasons you rock  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="4"&gt;&lt;td align="left"&gt;&#xD;
Mark Brown &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Happy to help for a great cause. Match from MS to get you $100.  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Susan and Leon Holmes &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="5"&gt;&lt;td align="left"&gt;&#xD;
Brian Genisio &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/13/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Kevin &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="6"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$35.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Plunge Josh Plunge  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Vid Luther &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$51.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="7"&gt;&lt;td align="left"&gt;&#xD;
James Ward &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Burrrr....  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Drew Robbins &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="8"&gt;&lt;td align="left"&gt;&#xD;
James Bender &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Good luck, that waters cold!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Matt Davis &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="9"&gt;&lt;td align="left"&gt;&#xD;
Janet Keller &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Hats off to you for that kind of commitment! Will be cheering from the fireside...  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Sazbean &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Brr! Great cause! Get warm with a tasty beverage afterwards! - Sarah &amp;amp; Aaron  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="10"&gt;&lt;td align="left"&gt;&#xD;
Clark Sell &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Stay Warm  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Dave Redding &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Here's to the SO. Get a descent camera man this time!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="11"&gt;&lt;td align="left"&gt;&#xD;
Scott Watermasysk &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
JRPendarvis and family &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="12"&gt;&lt;td align="left"&gt;&#xD;
Jim Holmes &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="13"&gt;&lt;td align="left"&gt;&#xD;
ElizabethN &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$10.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
You rock, Josh!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Larry Clarkin &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Dive Deep!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="14"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Shawn S &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="15"&gt;&lt;td align="left"&gt;&#xD;
Scott MacVicar &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Video or it didn't happen  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Pablo Godel &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Good luck!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="16"&gt;&lt;td align="left"&gt;&#xD;
Evan &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
You must Chill! We have hidden your keys!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
The Detroit Java User Group &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="17"&gt;&lt;td align="left"&gt;&#xD;
Greg Malcolm &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/11/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$40.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Setting light to the lake first is cheating!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Jenn Brees &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/6/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="18"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/5/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Every1 has some sort of a special need.Some needs r &amp;gt; others. Thnk u 4 helping&#xD;
me w mine.-code junky  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
see.clay &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/5/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$190.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
over the hump, thanks for the chats, some people you remember - for a reason  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="19"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/5/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/5/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$40.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
I'll be thinking "Warm" thoughts for you.  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="20"&gt;&lt;td align="left"&gt;&#xD;
Liza Sisler &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/4/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
When you go to Ireland check out the 'Forty Foot' for Polar Plunge #2  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Nathan Hancock &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/3/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Have Fun!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="21"&gt;&lt;td align="left"&gt;&#xD;
Dawn &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Not dunking you... just pushing you closer to the edge, Jer  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Greg &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
I expect to see you guys holding hands when you jump in!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="22"&gt;&lt;td align="left"&gt;&#xD;
Martin L. Shoemaker &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$108.11 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
You're a brave man, brother Josh!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Chris Large &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
My pleasure...  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="23"&gt;&lt;td align="left"&gt;&#xD;
Matt Cowan &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Way to go!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Larry Siden &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$18.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
"18" in Hebrew letters spells "life"!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="24"&gt;&lt;td align="left"&gt;&#xD;
Jason Chrispen &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Good luck, sounds like a great cause. Make your daughter proud.  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
aunt red &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/2/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$10.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
go jeremy, great cause  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="25"&gt;&lt;td align="left"&gt;&#xD;
Jacob Mullins &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Rock on brother!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Rob Allen &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="26"&gt;&lt;td align="left"&gt;&#xD;
Ashwin Karuhatty &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
I am proud of you!   &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
John Gilmour &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Cold, cold, cold....  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="27"&gt;&lt;td align="left"&gt;&#xD;
DeVaris Brown &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Anything to help out brothaman  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Tim COrbett &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/1/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$30.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Hope you reach your goal  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="28"&gt;&lt;td align="left"&gt;&#xD;
Joe Saul &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Josh, I don't know you, but I'm doing this because of Jer's co-pledge, so make sure&#xD;
he goes in too!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Hawthorne Property Services &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="29"&gt;&lt;td align="left"&gt;&#xD;
Dinah &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$5.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Wish I could give more. I've done the jump and know how much fun it can be :) good&#xD;
luck!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Chris and Tracy Woodruff &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Way to go Josh!! Stay warm!!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="30"&gt;&lt;td align="left"&gt;&#xD;
Angela Dugan &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
My hubby does the jump every year, looks like, um, fun? :)  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/31/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Brrrrrr!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="31"&gt;&lt;td align="left"&gt;&#xD;
Sadukie &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/30/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Here's to you and your Wonderpuzzle! :)  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/30/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Hey Josh, worked with you once a few years ago, but I too have a daughter with special&#xD;
needs. :)  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="32"&gt;&lt;td align="left"&gt;&#xD;
Ryan Weaver &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/30/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
Living and swimming in MI - you make me feel like a traitor :) - love the cause  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Chris Coneybeer &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/29/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$35.05 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
For a great cause. Go Josh!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd" valign="center" jquery1266343990582="33"&gt;&lt;td align="left"&gt;&#xD;
Donna Bank &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/29/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
This gives new meaning for "COLD CASH"   &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Keith "The Monkey" Casey &#xD;
&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
1/29/2010 &#xD;
&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$39.95 &#xD;
&lt;/td&gt;&lt;td align="left"&gt;&#xD;
I want to see this one on video :)  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
The Coffee Mill Cafe&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00&lt;/td&gt;&lt;td align="left"&gt;&#xD;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
The Tackets&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$25.00&lt;/td&gt;&lt;td align="left"&gt;&#xD;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Anonymous&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
2/12/2010&lt;/td&gt;&lt;td align="right"&gt;&#xD;
$100.00&lt;/td&gt;&lt;td align="left"&gt;&#xD;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td align="left"&gt;&#xD;
Matching funds&lt;/td&gt;&lt;td align="middle"&gt;&#xD;
 &lt;/td&gt;&lt;td align="right"&gt;&#xD;
Over $600&lt;/td&gt;&lt;td align="left"&gt;&#xD;
 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=919aa860-dc7f-45b0-bbbe-04bd427315be"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_ffZlYvhAbQ:nY3ZRTZxumY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_ffZlYvhAbQ:nY3ZRTZxumY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_ffZlYvhAbQ:nY3ZRTZxumY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_ffZlYvhAbQ:nY3ZRTZxumY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_ffZlYvhAbQ:nY3ZRTZxumY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_ffZlYvhAbQ:nY3ZRTZxumY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_ffZlYvhAbQ:nY3ZRTZxumY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_ffZlYvhAbQ:nY3ZRTZxumY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/_ffZlYvhAbQ" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,919aa860-dc7f-45b0-bbbe-04bd427315be.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/16/WonderPlunge.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=54314929-607e-45db-956c-a63130716299</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,54314929-607e-45db-956c-a63130716299.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,54314929-607e-45db-956c-a63130716299.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54314929-607e-45db-956c-a63130716299</wfw:commentRss><slash:comments>1</slash:comments><title>PHP/Ruby on Azure World Tour</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,54314929-607e-45db-956c-a63130716299.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/hx8oMrwm9OQ/PHPRubyOnAzureWorldTour.aspx</link><pubDate>Thu, 11 Feb 2010 01:47:22 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
I’m thrilled and honored to be doing another speaking tour through Europe. I’m getting&#xD;
to visit a number of countries that I haven’t visited before and some old favorites.&#xD;
I’ll be speaking on PHP, Ruby and other non .NET technologies on Azure. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://farm1.static.flickr.com/23/26088970_16fb1769ac.jpg"&gt;&lt;/img&gt;&lt;/p&gt;&lt;p&gt;&#xD;
The talk that I’m going to be doing in most places is PHP/Ruby on Azure or Leveraging&#xD;
Azure with Non-Microsoft Languages:&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
Windows Azure is Microsoft’s Cloud Computing offering. It is more than a simple scalable&#xD;
hosting option as it is truly a platform as a service offering. This allows you to&#xD;
focus on your application rather than the configuring and managing your infrastructure&#xD;
whether you are writing C# or VB.NET or even languages such as PHP or Ruby which are&#xD;
first class citizens in Windows Azure. The Windows Azure Platform includes Windows&#xD;
Azure, which is the OS and hosting environment for web and background services, as&#xD;
well as non-relational storage, queues, and a blob storage for everything from videos&#xD;
to mountable virtual drives. Additionally, the Windows Azure Platform includes SQL&#xD;
Azure, a fully relational database as a service, and Windows Azure AppFabric for industry&#xD;
standards compliant identity management and a service bus for message passing. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
But there remain the questions around why, when and how you should move to the cloud,&#xD;
especially if you are using PHP or Ruby. Should I put everything in Windows Azure?&#xD;
Do you have to convert everything you have to ASP.NET? Do you have to write code specifically&#xD;
for Windows Azure? What if my current applications depend on MySQL and/or memcached? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There’s a lot of good news here as it is relatively straight forward to get running&#xD;
in Windows Azure. Once your application is running, however, now you need to look&#xD;
at how to fully leverage the platform offerings architecting for the best usage of&#xD;
the different roles and the various aspects of the Windows Azure offerings such as&#xD;
the AppFabric and SQL Azure. This will help your application make the most efficient&#xD;
usage of CPU, bandwidth, storage and all of the things that cost in a cloud hosting&#xD;
scenario. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In this half day session, we will begin with the why of Windows Azure talking about&#xD;
when it makes sense to make a move and what the prudent migration paths are for your&#xD;
organization.  During this time we will tour the various aspects of Windows Azure.&#xD;
Then we’ll delve into the technical aspects of how to run your PHP/Ruby code on Windows&#xD;
Azure. Once we have that mastered, we will move onto leveraging the Windows Azure&#xD;
platform to its fullest.&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
The full schedule is as follows (and yes, this is a lot of countries in not very many&#xD;
days)&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Feb. 21 - Dublin Ireland - &lt;a title="http://bit.ly/phpazuredublin" href="http://bit.ly/phpazuredublin"&gt;http://bit.ly/phpazuredublin&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
I love Ireland. I hope to someday live there. I spoke there about a year and a half&#xD;
ago on RIA and got to meet a few of the folk but mostly worked with &lt;a href="http://blogs.msdn.com/martharotter/"&gt;Martha&#xD;
Rotter&lt;/a&gt;. I got to make a number of friends last time and I’m really looking forward&#xD;
to seeing them again.   &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
Feb 23 – Lisbon, Portugal - &lt;a title="http://bit.ly/phpazurelisbon" href="http://bit.ly/phpazurelisbon"&gt;http://bit.ly/phpazurelisbon&lt;/a&gt; &#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
This is my first time to Portugal. I’m really looking forward to meeting the local&#xD;
DPE team (&lt;a href="http://twitter.com/luismartins"&gt;Luis Alves Martins&lt;/a&gt; and &lt;a href="http://blogs.technet.com/sergio_martinho/default.aspx"&gt;Sergio&#xD;
Martinho&lt;/a&gt;). I’m speaking at the university. it looks like a beautiful venue - &lt;a href="http://bit.ly/avsYU9"&gt;http://bit.ly/avsYU9&lt;/a&gt;.&#xD;
I just wish that I had more time here to explore the local culture. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
Feb 24 – Vienna, Austria - &lt;a title="http://bit.ly/phpazurevienna" href="http://bit.ly/phpazurevienna"&gt;http://bit.ly/phpazurevienna&lt;/a&gt; &#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
My brother has spent a lot of time in Austria but I’ve never been. I have met &lt;a href="http://blogs.msdn.com/mszcool"&gt;Mario&#xD;
Szpuszta&lt;/a&gt; back when he and I both spoke at &lt;a href="http://jaoo.dk"&gt;JAOO&lt;/a&gt; in&#xD;
2008 in Denmark. That was an awesome conference. I’ll also get to met &lt;a href="http://blogs.msdn.com/austria"&gt;Rolf&#xD;
Mistelbacher&lt;/a&gt;. Another thing I’m really excited about is that I’m going to spend&#xD;
enough time to actually see some of the city. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
Feb 26 – London, UK – Keynoting PHPUK - &lt;a title="http://bit.ly/9l8IH0" href="http://bit.ly/9l8IH0"&gt;http://bit.ly/9l8IH0&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
At PHP UK, I’m actually not talking about Azure. Rather I’m doing a keynote titled&#xD;
The &lt;a href="http://bit.ly/artofsimplicity"&gt;Lost Art of Simplicity&lt;/a&gt; (Full slides&#xD;
on &lt;a href="http://bit.ly/artofsimplicity"&gt;slideshare&lt;/a&gt;). This is actually the original&#xD;
reason that I’m coming to Europe in the first place. I’m honored to be asked to do&#xD;
the keynote and am beholden to &lt;a href="http://twitter.com/scottmac"&gt;Scott MacVicar&lt;/a&gt; for&#xD;
the invitation and to &lt;a href="http://www.johannacherry.com/"&gt;Johanna Cherry&lt;/a&gt; for&#xD;
making everything work smoothly. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
March 2 – Stockholm, Sweden - &lt;a title="http://bit.ly/phpazurestockholm" href="http://bit.ly/phpazurestockholm"&gt;http://bit.ly/phpazurestockholm&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
Check out this awesome venue - &lt;a title="http://bit.ly/cGTbC0" href="http://bit.ly/cGTbC0"&gt;http://bit.ly/cGTbC0&lt;/a&gt; –&#xD;
it’s a 17th century building in downtown Stockholm. Really looking forward to hanging&#xD;
out in this space. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
March 3 – Oslo, Norway – registration information coming soon&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
I’ve never been to Norway. I should have more information about this trip in the next&#xD;
day or so and I’ll update this post. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
**Update**&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I’ve got all of the registration information for my Oslo stop.&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Auditorium (ground floor) &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Lysaker Torg 45 &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Lysaker Akershus 1366 &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Norge &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a title="http://bit.ly/phpazureoslo" href="http://bit.ly/phpazureoslo"&gt;http://bit.ly/phpazureoslo&lt;/a&gt; for&#xD;
all of the registration information.&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
Also, as a side note I’ve met a bunch of people from Norway while at the PHPUK conference&#xD;
and they’ve assured me that the polar plunge was decent training for my visit but&#xD;
I’d enjoy it regardless.&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
March 4 – Amsterdam, The Netherlands – PHP User Group&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
I haven’t actually met &lt;a href="http://blogs.msdn.com/bramveen"&gt;Bram Veenhof&lt;/a&gt; in&#xD;
person but  have been working with him over the past couple of years on a couple&#xD;
of things.I’ve been to Amsterdam several times but mostly just to the Airport and&#xD;
the Microsoft offices there, both of which are awesome. I’m thrilled this time to&#xD;
actually have a little time to explore the city. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
March 5 – Brussels, Belgium - &lt;a title="http://bit.ly/phpazurebrussells" href="http://bit.ly/phpazurebrussells"&gt;http://bit.ly/phpazurebrussells&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
I’ve been to Brussels once before and I’m really looking forward to going back. I’ve&#xD;
not get &lt;a href="http://blogs.msdn.com/katriend/default.aspx"&gt;Katrien De Graeve&lt;/a&gt; and&#xD;
Rudy Van Hoe but are two of the other people that I’ve been working with closely over&#xD;
the past couple of years. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
March 6,7 – Kilkenny, Ireland – hanging out and speaking at Wordcamp Ireland&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
Again, I love Ireland and hope to live there someday. I’ll be in Kilkenny at &lt;a title="Wordcamp Ireland" href="http://bit.ly/b44UWZ"&gt;Wordcamp&#xD;
Ireland&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
It’s going to be a lot of fun and I’m really hoping that there’s lots of good conversation.&#xD;
Please let me know via comments or via twitter if you’re able to make it to one of&#xD;
the sessions. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
If you tweet about this – please use the hash tag #phpazuretour and #cityyourecomingto!&#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=54314929-607e-45db-956c-a63130716299"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=hx8oMrwm9OQ:lmuZnRkAYQM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=hx8oMrwm9OQ:lmuZnRkAYQM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=hx8oMrwm9OQ:lmuZnRkAYQM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=hx8oMrwm9OQ:lmuZnRkAYQM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=hx8oMrwm9OQ:lmuZnRkAYQM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=hx8oMrwm9OQ:lmuZnRkAYQM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=hx8oMrwm9OQ:lmuZnRkAYQM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=hx8oMrwm9OQ:lmuZnRkAYQM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/hx8oMrwm9OQ" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,54314929-607e-45db-956c-a63130716299.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/11/PHPRubyOnAzureWorldTour.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=9982ec05-59ea-4d01-b20c-254288d2a23d</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,9982ec05-59ea-4d01-b20c-254288d2a23d.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,9982ec05-59ea-4d01-b20c-254288d2a23d.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9982ec05-59ea-4d01-b20c-254288d2a23d</wfw:commentRss><title>Hello World Azure in PHP</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,9982ec05-59ea-4d01-b20c-254288d2a23d.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/4TRKXhRH07g/HelloWorldAzureInPHP.aspx</link><pubDate>Wed, 10 Feb 2010 03:17:25 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;img style="margin: 5px; display: inline" align="left" src="http://farm4.static.flickr.com/3604/3411273755_3acce33c69.jpg" width="338" height="254"&gt;&lt;/img&gt;Building&#xD;
on the &lt;a href="http://www.joshholmes.com/blog/2010/02/05/WindowsAzureCommandLineTools.aspx"&gt;Windows&#xD;
Azure Command Line Tools&lt;/a&gt; blog post, I thought we could kick it up a notch and&#xD;
get PHP running in Azure leveraging the command line tools. The primary thing that&#xD;
we need to do is to copy the PHP bits up with the rest of your deployment and configure&#xD;
the FastCGI handler to know where the PHP interpreter can be found. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
If you have PHP installed, locate your directory. Otherwise, download one of the versions&#xD;
from &lt;a title="http://windows.php.net/download/" href="http://windows.php.net/download/"&gt;http://windows.php.net/download/&lt;/a&gt;.&#xD;
I haven’t personally tested it with every possibly distribution but it should work&#xD;
with all of them up there. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To get started, setup a simple folder structure as before but with the addition of&#xD;
a folder called PHP:&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
&amp;gt;Project&lt;br&gt;&#xD;
        &amp;gt;WebRole&lt;br&gt;&#xD;
                &#xD;
&amp;gt;php&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now copy the contents of the PHP download or your PHP install to the php folder. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now add a file called index.php to the WebRole directory:&#xD;
&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Hello&#xD;
World PHP&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;php &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;a style="color: #0000ff" href="http://www.php.net/echo"&gt;echo&lt;/a&gt; '&lt;span style="color: #8b0000"&gt;Today&#xD;
is &lt;/span&gt;'. &lt;a style="color: #ffa500" href="http://www.php.net/date"&gt;date&lt;/a&gt;('&lt;span style="color: #8b0000"&gt;Y-m-d&lt;/span&gt;')&#xD;
."&lt;span style="color: #8b0000"&gt;\n&lt;/span&gt;"; &lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
The one other actual difference between the HTML version and the PHP version of this&#xD;
little hello world sample is that you need to add one more file to the WebRole directory&#xD;
called web.roleconfig. &#xD;
&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0" encoding="utf-8" &lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;fastCgi&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;application&lt;/span&gt;&lt;span style="color: #ff0000"&gt;fullPath&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"%RoleRoot%\approot\php\php-cgi.exe"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;fastCgi&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
On your own IIS server you would call this the web.config but in Azure, it’s called&#xD;
the web.roleconfig. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now, just like in the other sample you need to set up your Config and Definition files. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Simple.csdef&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0" encoding="utf-8"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Simple"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;WebRole&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"WebRole"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;enableNativeCodeExecution&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&#xD;
Must use port 80 for http and port 443 for https when running in the cloud --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoint&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"HttpIn"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;protocol&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;port&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"80"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;WebRole&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Simple.cscfg&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt;&lt;span style="color: #ff0000"&gt;serviceName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Simple"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"WebRole"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Instances&lt;/span&gt;&lt;span style="color: #ff0000"&gt;count&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"1"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Package everything up with cspack.&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;c:\Project&amp;gt;cspack simple.csdef /copyonly&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Windows(R) Azure(TM) Packaging Tool version 1.0.0.0&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;for Microsoft(R) .NET Framework 3.5&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Copyright (c) Microsoft Corporation. All rights reserved.&#xD;
&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
And run in the dev fabric with csrun. &#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;c:\Project&amp;gt;csrun simple.csx simple.cscfg&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;for Microsoft(R) .NET Framework 3.5&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Copyright (c) Microsoft Corporation. All rights reserved.&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Using session id 1&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Created deployment(31)&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Started deployment(31)&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Now you are ready to run and test&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/HelloWorldAzureinPHP_12733/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/HelloWorldAzureinPHP_12733/image_thumb.png" width="486" height="275"&gt;&lt;/img&gt;&lt;/a&gt; &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
And that’s all that there really is to getting PHP running in Azure. Soon I’ll blog&#xD;
about getting a full blown app running in Azure. Stay tuned. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=9982ec05-59ea-4d01-b20c-254288d2a23d"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=4TRKXhRH07g:e14O8eSXF8U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=4TRKXhRH07g:e14O8eSXF8U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=4TRKXhRH07g:e14O8eSXF8U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=4TRKXhRH07g:e14O8eSXF8U:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=4TRKXhRH07g:e14O8eSXF8U:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=4TRKXhRH07g:e14O8eSXF8U:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=4TRKXhRH07g:e14O8eSXF8U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=4TRKXhRH07g:e14O8eSXF8U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/4TRKXhRH07g" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,9982ec05-59ea-4d01-b20c-254288d2a23d.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/10/HelloWorldAzureInPHP.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=dc78ae59-cf21-435f-b33a-c00d40f1f736</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,dc78ae59-cf21-435f-b33a-c00d40f1f736.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,dc78ae59-cf21-435f-b33a-c00d40f1f736.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dc78ae59-cf21-435f-b33a-c00d40f1f736</wfw:commentRss><title>Getting MySql Running on Azure</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,dc78ae59-cf21-435f-b33a-c00d40f1f736.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/_f4OXXP0Prk/GettingMySqlRunningOnAzure.aspx</link><pubDate>Tue, 09 Feb 2010 04:29:39 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/RunningJoomlaonAzure_BFDC/azure%5B1%5D_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="azure[1]" border="0" alt="azure[1]" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/RunningJoomlaonAzure_BFDC/azure%5B1%5D_thumb.png" width="244" height="244"&gt;&lt;/img&gt;&lt;/a&gt; There&#xD;
are a few applications that I’m playing with in Windows Azure that are reliant on&#xD;
MySql for various reason. For example, I’m working with a group that is doing Joomla&#xD;
development and it’s completely dependent on MySql. Mostly this is due to using MySql&#xD;
native drivers rather than using a database independent layer such as ADO.NET in .NET&#xD;
or PDO in PHP or leveraging database specific features that are only found in MySql.&#xD;
Regardless of the reason, for me to run these applications in Windows Azure, I have&#xD;
to get MySql running in Azure. I found that it wasn’t as hard as I initially thought&#xD;
it would be and it’s a technique that I can reuse for a lot of binary executables. &#xD;
&lt;/p&gt;&lt;h4&gt;Thoughts and Recommendations&#xD;
&lt;/h4&gt;&lt;p&gt;&#xD;
Before I go into the technical details of getting MySql working, I thought I should&#xD;
share what I think of running MySql in Windows Azure to save you the time of reading&#xD;
through all of this before I try to talk you out of it. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The reality is that even though you can run MySql in Windows Azure, it’s not overly&#xD;
practical to do so. My recommendation is to use this as a last resort or stopgap until&#xD;
Sql Server support for your application is ready to go. There are multiple reasons&#xD;
why this is my recommendation, some technical, some financial. None of them have to&#xD;
do with MySql itself but rather the process that you have to go through to run and&#xD;
manage it in Windows Azure. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, let’s dig into the technical. The way that hosting MySql in Windows Azure working&#xD;
is that you create a worker role that will actually host the binary. You have to copy&#xD;
up the executable and then have just a little bit of Windows Azure specific code to&#xD;
actually execute the application and pipe requests to it. You can actually do that&#xD;
with just about any type of executable as long as it can be XCopy deployed and run&#xD;
headless. This could be especially good for things like doing distributed calculations. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
With regards to mySql, however, one issue that I see with this is that you have to&#xD;
pay $0.12 an hour per web role that you have live which means that on average (at&#xD;
0.12 * 24 * 30) you’re paying $86.40 a month for a single instance of MySql. That’s&#xD;
prior to having any type of failover or durability. SqlAzure is only $9.99 a month&#xD;
for a gig of storage. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
If you want failover and durability, you need to run at least one extra instance of&#xD;
MySql in another worker role and configure them in a master/slave configuration. The&#xD;
reality is that you can get some fairly high durability with this configuration and&#xD;
it’s out of the box part of the &lt;a href="http://code.msdn.microsoft.com/winazuremysqlphp"&gt;Windows&#xD;
Azure MySQL PHP Solution Accelerator&lt;/a&gt; that we’re going to download in a moment. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now, if you want to manage the MySql instances, you’ve got a couple of options. One&#xD;
of those is to run PHPMyAdmin which runs in a web role. Or you can connect to your&#xD;
MySql databases with a remote admin tool of some sort. Contrast that to being able&#xD;
to log into the Windows Azure admin page and administer your SQL Azure databases. &#xD;
&lt;/p&gt;&lt;h4&gt;Getting MySql Running on Azure&#xD;
&lt;/h4&gt;&lt;p&gt;&#xD;
Now that I’ve convinced you not to do this unless you absolutely have to, let’s dig&#xD;
into the technical steps of getting MySql running. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There’s a PDC talk that covers some of this material at &lt;a href="http://microsoftpdc.com/Sessions/SVC51"&gt;Developing&#xD;
PHP and MySQL Applications with Windows Azure&lt;/a&gt;.. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, I wanted to get MySql running in Windows Azure. &#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&#xD;
First, I downloaded the &lt;a href="http://code.msdn.microsoft.com/winazuremysqlphp"&gt;Windows&#xD;
Azure MySQL PHP Solution Accelerator&lt;/a&gt;. There’s a manual for that accelerator that&#xD;
lays out the rest of the requirements for getting MySql running in Windows Azure. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
The first requirement is MySql itself. I downloaded the XCopy deploy version of MySQL&#xD;
(&lt;a href="http://dev.mysql.com/downloads/mysql/5.1.html#winx64"&gt;http://dev.mysql.com/downloads/mysql/5.1.html#winx64&lt;/a&gt;). &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Next, since we are going to use PHPMyAdmin to administer the MySql databases, I downloaded&#xD;
PHP - &lt;a title="http://windows.php.net/download" href="http://windows.php.net/download"&gt;http://windows.php.net/download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&#xD;
And then, obviously, PHPMyAdmin - &lt;a title="http://www.phpmyadmin.net/home_page/downloads.php" href="http://www.phpmyadmin.net/home_page/downloads.php"&gt;http://www.phpmyadmin.net/home_page/downloads.php&lt;/a&gt;. &#xD;
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&#xD;
Now that I had the basic requirements down for MySql running in Azure, there are a&#xD;
couple of steps that I had to take. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, I installed the &lt;a href="http://code.msdn.microsoft.com/winazuremysqlphp"&gt;Windows&#xD;
Azure MySQL PHP Solution Accelerator&lt;/a&gt; and extracted MySql, PHP and PHPMyAdmin. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Then I ran the “Buildme.cmd” script that comes with the accelerator. That checked&#xD;
to see if the MySQL binaries were in the right place. Since I hadn’t done anything&#xD;
other than download and unzip MySQL, the Buildme.cmd script fixed that for me and&#xD;
copied them to the right directory (.\MySql_WorkerRole\mysql). BTW, this could take&#xD;
a little while. Then it asked me for the &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Next thing is to open up the .\, I renamed php.ini-recommended to be php.ini and did&#xD;
a few edits. &#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&#xD;
Change the extension_dir to be as follow: &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
extension_dir = "./ext"&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Uncomment (remove the ; from in front of the following: &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
extension=php_mbstring.dll &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
extension=php_mcrypt.dll &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
extension=php_mysql.dll&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&#xD;
Second, I extracted PHPMyAdmin to a holding directory and made a few edits to /libraries/config.default.php. &#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&#xD;
Search for 'auth_type’ and ensure that it’s as follow: &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
$cfg['Servers'][$i]['auth_type'] = 'cookie';&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Search for 'AllowArbitraryServer' and ensure that it’s as follows: &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
$cfg['AllowArbitraryServer'] = true;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&#xD;
Now that those edits are done we are almost ready to try running the MySql portion&#xD;
of this exercise in the DevFabric.  Last this is that I *highly* recommend changing&#xD;
the username/password from mysqluser/#ms123 to something else. Now we’re ready to&#xD;
test. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Before we do that, let’s take a quick peek at what the solution accelerator comes&#xD;
with. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, there are 4 projects that are (or at least can be) deployed and a couple of&#xD;
helper folders. &#xD;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&#xD;
MySql_WorkerRole – this is the primary application that we’re concerned about as it&#xD;
is the one that deploys MySql for us. &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
MySqlPHP – Windows Azure configuration bits for the projects&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#xD;
PHPMyAdminWebRole – this role packages up PHPMyAdmin and runs it in Azure. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
InstanceManagerClient – this is an admin application that you can use to get command&#xD;
line access to the worker roles running MySql. This can be very useful for a lot of&#xD;
reasons. It connects to the InstanceManagerServer &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
InstanceManagerServer – this runs in each of the MySql_WorkerRole instances listening&#xD;
for connections from the InstanceManagerClient. &#xD;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#xD;
WorkerRole – Logging and maintenance worker role &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Roles.Common – helper project &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Test.Common – test project&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&#xD;
Really, for this exercise we just care about the top three of those projects. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In the config project is the ServiceConfiguration.cscfg which has a worker role configured&#xD;
for MySql:&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt; .&#xD;
. .&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"MySql_WorkerRole"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Instances&lt;/span&gt;&lt;span style="color: #ff0000"&gt;count&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"3"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&amp;lt;Setting&#xD;
name="DataConnectionString" value="UseDevelopmentStorage=true" /&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"TableStorageEndpoint"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://table.core.windows.net"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"BlobStorageEndpoint"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://blob.core.windows.net"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"DataConnectionString"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"DefaultEndpointsProtocol=https;AccountName=azuresolaccstorage;AccountKey=yQai0qLjF7lUTPy3pcf+j2xyjAKQnf7nCv2IYMIPPBWsqkGiOZqD/KMb9aolc9/kh41pm6XB5Zt0boBje7MXlg=="&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"DiagnosticsConnectionString"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"DefaultEndpointsProtocol=https;AccountName=azuresolaccstorage;AccountKey=yQai0qLjF7lUTPy3pcf+j2xyjAKQnf7nCv2IYMIPPBWsqkGiOZqD/KMb9aolc9/kh41pm6XB5Zt0boBje7MXlg=="&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"ContainerName"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"mysqlphp11"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"FullBackupHour"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"06:00"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"IncrementalBackupDuration"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"10"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"RecycleThreadSleepTime"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"300"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"EnableWindowsAzureDrive"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"False"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Setting&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"EnableBackup"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"True"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;. . .&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Here’s where you configure if you want to use more than one instance (for failover&#xD;
and the like) and whether or not you want to actually write out to blob storage and&#xD;
all. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The second thing is a MySql_WorkerRole project. This is a C# project that does a little&#xD;
bit of very important work for us. To sum up, it copies the MySql bits out to Windows&#xD;
Azure, starts the process running and then monitors the health of the MySql server. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
All we have to do now is deploy. To do that, run the Runme.cmd. This will package&#xD;
things up, copy them out to the development fabric, starts the various roles and then&#xD;
launches the browser. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Side note on the development experience - I’ll also warn you now that playing with&#xD;
the firewall on your dev box is a little tricky because every time that you redeploy&#xD;
it creates a new package and copies the MySql executables to a new location. That&#xD;
means that you pretty much have to open a incoming port rather than just authorizing&#xD;
the program unless you want to reauthorize the with your firewall every time. &#xD;
&lt;/p&gt;&lt;h4&gt;Conclusions&#xD;
&lt;/h4&gt;&lt;p&gt;&#xD;
Although I recommend using MySql on Windows Azure for stopgap and last resort, the&#xD;
awesome news is that with the &lt;a href="http://code.msdn.microsoft.com/winazuremysqlphp"&gt;Windows&#xD;
Azure MySQL PHP Solution Accelerator&lt;/a&gt; it’s actually not that hard to setup and&#xD;
works pretty well. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=dc78ae59-cf21-435f-b33a-c00d40f1f736"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_f4OXXP0Prk:tjIHqnUjlcg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_f4OXXP0Prk:tjIHqnUjlcg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_f4OXXP0Prk:tjIHqnUjlcg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_f4OXXP0Prk:tjIHqnUjlcg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_f4OXXP0Prk:tjIHqnUjlcg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_f4OXXP0Prk:tjIHqnUjlcg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=_f4OXXP0Prk:tjIHqnUjlcg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=_f4OXXP0Prk:tjIHqnUjlcg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/_f4OXXP0Prk" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,dc78ae59-cf21-435f-b33a-c00d40f1f736.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/09/GettingMySqlRunningOnAzure.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=83fc8372-60a0-45fb-8272-288359b723ba</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,83fc8372-60a0-45fb-8272-288359b723ba.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,83fc8372-60a0-45fb-8272-288359b723ba.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=83fc8372-60a0-45fb-8272-288359b723ba</wfw:commentRss><title>Windows Azure Command Line Tools</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,83fc8372-60a0-45fb-8272-288359b723ba.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/bza2SA_FCEs/WindowsAzureCommandLineTools.aspx</link><pubDate>Fri, 05 Feb 2010 22:19:41 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Josh Holmes - Erubycon 2009 - Day 2" href="http://www.flickr.com/photos/40542539@N00/3801953073/"&gt;&lt;img class="flickr" border="0" hspace="5" alt="Josh Holmes - Erubycon 2009 - Day 2" vspace="5" align="left" src="http://static.flickr.com/3550/3801953073_26cb3d66e6_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;There&#xD;
are times that you just need to leverage the raw power that you can get from the command&#xD;
line. For example, if you are trying to script something or if you are on a machine&#xD;
that is not all tooled up with Visual Studio, Eclipse and the like and, believe it&#xD;
or not, there are times that it’s just a lot easier to get stuff done without an IDE&#xD;
in the way. Great news is that we’ve got a couple in the Windows Azure SDK called&#xD;
CSPack and CSRun that work wonders. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To that end, please enjoy this little tutorial on using the command line tools to&#xD;
create a very simple Azure package and deploying it up to the development fabric. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Before you even start you will need one of the Windows Azure SDKs installed. I’m testing&#xD;
this with the November 1.0 release. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, create a directory where you will place your project. In that directory, create&#xD;
a directory called WebRole. At this point you will have&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
&amp;gt;Project&lt;br&gt;&#xD;
      &amp;gt;WebRole&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In the WebRole directory, place the files that you want to be deployed with your Windows&#xD;
Azure package. For mine, I just created a very simple HTML file that looks as follows:&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Quick&#xD;
Sample&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;This a quick sample. &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt;&lt;span style="color: #ff0000"&gt;alt&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Sample&#xD;
Photo"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"photo.jpg"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
In the root folder for your project, there are two files that you need to create.&#xD;
The first file is is the definition file. I called mine simple.csdef:&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0" encoding="utf-8"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Simple"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;WebRole&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"WebRole"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;enableNativeCodeExecution&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&#xD;
Must use port 80 for http and port 443 for https when running in the cloud --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoint&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"HttpIn"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;protocol&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;port&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"80"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;WebRole&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
The second file is the configuration file. Mine is called simple.cscfg:&#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt;&lt;span style="color: #ff0000"&gt;serviceName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"Simple"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"WebRole"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Instances&lt;/span&gt;&lt;span style="color: #ff0000"&gt;count&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"1"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Role&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ServiceConfiguration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Now we are ready to start using the command line tools. The first one is called &lt;a href="http://msdn.microsoft.com/en-us/library/dd179470.aspx"&gt;CSPack&lt;/a&gt;.&#xD;
What this tool does is create a deployment package for you. &#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;c:\Project&amp;gt;cspack simple.csdef /copyonly&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Windows(R) Azure(TM) Packaging Tool version 1.0.0.0&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;for Microsoft(R) .NET Framework 3.5&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Copyright (c) Microsoft Corporation. All rights reserved.&#xD;
&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
If you look in your directory structure now, you’ll see a new folder called simple.csx.&#xD;
Check it out and you’ll see that what it’s done is create a very specific folder structure&#xD;
ready to deploy out to the dev fabric. This is done with the /copyonly option. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The next tool is the &lt;a href="http://msdn.microsoft.com/en-us/library/dd179412.aspx"&gt;CSRun&lt;/a&gt; tool.&#xD;
This does the actual deployment out to the dev fabric and can even, if you so choose,&#xD;
launch the browser for you. You need to pass it the name of the ready to deploy directory&#xD;
that the CSPack tool created and the name of the service configuration file. &#xD;
&lt;/p&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;c:\Project&amp;gt;csrun simple.csx simple.cscfg&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;for Microsoft(R) .NET Framework 3.5&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Copyright (c) Microsoft Corporation. All rights reserved.&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Using session id 1&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Created deployment(31)&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Started deployment(31)&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Now you are ready to run and test&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/WindowsAzureSDKCommandLineTools_EC52/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/WindowsAzureSDKCommandLineTools_EC52/image_thumb.png" width="244" height="181"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
To find out more about these tools read &lt;a href="http://msdn.microsoft.com/en-us/library/dd179345.aspx"&gt;Windows&#xD;
Azure SDK Tools Reference&lt;/a&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=83fc8372-60a0-45fb-8272-288359b723ba"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=bza2SA_FCEs:d2FBg_WEt3I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=bza2SA_FCEs:d2FBg_WEt3I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=bza2SA_FCEs:d2FBg_WEt3I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=bza2SA_FCEs:d2FBg_WEt3I:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=bza2SA_FCEs:d2FBg_WEt3I:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=bza2SA_FCEs:d2FBg_WEt3I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=bza2SA_FCEs:d2FBg_WEt3I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=bza2SA_FCEs:d2FBg_WEt3I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/bza2SA_FCEs" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,83fc8372-60a0-45fb-8272-288359b723ba.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/05/WindowsAzureCommandLineTools.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=779cb918-cabb-4df7-9493-caaa2a71aaa3</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,779cb918-cabb-4df7-9493-caaa2a71aaa3.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,779cb918-cabb-4df7-9493-caaa2a71aaa3.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=779cb918-cabb-4df7-9493-caaa2a71aaa3</wfw:commentRss><slash:comments>1</slash:comments><title>Windows Azure Storage Services REST API</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,779cb918-cabb-4df7-9493-caaa2a71aaa3.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/aFNts0l6O-w/WindowsAzureStorageServicesRESTAPI.aspx</link><pubDate>Fri, 05 Feb 2010 04:55:04 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Hard Drive" href="http://www.flickr.com/photos/14968334@N00/4331140698/"&gt;&lt;img class="flickr" border="0" hspace="5" alt="Hard Drive" vspace="5" align="left" src="http://static.flickr.com/4066/4331140698_e3c1c094fb_t.jpg"&gt;&lt;/img&gt;&lt;/a&gt;In&#xD;
playing Windows Azure, I’ve started getting into the &lt;a href="http://msdn.microsoft.com/en-us/library/dd179355.aspx"&gt;Windows&#xD;
Azure Storage Services REST API&lt;/a&gt;. The REST API gives developers from any languages&#xD;
and/or platforms access to all of the Storage from either inside of Windows Azure&#xD;
or outside. It supports both HTTP and HTTPS. With it you can do just about anything&#xD;
that you need to with Blobs, Queues and Tables. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
For example, if you want to create a new table in the Windows Azure Table Storage&#xD;
you can just send it a little bit of XML that looks like this:&#xD;
&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml&#xD;
version="1.0" encoding="utf-8" standalone="yes"&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;entry&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;:&lt;span style="color: #ff0000"&gt;d&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ado/2007/08/dataservices"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;:&lt;span style="color: #ff0000"&gt;m&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://www.w3.org/2005/Atom"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;2010-02-04T10:48:34.9840639-05:00&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;updated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;content&lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"application/xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;m&lt;/span&gt;:&lt;span style="color: #800000"&gt;properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;d&lt;/span&gt;:&lt;span style="color: #800000"&gt;TableName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;MyTableName&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;d&lt;/span&gt;:&lt;span style="color: #800000"&gt;TableName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;m&lt;/span&gt;:&lt;span style="color: #800000"&gt;properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;entry&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
There are a couple of small things that are a little wonky. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, the URL is RESTish to be honest. Check out the last bit of this sample URL&#xD;
that does a search on a set of entities in a table:&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://myaccount.table.core.windows.net/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206"&gt;http://myaccount.table.core.windows.net/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206&lt;/a&gt;) &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
That last part of the filter is something that’s the “ish” part. It’s the query that’s&#xD;
used to search the entities. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The second things that’s a wonky is that there are a handful of things that you can&#xD;
do from the native .NET libraries that you can’t do from the REST interfaces. For&#xD;
example, you can’t do LINQ from the REST interfaces. There are little things like&#xD;
that across all of the storage options but what it really says is that you should&#xD;
use the native libraries where possible. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Third thing that I found a little wonky but it kinda makes sense is that every request&#xD;
against the REST service has to have an authorization code. It is passed in as an&#xD;
HTTP header. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Authorization="[SharedKey|SharedKeyLite] &amp;lt;AccountName&amp;gt;:&amp;lt;Signature&amp;gt;"&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Anyways, I thought it was an interesting set of services and they are really useful&#xD;
especially if you’re doing something other than .NET. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Read more about them at &lt;a href="http://msdn.microsoft.com/en-us/library/dd179355.aspx"&gt;Windows&#xD;
Azure Storage Services REST API&lt;/a&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=779cb918-cabb-4df7-9493-caaa2a71aaa3"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=aFNts0l6O-w:vk-G0tLKzbs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=aFNts0l6O-w:vk-G0tLKzbs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=aFNts0l6O-w:vk-G0tLKzbs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=aFNts0l6O-w:vk-G0tLKzbs:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=aFNts0l6O-w:vk-G0tLKzbs:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=aFNts0l6O-w:vk-G0tLKzbs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=aFNts0l6O-w:vk-G0tLKzbs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=aFNts0l6O-w:vk-G0tLKzbs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/aFNts0l6O-w" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,779cb918-cabb-4df7-9493-caaa2a71aaa3.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/05/WindowsAzureStorageServicesRESTAPI.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=8b1b46fb-0920-471f-aff6-38791610cadc</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,8b1b46fb-0920-471f-aff6-38791610cadc.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,8b1b46fb-0920-471f-aff6-38791610cadc.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=8b1b46fb-0920-471f-aff6-38791610cadc</wfw:commentRss><title>When to use what Microsoft Client Technology</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,8b1b46fb-0920-471f-aff6-38791610cadc.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/TnQ_QYDQqCk/WhenToUseWhatMicrosoftClientTechnology.aspx</link><pubDate>Wed, 03 Feb 2010 18:04:48 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
I was asked earlier when to use what Microsoft client Technology. I thought about&#xD;
just sending a link to &lt;a href="http://blogs.msdn.com/synergist/archive/2007/07/10/when-to-use-which-microsoft-presentation-technology.aspx"&gt;Michael&#xD;
Schroeder’s post&lt;/a&gt; but decided I should put in my own thoughts on the matter first. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
At the heart of Michael’s post is this table. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;table border="1" cellspacing="0" cellpadding="1" width="459"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="88"&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="96"&gt;&lt;strong&gt;&lt;a href="http://wpf.netfx3.com/" target="_blank" mce_href="http://wpf.netfx3.com/"&gt;&lt;font size="1"&gt;WPF&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="104"&gt;&lt;strong&gt;&lt;a href="http://www.xbap.org/index.html" target="_blank" mce_href="http://www.xbap.org/index.html"&gt;&lt;font size="1"&gt;WPF&#xD;
XBAP&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="85"&gt;&lt;strong&gt;&lt;a href="http://www.microsoft.com/silverlight/" target="_blank" mce_href="http://www.microsoft.com/silverlight/"&gt;&lt;font size="1"&gt;Silverlight&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;strong&gt;&lt;a href="http://ajax.asp.net/" target="_blank" mce_href="http://ajax.asp.net/"&gt;&lt;font size="1"&gt;ASP.Net&#xD;
+ AJAX&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="87"&gt;&lt;strong&gt;&lt;font size="1"&gt;Client&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="96"&gt;&lt;font size="1"&gt;Windows XP SP2 (With &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=10cc340b-f857-4a14-83f5-25634c3bf043&amp;amp;displaylang=en" target="_blank"&gt;.Net&#xD;
3.0&lt;/a&gt;), Vista and obviously Windows 7&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="105"&gt;&lt;font size="1"&gt;Internet Explorer + Windows XP SP2 (with .&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=10cc340b-f857-4a14-83f5-25634c3bf043&amp;amp;displaylang=en" target="_blank"&gt;Net&#xD;
3.0&lt;/a&gt;) &amp;amp; Vista&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;font size="1"&gt;FireFox, Mac Safari, Internet Explorer&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="83"&gt;&lt;font size="1"&gt;Any Web Browser&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="89"&gt;&lt;strong&gt;&lt;font size="1"&gt;Deployment&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="95"&gt;&lt;font size="1"&gt;Downloadable Installer or &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-US/library/142dbbz4(VS.80).aspx" target="_blank" mce_href="http://msdn2.microsoft.com/en-US/library/142dbbz4(VS.80).aspx"&gt;&lt;font size="1"&gt;ClickOnce&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="105"&gt;&lt;font size="1"&gt;Runs in Internet Explorer secure sandbox&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;font size="1"&gt;One-time install of Silverlight plug-in&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="83"&gt;&lt;font size="1"&gt;Web Page&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="89"&gt;&lt;strong&gt;&lt;font size="1"&gt;When to use&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="95"&gt;&lt;font size="1"&gt;Programs that need access to Windows desktop files.&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="105"&gt;&lt;font size="1"&gt;Intranet applications for Windows-oriented companies.&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;font size="1"&gt;Rich Internet Applications for public-facing web sites&lt;/font&gt;&lt;/td&gt;&lt;td valign="top" width="83"&gt;&lt;font size="1"&gt;General-purpose public-facing web sites &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Here’s my 2 cents on the subject. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;WPF&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
WPF is a fantastic choice for applications that need full access to the desktop for&#xD;
any number of reasons. That could be full 3D support, access to desktop files and&#xD;
the like. You can install these applications through XCopy, a full downloadable Installer&#xD;
or a ClickOnce installer. Where possible, I like to leverage the ClickOnce installer&#xD;
as it gives some amazing benefits around auto-update and keeps my application in a&#xD;
secure sandbox so deployment becomes really easy. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;WPF XBAP&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Just don’t use XBAPs anymore. This was an attractive option for Intranet applications&#xD;
back before Silverlight 2 and to a lesser degree Silverlight 3. However, now that&#xD;
Silverlight has the power that it does with .NET and OOB options and the like, opt&#xD;
for Silverlight anytime you would have considered XBAPs. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Silverlight is the right choice for any external facing &lt;strong&gt;Applications&lt;/strong&gt;.&#xD;
But that’s the key. I really look at Silverlight not as an HTML replacement but a&#xD;
true application layer. That’s one of the central points in the talk that &lt;a href="http://www.jamesward.com"&gt;James&#xD;
Ward&lt;/a&gt; and I did at Web 2.0 Expo last year - &lt;a title="http://www.slideshare.net/joshholmes/best-and-worst-practices-building-ria-with-adobe-and-microsoft" href="http://www.slideshare.net/joshholmes/best-and-worst-practices-building-ria-with-adobe-and-microsoft"&gt;http://www.slideshare.net/joshholmes/best-and-worst-practices-building-ria-with-adobe-and-microsoft&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ASP.NET + AJAX&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
ASP.NET + AJAX is the right choice for external facing, or even internal facing, web&#xD;
sites where the primary focus is information dispersal. That said, there are some&#xD;
amazing applications built with JavaScript in the browser. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Overall&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
The reality is that there are a lot of grey lines. WPF is getting a lot easier to&#xD;
deploy breaking down the traditional decision points between desktop and web applications.&#xD;
Rich Web Applications blur those lines as well and the reality is that they could&#xD;
be used to build a lot of applications that have historically been either written&#xD;
as full desktop applications or as web applications. Then on the web application side,&#xD;
JavaScript and the browser are getting faster, strong and easier to develop all the&#xD;
time so it’s becoming more of a viable application building set of technologies. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=8b1b46fb-0920-471f-aff6-38791610cadc"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=TnQ_QYDQqCk:HUPnVYb-iFM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=TnQ_QYDQqCk:HUPnVYb-iFM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=TnQ_QYDQqCk:HUPnVYb-iFM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=TnQ_QYDQqCk:HUPnVYb-iFM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=TnQ_QYDQqCk:HUPnVYb-iFM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=TnQ_QYDQqCk:HUPnVYb-iFM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=TnQ_QYDQqCk:HUPnVYb-iFM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=TnQ_QYDQqCk:HUPnVYb-iFM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/TnQ_QYDQqCk" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,8b1b46fb-0920-471f-aff6-38791610cadc.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/03/WhenToUseWhatMicrosoftClientTechnology.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=d06b5448-74df-48c4-9191-6b0050814485</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,d06b5448-74df-48c4-9191-6b0050814485.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,d06b5448-74df-48c4-9191-6b0050814485.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d06b5448-74df-48c4-9191-6b0050814485</wfw:commentRss><slash:comments>1</slash:comments><title>Windows Azure SDK 1.1</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,d06b5448-74df-48c4-9191-6b0050814485.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/kBWRSjZsj4k/WindowsAzureSDK11.aspx</link><pubDate>Tue, 02 Feb 2010 18:47:36 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
There’s an update to the Windows Azure SDK, version 1.1. The SDK extends Visual Studio&#xD;
2008 and the upcoming Visual Studio 2010 RC making it easy to develop, debug, package&#xD;
and deploy Windows Azure Applications. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There’s a number of new things and a handful of bug fixes from the 1.0. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
From the download page:&#xD;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&#xD;
Windows Azure Drive: Enable a Windows Azure application to use existing NTFS APIs&#xD;
to access a durable drive. This allows the Windows Azure application to mount a page&#xD;
blob as a drive letter, such as X:, and enables easy migration of existing NTFS applications&#xD;
to the cloud. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
OS Version Support: Allows a Windows Azure application to choose the appropriate Guest&#xD;
OS to run on in the cloud. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Bug Fixes&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&#xD;
StorageClient: Expose account key from storage credentials, expose continuation tokens&#xD;
for pagination, and reduce maximum buffer size for parallel uploads. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Windows Azure Diagnostics: Fix path corruption for crash dumps, OnDemandTransfer now&#xD;
respects LogLevelFilter. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
VS 2010: Improved packaging performance. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
VS 2010: Support for linked files in Web projects. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
VS 2010: Support for ASP.NET web project web.config transformations. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Certificate selection lists certificates from LocalMachine\My instead of CurrentUser\My. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Right click on Role under Roles folder to select whether to launch the browser against&#xD;
HTTP, HTTPS or not at all.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&#xD;
Windows Azure Tools for Microsoft Visual Studio includes:&#xD;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&#xD;
C# and VB Project creation support for creating a Windows Azure Cloud Service solution&#xD;
with multiple roles. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Tools to add and remove roles from the Cloud Service. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Tools to configure each Role. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Integrated local development via the Development Fabric and Development Storage services. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Running and Debugging a Cloud Service in the Development Fabric. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Building and packaging of Cloud Service Packages. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Browsing to the Windows Azure Developer Portal.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&amp;amp;displaylang=en"&gt;Download&#xD;
details: Windows Azure Tools for Microsoft Visual Studio 1.1 (February 2010)&lt;/a&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=d06b5448-74df-48c4-9191-6b0050814485"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=kBWRSjZsj4k:K7ZrJnMjjZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=kBWRSjZsj4k:K7ZrJnMjjZQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=kBWRSjZsj4k:K7ZrJnMjjZQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=kBWRSjZsj4k:K7ZrJnMjjZQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=kBWRSjZsj4k:K7ZrJnMjjZQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=kBWRSjZsj4k:K7ZrJnMjjZQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=kBWRSjZsj4k:K7ZrJnMjjZQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=kBWRSjZsj4k:K7ZrJnMjjZQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/kBWRSjZsj4k" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,d06b5448-74df-48c4-9191-6b0050814485.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/02/WindowsAzureSDK11.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=6feed3f0-b75b-4752-9376-8cdb69109c6b</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,6feed3f0-b75b-4752-9376-8cdb69109c6b.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,6feed3f0-b75b-4752-9376-8cdb69109c6b.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6feed3f0-b75b-4752-9376-8cdb69109c6b</wfw:commentRss><slash:comments>1</slash:comments><title>Taking The Polar Plunge Again</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,6feed3f0-b75b-4752-9376-8cdb69109c6b.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/XE0X45tRzC8/TakingThePolarPlungeAgain.aspx</link><pubDate>Mon, 01 Feb 2010 15:21:53 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/ct.ashx?id=3238275d-1111-4eca-a0b4-7604f43bc953&amp;amp;url=http%3a%2f%2fwww.flickr.com%2fphotos%2f11400133%40N05%2f3279848934%2f"&gt;&lt;img border="0" hspace="5" alt="Josh Holmes doing the Polar Plunge" vspace="5" align="left" src="http://static.flickr.com/3522/3279848934_2fcb2cf68f_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;Last&#xD;
year I did a Polar Plunge to raise money for the Special Olympics – Read about it&#xD;
at &lt;a href="http://www.joshholmes.com/blog/2009/02/14/TakingThePolarPlunge.aspx"&gt;Taking&#xD;
The Polar Plunge&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I’m doing it again this year and have much loftier goals this year. Last year I raised&#xD;
$725.00 and this year I want to raise $1000.00 and inspire others to do the same.&#xD;
At the time of this writing, I’ve raised $500 personally and have inspired 2 others&#xD;
to do the dive with me. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/ct.ashx?id=3238275d-1111-4eca-a0b4-7604f43bc953&amp;amp;url=http%3a%2f%2fwww.joshholmes.com%2fblog%2fct.ashx%3fid%3d1367de25-102d-4b15-b286-a65531ee0e11%26url%3dhttp%253a%252f%252fwww.joshholmes.com%252fblog%252fcontent%252fbinary%252fWindowsLiveWriter%252fPolarPlungingfortheSpecialOlympics_13808%252fclip_image002_2.jpg"&gt;&lt;strong&gt;&lt;img title="clip_image002" border="0" hspace="12" alt="clip_image002" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/PolarPlungingfortheSpecialOlympics_13808/clip_image002_thumb.jpg" width="160" height="204"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;First,&#xD;
why in the world would I do this in the first place?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
You may or may not know that I have a daughter with special needs. Her name is Maura.&#xD;
She’s 6 years old and while we don’t have a name for what she has the symptoms are&#xD;
that she has global delays and a seizure disorder. Despite this, she is one of the&#xD;
most passionate people that I know and approaches everything with wonder and excitement.&#xD;
She loves sports, playing with other kids and all kinds of activities. She’s amazing&#xD;
and an inspiration to me all the time. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
She is not currently in &lt;a href="http://www.somi.org/" target="_blank"&gt;Special Olympics&lt;/a&gt; but&#xD;
she will be soon so I’m supporting them now. I know that she will approach it like&#xD;
she does everything else with wonder and excitement. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Now, how can you help?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&#xD;
There are two easy ways to help with this year’s fundraising efforts, donate and/or&#xD;
plunge. The plunge that I’m doing is on Feb. 13th in Belleville, MI but you can plunge&#xD;
in any of their 19 locations and dates:&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;January 24&lt;br&gt;&lt;/strong&gt;&lt;a href="http://somi.org/events.php?eventID=2366"&gt;Lansing&lt;/a&gt; - Eagle Eye&#xD;
Golf Course&lt;strong&gt;&lt;br&gt;&#xD;
February 6, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2317"&gt;Stanton&lt;/a&gt;- Clifford Lake Inn&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2318"&gt;Muskegon&lt;/a&gt; - Fricano's Muskegon&#xD;
Lake &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;February 13, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2319"&gt;Traverse City&lt;/a&gt; – Grand Traverse&#xD;
Resort &amp;amp; Spa&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2320"&gt;Cheboygan&lt;/a&gt; – Hoppies Bar&#xD;
&amp;amp; Grill &#xD;
&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2321"&gt;Belleville&lt;/a&gt; – Moose Lodge&lt;br&gt;&lt;a href="http://somi.org/events.php?eventID=2586"&gt;Fenton&lt;/a&gt; - Fenton Moose Lodge &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;February 20, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2322"&gt;Jackson&lt;/a&gt; – Eagles Nest Restaurant&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2323"&gt;Mount Pleasant&lt;/a&gt;- CMU&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2324"&gt;Gaylord&lt;/a&gt; – Otsego Lake State&#xD;
Park&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2325"&gt;Ann Arbor&lt;/a&gt; – U of M&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2326"&gt;Grand Rapids&lt;/a&gt; – East Grand&#xD;
Rapids Middle School &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;February 27, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2327"&gt;Detroit&lt;/a&gt; – Roostertail&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2328"&gt;Saginaw/Bay City&lt;/a&gt; – Saginaw&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2329"&gt;Mecosta/Osceola&lt;/a&gt; – Chippewa&#xD;
Lake&lt;br&gt;&lt;a href="http://somi.org/events.php?eventID=2406"&gt;Alpena&lt;/a&gt; - Burton's Last Resort &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;February 28, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2330"&gt;Pinckney&lt;/a&gt; - Zukey Lake Tavern &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;March 20, 2010&lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2332"&gt;Kalamazoo&lt;/a&gt; – Lawson Ice Arena&lt;br&gt;&lt;a href="http://www.somi.org/events.php?eventID=2331"&gt;Marquette&lt;/a&gt; – Marquette Mountain &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
If you would rather just donate to my plunge, you can do so at &lt;a href="http://bit.ly/wonderplunge" target="_blank"&gt;Josh&#xD;
Holmes’ Polar Plunge Fundraising Page&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Either way, I thank you for your support!&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
If you are not able to support the Special Olympics of Michigan right now, please&#xD;
consider doing so in the future. You can see a lot great ways to get involved at &lt;a title="http://somi.org/page.php?contentID=1233" href="http://somi.org/page.php?contentID=1233"&gt;http://somi.org/page.php?contentID=1233&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=6feed3f0-b75b-4752-9376-8cdb69109c6b"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=XE0X45tRzC8:1gOnn8dFh_0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=XE0X45tRzC8:1gOnn8dFh_0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=XE0X45tRzC8:1gOnn8dFh_0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=XE0X45tRzC8:1gOnn8dFh_0:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=XE0X45tRzC8:1gOnn8dFh_0:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=XE0X45tRzC8:1gOnn8dFh_0:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=XE0X45tRzC8:1gOnn8dFh_0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=XE0X45tRzC8:1gOnn8dFh_0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/XE0X45tRzC8" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,6feed3f0-b75b-4752-9376-8cdb69109c6b.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2010/02/01/TakingThePolarPlungeAgain.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=eac3820b-5113-4df4-ace4-3dbcaa497f39</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,eac3820b-5113-4df4-ace4-3dbcaa497f39.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,eac3820b-5113-4df4-ace4-3dbcaa497f39.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=eac3820b-5113-4df4-ace4-3dbcaa497f39</wfw:commentRss><slash:comments>3</slash:comments><title>Review of Ext JS 3.0 Cookbook</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,eac3820b-5113-4df4-ace4-3dbcaa497f39.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/9oIK7tK9HvU/ReviewOfExtJS30Cookbook.aspx</link><pubDate>Thu, 19 Nov 2009 21:22:22 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a title="Ext JS 3.0 Cookbook (9781847198709): Jorge Ramon: Books" href="http://www.packtpub.com/ext-js-3-0-cookbook?utm_source=joshholmes.com&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_001570"&gt;&lt;img style="margin: 5px; float: left" border="0" align="left" src="http://images.amazon.com/images/P/1847198708.01.MZZZZZZZ.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
For full disclosure, &lt;a href="http://www.packtpub.com"&gt;Packt Publishing&lt;/a&gt; sent me&#xD;
a review copy of this book. They did not ask for a positive review, just a review. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
&amp;lt;update&amp;gt;The book’s official page is at &lt;a href="http://www.packtpub.com/ext-js-3-0-cookbook?utm_source=joshholmes.com&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_001570" target="_blank"&gt;Packt&#xD;
Pub's Official Ext JS 3.0 Cookbook site&lt;/a&gt;&amp;lt;/update&amp;gt;&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is the first book by Jorge Ramon that I’ve read. This book is exactly what the&#xD;
title says that it is, a Cookbook. It’s got 109 solutions to problems solved by &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1847198708/joshholmes-20"&gt;Ext&#xD;
JS 3.0&lt;/a&gt;. I was expecting, like a lot of other books to get a fill of all of the&#xD;
philosophy behind what they are trying to promote but that wasn’t the case. This book&#xD;
just in with no nonsense and gets right to the code. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Every chapter is laid out exactly the same. It starts off with a list of problems&#xD;
solved in this chapter and a very short paragraph that gives an explanation to why&#xD;
these are related problems. The rest of the chapter is broken in to “recipes” all&#xD;
of which are laid out exactly the same as each other as well with sections “Introduction”,&#xD;
“How to do it”, “How it works”, an optional “There’s more” and a “See also” section.&#xD;
The intro is typically a short paragraph that describes when this recipe is going&#xD;
to be useful and optionally contains a screenshot or two of the solution. The How&#xD;
to do it section is almost all code with just enough text to explain where to put&#xD;
the code that you are looking at. The How it works section explains a little more&#xD;
about the events and the libraries that are at play and how they effect the code snippets&#xD;
that you just wrote. The There’s more section points out potential pitfalls or other&#xD;
benefits that this recipe brings to the table. The See also section points out related&#xD;
recipes that you should look at in addition to the recipe that you’re looking at. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
So what’s my opinion on the book? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
if you are trying to understand JavaScript and/or &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1847198708/joshholmes-20"&gt;Ext&#xD;
JS 3.0&lt;/a&gt;, this book is not the book for you. There are plenty of other books out&#xD;
there that will step you in at a little more manageable pace. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
However, if you are somewhat familiar with JavaScript and &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1847198708/joshholmes-20"&gt;Ext&#xD;
JS 3.0&lt;/a&gt;, this is a great recipe book. The code is clean and readable. The problems&#xD;
are problems that I see on a semi-regular basis. I like it for what it is. It’s a&#xD;
handy reference and a set of problem/answers that solve discrete problems. It’s a&#xD;
good formula and I’m probably going to write a few blog posts in that format to feel&#xD;
it out. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The price, $49.00 or 30.99 Pounds is a little steep but if it cuts an hour or two&#xD;
out of your research and development time, it’s paid for itself. Also, you can download&#xD;
the code from &lt;a href="http://www.packtpub.com"&gt;Packt Publishing&lt;/a&gt; in a zip file&#xD;
and copy paste from that so it’s definitely going to save you time if you are using&#xD;
Ext JS 3.0. This was something that I missed at first to be honest and only caught&#xD;
when I went back to reread the preface and saw the link to where the source is zipped&#xD;
up. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.packtpub.com/index"&gt;&lt;img style="margin: 5px; display: inline" title="Packt Publishing" border="0" alt="Packt Publishing" align="right" src="https://www.packtpub.com/images/PacktLogoSmall.png" width="90" height="50"&gt;&lt;/img&gt;&lt;/a&gt;Another&#xD;
interesting note about &lt;a href="http://www.packtpub.com"&gt;Packt Publishing&lt;/a&gt; is that&#xD;
on their “About Packt Publishing” page in the back of the book, they mention that&#xD;
when they publish a book based on an open source project that they pay royalties back&#xD;
to that project. I don’t know how much they pay in royalties to the project but that’s&#xD;
a really class thing to do. If one is making money on an open source project, they&#xD;
should contribute to it somehow either through code or financially or both. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=eac3820b-5113-4df4-ace4-3dbcaa497f39"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=9oIK7tK9HvU:MsENNQwjQK8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=9oIK7tK9HvU:MsENNQwjQK8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=9oIK7tK9HvU:MsENNQwjQK8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=9oIK7tK9HvU:MsENNQwjQK8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=9oIK7tK9HvU:MsENNQwjQK8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=9oIK7tK9HvU:MsENNQwjQK8:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=9oIK7tK9HvU:MsENNQwjQK8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=9oIK7tK9HvU:MsENNQwjQK8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/9oIK7tK9HvU" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,eac3820b-5113-4df4-ace4-3dbcaa497f39.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/11/19/ReviewOfExtJS30Cookbook.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=78f7e0f4-14b1-4f63-98e0-b0ddc7a63288</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,78f7e0f4-14b1-4f63-98e0-b0ddc7a63288.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,78f7e0f4-14b1-4f63-98e0-b0ddc7a63288.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=78f7e0f4-14b1-4f63-98e0-b0ddc7a63288</wfw:commentRss><title>Updating the Simple Silverlight Countdown Blog badge</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,78f7e0f4-14b1-4f63-98e0-b0ddc7a63288.aspx</guid><link>http://rss.joshholmes.com/~r/JoshHolmes/~3/Xd6BrbP-YEA/UpdatingTheSimpleSilverlightCountdownBlogBadge.aspx</link><pubDate>Wed, 28 Oct 2009 19:14:56 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/UpdatingtheSimpleSilverlightCountdownBlo_CA60/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/UpdatingtheSimpleSilverlightCountdownBlo_CA60/image_thumb_2.png" width="109" height="213"&gt;&lt;/img&gt;&lt;/a&gt; When&#xD;
I was preparing for RIAPalooza, I created and blogged about &lt;a href="http://www.joshholmes.com/blog/2009/04/28/CreatingASimpleSilverlightCountdownBlogBadge.aspx"&gt;Creating&#xD;
a Simple Silverlight Countdown Blog badge&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
It was great but I wanted to updated it for the next event and realized that recompiling&#xD;
it was not really a user friendly option. The answer is that I updated the widget&#xD;
to have a level of parameterization so that I could easily update it without having&#xD;
to recode everything. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
*Update – &lt;a href="http://www.joshholmes.com/resources/silvercountdown2.zip"&gt;Source&#xD;
Code&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
The good news is that there’s a mechanism called InitParams that allows you to pass&#xD;
in initialization parameters on startup. I’m not wild about the mechanism itself as&#xD;
it’s just a key-value pair string and not individual parameters but it works. The&#xD;
alternative is to do something where you write some javascript that will call into&#xD;
the Silverlight object and set parameters. While that works, it wasn’t my first choice&#xD;
because you have to worry about the order of events, exposing objects as scriptable&#xD;
and so on.&#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;object &lt;/span&gt;&lt;span style="color: red"&gt;data&lt;/span&gt;&lt;span style="color: blue"&gt;="data:application/x-silverlight-2," &#xD;
&lt;br&gt;&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="application/x-silverlight-2" &lt;/span&gt;&lt;span style="color: red"&gt;width&lt;/span&gt;&lt;span style="color: blue"&gt;="100%" &lt;/span&gt;&lt;span style="color: red"&gt;height&lt;/span&gt;&lt;span style="color: blue"&gt;="100%"&amp;gt; &lt;/span&gt;&lt;span style="color: blue"&gt;.&#xD;
. . &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;param &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="initParams" &#xD;
&lt;br&gt;&lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="eventDate=01/13/2010,registrationUrl=www.codemash.com,&lt;br&gt;&#xD;
registerText=Check it out!,startImageUrl=logo_codemash_2010.jpg,&lt;br&gt;&#xD;
endImageUrl=logo_codemash_2009.jpg" /&amp;gt; . . . &#xD;
&lt;br&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;object&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Notice that there are multiple parameters here separated by commas. The first one&#xD;
is a date and the second one is a URL and so on. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To access that init parameter in the startup you need to open the App class found&#xD;
in App.xaml.cs and in any method use the Host object’s InitParams list. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;fieldValue = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Host.InitParams[key];&lt;/pre&gt;&lt;p&gt;&#xD;
For a lot of reasons, I wrap that up in a method as follows:&#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private string &lt;/span&gt;GetInitParam(&lt;span style="color: blue"&gt;string &lt;/span&gt;key)&#xD;
{ &lt;span style="color: blue"&gt;string &lt;/span&gt;fieldValue = &lt;span style="color: #a31515"&gt;""&lt;/span&gt;; &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;.Host.InitParams.ContainsKey(key))&#xD;
{ fieldValue = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Host.InitParams[key]; } &lt;span style="color: blue"&gt;return &lt;/span&gt;fieldValue;&#xD;
}&lt;/pre&gt;&lt;p&gt;&#xD;
This allows me to quickly add a lot of new parameters and write the OnStartup method&#xD;
as follows:&#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;OnStartup(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;StartupEventArgs &lt;/span&gt;e)&#xD;
{ &lt;span style="color: blue"&gt;string &lt;/span&gt;DateTimeString = GetInitParam(&lt;span style="color: #a31515"&gt;"eventDate"&lt;/span&gt;); &lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;eventDate&#xD;
= &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.MinValue; &lt;span style="color: blue"&gt;if &lt;/span&gt;(DateTimeString.Length&#xD;
&amp;gt; 0) { &lt;span style="color: blue"&gt;try &lt;/span&gt;{ eventDate = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Parse(DateTimeString);&#xD;
} &lt;span style="color: blue"&gt;catch &lt;/span&gt;{ } } &lt;span style="color: blue"&gt;string &lt;/span&gt;backGroundUrl&#xD;
= GetInitParam(&lt;span style="color: #a31515"&gt;"background"&lt;/span&gt;); &lt;span style="color: blue"&gt;string &lt;/span&gt;startImageUrl&#xD;
= GetInitParam(&lt;span style="color: #a31515"&gt;"startImageUrl"&lt;/span&gt;); &lt;span style="color: blue"&gt;string &lt;/span&gt;endImageUrl&#xD;
= GetInitParam(&lt;span style="color: #a31515"&gt;"endImageUrl"&lt;/span&gt;); &lt;span style="color: blue"&gt;string &lt;/span&gt;registrationUrl&#xD;
= GetInitParam(&lt;span style="color: #a31515"&gt;"registrationUrl"&lt;/span&gt;); &lt;span style="color: blue"&gt;string &lt;/span&gt;registerText&#xD;
= GetInitParam(&lt;span style="color: #a31515"&gt;"registerText"&lt;/span&gt;); &lt;span style="color: green"&gt;//&#xD;
Load the main control here &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.RootVisual&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;( eventDate,&#xD;
backGroundUrl, startImageUrl, endImageUrl, registrationUrl, registerText); }&lt;/pre&gt;&lt;p&gt;&#xD;
Notice that I’m calling a custom constructor on the Page class. That looks as follows:&#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Timer &lt;/span&gt;_timer = &lt;span style="color: blue"&gt;null&lt;/span&gt;; &lt;span style="color: blue"&gt;public &lt;/span&gt;Page()&#xD;
: &lt;span style="color: blue"&gt;this&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;, &lt;span style="color: #a31515"&gt;""&lt;/span&gt;)&#xD;
{} &lt;span style="color: blue"&gt;public &lt;/span&gt;Page(&lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;eventDate, &lt;span style="color: blue"&gt;string &lt;/span&gt;backGroundImageUrl, &#xD;
&lt;br&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;imageStartUrl, &lt;span style="color: blue"&gt;string &lt;/span&gt;imageEndUrl, &#xD;
&lt;br&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;registrationUrl, &lt;span style="color: blue"&gt;string &lt;/span&gt;registrationText)&#xD;
{ EventDateTime = eventDate; &lt;span style="color: green"&gt;// Required to initialize&#xD;
variables &lt;/span&gt;InitializeComponent(); &lt;span style="color: blue"&gt;if &lt;/span&gt;(backGroundImageUrl.Length&#xD;
&amp;gt; 0) { backGroundImage.Source = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(backGroundImageUrl, &lt;span style="color: #2b91af"&gt;UriKind&lt;/span&gt;.Relative));&#xD;
} &lt;span style="color: blue"&gt;if &lt;/span&gt;(imageStartUrl.Length &amp;gt; 0) { image.Source&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(imageStartUrl, &lt;span style="color: #2b91af"&gt;UriKind&lt;/span&gt;.Relative));&#xD;
} &lt;span style="color: blue"&gt;if &lt;/span&gt;(imageEndUrl.Length &amp;gt; 0) { image1.Source&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(imageEndUrl, &lt;span style="color: #2b91af"&gt;UriKind&lt;/span&gt;.Relative));&#xD;
} &lt;span style="color: blue"&gt;if &lt;/span&gt;(registrationUrl.Length &amp;gt; 0) { linkRegistrationButton.NavigateUri&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"http://" &lt;/span&gt;+&#xD;
registrationUrl); } &lt;span style="color: blue"&gt;if &lt;/span&gt;(registrationText.Length &amp;gt;&#xD;
0) { linkRegistrationButton.Content = registrationText; } _timer = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Timer&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimerCallback&lt;/span&gt;(Timer_Tick), &lt;span style="color: blue"&gt;null&lt;/span&gt;,&#xD;
0, 1000); AnimateLogos.AutoReverse = &lt;span style="color: blue"&gt;true&lt;/span&gt;; AnimateLogos.RepeatBehavior&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RepeatBehavior&lt;/span&gt;(1000);&#xD;
AnimateLogos.Begin(); }&lt;/pre&gt;&lt;p&gt;&#xD;
That’s all that was required for making it parameterized so that I can update it quickly. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=78f7e0f4-14b1-4f63-98e0-b0ddc7a63288"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=Xd6BrbP-YEA:c5SxPKnhPwQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=Xd6BrbP-YEA:c5SxPKnhPwQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=Xd6BrbP-YEA:c5SxPKnhPwQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=Xd6BrbP-YEA:c5SxPKnhPwQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=Xd6BrbP-YEA:c5SxPKnhPwQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=Xd6BrbP-YEA:c5SxPKnhPwQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.joshholmes.com/~ff/JoshHolmes?a=Xd6BrbP-YEA:c5SxPKnhPwQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=Xd6BrbP-YEA:c5SxPKnhPwQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/Xd6BrbP-YEA" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,78f7e0f4-14b1-4f63-98e0-b0ddc7a63288.aspx</comments><category>Silverlight</category><feedburner:origLink>http://www.joshholmes.com/blog/2009/10/28/UpdatingTheSimpleSilverlightCountdownBlogBadge.aspx</feedburner:origLink></item></channel></rss>
