<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29532906</id><updated>2011-04-21T16:58:42.914-07:00</updated><category term='C#'/><category term='asp.net'/><category term='pictures'/><category term='Tech Ed'/><category term='TechEd2008'/><category term='code'/><category term='running'/><category term='Microsoft'/><category term='piano'/><category term='billg'/><category term='photography'/><category term='controls'/><title type='text'>ideapod</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29532906.post-141344072602006895</id><published>2008-06-10T10:55:00.001-07:00</published><updated>2009-03-26T17:09:07.837-07:00</updated><title type='text'>Photos from Tech Ed IT Pros: Bob Muglia Keynote, part I</title><content type='html'>&lt;table border="0" cellspacing="0" cellpadding="20" width="1019"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1017"&gt;&lt;p&gt;My first batch of snapshots from Bob Muglia's keynote this morning, including a selection of programmatically stitched panoramas. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8455.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8455" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8455_thumb.jpg" width="1028" height="581" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8360Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8360 Stitch" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8360Stitch_thumb.jpg" width="1028" height="428" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8108Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8108 Stitch" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8108Stitch_thumb.jpg" width="523" height="772" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7994.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_7994" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7994_thumb.jpg" width="644" height="366" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8012.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8012" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8012_thumb.jpg" width="644" height="460" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="1043" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="center" width="1041"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8084.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8084" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8084_thumb.jpg" width="188" height="268" /&gt;&lt;/a&gt; &lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7977.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_7977" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7977_thumb.jpg" width="401" height="269" /&gt;&lt;/a&gt; &lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7970.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_7970" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_7970_thumb.jpg" width="180" height="268" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8271.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8271" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8271_thumb.jpg" width="1028" height="687" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8299.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8299" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8299_thumb.jpg" width="644" height="282" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8280.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8280" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8280_thumb.jpg" width="527" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="734" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="732"&gt;&lt;p align="center"&gt; &lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8308.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8308" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8308_thumb.jpg" width="329" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8246.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8246" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8246_thumb.jpg" width="357" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="400" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;p align="center"&gt; &lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8248.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_8248" src="http://monkeytripping.com/blog_images/PhotosfromTechEdITProsBobMugliaKeynotepa_957E/IMG_8248_thumb.jpg" width="1028" height="580" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-141344072602006895?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/141344072602006895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=141344072602006895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/141344072602006895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/141344072602006895'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2008/06/photos-from-tech-ed-it-pros-bob-muglia.html' title='Photos from Tech Ed IT Pros: Bob Muglia Keynote, part I'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-2917569598273358131</id><published>2008-06-08T14:29:00.001-07:00</published><updated>2008-06-08T23:29:14.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech Ed'/><category scheme='http://www.blogger.com/atom/ns#' term='pictures'/><category scheme='http://www.blogger.com/atom/ns#' term='TechEd2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Photos from TechEd 2008 Devs: Party at Universal Studios Orlando</title><content type='html'>&lt;table cellspacing="0" cellpadding="1" width="528" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="526"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/CopyofIMG_7239Stitch.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="772" alt="Copy of IMG_7239 Stitch" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/CopyofIMG_7239Stitch_thumb.jpg" width="554" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="526"&gt;This panorama comprises five horizontal photos.          &lt;br /&gt;(Somewhere, Encarta's copy chief is smiling. Even after all these years, I remember the ESG's recipe: &amp;quot;pancake batter comprises butter, milk, eggs.&amp;quot;) &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7261.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="682" alt="IMG_7261" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7261_thumb.jpg" width="1028" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7316Stitch2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="772" alt="IMG_7316 Stitch2" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7316Stitch2_thumb.jpg" width="510" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7253Stitch.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="772" alt="IMG_7253 Stitch" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7253Stitch_thumb.jpg" width="601" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;This very weird panorama comprises six horizontal photos.          &lt;br /&gt;It isn't totally successful but it's sure fun to look at. &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7289.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="IMG_7289" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7289_thumb.jpg" width="324" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7308.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="431" alt="IMG_7308" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7308_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="1" align="center" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7329.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="IMG_7329" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsUniversalStudios_C5C4/IMG_7329_thumb.jpg" width="514" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-2917569598273358131?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/2917569598273358131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=2917569598273358131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2917569598273358131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2917569598273358131'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2008/06/photos-from-teched-2008-devs-party-at.html' title='Photos from TechEd 2008 Devs: Party at Universal Studios Orlando'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-3944027413353481098</id><published>2008-06-08T10:31:00.001-07:00</published><updated>2008-06-08T15:22:14.086-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech Ed'/><category scheme='http://www.blogger.com/atom/ns#' term='pictures'/><category scheme='http://www.blogger.com/atom/ns#' term='TechEd2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Photos from Tech Ed 2008 Devs: Carl Franklin plays the show floor</title><content type='html'>&lt;p align="left"&gt;Sunday now and I'm finally finding time to catch up on all the pictures I shot during Tech Ed Developers last week. The co-host of &lt;a href="http://www.dotnetrocks.com/"&gt;.NET Rocks!&lt;/a&gt;, &lt;a href="http://www.franklins.net/carl.aspx"&gt;Carl Franklin&lt;/a&gt; has a fine voice and plays guitar with exceptional skill.&amp;#160; Many of us milling the conference floor ceased our schwag-collecting and stopped by to hear Carl play. &lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7127.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="772" alt="IMG_7127" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7127_thumb.jpg" width="516" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7119Stitch.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="393" alt="IMG_7119 Stitch" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7119Stitch_thumb.jpg" width="1028" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7088.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="423" alt="IMG_7088" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7088_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table cellspacing="0" cellpadding="1" width="400" align="center" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="100"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7112.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="IMG_7112" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7112_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7101.jpg"&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="100"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7130.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="IMG_7130" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7130_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="100"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7101.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="IMG_7101" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7101_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7112.jpg"&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="100"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7133.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="166" alt="IMG_7133" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7133_thumb.jpg" width="225" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7156.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="IMG_7156" src="http://monkeytripping.com/blog_images/PhotosfromTechEd2008DevsCarlFranklinplay_9135/IMG_7156_thumb.jpg" width="324" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-3944027413353481098?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/3944027413353481098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=3944027413353481098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3944027413353481098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3944027413353481098'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2008/06/photos-from-tech-ed-2008-devs-carl.html' title='Photos from Tech Ed 2008 Devs: Carl Franklin plays the show floor'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-3766380373090767742</id><published>2008-06-03T22:16:00.001-07:00</published><updated>2009-03-26T17:11:09.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech Ed'/><category scheme='http://www.blogger.com/atom/ns#' term='billg'/><category scheme='http://www.blogger.com/atom/ns#' term='TechEd2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft Tech Ed 2008 Developers | Panoramic images from Bill Gates' keynote</title><content type='html'>&lt;p&gt;Programmatically stitched panoramic images. I shot these pictures during Bill Gates' keynote on Day 2 of Microsoft Tech Ed 2008 Developers.  &lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_7030Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_7030 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_7030Stitch_thumb.jpg" width="1028" height="361" /&gt;&lt;/a&gt; &lt;br /&gt;Empty. Stitched from ten vertically-shot images.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6641Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6641 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6641Stitch_thumb.jpg" width="1028" height="471" /&gt;&lt;/a&gt; &lt;br /&gt;Full! Stitched from six vertically-shot images.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6649Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6649 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6649Stitch_thumb.jpg" width="1028" height="279" /&gt;&lt;/a&gt; &lt;br /&gt;billg takes the stage. Stitched from ten vertically-shot images. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6668Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6668 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6668Stitch_thumb.jpg" width="1028" height="469" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6964Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6964 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6964Stitch_thumb.jpg" width="1028" height="369" /&gt;&lt;/a&gt;&lt;br /&gt;Lineup for the Q&amp;amp;A with billg&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6967Stitch2.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6967 Stitch (2)" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6967Stitch2_thumb.jpg" width="1028" height="471" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Quizzing Mr. Gates. &lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6709Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6709 Stitch" src="http://monkeytripping.com/blog_images/MicrosoftTechEd2008TuesdayPanoramicimage_1346F/IMG_6709Stitch_thumb.jpg" width="1028" height="726" /&gt;&lt;/a&gt; &lt;br /&gt;This one's an uncropped mess but I sort of like it anyway. Next year maybe I'll bring a full-frame fisheye lens to shoot the keynote.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;General call to conference organizers on technology topics: I am happy to exchange unrestricted rights to the thousands of photos I invariably shoot at these events for comps on conference registration fees.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-3766380373090767742?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/3766380373090767742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=3766380373090767742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3766380373090767742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3766380373090767742'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2008/06/microsoft-tech-ed-2008-tuesday.html' title='Microsoft Tech Ed 2008 Developers | Panoramic images from Bill Gates&amp;#39; keynote'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-5451250735245574279</id><published>2008-06-03T15:05:00.001-07:00</published><updated>2009-03-26T17:12:04.628-07:00</updated><title type='text'>Tech Ed 2008 Photographs | Monday | Jeff Prosise and Panoramas</title><content type='html'>&lt;p&gt;I returned to Tech Ed 2008 Developers determined to take a picture or two. I took the photographs below during Monday's pre-conference sessions. Many of the images below were programmatically stitched into panoramas from several pictures, a technique I've been playing with recently to communicate the &lt;a href="http://www.flickr.com/photos/ideapod/2365628660/sizes/l/"&gt;scale of things&lt;/a&gt; and to combat the grain associated with shooting &lt;a href="http://www.flickr.com/photos/ideapod/2360608474/sizes/l/in/set-72157604236642022/"&gt;handheld in low light&lt;/a&gt;. &lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6352.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6352" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6352_thumb.jpg" width="1043" height="700" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Inside: Orange County Convention Center entrance. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6467.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6467" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6467_thumb.jpg" width="507" height="772" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Outside: Orange County Convention Center entrance. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6340copy.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6340 copy" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6340copy_thumb.jpg" width="1028" height="282" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Most denizens of the IT world will appreciate this bus-borne commentary on organizational teamwork. Nice to start Tech Ed with a smile. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6340copy.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6342_crop.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6342_crop" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6342_crop_thumb.jpg" width="1028" height="756" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Colors!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="344"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6379.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6379" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6379_thumb.jpg" width="644" height="431" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="56"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6380.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6380" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6380_thumb.jpg" width="644" height="431" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="344"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6407.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6407" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6407_thumb.jpg" width="642" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="123"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6427.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6427" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6427_thumb.jpg" width="644" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" colspan="2"&gt;&lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6432.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6432" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6432_thumb.jpg" width="1028" height="683" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" colspan="2"&gt;&lt;p align="center"&gt;Jeff Prosise hard at work during his Silverlight PreCon. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="1026"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1024"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6417.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6417" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6417_thumb.jpg" width="644" height="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;Jeff Prosise &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="1026"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1024"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6445_crop.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6445_crop" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6445_crop_thumb.jpg" width="1028" height="568" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Jeff Prosise, looking contemplative as he confronts the existential crisis of Q&amp;amp;A. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1024"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/CopyofIMG_6399.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="Copy of IMG_6399" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/CopyofIMG_6399_thumb.jpg" width="1028" height="425" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;Jeff Prosise with us Q&amp;amp;A groupies&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/CopyofIMG_6399.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="402"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6475Stitch.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6475 Stitch" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6475Stitch_thumb.jpg" width="1028" height="346" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;Orange County Convention Center at dusk. This panorama comprises eight vertically-shot images. I'm not satisfied with this -- but I've got the rest of Tech Ed Devs and Tech Ed IT Pros to do better!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="1" width="1002"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;&lt;a href="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6504.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border="0" alt="IMG_6504" src="http://monkeytripping.com/blog_images/TechEd2008PhotographsMondayProsiseandPan_A945/IMG_6504_thumb.jpg" width="1028" height="687" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="1000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-5451250735245574279?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/5451250735245574279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=5451250735245574279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/5451250735245574279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/5451250735245574279'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2008/06/tech-ed-2008-photographs-monday-jeff.html' title='Tech Ed 2008 Photographs | Monday | Jeff Prosise and Panoramas'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-7452999558726783722</id><published>2007-10-17T17:20:00.001-07:00</published><updated>2007-10-19T17:10:32.704-07:00</updated><title type='text'>Ken's Oct. 14 Long Beach Marathon: 3:30:19</title><content type='html'>&lt;p align="left"&gt;Exactly one month after my&amp;nbsp;first marathon in Maui (which&amp;nbsp;I finished in a&amp;nbsp;relaxing 3:48)&amp;nbsp;I&amp;nbsp;ran closer to home in the Oct. 14&amp;nbsp;Long Beach Marathon. Dr. Fine joined me on this adventure: me on foot, Essie snapping pictures and cracking encouraging jokes from&amp;nbsp;her bicycle&amp;nbsp;the whole way (example: "Don't hold back, Ken! Remember, I know CPR!!!") &lt;/p&gt; &lt;p align="left"&gt;Blogging provides a nice look back at the journey.&amp;nbsp;Way back in &lt;a href="http://kenfine.blogspot.com/2007/03/visions-of-golden-gate.html"&gt;March I posted pictures from my first training runs&amp;nbsp;in San Francisco&lt;/a&gt;, and using &lt;a href="http://www.gmap-pedometer.com"&gt;Gmap-Pedometer&lt;/a&gt; I quickly established the routes that would become the core of my training (&lt;a href="http://kenfine.blogspot.com/2007/03/run-from-costa-mesa-to-newport-pier-in.html"&gt;Costa Mesa to Newport Pier&lt;/a&gt;, &lt;a href="http://kenfine.blogspot.com/2007/03/gmaps-pedometer-to-huntington-pier-and.html"&gt;Costa Mesa to Huntington Pier&lt;/a&gt;, &lt;a href="http://kenfine.blogspot.com/2007/03/running-costa-mesa-to-chocolate-covered.html"&gt;Costa Mesa to chocolate bananas on Balboa&lt;/a&gt;&amp;nbsp;...&amp;nbsp;)&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Kudos to the organizers of the Long Beach Marathon: it was a super well-planned and well-executed event, a beautiful course, and a whole lot of fun.&amp;nbsp;I thought it was especially great how they thawed Elvis from his cryogenic storage to cheer us on (pictured below).&amp;nbsp;&amp;nbsp;I will be back for more running fun at Long Beach next year. &lt;/p&gt; &lt;p align="left"&gt;The&amp;nbsp;stats for the first printing of my&amp;nbsp;trading cards... &lt;/p&gt; &lt;blockquote&gt; &lt;p align="left"&gt;Pace: 8:02&amp;nbsp;per mile / 3:30:19 total chip time&lt;br&gt;Place overall: 171 out of 2343&lt;br&gt;Place among men: 152 out of 1462&lt;br&gt;Place in my age&amp;nbsp;group (35-39): 29th out of 243&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="left"&gt;I'm still well off of a Boston qualifying time of 3:15:59, but I'm sure that with enough&amp;nbsp;time and practice, I'll get to that pace and better. Most important: I'm very much enjoying these stabs at amateur&amp;nbsp;athleticism. Try. &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375122_1637.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="n539469574_375042_4147" src="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375042_4147_thumb.jpg" width="201" border="0"&gt;&lt;/a&gt; &lt;a href="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375122_1637.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="n539469574_375122_1637" src="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375122_1637_thumb.jpg" width="233" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375041_8859.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="604" alt="n539469574_375041_8859" src="http://monkeytripping.com/blog_images/KensOct.14LongBeachMarathon33019_E0DE/n539469574_375041_8859_thumb.jpg" width="409" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-7452999558726783722?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/7452999558726783722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=7452999558726783722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7452999558726783722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7452999558726783722'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/10/ken-oct-14-long-beach-marathon-33019.html' title='Ken&amp;#39;s Oct. 14 Long Beach Marathon: 3:30:19'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-7431058990082913027</id><published>2007-07-21T01:12:00.001-07:00</published><updated>2007-07-21T01:23:01.516-07:00</updated><title type='text'>example | C# .NET ASP.NET | Writing a directory's contents as XML, and binding that XML to an ASP.NET databound control</title><content type='html'>&lt;p&gt;&lt;strong&gt;Intent:&lt;/strong&gt; Write an XML file that describes each file in a directory, and then use that XML file as a datasource for an ASP.NET databound control. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Discussion: &lt;/strong&gt;.NET has high-level abstractions for creating XML in the form of the XmlTextWriter object. It is fairly easy to use. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt; Instantiate a DirectoryInfo Object. Instantiate a FileInfo array by calling the .GetFiles on your instantiated DirectoryInfo object. Instantiate a MemoryStream object. Instantiate an XmlTextWriter object and set its character encoding to UTF-8. Initate a foreach loop over the FileInfo[] array, instatiating a fileInfo object on each iteration of the loop. To open a new element and populate it, call &lt;em&gt;XmlTextWriterObject&lt;/em&gt;.WriteStartElement, then call &lt;em&gt;XmlTextWriterObject.&lt;/em&gt;WriteString&amp;nbsp; to assign the content of the element, and then call &lt;em&gt;XmlTextWriterObject.&lt;/em&gt;WriteEndElement() to close it. Note that elements can be nested; be sure to call the .EndElement() method at the appropriate place for your nest. Write the finished Xml to a file by instantiating a FileWriter object, calling OpenWrite(&lt;em&gt;Filename&lt;/em&gt;), instantiating a byte[] array and calling the &lt;em&gt;MemoryStream.&lt;/em&gt;ToArray() method, and finally calling the FileStream.Write() using the byte array as a parameter of the method. Once the XML is written, specify it as an XmlDataSource by assigning the byte array to the &lt;em&gt;XmlDataSource.&lt;/em&gt;Data property and calling the &lt;em&gt;XmlDataSource.&lt;/em&gt;DataBind() method. &lt;em&gt;(whew!)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Weaknesses: &lt;/strong&gt;I'd like to know how to avoid writing the Xml to a temporary file, as shown below. How can this all happen in memory? &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;   &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; ShowPhotoGrid( &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; jobID)&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;DirectoryInfo&lt;/span&gt; dir = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DirectoryInfo&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;@"R:\whatever\"&lt;/span&gt;+jobID);&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;FileInfo&lt;/span&gt;[] fis = dir.GetFiles(&lt;span style="color: rgb(163,21,21)"&gt;"*ld200.jpg"&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;//FileInfo fi = new FileInfo(); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; s = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;(); &lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;XmlTextWriter&lt;/span&gt; xw = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XmlTextWriter&lt;/span&gt;(s,&lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.UTF8); &lt;br /&gt;        xw.WriteStartDocument(); &lt;br /&gt;        xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filesystemitems"&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; largefilename = &lt;span style="color: rgb(163,21,21)"&gt;""&lt;/span&gt;; &lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;FileInfo&lt;/span&gt; fi &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; fis)&lt;br /&gt;        {&lt;br /&gt;            xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filesystemitem"&lt;/span&gt;); &lt;br /&gt;            xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filename"&lt;/span&gt;); &lt;br /&gt;            xw.WriteString(fi.Name); &lt;br /&gt;            xw.WriteEndElement();&lt;br /&gt;            xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filenameandpath"&lt;/span&gt;);&lt;br /&gt;            xw.WriteString(&lt;span style="color: rgb(163,21,21)"&gt;"http://whatever.org/content/whatever/"&lt;/span&gt; + jobID +&lt;span style="color: rgb(163,21,21)"&gt;"/"&lt;/span&gt; + fi.Name);&lt;br /&gt;            xw.WriteEndElement();&lt;br /&gt;            largefilename = &lt;span style="color: rgb(43,145,175)"&gt;StringManipulation&lt;/span&gt;.LeftOfRightmostOf(fi.Name, &lt;span style="color: rgb(163,21,21)"&gt;'_'&lt;/span&gt;); &lt;br /&gt;            largefilename = (largefilename + &lt;span style="color: rgb(163,21,21)"&gt;"_ld600_watermark.jpg"&lt;/span&gt;);&lt;br /&gt;            xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filenameandpathlarge"&lt;/span&gt;);&lt;br /&gt;            xw.WriteString(&lt;span style="color: rgb(163,21,21)"&gt;&lt;span style="color: rgb(163,21,21)"&gt;"http://whatever.org/content/whatever/"&lt;/span&gt;&lt;/span&gt; + jobID + &lt;span style="color: rgb(163,21,21)"&gt;"/"&lt;/span&gt; + largefilename);&lt;br /&gt;            xw.WriteEndElement();&lt;br /&gt;            xw.WriteStartElement(&lt;span style="color: rgb(163,21,21)"&gt;"filesize"&lt;/span&gt;); &lt;br /&gt;            xw.WriteString(&lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToString(fi.Length)); &lt;br /&gt;            xw.WriteEndElement(); &lt;br /&gt;            xw.WriteEndElement(); &lt;br /&gt;        }&lt;br /&gt;        xw.WriteEndElement(); &lt;br /&gt;        xw.Flush();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Write memorystream to a file. This is not the most efficient way to do this. What's better? &lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;FileStream&lt;/span&gt; fs = &lt;span style="color: rgb(43,145,175)"&gt;File&lt;/span&gt;.OpenWrite(&lt;span style="color: rgb(163,21,21)"&gt;@"R:\whatever\blahblah.txt"&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] data = s.ToArray();&lt;br /&gt;        fs.Write(data, 0, data.Length);&lt;br /&gt;        fs.Close();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Convert the data array to a string and response.write it&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; myString = System.Text.&lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.UTF8.GetString(data); &lt;br /&gt;      &lt;span style="color: rgb(0,128,0)"&gt;// Response.Write(myString);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;        XmlDataSource1.Data = myString;&lt;br /&gt;        XmlDataSource1.DataBind();&lt;br /&gt;        DataList1.DataBind(); &lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;       &lt;span style="color: rgb(0,128,0)"&gt;//???? How do I convert my MemoryStream object to a string &lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// It involves Writing the MemoryStream to a byte array, and converting it to a string, but I can't get things working quite right&lt;br /&gt;&lt;/span&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-7431058990082913027?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/7431058990082913027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=7431058990082913027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7431058990082913027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7431058990082913027'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/07/example-c-net-aspnet-writing-directory.html' title='example | C# .NET ASP.NET | Writing a directory&amp;#39;s contents as XML, and binding that XML to an ASP.NET databound control'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-1825400202521034498</id><published>2007-07-21T00:50:00.001-07:00</published><updated>2007-07-21T00:50:51.471-07:00</updated><title type='text'>example | C# .NET ASP.NET| Binding image names from a filesystem to an ArrayList, and binding that to ASP.NET databound control</title><content type='html'>&lt;p&gt;&lt;strong&gt;Intent: &lt;/strong&gt;Sometimes you want to display photographs contained in a filesystem directly, without referencing&amp;nbsp; an intermediate data layer like a database store or XML file. You &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Overview: &lt;/strong&gt;Instantiate an ArrayList. Iterate over the output of the Directory.GetFiles() method, specifying the image extension as a mask. Build up HTML that should be placed in each cell of a databound control.&amp;nbsp;Call the ArrayList's&amp;nbsp;.Add method to write the HTML string to the ArrayList. Assign the Array as the DataSource of a DataList. &amp;nbsp;Bind that DataList to an &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt; &lt;/span&gt;using the &lt;span style="background: rgb(255,238,98)"&gt;&amp;lt;%&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;#&lt;/span&gt; Container.DataItem &lt;span style="background: rgb(255,238,98)"&gt;%&amp;gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; syntax.&amp;nbsp; Call the DataList.DataBind(); method. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Discussion: &lt;/strong&gt;The example below also allows the user to adjust the number of displayed columns via a DropDownList selection. This works by programmatically assigning the DataList.RepeatColumns property to the DropDownList.Selected property.&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;        &lt;span style="color: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt; pics = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; code;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; image;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;//string myFile; &lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; myFile &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Directory&lt;/span&gt;.GetFiles((&lt;span style="color: rgb(163,21,21)"&gt;"T:\\WHATEVER\\WhateverSubDir"&lt;/span&gt;), &lt;span style="color: rgb(163,21,21)"&gt;"*.jpg"&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            image = YOUR_DIRECTORY + &lt;span style="color: rgb(43,145,175)"&gt;Path&lt;/span&gt;.GetFileName(myFile);&lt;br /&gt;            code = &lt;span style="color: rgb(163,21,21)"&gt;"&amp;lt;img src=\""&lt;/span&gt; + image + &lt;span style="color: rgb(163,21,21)"&gt;"\"&amp;gt;"&lt;/span&gt;;&lt;br /&gt;            code += &lt;span style="color: rgb(163,21,21)"&gt;"&amp;lt;br /&amp;gt; "&lt;/span&gt; + &lt;span style="color: rgb(43,145,175)"&gt;Path&lt;/span&gt;.GetFileName(myFile);&lt;br /&gt;            pics.Add(code);  &lt;span style="color: rgb(0,128,0)"&gt;// add the image to your ArrayList&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Bind the pics to a DataList&lt;br /&gt;&lt;/span&gt;        dlImages.DataSource = pics;&lt;br /&gt;        &lt;br /&gt;        dlImages.RepeatColumns = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToInt32(DropDownList1.SelectedValue);&lt;br /&gt;        dlImages.DataBind();&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;form&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="form1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&amp;gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;div&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DropDownList&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="DropDownList1"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;AutoPostBack&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="True"&amp;gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="1"&amp;gt;&lt;/span&gt;One column&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="2"&amp;gt;&lt;/span&gt;Two Columns&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="3"&amp;gt;&lt;/span&gt;Three Columns&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="4"&amp;gt;&lt;/span&gt;Four Columns&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ListItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DropDownList&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataList&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="dlImages"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;RepeatColumns&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="5"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;RepeatDirection&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Horizontal"&amp;gt;&lt;br /&gt;&lt;/span&gt;       &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="background: rgb(255,238,98)"&gt;&amp;lt;%&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;#&lt;/span&gt; Container.DataItem &lt;span style="background: rgb(255,238,98)"&gt;%&amp;gt;&lt;br /&gt;&lt;/span&gt;  &lt;br /&gt;   &lt;br /&gt;  &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ItemStyle&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Font-Names&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Arial"&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt;Font-Size&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="X-Small"&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataList&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;div&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;form&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-1825400202521034498?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/1825400202521034498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=1825400202521034498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/1825400202521034498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/1825400202521034498'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/07/example-c-net-aspnet-binding-image.html' title='example | C# .NET ASP.NET| Binding image names from a filesystem to an ArrayList, and binding that to ASP.NET databound control'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-4889402327576801975</id><published>2007-07-21T00:27:00.001-07:00</published><updated>2007-07-21T00:27:48.463-07:00</updated><title type='text'>example | C#, .NET, EntitySpaces | Testing whether an item is already in the database</title><content type='html'>&lt;p&gt;&lt;strong&gt;Intent: &lt;/strong&gt;Using the&amp;nbsp;&lt;a href="http://www.entityspaces.net"&gt;EntitySpaces ORM framework&lt;/a&gt;, test whether an item exists in a database or not. The example below shows a test of whether a "tag" appears in the database. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Overview:&amp;nbsp;&lt;/strong&gt;Write a function which&amp;nbsp;accepts the item to test as a string parameter. &lt;strong&gt;&amp;nbsp;&lt;/strong&gt;Instantiate an EntityCollection. Execute an ES&amp;nbsp;Query&amp;nbsp; on that collection, using the Like operator and using the tag string as the parameter. Execute the ES .Load() method to load all available items into a collection.&amp;nbsp;Run a comparison operation on whether Entity.Count is&amp;nbsp;greater than or equal to one. If you wish to return a property of&amp;nbsp;the found items, iterate over the EntityCollection using foreach, instantiating a single item within the collection on each loop. Return the property of the found item if you wish. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Discussion: &lt;/strong&gt;Useful if you want to enforce single entries to a database table. The tags example below is a good application of this: you want to build a directory of categorical tags and list them only once,&amp;nbsp;referencing the single tag many times&amp;nbsp;using a Join table. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; IsTagInDatabase(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; tagToCheck)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;TagsCollection&lt;/span&gt; tagcoll = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;TagsCollection&lt;/span&gt;();&lt;br /&gt;        tagcoll.Query.Where(tagcoll.Query.Name.Like(tagToCheck.ToLower()));&lt;br /&gt;        tagcoll.Query.Load();&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; tagID = 0;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (tagcoll.Count &amp;gt;= 1)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Tags&lt;/span&gt; tag &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; tagcoll)&lt;br /&gt;            {&lt;br /&gt;                tagID = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToInt32(tag.Tagid);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; tagID;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; 0;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-4889402327576801975?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/4889402327576801975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=4889402327576801975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/4889402327576801975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/4889402327576801975'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/07/example-c-net-entityspaces-testing.html' title='example | C#, .NET, EntitySpaces | Testing whether an item is already in the database'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-8522714482400647820</id><published>2007-07-21T00:13:00.001-07:00</published><updated>2007-07-21T00:13:51.941-07:00</updated><title type='text'>example | C# .NET | Isolating a directory that DOES or DOES NOT contain a particular substring</title><content type='html'>&lt;p&gt;&lt;strong&gt;Intent:&lt;/strong&gt; This is useful in instances when you have a highly organized&amp;nbsp;archive with different, similarly-named&amp;nbsp;directories in them, e.g. FolderNameRAW and FolderNameTIF&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&amp;nbsp;&amp;nbsp; Declare a string array using the Directory.GetDirectories() method. Iterate over each string in the array.&amp;nbsp;Use the string.IndexOf method to&amp;nbsp;&amp;nbsp;isolate the substring of interest. Execute a comparison, with a result of&amp;nbsp;&amp;gt;= 1 meaning that the substring is found, and a comparison of == -1 indicating that the substring was not found.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;   &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] dirs = &lt;span style="color: rgb(43,145,175)"&gt;Directory&lt;/span&gt;.GetDirectories(sourceImageDirBase);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; dir &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; dirs)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (dir.IndexOf(&lt;span style="color: rgb(163,21,21)"&gt;"RAW"&lt;/span&gt;) &amp;gt;= 1)&lt;br /&gt;                {&lt;/pre&gt;&lt;pre class="code"&gt;                    &lt;span style="color: rgb(0,128,0)"&gt;// Do something here to images that DO have the string RAW as part of their name&lt;/span&gt;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (dir.IndexOf(&lt;span style="color: rgb(163,21,21)"&gt;"RAW"&lt;/span&gt;) == -1)&lt;br /&gt;                    {&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;                    &lt;span style="color: rgb(0,128,0)"&gt;// Do something here to images that DO NOT have the string RAW as part of their name&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;                    }&lt;br /&gt;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-8522714482400647820?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/8522714482400647820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=8522714482400647820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/8522714482400647820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/8522714482400647820'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/07/example-c-net-isolating-directory-that.html' title='example | C# .NET | Isolating a directory that DOES or DOES NOT contain a particular substring'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-7990978161161709507</id><published>2007-03-21T18:43:00.001-07:00</published><updated>2007-03-21T20:29:05.487-07:00</updated><title type='text'>Emulating max-width in IE</title><content type='html'>&lt;p&gt;&lt;a href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-width"&gt;Great little article&lt;/a&gt; concerning how to constrain the maximum width of text columns in IE to a specified&amp;nbsp;pixel width, while still offering users the ability to scale the page more narrowly if necessary. Many versions of IE do not properly implement &lt;a href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-width"&gt;max-width&lt;/a&gt; and so modern &lt;a href="http://www.w3.org/TR/REC-CSS2/"&gt;CSS2&lt;/a&gt;- based solutions are out. On to the hackery: &lt;/p&gt; &lt;p&gt;&lt;a title="http://www.svendtofte.com/code/max_width_in_ie/" href="http://www.svendtofte.com/code/max_width_in_ie/"&gt;http://www.svendtofte.com/code/max_width_in_ie/&lt;/a&gt;&amp;nbsp;(the great little article) &lt;br&gt;&lt;a title="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/recalc.asp" href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/recalc.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/recalc.asp&lt;/a&gt;&amp;nbsp;(MSFT page on dynamic properties)&lt;/p&gt; &lt;p&gt;&lt;br&gt;The meat for my purposes (read the &lt;a href="http://www.svendtofte.com/code/max_width_in_ie/"&gt;original article&lt;/a&gt;; it has many implementations that may serve you better): &lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;body {&lt;br /&gt;width:100%;&lt;br /&gt;margin:0;&lt;br /&gt;padding:0;}&lt;br /&gt;&lt;br /&gt;p {&lt;br /&gt;border:1px solid red;&lt;br /&gt;max-width:800px;&lt;br /&gt;width:expression(document.body.clientWidth &amp;gt; 800? "800px": "auto" );&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Somewhat predictably, these hacks don't work at all in HTML mail, which is unfortunate given that's where I wanted to implement it. However, they don't break things either, which is nice&amp;nbsp;for the purposes of webpages that live dual lives as standalone pages and components of multipart mails. My understanding is that &lt;font face="courer"&gt;max-width&lt;/font&gt; is implemented in Outlook&amp;nbsp;2007 along with a bunch of other CSS properties. By 2019 or so I imagine be able to confidently implement this when we aren't being deservedly chased around by unhappy &amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Replicant"&gt;Replicants&lt;/a&gt;. &lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:25d45637-6091-4e04-9c95-1d37c6bcc24e" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/CSS" rel="tag"&gt;CSS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/webdev" rel="tag"&gt;webdev&lt;/a&gt;, &lt;a href="http://technorati.com/tags/webdesign" rel="tag"&gt;webdesign&lt;/a&gt;, &lt;a href="http://technorati.com/tags/kenfine" rel="tag"&gt;kenfine&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ideapod" rel="tag"&gt;ideapod&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-7990978161161709507?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/7990978161161709507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=7990978161161709507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7990978161161709507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/7990978161161709507'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/emulating-max-width-in-ie.html' title='Emulating max-width in IE'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-2241644352970562134</id><published>2007-03-16T23:36:00.001-07:00</published><updated>2007-03-18T20:57:33.367-07:00</updated><title type='text'>VS.NET 2005 Basics, Part II: Shortcut Keys</title><content type='html'>&lt;p&gt;Keep your hands on the keyboard, and you will work with agility. Short list of the&amp;nbsp;best/most useful VS.NET 2005 shortcut keys, plagarized from everywhere:&lt;br&gt;&lt;br&gt;&lt;strong&gt;MAJOR WINDOWS AND TOOLBOXES&lt;br&gt;Ctrl + Alt + S&lt;/strong&gt; = Server Explorer&lt;br&gt;&lt;strong&gt;Ctrl+Alt+A&lt;/strong&gt; = Command Window&lt;br&gt;&lt;strong&gt;Ctrl+Alt+O&lt;/strong&gt; = Output Window&lt;br&gt;&lt;strong&gt;Ctrl+Alt+T&lt;/strong&gt; = View Document Outline&lt;br&gt;&lt;strong&gt;Ctrl+Alt+I&lt;/strong&gt; = Immediate window, evaluate expressions and execute individual commands&lt;br&gt;&lt;strong&gt;Ctrl + Alt + X&lt;/strong&gt; = Toolbox&lt;br&gt;&lt;strong&gt;Ctrl+ Alt + K&lt;/strong&gt; = Task List&lt;br&gt;&lt;strong&gt;Ctrl-K, Ctrl-B - &lt;/strong&gt;Open Code Snippet manager&lt;br&gt;&lt;strong&gt;F4&lt;/strong&gt; = Properties Window&lt;br&gt;&lt;strong&gt;Shift + F4&lt;/strong&gt; = Property Pages&lt;br&gt;&lt;strong&gt;Ctrl + Shift + C&lt;/strong&gt; = Class View&lt;br&gt;&lt;strong&gt;Ctrl + Shift + E&lt;/strong&gt; = Resource View&lt;br&gt;&lt;strong&gt;Ctrl + Alt + C&lt;/strong&gt; = Call Stack&lt;br&gt;&lt;strong&gt;Ctrl + Alt + V, L&lt;/strong&gt; = Locals&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;NAVIGATING CODE&lt;br&gt;Ctrl-Minus&lt;/strong&gt; = Takes you backward&amp;nbsp;to the last section of code you were looking at &lt;br&gt;&lt;strong&gt;Ctrl-Shift-Minus&lt;/strong&gt; = Takes you forward to the next section of code in your history. &lt;br&gt;&lt;strong&gt;F12&lt;/strong&gt;&amp;nbsp; = Jump &amp;nbsp;to definition. On a method, it will navigate back to its source.&amp;nbsp;On an overloaded method, you'll be presented with&amp;nbsp;pop-up window that&amp;nbsp;cues you for&amp;nbsp;which method signature you had in mind.&amp;nbsp;Duplicates the (slower-to-use) context menu. &lt;br&gt;&lt;strong&gt;Ctrl + I&lt;/strong&gt; = Incremental Search Down&lt;br&gt;&lt;strong&gt;Ctrl + Shift + I&lt;/strong&gt; = Incremental Search Up&lt;br&gt;&lt;strong&gt;Ctrl + D&lt;/strong&gt; = Go to find Combobox&lt;br&gt;&lt;strong&gt;Ctrl + Shft + F&lt;/strong&gt; = Find in Files&lt;br&gt;&lt;strong&gt;F8&lt;/strong&gt; - Move to next item. Works in many windows, e.g. the task list. &lt;br&gt;&lt;strong&gt;Ctrl+]&lt;/strong&gt; = Bounce cursor between balancing braces/parens&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SNIPPETS&lt;br&gt;&lt;/strong&gt;&lt;strong&gt;Ctrl-K, Ctrl-B - &lt;/strong&gt;Open Code Snippet manager&lt;/p&gt; &lt;p&gt;&lt;strong&gt;OUTLINING&lt;br&gt;Ctrl-M, Ctrl-O&lt;/strong&gt; =&amp;nbsp;collapse all outlines&lt;br&gt;&lt;strong&gt;Ctrl-M Ctrl-L&lt;/strong&gt; = expand all outlines&lt;br&gt;&lt;strong&gt;Ctrl-M, Ctrl-M&lt;/strong&gt; = expand a specific outline section&lt;/p&gt; &lt;p&gt;&lt;strong&gt;MAKING SENSE OF INTELLISENSE&lt;br&gt;Ctrl-Shift-Space&lt;/strong&gt; = Restore Intellisense parameter window. Useful if you "disappear" it via mouse or keyboard input.&lt;br&gt;&lt;strong&gt;Ctrl-J&lt;/strong&gt; = List members. Restores what you normally get when you hit "." after an object instance&lt;/p&gt; &lt;p&gt;&lt;strong&gt;CLEANING UP YOUR CODE&lt;br&gt;Ctrl-A Ctrl-K Ctrl-F&lt;/strong&gt;&amp;nbsp; = Reformat page&lt;br&gt;&lt;strong&gt;Shift-Enter&lt;/strong&gt; &amp;nbsp;= insert new blank line above current line&lt;br&gt;&lt;strong&gt;Ctrl-Shift-Enter&lt;/strong&gt; = insert new blank line below current line&lt;br&gt;&lt;strong&gt;Ctrl-T&lt;/strong&gt; = transpose the two characters the cursor between current cursor position&lt;br&gt;&lt;strong&gt;Ctrl-Shift-T&lt;/strong&gt; =&amp;nbsp;transpose words in current cursor position&lt;/p&gt; &lt;p&gt;&lt;strong&gt;WINDOWING AND VIEWS&lt;br&gt;Crtl+Tab&lt;/strong&gt; = switch between windows inside the current project &lt;br&gt;&lt;strong&gt;Alt+Space, N&lt;/strong&gt; = Minimize current application&lt;br&gt;&lt;strong&gt;Alt+Space, X&lt;/strong&gt; = Maximize current application&lt;br&gt;&lt;strong&gt;Alt+Space, R&lt;/strong&gt; = Restore current application&lt;br&gt;&lt;strong&gt;Shift+ALT+Enter&lt;/strong&gt; =&amp;nbsp; Full screen mode.&amp;nbsp; Good for laptop dev. &lt;br&gt;&lt;strong&gt;CTRL+R, CTRL+R =&lt;/strong&gt; Toggle&amp;nbsp;Word wrap.&lt;br&gt;C&lt;strong&gt;trl+ F4 &lt;/strong&gt;= Close active code windows in project&lt;br&gt;&lt;strong&gt;Number pad *&lt;/strong&gt;&amp;nbsp; = Expand all in the Solution Explorer&lt;br&gt;&lt;strong&gt;Number pad&amp;nbsp;-&lt;/strong&gt;&amp;nbsp; =&amp;nbsp;Collapse all in the Solution Explorer&lt;br&gt;&lt;strong&gt;Alt+W, L&lt;/strong&gt; = Close all windows&lt;/p&gt; &lt;p&gt;&lt;strong&gt;COMMENTS&lt;br&gt;Ctrl+K, Ctrl+C&lt;/strong&gt; = Comment out the current selected section&lt;br&gt;&lt;strong&gt;Ctrl+K, Ctrl+U&lt;/strong&gt; = Uncomment the current selected section&lt;/p&gt; &lt;p&gt;&lt;strong&gt;BOOKMARKS&lt;br&gt;Ctrl-K Ctrl-K&lt;/strong&gt; = Set/unset bookmark in current position&lt;br&gt;&lt;strong&gt;Ctrl-K Ctrl-N&lt;/strong&gt; = Navigate to the next bookmark&lt;br&gt;&lt;br&gt;&lt;strong&gt;CODE VIEW/DESIGN VIEW&lt;br&gt;Shift+F7&lt;/strong&gt; = show designer window&lt;br&gt;&lt;strong&gt;F7&lt;/strong&gt; = show code window&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ctrl+PageDown&lt;/strong&gt; = &lt;font color="#800000"&gt;Toggle between source and design views in .aspx files (yessssss!) &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;MSDN HELP&lt;br&gt;Ctrl + Alt + F1&lt;/strong&gt; = View Contents Tab&lt;br&gt;&lt;strong&gt;Ctrl + Alt + F2&lt;/strong&gt; = View Index Tab&lt;br&gt;&lt;strong&gt;Ctrl + Alt + F3&lt;/strong&gt; = View Search Tab&lt;br&gt;&lt;strong&gt;Ctrl + Alt + F&lt;/strong&gt; = View Favorites Tab&lt;br&gt;&lt;strong&gt;Shift + Alt + F3&lt;/strong&gt; = Search results&lt;br&gt;&lt;strong&gt;Shift + Alt + F2&lt;/strong&gt; = Index results  &lt;p&gt;&lt;strong&gt;BUILDING AND DEBUGGING&lt;br&gt;Ctrl+Shift+B&lt;/strong&gt; = Build solution&lt;br&gt;&lt;strong&gt;F9&lt;/strong&gt; = Toggle Breakpoint&lt;br&gt;&lt;strong&gt;F5&lt;/strong&gt; = Start&lt;br&gt;&lt;strong&gt;Shift + F5&lt;/strong&gt; = Stop Debugging&lt;br&gt;&lt;strong&gt;Ctrl + F5&lt;/strong&gt; = Start Without Debugging&lt;br&gt;&lt;strong&gt;F11&lt;/strong&gt; = Step Into&lt;br&gt;&lt;strong&gt;Shift + F11&lt;/strong&gt; = Step Out&lt;br&gt;&lt;strong&gt;F10&lt;/strong&gt; = Step Over&lt;br&gt;&lt;strong&gt;CUT, COPY, 'N PASTE&lt;br&gt;Cntl+C&lt;/strong&gt; (with nothing selected) = copy entire line&lt;br&gt;&lt;strong&gt;Ctrl+Enter&lt;/strong&gt; = copy line above&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:916565cf-c0e8-45d5-9527-2bf0c47e2334" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/VS.NET" rel="tag"&gt;VS.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://technorati.com/tags/VS.NET%202005" rel="tag"&gt;VS.NET 2005&lt;/a&gt;, &lt;a href="http://technorati.com/tags/programming" rel="tag"&gt;programming&lt;/a&gt;, &lt;a href="http://technorati.com/tags/lifehack" rel="tag"&gt;lifehack&lt;/a&gt;, &lt;a href="http://technorati.com/tags/kenfine" rel="tag"&gt;kenfine&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ideapod" rel="tag"&gt;ideapod&lt;/a&gt;, &lt;a href="http://technorati.com/tags/reference" rel="tag"&gt;reference&lt;/a&gt;, &lt;a href="http://technorati.com/tags/shortcuts" rel="tag"&gt;shortcuts&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-2241644352970562134?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/2241644352970562134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=2241644352970562134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2241644352970562134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2241644352970562134'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/vsnet-2005-basics-part-ii-shortcut-keys.html' title='VS.NET 2005 Basics, Part II: Shortcut Keys'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-3852171099732707000</id><published>2007-03-16T15:23:00.001-07:00</published><updated>2007-03-20T01:18:14.304-07:00</updated><title type='text'>VS.NET 2005 Basics Part 1: XML Documentation, Intellisense, and automatic documentation generation</title><content type='html'>&lt;p&gt;XML documentation is an insanely great feature of Visual Studio. &amp;nbsp;&lt;/p&gt; &lt;p&gt;Why? In a word, Intellisense. If you're a total newbie,&amp;nbsp;welcome. Intellisense&amp;nbsp;is simply a collection of&amp;nbsp;informational popup&amp;nbsp;windows that appear while you're programmming, and these&amp;nbsp;popups contain&amp;nbsp;extremely useful information relating to the code you are trying to write. Intellisense saves time, jogs your memory,&amp;nbsp;and helps you write code accurately. If you have written or&amp;nbsp;have inherited&amp;nbsp;a complex hierarchy of reusable programmatic&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Class_%28computer_science%29"&gt;classes&lt;/a&gt;, Intellisense will help you remember the organization and needs of that class structure. &lt;/p&gt; &lt;p&gt;If you document your code using VS.NET's simple XML-based tagging, you'll be continually prompted&amp;nbsp;with Intellisense windows with information about what your code does. You can integrate your own writing and documentation&amp;nbsp;into the experience of working with the VS.NET tool. This is so powerful. &lt;/p&gt; &lt;p&gt;&amp;nbsp;A few examples and screenshots will really help explain things here. &lt;/p&gt; &lt;p&gt;Long ago I wrote a class&amp;nbsp;called "FileOps," which is a grab-bag of very useful&amp;nbsp;functionalities (&lt;em&gt;methods&lt;/em&gt; AKA functions) relating to file operations on our web application server.&amp;nbsp;I commonly&amp;nbsp;use&amp;nbsp;these methods in&amp;nbsp;my web application work, so&amp;nbsp;I've put&amp;nbsp;the FileOps class&amp;nbsp;in a subfolder of my App_Code folder so it is available to be used by any of my applications.&lt;/p&gt; &lt;p&gt;One of the methods (functions) in that class is &lt;font face="Courier" size="2"&gt;CreateYearAndMonthDirectoryBasedOnDate()&lt;/font&gt;.&amp;nbsp;This method&amp;nbsp;creates&amp;nbsp;and helps maintain an organized file structure on&amp;nbsp;our server's file system, arranging it in a useful hierarchy&amp;nbsp;similar to the folder structure illustrated below: &lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="290" src="http://monkeytripping.com/blog_images/VS.NETOddsandEnds_13328/filestructure3.jpg" width="157" border="0"&gt; &lt;/p&gt; &lt;p&gt;Let's have a look at some of the code for that method now. The code includes a&amp;nbsp;bunch of&amp;nbsp;comments structured as XML, positioned just prior to the code that defines the method. These comments&amp;nbsp;document different aspects of the method's operation, including its parameters (inputs) and return type (output.) Structuring your documentation in this particular way is extremely useful if you're working in Visual Studio. We'll soon find out why.&lt;/p&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;pre class="code"&gt;   &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;summary&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;Creates a hierarchical folder structure corresponding to a year and month on a server filesystem, e.g.&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&amp;lt;/para&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;c:\basePhysicalDirectory\2007\July\&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/para&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&amp;lt;/para&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;You can subsequently copy files into these folders, creating an automatically organized folder structure. &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/para&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;para&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;If the folder already exists, then it will simply return the path to the existing directory.&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/para&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/summary&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;param name="inputDate"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;DateTime upon which to base the creation of the new folder&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/param&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;param name="basePhysicalDirectory"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;The base physical directory on the server filesystem that will be used to create the year and month folders.&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/param&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt; &lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;Returns a string corresponding to the newly created (or existing) path on the server filesystem.&lt;/span&gt;&lt;span style="color: rgb(128,128,128)"&gt;&amp;lt;/returns&amp;gt;&lt;br&gt;&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; CreateYearAndMonthDirectoryBasedOnDate(&lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt; inputDate, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; basePhysicalDirectory)&lt;br&gt;    {&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; yearDirectory = &lt;span style="color: rgb(43,145,175)"&gt;Path&lt;/span&gt;.Combine((basePhysicalDirectory), ((inputDate.ToString(&lt;span style="color: rgb(163,21,21)"&gt;"yyyy"&lt;/span&gt;)) + &lt;span style="color: rgb(163,21,21)"&gt;@"\"&lt;/span&gt;));&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; monthDirectory = &lt;span style="color: rgb(43,145,175)"&gt;Path&lt;/span&gt;.Combine(yearDirectory, ((inputDate.ToString(&lt;span style="color: rgb(163,21,21)"&gt;"MMMM"&lt;/span&gt;)) + &lt;span style="color: rgb(163,21,21)"&gt;@"\"&lt;/span&gt;));&lt;br&gt;&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (!&lt;span style="color: rgb(43,145,175)"&gt;Directory&lt;/span&gt;.Exists(monthDirectory))&lt;br&gt;        {&lt;br&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (!&lt;span style="color: rgb(43,145,175)"&gt;Directory&lt;/span&gt;.Exists(yearDirectory))&lt;br&gt;            {&lt;br&gt;                System.IO.&lt;span style="color: rgb(43,145,175)"&gt;Directory&lt;/span&gt;.CreateDirectory(yearDirectory);&lt;/pre&gt;&lt;pre class="code"&gt;[etc.]&lt;/pre&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;"So what?" say the cynics. "It's just a bunch of code comments as XML. Big deal." Well... the&amp;nbsp;Good Part comes two weeks or two years later, when I'm trying to use my handy FileOps class in other programming&amp;nbsp;projects. What follows is my view from Intellisense as I call&amp;nbsp;the FileOps class's methods to do some useful work. Below, I'm saving out a programmatically created PDF file, and I want it to be filed in an organized way. I use &lt;font face="Courier" size="2"&gt;CreateYearAndMonthDirectoryBasedOnDate() &lt;/font&gt;to generate a folder structure on the server based on a database entry associated with the PDF. What I want you to pay attention to here is how VS.NET uses Intellisense and&amp;nbsp;the XML documentation I wrote for the method to give the programmer a step-by-step cue of what she should be doing next. &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="424" src="http://monkeytripping.com/blog_images/VS.NETOddsandEnds_13328/is08.jpg" width="903" border="0"&gt;&amp;nbsp;&lt;br&gt;&lt;em&gt;(&lt;strong&gt;Step 1: &lt;/strong&gt;As I type "FileOps", the name of my class, notice I'm presented both a selectable&amp;nbsp;list of all of the classes available to me, and a yellow comment box. The comment box includes an XML comment I wrote&amp;nbsp;that describes the entire "FileOps" class. (&lt;font size="2"&gt;Interested in the database abstraction code? Check out the&amp;nbsp;sublime &amp;nbsp;&lt;/font&gt;&lt;/em&gt;&lt;a href="http://www.entityspaces.net/Portal/Default.aspx"&gt;&lt;em&gt;&lt;font size="2"&gt;EntitySpaces Object-Relational Mapping framework&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; ))&lt;/em&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="200" src="http://monkeytripping.com/blog_images/VS.NETOddsandEnds_13328/is0A3.jpg" width="951" border="0"&gt;&amp;nbsp;&lt;br&gt;&lt;em&gt;(&lt;strong&gt;Step 2: &lt;/strong&gt;As I hit the period ".", which denotes&amp;nbsp;the fact that I want to call a method of my FileOps class, the previous Intellisense informational window disappears, and a selection of the methods I have written in the past and associated with FileOps&amp;nbsp;pops up. Note that the XML&amp;nbsp;documentation I wrote earlier&amp;nbsp;to accompany my method is appearing as a comment in Intellisense. Very handy!&amp;nbsp;Anything that reduces the amount of stuff the developer has to keep in her brain at once&amp;nbsp;is a great thing.&lt;/em&gt;)&lt;br&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="96" src="http://monkeytripping.com/blog_images/VS.NETOddsandEnds_13328/is0b4.jpg" width="576" border="0"&gt;&amp;nbsp;&lt;br&gt;&lt;em&gt;(&lt;strong&gt;Step 3: &lt;/strong&gt;I continue typing and am now filling in the parameters that are required by my method. Remember how I&amp;nbsp;described my&amp;nbsp;parameters in XML&amp;nbsp;documentation with the &amp;lt;param&amp;gt;...&amp;lt;/param&amp;gt; tags?&amp;nbsp;My context-specific documentation appears&amp;nbsp;right here, right when I want to see it.&lt;/em&gt;)&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="74" src="http://monkeytripping.com/blog_images/VS.NETOddsandEnds_13328/vsrep3.jpg" width="785" border="0"&gt;&amp;nbsp;&lt;br&gt;&lt;em&gt;(&lt;strong&gt;Step 4: &lt;/strong&gt;When I reach the last parameter that my function requires, again it shows&amp;nbsp;me the descriptive docs I wrote for what the parameter is and does. Sharper-eyed newbies will also notice&amp;nbsp;that the datatype of the parameter is being indicated, which helps remind the finite and forgetful programmer what information the method requires to do its work.&lt;/em&gt;)&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;This is a deliberately simplified example involving straightforward static methods. For many people, Intellisense is old hat and reading "Run Dick Run"&amp;nbsp;above may seem more than a little patronizing. However,&amp;nbsp;I'm surprised how many otherwise smart developers out there don't use VS.NET's XML documentation to describe their classes or methods at all. Makes no sense. This stuff is great: context-specific information when you need it, and changeable as required with very little investment of time.&amp;nbsp; If you're rooting around for just&amp;nbsp;the right web application technology&amp;nbsp;to learn, Intellisense/VS.NET and this documentation stuff is in itself a compelling argument to take a serious look at ASP.NET. &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;This XML documentation can also be parsed by external tools and compiled into CHM (Microsoft Help) files, or sets of HTML pages. My understanding is that for a long time the de facto standard for this kind of tool was the free nDoc tool, but as of last summer NDoc is not being developed further. Microsoft is in the process of picking up&amp;nbsp;the external documentation ball with &lt;a href="http://en.wikipedia.org/wiki/SandCastle"&gt;SandCastle&lt;/a&gt;, and I imagine we'll see something like it in the next release of Visual Studio. &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;I'm going to underscore a few things that may not be obvious to VS.NET&amp;nbsp;newbies and newbies at heart. &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;1) To document your code, get in the habit of hitting three slashes before front of any method, property, class, or other structures in your code files.&lt;/strong&gt; VS.NET is smart and will figure out what comment types are relevant given where you're at in the code. If you've been hand writing &amp;lt;summary&amp;gt; ... &amp;lt;/summary&amp;gt; or &amp;lt;param&amp;gt; ... &amp;lt;/param&amp;gt; as XML comments as you've studiously followed some tutorial you picked up somewhere, you&amp;nbsp;have been doing things the hard way. Enter three slashes, and let Visual Studio do the work of writing this cruft for you, including a summary section, a comment for each parameter, and a comment for the return type. &lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2) The VS.NET Task List is useful, and you can automatically add stuff to the Task List using TODO comments in the correct form.&lt;/strong&gt; You would think that you might embed todo comments using the same XML patterns, e.g. &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;div class="CodeFormatContainer"&gt;&lt;pre class="csharpcode"&gt;&lt;font face="arial" color="#800000"&gt;&lt;strong&gt;WRONG!&lt;/strong&gt;&lt;/font&gt; &amp;lt;todo&amp;gt; Rewrite this method!&amp;lt;/todo&amp;gt; &lt;font face="arial" color="#800000"&gt;&lt;strong&gt;WRONG!&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;This does not work the way you might think.&amp;nbsp;Entering a comment in the following form will automatically place a TODO item on the task list: &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;div class="CodeFormatContainer"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//TODO: Rewrite this method. &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;&lt;strong&gt;Summary of XML comment tags that are parsed by VS.NET&lt;br&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;I'm going to borrow&amp;nbsp;the Code Project's excellent, terse&amp;nbsp;summary of tag types and comments about the tags for my own reference. The&amp;nbsp;text below is courtesy of &lt;a href="http://www.codeproject.com/csharp/csharpcommentinganddocs.asp"&gt;a great article at the Code Project that also describes how to set up NDoc to generate MSDN-style documentation from XML comments.&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;The summary tag is the most basic of tags. The list below is the complete set currently supported by VS.NET. The ones marked with a * are the ones I feel are the most useful and the ones we will be dealing in the following examples. &lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;c&lt;/code&gt;&lt;br&gt;The &lt;code&gt;c&lt;/code&gt; tag gives you a way to indicate that text within a description should be marked as code. Use &lt;code&gt;code&lt;/code&gt; to indicate multiple lines as code.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;code&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;code&lt;/code&gt; tag gives you a way to indicate multiple lines as code. Use &lt;code&gt;&amp;lt;c&amp;gt;&lt;/code&gt; to indicate that text within a description should be marked as code.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;example&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;example&lt;/code&gt; tag lets you specify an example of how to use a method or other library member. Commonly, this would involve use of the &lt;code&gt;code&lt;/code&gt; tag.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;exception&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;exception&lt;/code&gt; tag lets you specify which exceptions a class can throw.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;include&lt;/code&gt;&lt;br&gt;The &lt;code&gt;include&lt;/code&gt; tag lets you refer to comments in another file that describe the types and members in your source code. This is an alternative to placing documentation comments directly in your source code file.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;para&lt;/code&gt;&lt;br&gt;The &lt;code&gt;para&lt;/code&gt; tag is for use inside a tag, such as &lt;code&gt;&amp;lt;remarks&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;returns&amp;gt;&lt;/code&gt;, and lets you add structure to the text.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;param&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;param&lt;/code&gt; tag should be used in the comment for a method declaration to describe one of the parameters for the method.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;paramref&lt;/code&gt;&lt;br&gt;The &lt;code&gt;paramref&lt;/code&gt; tag gives you a way to indicate that a word is a parameter. The XML file can be processed to format this parameter in some distinct way.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;permission&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;permission&lt;/code&gt; tag lets you document the access of a member. The &lt;code&gt;System.Security.PermissionSet&lt;/code&gt; lets you specify access to a member.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;remarks&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;remarks&lt;/code&gt; tag is where you can specify overview information about a class or other type. &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; is where you can describe the members of the type.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;returns&lt;/code&gt;&lt;br&gt;The &lt;code&gt;returns&lt;/code&gt; tag should be used in the comment for a method declaration to describe the return value.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;see&lt;/code&gt;&lt;br&gt;The &lt;code&gt;see&lt;/code&gt; tag lets you specify a link from within text. Use &lt;code&gt;&amp;lt;seealso&amp;gt;&lt;/code&gt; to indicate text that you might want to appear in a See Also section.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;seealso&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;seealso&lt;/code&gt; tag lets you specify the text that you might want to appear in a See Also section. Use &lt;code&gt;&amp;lt;see&amp;gt;&lt;/code&gt; to specify a link from within text.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;summary&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;summary&lt;/code&gt; tag should be used to describe a member for a type. Use &lt;code&gt;&amp;lt;remarks&amp;gt;&lt;/code&gt; to supply information about the type itself.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;code&gt;value&lt;/code&gt;*&lt;br&gt;The &lt;code&gt;value&lt;/code&gt; tag lets you describe a property. Note that when you add a property via code wizard in the Visual Studio .NET development environment, it will add a &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; tag for the new property. You should then manually add a &lt;code&gt;&amp;lt;value&amp;gt;&lt;/code&gt; tag to describe the value that the property represents.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;&lt;strong&gt;Resources:&lt;/strong&gt; &lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;Producing Professional MSDN-style Documentation with .NET and NDoc&lt;br&gt;&lt;a title="http://www.devx.com/dotnet/Article/29646" href="http://www.devx.com/dotnet/Article/29646"&gt;http://www.devx.com/dotnet/Article/29646&lt;/a&gt;&lt;br&gt;&lt;br&gt;C# and XML Source Code Documentation&lt;br&gt;&lt;a title="http://www.codeproject.com/csharp/csharpcodedocumentation.asp" href="http://www.codeproject.com/csharp/csharpcodedocumentation.asp"&gt;http://www.codeproject.com/csharp/csharpcodedocumentation.asp&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;NDoc on SourceForge: &lt;br&gt;&lt;a title="http://ndoc.sourceforge.net/" href="http://ndoc.sourceforge.net/"&gt;http://ndoc.sourceforge.net/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;Insightful O'rielly article on NDoc and the problem of documentation generation in general: &lt;br&gt;&lt;a title="http://www.ondotnet.com/pub/a/dotnet/2002/12/09/ndoc.html" href="http://www.ondotnet.com/pub/a/dotnet/2002/12/09/ndoc.html"&gt;http://www.ondotnet.com/pub/a/dotnet/2002/12/09/ndoc.html&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="rem"&gt;&lt;span class="rem"&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:3e7299e5-d446-4b22-a884-e27f2791f2eb" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/VS.NET%202005" rel="tag"&gt;VS.NET 2005&lt;/a&gt;, &lt;a href="http://technorati.com/tags/VS.NET" rel="tag"&gt;VS.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Intellisense" rel="tag"&gt;Intellisense&lt;/a&gt;, &lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Tutorial" rel="tag"&gt;Tutorial&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Newbie" rel="tag"&gt;Newbie&lt;/a&gt;, &lt;a href="http://technorati.com/tags/webapps" rel="tag"&gt;webapps&lt;/a&gt;, &lt;a href="http://technorati.com/tags/kenfine" rel="tag"&gt;kenfine&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ideapod" rel="tag"&gt;ideapod&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-3852171099732707000?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/3852171099732707000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=3852171099732707000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3852171099732707000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/3852171099732707000'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/vsnet-2005-basics-part-1-xml.html' title='VS.NET 2005 Basics Part 1: XML Documentation, Intellisense, and automatic documentation generation'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-4103976169628679087</id><published>2007-03-10T16:52:00.001-08:00</published><updated>2007-03-12T15:19:16.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='controls'/><title type='text'>Finding JPG image dimensions programmatically using ASP.NET/C#</title><content type='html'>&lt;p&gt;.NET includes everything necessary to programmatically read the dimensions of image files such as .JPGs.&amp;nbsp;This is useful in cases where you want to explicitly specify the size of an image at runtime. In my case, I had an&amp;nbsp;image cropping&amp;nbsp;control that &amp;nbsp;required I send the dimensions of the image to be cropped. The means to return image size in .NET is a bit verbose, but it is nice that you can do this&amp;nbsp;without going to an external component or anything outside of what's baked into .NET. See below. &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Drawing;&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre class="code"&gt;ImageCropper1.ImageUrl = &lt;span style="color: rgb(163,21,21)"&gt;"../../test8180-uweek mail prelim design.jpg"&lt;/span&gt;;&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; myDimensions = &lt;span style="color: rgb(43,145,175)"&gt;ImageProcessing&lt;/span&gt;.GetImageDimensions(&lt;span style="color: rgb(163,21,21)"&gt;@"c:\Inetpub\wwwroot\ni\test8180-uweek mail prelim design.jpg"&lt;/span&gt;);&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] dimensions = myDimensions.Split(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;char&lt;/span&gt;[] {&lt;span style="color: rgb(163,21,21)"&gt;','&lt;/span&gt;});&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; imageWidth = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToString(dimensions[0]);&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; imageHeight = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToString(dimensions[1]);&lt;br&gt;ImageCropper1.Width = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToInt16(imageWidth);&lt;br&gt;ImageCropper1.Height = &lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToInt16(imageHeight);&lt;/pre&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;font color="#408080"&gt;Imageprocessing&lt;/font&gt; is &amp;nbsp;a custom class I wrote/stole: something old, something new, something borrowed, and something blue. It consists mainly of static methods, including the GetImageDimensions function&amp;nbsp;called above: &lt;/p&gt;&lt;pre class="code"&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; GetImageDimensions(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; fileNameAndPath)&lt;br&gt;    {&lt;br&gt;        System.Drawing.&lt;span style="color: rgb(43,145,175)"&gt;Image&lt;/span&gt; theImage = System.Drawing.&lt;span style="color: rgb(43,145,175)"&gt;Image&lt;/span&gt;.FromFile(fileNameAndPath);&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;float&lt;/span&gt; UploadedImageWidth = theImage.PhysicalDimension.Width;&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;float&lt;/span&gt; UploadedImageHeight = theImage.PhysicalDimension.Height;&lt;br&gt;&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; size = UploadedImageWidth.ToString() + &lt;span style="color: rgb(163,21,21)"&gt;","&lt;/span&gt; + UploadedImageHeight.ToString();&lt;br&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; size;&lt;br&gt;    }&lt;/pre&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;Two things bug me. The first: the &lt;a href="http://krispware.com/imagecropper/"&gt;Krispware cropping control&lt;/a&gt; demands the following structure for the path to the image, at least on my local development machine: &lt;/p&gt;&lt;pre class="code"&gt;        ImageCropper1.ImageUrl = &lt;span style="color: rgb(163,21,21)"&gt;"../../test8180-uweek mail prelim design.jpg"&lt;/span&gt;;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;In my case and on my machine, I found I could not use the typical "~/" pathing notation to the root; on the same page I placed an Image control and was able to use "~/" just fine.&amp;nbsp;This could be caused by any of a number of things:&lt;br&gt;&lt;br&gt;a) an inherent limit of the control &lt;br&gt;b) something funky that's specific to my dev machine, or &lt;br&gt;c) something funky with how the virtual directories were&amp;nbsp; set up on installation, which I don't really understand well. (Any help out there?)&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;Second question.&amp;nbsp; In the course of hacking around with this started to think, "wow, maybe I should write my own augmented image class that would bundle in loads of functionality&amp;nbsp; and allow capabilties like: &lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;    &lt;span style="color: rgb(43,145,175)"&gt;KensCoolImageClass&lt;/span&gt; CoolImage = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;KensCoolImageClass&lt;/span&gt;(); &lt;br&gt;    Coolimage.RenderAsCropControl(); &lt;br&gt;    Coolimage.RenderAsUserControl(300,200,&lt;span style="color: rgb(163,21,21)"&gt;"isZoomable"&lt;/span&gt; ...); &lt;br&gt;    Coolimage.SendToFriend(mediumSize, &lt;span style="color: rgb(163,21,21)"&gt;"kenfine@u.washington.edu); &lt;br&gt;&lt;/span&gt;    Coolimage.CropByCoords(22, 200,4, 400); &lt;br&gt;    Coolimage.UpdateExifData(&lt;span style="color: rgb(163,21,21)"&gt;"metadata1"&lt;/span&gt;,&lt;span style="color: rgb(163,21,21)"&gt;"metadata2,...); &lt;br&gt;&lt;/span&gt;    Coolimage.PostToFlickr(encrypedAccountName, encrypedAccountPassword); &lt;br&gt;    Coolimage.ResizeByPercentage(40); &lt;br&gt;    Coolimage.Rotate(90, &lt;span style="color: rgb(163,21,21)"&gt;"clockwise"&lt;/span&gt;); &lt;br&gt;    &lt;font color="#0000a0"&gt;int&lt;/font&gt; theHeight = Coolimage.Height; &lt;br&gt;    &lt;font color="#0000a0"&gt;int&lt;/font&gt; theWidth = Coolimage.Width; &lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br&gt;I'm curious why some of these functionalities are not built into the framework itself: my code above works, but it seems a little more painful than should be necessary.&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:db2326b0-b1aa-4923-8243-25508e179be6" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/csharp" rel="tag"&gt;csharp&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/webapps" rel="tag"&gt;webapps&lt;/a&gt;, &lt;a href="http://technorati.com/tags/programming" rel="tag"&gt;programming&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ideapod" rel="tag"&gt;ideapod&lt;/a&gt;, &lt;a href="http://technorati.com/tags/kenfine" rel="tag"&gt;kenfine&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-4103976169628679087?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/4103976169628679087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=4103976169628679087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/4103976169628679087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/4103976169628679087'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/finding-jpg-image-dimensions.html' title='Finding JPG image dimensions programmatically using ASP.NET/C#'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-6212915111663439144</id><published>2007-03-08T21:27:00.001-08:00</published><updated>2007-03-12T15:20:54.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='running'/><title type='text'>The Run from Costa Mesa to Newport Pier in Pictures</title><content type='html'>&lt;p align="left"&gt;Strong run. Left home&amp;nbsp;around sunset-time and ran back on the Santa Ana Trail in darkness. &lt;/p&gt; &lt;p align="left"&gt;Running in the dark in a near-abandoned industrial wasteland may not be bright.&amp;nbsp;&lt;a href="http://www.flickr.com/photos/ideapod/136022308/in/set-956699/"&gt;My uncle-in-law Jerry&lt;/a&gt; swears that "they'll slit your throat!" but it hasn't happened quite yet.&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Some of the most fantastic runs I've had have been in the dark, at&amp;nbsp;times and places responsible folks&amp;nbsp;tell you not to go.&amp;nbsp;I remember running through NYC's Central Park long&amp;nbsp;after nightfall in 2005. Lovers shared&amp;nbsp;benches, old Greek men perfumed the air with pipes. I ran fast, the summer night thick with stars and fireflies.&amp;nbsp;&lt;br&gt;&lt;a href="http://www.gmap-pedometer.com/?r=756594"&gt;My route from&amp;nbsp;Costa Mesa to Newport Pier on Gmap Pedometer&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/2007_03_08newportrun6.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="480" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/2007_03_08newportrun_thumb4.jpg" width="615" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001491.jpg" atomicselection="true"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001435.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="819" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00143_thumb3.jpg" width="1024" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001627.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px; border-right-width: 0px" height="480" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00162_thumb5.jpg" width="384" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001913.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="950" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00191_thumb1.jpg" width="760" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001862.jpg" atomicselection="true"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001482.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00148_thumb.jpg" width="192" border="0"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00186_thumb.jpg" width="192" border="0"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001882.jpg" atomicselection="true"&gt;&lt;/a&gt; &lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_001391.jpg" atomicselection="true"&gt;&lt;/a&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00221.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="819" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00221_thumb.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp; &lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_002135.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="950" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00213_thumb3.jpg" width="760" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_002332.jpg" atomicselection="true"&gt;&amp;nbsp;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00233_thumb.jpg" width="240" border="0"&gt; &lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" src="http://monkeytripping.com/blog_images/9fb5f6578f42_11B17/IMAGE_00237_thumb4.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:b18c7198-6aef-4e14-ab17-bac2606f13e2" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/running" rel="tag"&gt;running&lt;/a&gt;, &lt;a href="http://technorati.com/tags/photography" rel="tag"&gt;photography&lt;/a&gt;, &lt;a href="http://technorati.com/tags/California" rel="tag"&gt;California&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Orange%20County" rel="tag"&gt;Orange County&lt;/a&gt;, &lt;a href="http://technorati.com/tags/kenfine" rel="tag"&gt;kenfine&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ideapod" rel="tag"&gt;ideapod&lt;/a&gt;&lt;/div&gt; &lt;p align="center"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-6212915111663439144?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/6212915111663439144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=6212915111663439144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/6212915111663439144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/6212915111663439144'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/run-from-costa-mesa-to-newport-pier-in.html' title='The Run from Costa Mesa to Newport Pier in Pictures'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-6504789647519167922</id><published>2007-03-06T13:52:00.001-08:00</published><updated>2007-03-11T21:55:50.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='running'/><title type='text'>The Run from Costa Mesa to Huntington Pier in Pictures</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Dreary visions of yesterday's run&amp;nbsp;from my cell phone camera. I like seeing what's possible with such limited equipment. &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_000912.jpg" atomicselection="true"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_000984.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="766" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00098_thumb2.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_001222.jpg" atomicselection="true"&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_000913.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00091_thumb1.jpg" width="178" border="0"&gt;&lt;/a&gt; &amp;nbsp;&lt;/a&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_001273.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00127_thumb1.jpg" width="192" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_001223.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00122_thumb1.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_001383.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00138_thumb1.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_001314.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="819" src="http://monkeytripping.com/blog_images/PicturesVillaVenetiatoHuntingtonPier_C314/IMAGE_00131_thumb2.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0165e0d4-5393-44b2-8f38-d48378ae7593" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/running" rel="tag"&gt;running&lt;/a&gt;, &lt;a href="http://technorati.com/tags/photography" rel="tag"&gt;photography&lt;/a&gt;, &lt;a href="http://technorati.com/tags/California" rel="tag"&gt;California&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Orange%20County" rel="tag"&gt;Orange County&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-6504789647519167922?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/6504789647519167922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=6504789647519167922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/6504789647519167922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/6504789647519167922'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/pictures-villa-venetia-to-huntington.html' title='The Run from Costa Mesa to Huntington Pier in Pictures'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-2795321001272949949</id><published>2007-03-04T16:08:00.001-08:00</published><updated>2007-03-11T22:04:25.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='running'/><title type='text'>Visions of the Golden Gate</title><content type='html'>&lt;p&gt;Synthetic glimpses of an architectural masterpiece. Some of these photographs are elaborately manipulated in terms of levels (contrast)&amp;nbsp;and perspective.&amp;nbsp;The effect is&amp;nbsp;disquieting: untidy&amp;nbsp;humanity wiped away, leaving&amp;nbsp;only clean abstractions. I'm uncomfortably&amp;nbsp;reminded of&amp;nbsp;the early works of a certain painter-turned-politician&amp;nbsp;...&lt;/p&gt; &lt;p&gt;I shot these pictures with my "running camera": an older Nikon Coolpix 995 that fits the hand like a baton. &lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5548.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="748" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5548_thumb1.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5517.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="480" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5517_thumb1.jpg" width="535" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN55351.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="422" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5535_thumb1.jpg" width="640" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5562_corrected.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="866" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5562_corrected_thumb1.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN55903.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="950" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5590_thumb3.jpg" width="606" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5561_corrected.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="759" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5561_corrected_thumb.jpg" width="1024" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN56242.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="950" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5624_thumb2.jpg" width="634" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5627.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="459" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5627_thumb1.jpg" width="640" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5617.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="768" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5617_thumb.jpg" width="1024" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN55931.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="950" src="http://monkeytripping.com/blog_images/VisionsoftheGoldenGate_E2B5/DSCN5593_thumb1.jpg" width="703" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:5b9aa23e-1886-4773-babf-f585ece3c636" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/running" rel="tag"&gt;running&lt;/a&gt;, &lt;a href="http://technorati.com/tags/photography" rel="tag"&gt;photography&lt;/a&gt;, &lt;a href="http://technorati.com/tags/San%20Francisco" rel="tag"&gt;San Francisco&lt;/a&gt;, &lt;a href="http://technorati.com/tags/California" rel="tag"&gt;California&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-2795321001272949949?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/2795321001272949949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=2795321001272949949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2795321001272949949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2795321001272949949'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/03/visions-of-golden-gate.html' title='Visions of the Golden Gate'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29532906.post-2437292770268651364</id><published>2004-10-02T16:01:00.000-07:00</published><updated>2008-12-10T17:12:37.178-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='piano'/><title type='text'>IMAGE AND REALITY : Marc-André Hamelin</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gNXTwUwCV-Q/ReDRqae-JMI/AAAAAAAAAAU/FDG6gIUSVxs/s1600-h/hamelin01_w85.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5035254909994149058" style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer" alt="" src="http://2.bp.blogspot.com/_gNXTwUwCV-Q/ReDRqae-JMI/AAAAAAAAAAU/FDG6gIUSVxs/s400/hamelin01_w85.jpg" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Image... &lt;/p&gt; &lt;p&gt;&lt;br&gt;...and reality. The authentic Hamelin walked onto Meany's black stage Thursday night, tux misplaced. He was clad in simple gray slacks and a casual shirt that might have been pulled from a country-western watering hole in Texas. Great green embroidered&amp;nbsp;ribbons of foliage and threaded&amp;nbsp;red roses graced Hamelin's shoulders. "Cool," Essie offered. Mr. Hamelin received my wife's good tidings and the audience's applause modestly. &lt;/p&gt; &lt;p&gt;Like every other performer I've seen at the "President's Piano" series at the University of Washington, Hamelin can play with the world's best. His first piece of the evening, Bach's "Chaconne from the Violin Partita in D minor" was affecting, but maybe that's just the insinuations of all the Hofstader I've been reading lately. Bach's piano stuff is very hard to play well, so I'm told. &lt;/p&gt; &lt;p&gt;Hamelin reminds me of Stephen Hough, who played like a god as the headliner of the President's Piano series two years ago. Like Hough, Hamelin's technique is immaculate. Also like Hough, Hamelin has a big bright creative mind hanging over those terrific hands. Both men performed some of their own compositions in the course of their performances. Hamelin's haunting "Music Box" evoked the quieting bells of rusting wind-up toys, the last dances of faded and tired things. Hamelin finished the piece with a long sigh, and Meany's full house spontaneously mumured its approval. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29532906-2437292770268651364?l=kenfine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kenfine.blogspot.com/feeds/2437292770268651364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29532906&amp;postID=2437292770268651364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2437292770268651364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29532906/posts/default/2437292770268651364'/><link rel='alternate' type='text/html' href='http://kenfine.blogspot.com/2007/02/image.html' title='IMAGE AND REALITY : Marc-André Hamelin'/><author><name>Ken Fine</name><uri>http://www.blogger.com/profile/04328414883747727284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://photos1.blogger.com/blogger/1291/641/1600/kenfine.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gNXTwUwCV-Q/ReDRqae-JMI/AAAAAAAAAAU/FDG6gIUSVxs/s72-c/hamelin01_w85.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
