<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.popart.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Ben Waldron&amp;#39;s Blog</title><subtitle type="html" /><id>http://blogs.popart.com/ben-waldron/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.popart.com/ben-waldron/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2005-01-12T20:32:22Z</updated><entry><title>Corporate Lifecycle Symbiosis</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2008/04/05/corporate-lifecycle-symbiosis.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2008/04/05/corporate-lifecycle-symbiosis.aspx</id><published>2008-04-05T21:28:00Z</published><updated>2008-04-05T21:28:00Z</updated><content type="html">&lt;p&gt;One attribute of the Pop Art culture that I enjoy is the tireless pursuit of making ourselves better. We take time out to enjoy successes, but we are looking for the next way we can improve internally and how we can help clients in new ways. In that spirit, the book &lt;a title="Corporate Lifecyles" href="http://www.amazon.com/Corporate-Lifecycles-Corporations-Grow-About/dp/0131744267/ref=pd_sim_b_img_1" target="_blank"&gt;Corporate Lifecycles by Ichak Adizes&lt;/a&gt; was recommended to me by&lt;a title="L.B. Day" href="http://www.lbday.com/"&gt;&lt;font color="#0000ff"&gt; L.B. Day&lt;/font&gt;&lt;/a&gt; and Frank Roehr - two advisors that I trust. The book is about how all companies follow a certain cycle from infancy to death and some of the pitfalls along the way. This post maps some of the concepts in that book to our business. The graph below describes this lifecycle.&lt;/p&gt;
&lt;p&gt;
&lt;object height="275" width="580"&gt;&lt;param name="_cx" value="15346"&gt;&lt;param name="_cy" value="7276"&gt;&lt;param name="FlashVars" value=""&gt;&lt;param name="Movie" value="http://www.adizes.com/graph.swf"&gt;&lt;param name="Src" value="http://www.adizes.com/graph.swf"&gt;&lt;param name="WMode" value="Window"&gt;&lt;param name="Play" value="-1"&gt;&lt;param name="Loop" value="-1"&gt;&lt;param name="Quality" value="High"&gt;&lt;param name="SAlign" value=""&gt;&lt;param name="Menu" value="-1"&gt;&lt;param name="Base" value=""&gt;&lt;param name="AllowScriptAccess" value=""&gt;&lt;param name="Scale" value="ShowAll"&gt;&lt;param name="DeviceFont" value="0"&gt;&lt;param name="EmbedMovie" value="0"&gt;&lt;param name="BGColor" value=""&gt;&lt;param name="SWRemote" value=""&gt;&lt;param name="MovieData" value=""&gt;&lt;param name="SeamlessTabbing" value="1"&gt;&lt;param name="Profile" value="0"&gt;&lt;param name="ProfileAddress" value=""&gt;&lt;param name="ProfilePort" value="0"&gt;&lt;param name="AllowNetworking" value="all"&gt;&lt;param name="AllowFullScreen" value="false"&gt;
                                                                        
&lt;embed src="http://www.adizes.com/graph.swf" quality="high" type="application/x-shockwave-flash" width="580" height="275"&gt;&lt;/embed&gt;
                      &lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Graph and IP Credit: &lt;a class="" title="Corporate LifeCycle" href="http://www.adizes.com/" target="_blank"&gt;www.adizes.com&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;The goal of any company to get within the &amp;quot;prime&amp;quot; stage of this cycle and to stay there for as long as they are able. Even though Pop Art has been around for a decade, my analysis is that we are in the &amp;quot;go-go&amp;quot; stage. I come to this conclusion because the interactive space changes to rapidly, forcing us to change rapidly and adapt. The market makes us an &lt;em&gt;opportunity-driven&lt;/em&gt; organization where our company is focused on putting the smartest people in place to be able to capture the next opportunity we see in front of us for our clients. &lt;/p&gt;
&lt;p&gt;There are aspects where we opportunity-driving (an aspect of a &amp;quot;prime&amp;quot; company) in areas like close-loop reporting for clients where every time a reaches an interactive touch point it is measured and reported back to against a business objective. This gives is a lens into what is happening on a real-time basis and allows us create opportunities to strengthen brands, sell goods, our understand customer behavior better. To do this our clients must trust us and utilize a broad range of services (creative, media, reporting and technology).&lt;/p&gt;
&lt;p&gt;In looking at the lifecycle above, ask yourself where your company is on the curve? From my perspective, there are two stages where a &amp;quot;go-go&amp;quot; company like Pop Art can be the most symbiotic: other energetic &amp;quot;go-go&amp;quot; companies and those that are in &amp;quot;early bureaucracy.&amp;quot; I&amp;#39;ll explain why. 
&lt;p&gt;Teaming two &amp;quot;go-go&amp;quot; companies together is a very powerful combination. The level of excitement needed is present; each company recognizes each other&amp;#39;s strengths and capitalizes on them. Momentum is carried by mutual success with calculated risks taken along the way. The two companies can develop a strong partnership because eagerness and culture are very similar in both companies. It can be compared with having a running partner that keeps you going when you are feeling tired - rarely are you ever tired at the same time and you keep the pace up. Eventually these companies are in their prime together. &lt;/p&gt;A company in &amp;quot;early bureaucracy&amp;quot; has once been a &amp;quot;go-go&amp;quot; company and is yearning for those days back. They know there business extremity well, succeeded, but has lost its step. Teaming up with a &amp;quot;go-go&amp;quot; is a chance to get that step back. In the running analogy, you are finding a partner that is faster than you. It is tough at first because it is hard to get up to speed and take risks, but over time the company is nudged back in that prime spot. For the &amp;quot;go-go&amp;quot; company, there are things that are learned and helps elevate it towards that prime role.&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=2267" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /><category term="Business" scheme="http://blogs.popart.com/tags/Business/default.aspx" /></entry><entry><title>SPIN Seminar - Improving Accessibility and Quality in Web-Based Applications   </title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2008/01/14/spin-seminar-improving-accessibility-and-quality-in-web-based-applications.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2008/01/14/spin-seminar-improving-accessibility-and-quality-in-web-based-applications.aspx</id><published>2008-01-14T08:12:00Z</published><updated>2008-01-14T08:12:00Z</updated><content type="html">&lt;p&gt;The good people at Rose City SPIN (Software Process Improvement Network) and OGI had me back to talk about Accessibility.&amp;nbsp; I thought the whole thing was going to be cancelled - we had a tornado in the area that night.&amp;nbsp; Unlike the midwest, I learned that tornado in Portland are very rare.&amp;nbsp; Almost &lt;a class="" href="http://www.mthoodvacationhome.com/"&gt;as&lt;/a&gt; rare as snow we had on Christmas...that hasn&amp;#39;t happened since the 30&amp;#39;s.&amp;nbsp; Thanks to all those that braved an ugly evening to come talk about accessibility and mobile applications.&lt;/p&gt;
&lt;p&gt;Slides:&amp;nbsp; &lt;a href="http://www.popart.com/files/Web_Accessibility_SPIN_January_2008.pdf"&gt;http://www.popart.com/files/Web_Accessibility_SPIN_January_2008.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Summary:&lt;/p&gt;
&lt;p&gt;It is clear that the web is the platform for most of our content and applications going forward. It is important that we are all good web citizens and produce content that is easily consumed. To that end, this seminar&amp;nbsp;focused on practical techniques that can be employed to reach and serve the broadest possible audiences in the best possible way. The topics&amp;nbsp;included how to provide services that are accessible to people with disabilities and usable from mobile phones or other devices -- without destroying the development budget.&lt;br /&gt;&lt;br /&gt;This seminar demonstrated the considerations that go into building successful web applications and the tools that can assist the quality assurance process. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=2195" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /><category term="Technology" scheme="http://blogs.popart.com/tags/Technology/default.aspx" /><category term="Web Development" scheme="http://blogs.popart.com/tags/Web+Development/default.aspx" /><category term="Accessibility" scheme="http://blogs.popart.com/tags/Accessibility/default.aspx" /><category term="Mobile" scheme="http://blogs.popart.com/tags/Mobile/default.aspx" /></entry><entry><title>Flash ExternalInterface in ASP.NET Applications</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/11/08/flash-externalinterface-in-asp-net-applications.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/11/08/flash-externalinterface-in-asp-net-applications.aspx</id><published>2007-11-08T22:50:00Z</published><updated>2007-11-08T22:50:00Z</updated><content type="html">&lt;p style="font-color:red;"&gt;Update 11/27/2007&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We do quite a bit of Flash video integrated into ASP.NET web applications.&amp;nbsp; For video library application, the best solution from a usability perspective is to use JavaScript to control the flash player.&amp;nbsp; There are some issues that keep popping up with the Flash Player, SwfObject, ExternalInterface, and ASP.NET that we needed to document for the good of the world. Hopefully, we&amp;#39;ll save someone the hours that our team took to figure this stuff out. &lt;/p&gt;
&lt;p&gt;First, we begin with some background. Adobe provides an interface called &lt;a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00002200.html"&gt;ExternalInterface&lt;/a&gt;&amp;nbsp;that allows communication from a web page or via another application.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The ActionScript is pretty straightforward&amp;nbsp;shown in Figure 1 below. &lt;/p&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;import flash.external.ExternalInterface; &lt;/span&gt;&lt;/div&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;/* Register callbacks so we can call from JavaScript. */ &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;ExternalInterface.addCallback(&amp;quot;Play&amp;quot;, null, playMe); &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;ExternalInterface.addCallback(&amp;quot;Pause&amp;quot;, null, pauseMe); &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;function playMe(String):Void { &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; video.play(url);&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;function pauseMe():Void { &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; video.pause(); &lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;} &lt;/span&gt;
&lt;p&gt;&lt;em&gt;Figure 1. ExternalInterface in Action(Script) &lt;/em&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Once the interfaces are set up, you can call the methods externally, as shown below in JavaScript. &lt;/p&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;
&lt;p&gt;&amp;lt;script language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flashPlayer.Play(&amp;quot;/video.swf&amp;quot;); &lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:9pt;"&gt;&lt;em&gt;Figure 2. JavaScript for Player calling method &lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;This&amp;nbsp;is all pretty straightforward stuff, but&amp;nbsp;it doesn&amp;#39;t work within ASP.NET applications.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The problem really comes down to the fact that every ASP.NET page is wrapped in a &amp;lt;form&amp;gt; tag and there is a bug in Internet Explorer that hides the containing flash object (the player) in the DOM. To solve this problem, you can simple elevate the player object to a window level element, as shown in Figure 3 below. &lt;/p&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;window.player = document.getElementById(&amp;#39;player&amp;#39;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:9pt;"&gt;&lt;em&gt;Figure 3. Elevating the Flash Player object &lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Now you are really happy because your flash loads on the page. Then, your refresh the page and you get a JavaScript error. If this happens, I&amp;#39;ll bet it because you are using the &lt;a href="http://blog.deconcept.com/swfobject/"&gt;SwfObject&lt;/a&gt;, like most people on the planet, are to embed Flash. There is a bug in SwfObject (in v1.4.4 and previous versions) or Internet Explorer when IE caches the Flash object. It appears that the interfaces are not re-instantiated on the cached flash object. &lt;/p&gt;
&lt;p&gt;A good way to fix this is to put in a guid or random number into the call to the flash player as shown in Figure 4. below.&lt;/p&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;var localplayer= &amp;#39;player.swf?guid=&amp;#39; + Math.random()*99999999;&lt;/span&gt;&lt;/div&gt;
&lt;div style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Courier New;"&gt;&amp;nbsp;var so = new SWFObject(localplaer, &amp;quot;player&amp;quot;, ...);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="FONT-SIZE:9pt;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:9pt;"&gt;
&lt;p style="PADDING-RIGHT:10px;PADDING-LEFT:10px;BACKGROUND:#ccc;PADDING-BOTTOM:10px;PADDING-TOP:10px;"&gt;&lt;em&gt;Figure 4. Cache Busting&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So, I believe that gives you all you need to know to navigate the tumultuous combination of Flash, ExternalInterface, SwfObject, IE and ASP.NET. &lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=1957" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="Flash" scheme="http://blogs.popart.com/tags/Flash/default.aspx" /><category term=".NET" scheme="http://blogs.popart.com/tags/.NET/default.aspx" /><category term="Web Development" scheme="http://blogs.popart.com/tags/Web+Development/default.aspx" /><category term="Software" scheme="http://blogs.popart.com/tags/Software/default.aspx" /></entry><entry><title>Ideas in Efficiency: Creating Institutional Amnesia</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/09/30/ideas-in-efficiency-creating-institutional-amnesia.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/09/30/ideas-in-efficiency-creating-institutional-amnesia.aspx</id><published>2007-10-01T05:04:00Z</published><updated>2007-10-01T05:04:00Z</updated><content type="html">&lt;img title="Efficient Idea -Ben Waldron" height="176" alt="Efficient Idea -Ben Waldron" src="http://waldron.smugmug.com/photos/202561404-S.jpg" width="323" align="left" /&gt; 
&lt;p&gt;At our last staff meeting, I shared some insights with our team about how we can improve our business. For some background information, we&amp;#39;ve been fortunate to keep the same team together over the past two years.&amp;nbsp; We&amp;#39;ve had a chance to work together -- establishing the internal communication pathways and processes that is our business today.&amp;nbsp; This stability has been&amp;nbsp;one of the best&amp;nbsp;things for Pop Art.&amp;nbsp; That said, within the past couple of months, we&amp;#39;ve added new people that add&amp;nbsp;fresh perspectives to the team.&amp;nbsp; The newbies&amp;nbsp;don&amp;#39;t have the historical understanding to know why things have evolved to the processes that we have today.&amp;nbsp; I love these perspectives because they quickly see the differenece between helpful and dysfunctional processes.&lt;/p&gt;
&lt;p&gt;When a new team member comes into the organization, all of the mistuned, inefficient processes become apparent because you see you world through new eyes. For me, this has reinvigorated the internal process improvement (aka &amp;quot;doing things better&amp;quot;) at Pop Art. I challenged the rest of the company give themselves &lt;span style="TEXT-DECORATION:underline;"&gt;Institutional Amnesia&lt;/span&gt;, giving ourselves a chance to reinvent how we do things on a daily basis. &lt;/p&gt;
&lt;p&gt;Anyone who is reading this is probably saying: &amp;quot;I&amp;#39;ve heard this song and dance before with no observable change. What&amp;#39;s the difference?&amp;quot; I have to say that I&amp;#39;ve asked myself the same question and came up the following rules to create Institutional Amnesia&amp;nbsp;to foster&amp;nbsp;change: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Everything (and everyone) is Suspect&lt;/b&gt;. Every process and those folks that perform them are subject to review. This isn&amp;#39;t like the Bobs from &lt;i&gt;Office Space&lt;/i&gt; coming in, it is, however; everyone in the organization looking for way to improve efficiency in the business. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use Automation Wisely&lt;/b&gt;. Where can we invest in tools? Where have we overinvested? We have talented developers that can do just about anything…that doesn&amp;#39;t mean that they should. For example, you wouldn&amp;#39;t build a dishwasher if you only had a couple dishes to wash each day. Find those areas that will save the most time with least development time first. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;No Nay Saying&lt;/b&gt;. We have to throw the excuses &amp;quot;because that is the way we&amp;#39;ve always done it&amp;quot; and the other like comments that people naturally throw to keep themselves in a comfort zone. We need to be conscience of this and break through it. &lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;b&gt;Make the Business a Client&lt;/b&gt;: We have an impeccable track record of making process improvements for clients by creating pragmatic solutions that balance needs and constraints. We need to treat ourselves as a client - wisely investing in our own services. &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;I look forward to how these rules can help us forget the inneficient, remember the good, and invent the future.&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=1940" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /><category term="Process Improvement" scheme="http://blogs.popart.com/tags/Process+Improvement/default.aspx" /><category term="Business" scheme="http://blogs.popart.com/tags/Business/default.aspx" /></entry><entry><title>Agile SPIN Seminar Podcast</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/04/30/Agile-SPIN-Seminar-Podcast.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/04/30/Agile-SPIN-Seminar-Podcast.aspx</id><published>2007-04-30T07:41:00Z</published><updated>2007-04-30T07:41:00Z</updated><content type="html">&lt;p&gt;The folks at OGI &amp;amp; SPIN were nice enough to record the April Seminar. I never really considered doing a podcast, but I had a few requests to post it, so here it is. It is divided into two sections. The first being the main presentation and the second is the audience questions. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Agile Practices - Main Presentation&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.popart.com/files/spinseminar041207a.wma"&gt;&lt;img border="0" height="30" src="http://www.popart.com/files/icon_wma.jpg" style="width:28px;height:30px;" width="28" /&gt;Main Presentation (wma)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.popart.com/files/spinseminar041207a.mp3"&gt;&lt;img border="0" height="30" src="http://www.popart.com/files/icon_mp3.jpg" style="width:28px;height:30px;" width="28" /&gt;Main Presentation (mp3)&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Auidence Questions&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.popart.com/files/spinseminar041207b.wma"&gt;&lt;img border="0" height="30" src="http://www.popart.com/files/icon_wma.jpg" style="width:28px;height:30px;" width="28" /&gt;Questions (wma)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.popart.com/files/spinseminar041207b.mp3"&gt;&lt;img border="0" height="30" src="http://www.popart.com/files/icon_mp3.jpg" style="width:28px;height:30px;" width="28" /&gt;Questions (mp3)&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.popart.com/files/Agile_Practices_SPIN_April_2007.pdf"&gt;Slides&lt;/a&gt; &lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=866" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>SPIN Seminar - Agile Practices: The Right Tool for the Right Job?</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/04/13/SPIN-Seminar-_2D00_-Agile-Practices_3A00_-The-Right-Tool-for-the-Right-Job_3F00_.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/04/13/SPIN-Seminar-_2D00_-Agile-Practices_3A00_-The-Right-Tool-for-the-Right-Job_3F00_.aspx</id><published>2007-04-13T23:39:00Z</published><updated>2007-04-13T23:39:00Z</updated><content type="html">&lt;p&gt;I had the opportunity to speak at this month&amp;#39;s Rose City SPIN (Software Process Improvement Network).&amp;nbsp; The talk focused on three main areas: Agile&amp;#39;s fit in an organization, performance indicators, and Agile practices that can be used outside of the Agile context.&amp;nbsp; There was great turnout for the event&amp;nbsp;with some really excellent questions.&amp;nbsp; Many of the questions were targeted&amp;nbsp;at resource leveling of iterations/sprints and how to manage&amp;nbsp;customer expectations.&amp;nbsp;&amp;nbsp;I plan on posting some&amp;nbsp;more thoughts on these in another post, but I promised&amp;nbsp;to post the slides.&amp;nbsp; The slides are here:&amp;nbsp; &lt;a href="http://www.popart.com/files/Agile_Practices_SPIN_April_2007.pdf"&gt;http://www.popart.com/files/Agile_Practices_SPIN_April_2007.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I want to thank Jim Huntzicker at OGI and Debra Lavell at Intel/SPIN for hosting the event and inviting me.&amp;nbsp; I had a great time.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=858" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>Move to Vista</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/04/13/Move-to-Vista.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/04/13/Move-to-Vista.aspx</id><published>2007-04-13T20:16:00Z</published><updated>2007-04-13T20:16:00Z</updated><content type="html">&lt;p&gt;I moved to Vista today, here are my notes: &lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;Good News: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;CVS and Subversion work well in Vista (except for what is listed in Bad below).&amp;nbsp; I had to grab the night build of Subversion, but it runs well.&lt;span style="font-size:12pt;font-family:Times New Roman;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Outlook 2007 works extremely well.&amp;nbsp; It actually closes when you want it to and threads seem to be more in control. &lt;/li&gt;&lt;li&gt;Visual Studio 2005 runs well (with the Vista Service Pack). &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scootersoftware.com"&gt;Beyond Compare&lt;/a&gt; works - can&amp;#39;t live without it. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.daemon-tools.cc/dtcc/download.php"&gt;Daemon Tools&lt;/a&gt; allows ISOs to be attached - very nice product. Thanks to &lt;a href="http://www.hanselman.com/blog/ScottHanselmans2006UltimateDeveloperAndPowerUsersToolListForWindows.aspx"&gt;Scott Hanselman&lt;/a&gt; for the recommendation. &lt;/li&gt;&lt;li&gt;SQL Server 2005 runs as expected. &lt;/li&gt;&lt;li&gt;Syncing Treo 700w using Bluetooth works after downloading &lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=83d513ea-9df9-4920-af33-3a0e2e4e7beb&amp;amp;displayLang=en&amp;amp;hash=AxB3jb9mae8E7XIBnVv8eaepziIZuZqEzVXh7mh77HHe%2bhmigdaVTXNBSJp5yu%2f8hsfCDV6ml25s7eJ3fQUWbg%3d%3d"&gt;Windows Mobile Device Center&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;Bad News: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Visual Studio 2003 is not supported.&amp;nbsp; I knew this going in, but thought I&amp;#39;d give it a shot&lt;span style="font-size:12pt;font-family:Times New Roman;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Workaround: Install Virtual PC 2007 and run XP in a VM.&amp;nbsp; I like this approach rather than hacking VS2003 to get it to run on Vista. I have the RAM. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;CVS Shell icons do not seem to appear&amp;hellip; I can live without that because we only have one client that uses CVS. &lt;/li&gt;&lt;li&gt;Juniper Network Connect did not work with our VPN server until we patched it. &lt;/li&gt;&lt;li&gt;I can&amp;#39;t burn DVDs directly in Windows Explorer. I can with Roxio, though. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=1605" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>MSDN Article: Enforce Web Standards For Better Accessibility</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2007/04/01/MSDN-Article_3A00_-Enforce-Web-Standards-For-Better-Accessibility.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2007/04/01/MSDN-Article_3A00_-Enforce-Web-Standards-For-Better-Accessibility.aspx</id><published>2007-04-01T20:05:00Z</published><updated>2007-04-01T20:05:00Z</updated><content type="html">&lt;p style="float:left;margin:10px;"&gt;&lt;img alt="MSDN Magazine Cover" height="263" src="http://msdn.microsoft.com/msdnmag/images/covers/April07cover.gif" style="width:200px;height:263px;" title="MSDN Magazine Cover" width="200" /&gt;&lt;/p&gt;&lt;p&gt;At Pop Art, we have some very talented folks that adhere strictly to Web Standards.&amp;nbsp; It takes much discipline to develop web application using Web Standards as its often not the quickest path to a solution, but offers significant advantages for clients and future maintenance.&amp;nbsp; In general, gives almost all the tools necessary to create web standards-based applications.&amp;nbsp; The Pop Art development team has become adept at making .NET controls emit compliant XHTML.&lt;/p&gt;&lt;p&gt;I crafted much of what we have learning into an &lt;em&gt;MSDN Magazine&lt;/em&gt; article that was published in the April.&amp;nbsp; The introductory paragraphs give a good description of the contents of the article.&amp;nbsp; If you are interested you can read the rest of the article &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/04/ASPNET20/default.aspx" title="Web Standards Article"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;div style="background:#ccc;padding:10px;"&gt;&lt;p&gt;I have to admit that Web standards were not always very important to me. Like many of you, I began writing Web pages at the time the first Web browsers were being released. Back then, I thought closing every HTML paragraph tag would slow me down and consume unnecessary portions of a user&amp;#39;s precious 28K of bandwidth. So, I didn&amp;#39;t do it. As long as the browser didn&amp;#39;t care, neither did I. &lt;/p&gt;&lt;p&gt;Since then, however, I have begun to recognize the importance of Web standards to the future of the Web and of Web-based software in general. Of course, Web standards are about much more than closing HTML tags. They are a critical factor in how well software components can be used in future contexts.&lt;/p&gt;&lt;p&gt;Besides complying with the W3C standards for XHTML, cascading style sheets (CSS), XML, and so forth, Web applications should be search-engine friendly, accessible, have human-readable URLs, and employ other accepted practices that make them easier to find and use. Web standards also require careful attention to the structure of the code behind the sites, making it easier to maintain in the future. In this article I&amp;#39;ll explain why everyone, especially those writing server controls, should adhere to Web standards. &lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=859" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>OneNote 2007</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2006/12/17/OneNote-2007.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2006/12/17/OneNote-2007.aspx</id><published>2006-12-18T04:16:00Z</published><updated>2006-12-18T04:16:00Z</updated><content type="html">&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;I was hooked on OneNote the first time I saw it beta before Office 2003 was released. When I was at Microsoft, I had a couple of opportunities to meet &lt;a href="http://blogs.msdn.com/chris_pratley/"&gt;Chris Pratley&lt;/a&gt; and he always showed me some amazing feature that I never knew about. &lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;There are a few features within OneNote 2007 that I find the most useful. The first is the Screen Clipping tool that is built it. I write technical articles and documentation often so having a easy to use screen clip is very&amp;nbsp;valuable. I&amp;#39;ve used many third-party screen capture software, but the one built into OneNote fits my needs perfectly. The nicest feature is that works outside of OneNote, not just while you&amp;#39;re in the application. The &lt;em&gt;Windows+S&lt;/em&gt; hotkey frames the screen and allows you select the input that you want to capture. The image below is captured right after I will write this line&amp;hellip; &lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;img alt="OneNote Screenshot" height="266" src="http://waldron.smugmug.com/photos/117468214-M.jpg" style="width:600px;height:266px;" title="OneNote Screenshot" width="600" /&gt;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&lt;span style="font-size:8pt;color:#666666;font-family:Tahoma;"&gt;Screen clipping taken: 12/17/2006, 1:05 PM &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;The second feature is OneNote 2007&amp;#39;s integration with Word&amp;#39;s blog posting feature. I always begin writing in OneNote and typically transfer what I&amp;#39;ve written to Word or copy-paste into Community Server to post a blog entry. Now, I can write in OneNote and publish it directly to my blog (note: Word opens up to review before publishing). This little time saver may provoke me to post more often. &lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;The last feature is the build in calculator. Open a note, type something like &amp;quot;Pi * 3 / 2 =&amp;quot; and hit enter and you&amp;#39;ll get Pi * 3 / 2 = 4.71238898038469. When I first saw this I thought it was a neat feature, but since know it was there, I use it at least weekly. &lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;Hope you find this useful and thanks to &lt;a href="http://blogs.msdn.com/chris_pratley/"&gt;Chris&lt;/a&gt; and the OneNote team. &lt;/p&gt;&lt;p style="margin-left:1pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=785" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>Back on the Blogging Horse</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2006/11/18/Back-on-the-horse.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2006/11/18/Back-on-the-horse.aspx</id><published>2006-11-18T20:22:00Z</published><updated>2006-11-18T20:22:00Z</updated><content type="html">&lt;p&gt;&lt;img align="right" alt="My excuse" height="300" src="http://waldron.smugmug.com/photos/107982643-S.jpg" style="width:225px;height:300px;" title="My excuse" width="225" /&gt;&lt;a href="http://waldron.smugmug.com/photos/107982643-S.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Well, I posted about my first week at Pop Art and didn&amp;#39;t post again.&amp;nbsp; I have many excuses with the best excuse is pictured to the right, but that didn&amp;#39;t stop Scott from giving me some well-deserved flack for not posting in a while.&amp;nbsp; I did move over to Community Server - which is the powers &lt;a href="http://blogs.popart.com" title="Pop Art Blogs"&gt;blogs.popart.com&lt;/a&gt;&amp;nbsp;- and moved my prior posts with me.&lt;/p&gt;&lt;p&gt;I look forward to writing more soon.&amp;nbsp; First, I have to finish my current MSDN Magazine article about how to develop Web Standard compliant code using ASP.NET 2.0.&amp;nbsp; It is almost completed after a severe case of writer&amp;#39;s block which I attibute lovingly to the little guy pictured right.&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=777" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author><category term="pop art" scheme="http://blogs.popart.com/tags/pop+art/default.aspx" /></entry><entry><title>Week #1 in the books</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2006/07/01/Week-_2300_1-in-the-books.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2006/07/01/Week-_2300_1-in-the-books.aspx</id><published>2006-07-02T02:22:58Z</published><updated>2006-07-02T02:22:58Z</updated><content type="html">&lt;P&gt;I joined Pop Art this week as thier new Chief Technology Officer.&amp;nbsp; My first impression walking in the door on Monday was that there is a ton of energy and activity going on within the company.&amp;nbsp; All departments juggle many different client, scheduling resources, and churning out great results to customers.&amp;nbsp; Sure, there are challenges to tackle which I look forward to tackling, but I've walked into a world-class organization with a great reputation.&lt;/P&gt;
&lt;P&gt;If you are coming to this page and don't know what Pop Art is or does, I'll give you the 10,000 foot view.&amp;nbsp; Pop Art is one-stop shopping for all things on the web.&amp;nbsp; The services we provide is a confluence of marketing, design, and technology with a client services team that manages it all and delights customers.&amp;nbsp; A web site is not simply a place on the web, it is a mixture of the right&amp;nbsp;design and technology to bring the right message and services to the audience.&amp;nbsp; Web standards is huge inititive happening at Pop Art which is yeilding great results for customers...that will be a topic for the future.&lt;/P&gt;
&lt;P&gt;I am very excited to be working at Pop Art with the talented folks we have here.&amp;nbsp; My first goals will be to implement process improvements within the development organization so we can increase capacity and quality.&amp;nbsp; My hope is that this blog will be a mix of technology and business learnings as I get going.&lt;/P&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=775" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author></entry><entry><title>Moved Older Blog Posts Here</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2006/06/25/Moved-Older-Blog-Posts-Here.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2006/06/25/Moved-Older-Blog-Posts-Here.aspx</id><published>2006-06-26T02:40:32Z</published><updated>2006-06-26T02:40:32Z</updated><content type="html">&lt;P&gt;Since this will be my new blog home, I moved some of the more meaningful&amp;nbsp;MSDN blog posts from when I was at Microsoft to here.&amp;nbsp; I'm sure that blog will be deleted in due time.&amp;nbsp; They are marked under the category blogs.msdn.com and retained thier original date.&amp;nbsp; No, I didn't write an application to do it (should have), but did it the old fashioned way...CTRL-C, CTRL-V.&lt;/P&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=774" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author></entry><entry><title>Extend Team Foundation Server To Enable Continuous Integration</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2006/02/20/Extend-Team-Foundation-Server-To-Enable-Continuous-Integration.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2006/02/20/Extend-Team-Foundation-Server-To-Enable-Continuous-Integration.aspx</id><published>2006-02-21T04:37:12Z</published><updated>2006-02-21T04:37:12Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;My latest MSDN Article is the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/03/"&gt;&lt;FONT face=Tahoma size=2&gt;March Edition&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; of &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/msdnmag"&gt;&lt;EM&gt;&lt;FONT face=Tahoma size=2&gt;MSDN Magazine&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/03/TeamSystem/default.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;Agile Development: Extend Team Foundation Server To Enable Continuous Integration&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The article outlines Extreme Programming (XP) and how continuous integration fits into it and other Agile development methodologies.&amp;nbsp; It goes onto to describe how to extend Team Foundation Server to use continuous integration.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The code samples for the article were written for Team Foundation Server Beta 3.&amp;nbsp; There were some changes in the RC version that caused my sample to break.&amp;nbsp; I will make an update to the code and post it to CodePlex.&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=773" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author></entry><entry><title>Alternate Data Stream Questions</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2005/02/20/Alternate-Data-Stream-Questions.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2005/02/20/Alternate-Data-Stream-Questions.aspx</id><published>2005-02-21T04:35:37Z</published><updated>2005-02-21T04:35:37Z</updated><content type="html">&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I received the following question today regarding NTFS Alternate Data Streams and it is a good topic to post:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Tahoma" color="#000080" size="2"&gt;I just found your &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5B3CF345-80C1-46F7-8D34-4CAC36E04449"&gt;NTFS ADS article &lt;/a&gt;and class (thanks!) on GotDotNet, yesterday - after seeing most everything else on ADS over the past month.&amp;nbsp; [Summary: User has been using ADS streams to store metadata and had large binary data in the main stream].&amp;nbsp; I've been basing much of what I need to do on Indexing Service, but (as far as I can discern) there's no way to get IS to index the ADSs. Is that right?&amp;nbsp; Also, I think that it is necessary to write some sort of "ADS archiving" utility, since ?only the NTFS file system retains those streams. Is that so? I thought I saw that one CD-R format also could preserve the hidden streams.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I have used this ADS to latch data to files for a long time and works great if the file is always on an NTFS file system.&amp;nbsp; You lose the streams if you email it or transport the file&amp;nbsp;off&amp;nbsp;to file systems formats that do not supports streams (like ISO 9660, etc).&amp;nbsp; You can write code to serialize the information in the streams, but once you reach that point is usually means you should pick another way to tie data together.&amp;nbsp; Most commercial-grade backup software supports saving the NTFS ADS streams.&amp;nbsp; I&amp;nbsp;haven't seen any CD formats that support this but I really haven't&amp;nbsp;look long and hard&amp;nbsp;for one.&amp;nbsp; Perhaps, someone reading this&amp;nbsp;can chime in.&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Indexing Service does not support ADS Streams (that I know of), but you could write an IFilter that opens up the streams and indexes the data in the streams.&amp;nbsp; I haven't seen an IFilter that does this, but it is a interesting idea and very possible.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;These are great questions...Thanks!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=772" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author></entry><entry><title>Determine MIME Type for Content</title><link rel="alternate" type="text/html" href="http://blogs.popart.com/ben-waldron/archive/2005/01/12/Determine-MIME-Type-for-Content.aspx" /><id>http://blogs.popart.com/ben-waldron/archive/2005/01/12/Determine-MIME-Type-for-Content.aspx</id><published>2005-01-13T04:32:22Z</published><updated>2005-01-13T04:32:22Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;A while back I was looking for an API to determine content types.&amp;nbsp; One API that I found useful was the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/moniker/reference/functions/findmimefromdata.asp"&gt;&lt;FONT face=Tahoma size=2&gt;FindMimeFromData&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; API.&amp;nbsp; You cane give this method the first 256 bytes of a file and then determine its MIME types (eg. text/plain, text/html, binary content, etc).&amp;nbsp; It is useful for checking files that might not have an extention or when you want to double check to ensure that the extension fits the MIME type.&amp;nbsp; Once you determine that you can find other APIs to precisely determine what the file is.&amp;nbsp; For binary files, this usually means checking the magic number in the file header.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;Not sure if this is useful to anyone but thought I'd share the P/Invoke to make it happen (below).&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;&lt;FONT color=#808080 size=1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;&amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt; Utility class contains static method checkType to determine Mime Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;///&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;&amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; MimeTypeUtil {&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;[DllImport(@"urlmon.dll", CharSet=CharSet.Auto)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;extern&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; System.UInt32 FindMimeFromData(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 pBC,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[MarshalAs(UnmanagedType.LPArray)] &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;byte&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[] pBuffer, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 cbSize,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 dwMimeFlags,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt;&lt;FONT color=#000000&gt; System.UInt32 ppwzMimeOut,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 dwReserved);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; CheckType(&lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; filePath) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;byte&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[] buffer = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;byte&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[256];&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// grab the first 256 bytes on the file&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;using&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (FileStream fileStream = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; FileStream(filePath, FileMode.Open)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (fileStream.Length &amp;gt;=256) &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;fileStream.Read(buffer,0,256);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;fileStream.Read(buffer,0,(&lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)fileStream.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;try &lt;/SPAN&gt;&lt;FONT color=#000000&gt;{&lt;SPAN style="COLOR:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 mimeType;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.UInt32 returnValue = FindMimeFromData( 0, &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, buffer, 256, &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, 0, &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt;&lt;FONT color=#000000&gt; mimeType, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.IntPtr mimeTypePointer = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; IntPtr(mimeType);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-tab-count:1;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Marshal.PtrToStringUni(mimeTypePointer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;catch&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(Exception ex) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; ex.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;}&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';"&gt;&lt;FONT color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.popart.com/aggbug.aspx?PostID=771" width="1" height="1"&gt;</content><author><name>ben.waldron</name><uri>http://blogs.popart.com/members/ben.waldron.aspx</uri></author></entry></feed>