<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Danny Thorpe</title>
	<atom:link href="http://dannythorpe.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dannythorpe.com</link>
	<description>Dream &#38; Deliver</description>
	<lastBuildDate>Tue, 07 Feb 2012 17:50:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Java WS-Policy UsingAddressing Warning When Calling .NET WCF Web Service</title>
		<link>http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/</link>
		<comments>http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 21:19:30 +0000</pubDate>
		<dc:creator>Danny Thorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jax-ws]]></category>
		<category><![CDATA[metro]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[wsdl]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/?p=374</guid>
		<description><![CDATA[Create a Web Service with .NET WCF. Plink, plink, done. Create a simple Java client to call that web service. Using the default Java SE 7u2 SDK + runtime downloadable from Oracle, you run wsimport to import the service WSDL and generate proxy classes. You write a little code to instantiate the service class and <a href='http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Create a Web Service with .NET WCF. Plink, plink, done.</p>
<p>Create a simple Java client to call that web service. Using the default Java SE 7u2 SDK + runtime downloadable from Oracle, you run wsimport to import the service WSDL and generate proxy classes. You write a little code to instantiate the service class and call the service, run the app, and see the output from the successful web service call. Done! Well, not exactly.</p>
<p>When you run the Java client console app, the calls to the web service work but are accompanied by rather nasty sounding warnings about unknown policy requirements.</p>
<pre>Jan 04, 2012 12:10:46 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0075: Policy assertion "{http://www.w3.org/2006/05/addressing/wsdl}UsingAddressing" was evaluated as "UNKNOWN".
Jan 04, 2012 12:10:46 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN"</pre>
<p>How do we get rid of those warnings? There are certainly ways to suppress warning reports, but that&#8217;s not the right solution. The better question is how do we resolve the issue reported in the warning?</p>
<p>After a great deal of digging around, here&#8217;s what I&#8217;ve found:</p>
<ol>
<li>WCF defaults to placing a <strong>wsaw:UsingAddressing</strong> WS-Policy assertion in your web service WSDL.<strong></strong></li>
<li><strong>wsaw:UsingAddressing</strong> is not actually part of any SOAP standard, it&#8217;s some sort of WSDL extension to cover the gap until an official SOAP WS-Policy standard could be defined later.</li>
<li>Microsoft WCF supports <strong>wsaw:UsingAddressing</strong>.</li>
<li>Java&#8217;s JAX-WS reference implementation web service core framework (JAX-WS RI 2.2.4-b01) bundled with the JDK does <strong>not</strong> support <strong>wsaw:UsingAddressing</strong>. The rationalization seems to be that wsaw:UsingAddressing isn&#8217;t part of the WS-Policy spec, so &#8220;not our problem&#8221;. JAX-WS RI supports <strong>wsam:Addressing</strong> from the official WS-Policy spec<strong></strong>.</li>
<li>This isn&#8217;t just Java folks thumbing their noses at Microsoft. This also <a href="http://java.net/jira/browse/JAX_WS-852">causes interop problems with Java web service frameworks</a> that support and use <strong>wsaw:UsingAddressing</strong>.</li>
<li><a href="http://metro.java.net/">Java Metro</a> is another web service framework, and one which does support <strong>wsaw:UsingAddressing</strong>. Metro is the result of Sun and Microsoft working together to resolve cross-platform web service interop issues.</li>
<li>Metro is easy enough to download, but how do you use it? Documentation is all about how to install Metro into an application server environment. Many app developers have asked &#8220;<a href="http://metro.1045641.n5.nabble.com/Client-generated-by-wsimport-not-using-WS-Addressing-when-connecting-to-WCF-td1065818.html">How do I use Metro in my Java client?&#8221;</a></li>
</ol>
<p>As it turns out, Metro appears to do all of its magic at runtime. There is no IDE integration at all. All you need to do is reference the Metro .jar files in your Java project and the WS-Policy warnings will go away.</p>
<p>In the NetBeans IDE, this means adding each of the .jar files from the Metro/lib directory to the Libraries node in your Java project. Make sure they appear before the JDK reference. Make sure you select the actual .jar files, not just the Metro/lib directory.</p>
<p>In the IntelliJ IDE, this means:</p>
<ol>
<li>Right click on the JDK node under &#8220;External Libraries&#8221; in the project tree</li>
<li>Click &#8220;Open Library Settings&#8221;</li>
<li>Click &#8220;Libraries&#8221; under &#8220;Project Settings&#8221;</li>
<li>Click the New Project Library tool button</li>
<li>Click &#8220;Java&#8221;</li>
<li>Select the Metro/lib subdir in the &#8220;Select Library Files&#8221; path selector dialog.</li>
</ol>
<p>Note that in NetBeans, you have to select the actual .jar files; selecting only the Metro/lib directory won&#8217;t work in NetBeans.  Selecting only the Metro/lib directory works fine in IntelliJ.</p>
<p>To solve this UsingAddressing policy issue from the Java client end, use the Metro libraries. Period.</p>
<p>Another way to solve this interop issue would be to address the service end: Add <strong>wsam:Addresssing</strong> as an acceptable alternative to <strong>wsaw:UsingAddressing</strong> in the web service&#8217;s WSDL. With both addressing policies as siblings under an <strong>&lt;ExactlyOne&gt;</strong> element, clients that support <strong>wsaw:UsingAddressing</strong> will be happy and clients that support only <strong>wsam:Addressing</strong> will be happy. In theory, anyway.</p>
<p>However, I have yet to figure out how to add <strong>wsam:Addressing</strong> to the WSDL generated by a WCF service. Since I have a client-side solution I won&#8217;t be pursuing this further, but if anyone can provide a link to how to do this on the WCF WSDL side, I&#8217;d love to see that solution as well.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/" data-text="Java WS-Policy UsingAddressing Warning When Calling .NET WCF Web Service"></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdannythorpe.com%2F2012%2F01%2F04%2Fjava-wcf-usingaddressing-warning%2F&amp;title=Java%20WS-Policy%20UsingAddressing%20Warning%20When%20Calling%20.NET%20WCF%20Web%20Service" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2012/01/04/java-wcf-usingaddressing-warning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Printing: It&#8217;s Real, And Real Work</title>
		<link>http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/</link>
		<comments>http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 19:06:36 +0000</pubDate>
		<dc:creator>Danny Thorpe</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[3d printing]]></category>
		<category><![CDATA[3dp]]></category>
		<category><![CDATA[zcorp]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/?p=344</guid>
		<description><![CDATA[Kudos to ZCorp for their recent new video reaching a lot of people (3.9 million views on YouTube as of this writing) who clearly had never heard of 3d printing before. However, all these 3D noobs blathering on about &#8220;wow! 3D printing is brand new!&#8221; and &#8220;star trek replicators are real!&#8221; is really becoming irritating.  <a href='http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Kudos to <a href="http://zcorp.com">ZCorp</a> for their recent <a href="http://www.youtube.com/watch?v=ZboxMsSz5Aw">new video</a> reaching a lot of people (3.9  million views on YouTube as of this writing) who clearly had never heard of 3d printing  before.</p>
<p>However, all these 3D noobs blathering on about &#8220;wow! 3D printing is  brand new!&#8221; and &#8220;star trek replicators are real!&#8221; is really becoming  irritating.  The fact that hoax authority <a href="http://www.snopes.com/photos/technology/3dprinter.asp">Snopes.com</a> even felt a need to publish a &#8220;Not  a hoax&#8221; article on 3D printing is kinda sad.</p>
<p>MIT developed powder bed 3D printing at least 20 years ago.  Patents  date from the early to mid 90&#8242;s.  ZCorp (a nearly exclusive licensee of  the MIT patents) has been in business shipping boutique machines (a 600  pound $45k printer isn&#8217;t exactly retail) for at least 10 years that I  know of.</p>
<p>Yes, 3D printing is real, and has been implemented in a variety of  different ways by a variety of vendors. (MakerBot polymer extrusion,  electron beam sintering of metal powder, laser sintering of nylon  powder, <a href="http://open3dp.me.washington.edu/">clay powder deposition for ceramic parts</a>, etc)  These machines haven&#8217;t made much headway into the public  awareness largely because most of them are hellaciously expensive and therefore  marketed to very targeted high-end design and industrial clients. That hand-held 3D digitizing scanner shown in the ZCorp video, for example, will set you back about $25,000.  You&#8217;ll need $15,000 to get  a &#8220;cheap&#8221; bare bones small powder printer, or more like $45,000 to get a nice one with full color capability. And don&#8217;t forget the annual service contract!  It&#8217;s definitely not pennies per day.</p>
<p>The  price of the machines has been coming down in recent years  (hmm.   Should we buy a new car or a 3D printer?), but the price of the  materials / consumables has been going up.  Like inkjet printer makers,  ZCorp almost certainly makes more on selling consumables (and  service/maintenance contracts) than on selling the hardware itself.  ZCorp states costs for consumables run $2-$3 per rendered cubic inch for powder and binder. Binder fluid costs hundreds of dollars per gallon.  Setting up a new machine with powder and binder fluid will set you back nearly $2000. Gillette would be proud.</p>
<p>Any time you have a service or product demand that requires expensive hardware or expertise, service bureaus will pop up to harvest that demand. <a href="http://shapeways.com">Shapeways</a> has been  producing small objects for jewelry or decorative uses for a couple of years now. I&#8217;m quite surprised that the ZCorp videos appear to have had greater success in introducing 3D printing to the public than Shapeways products and business model. Perhaps people are more enchanted by the making than by the result?</p>
<p>The maker community has made great progress on figuring out and documenting how industrious individuals can build their own 3D printing aparatii for a less than a home mortgage.  The <a href="http://www.makershed.com/ProductDetails.asp?ProductCode=DSMB01">MakerShed</a> store sells polymer extruder based kits with x/y gantry assemblies for under $1500. There are multiple open source initiatives in play, such as <a href="http://reprap.org/wiki/Main_Page">RepRap.org</a> and <a href="http://www.fabathome.org/">FabAtHome</a>. However, they still have a long way to go to catch up to the level of detail and service conveniences offered by ZCorp and other &#8220;big guys&#8221;. You get what you pay for.</p>
<p>Though 3D printing equipment and materials have improved greatly in  recent years, 3D printing is still in its infancy as a technology. Even with a whizzy new ZCorp machine, it&#8217;s  not quite as simple as the marketing video would lead you to believe.</p>
<p>However, I will admit that after fighting with clogged printheads  ruining a build, destroying fragile parts while manually depowdering them, and spending hours  infiltrating the piece with resin to make it strong enough for everyday  handling, there is still enough joy left at the end of the process to  call the whole experience magical.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/" data-text="3D Printing: It&#8217;s Real, And Real Work"></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdannythorpe.com%2F2011%2F07%2F15%2F3d-printing-its-real-and-real-work%2F&amp;title=3D%20Printing%3A%20It%E2%80%99s%20Real%2C%20And%20Real%20Work" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2011/07/15/3d-printing-its-real-and-real-work/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google+ Circles Users: Limited Distribution Is Not Privacy</title>
		<link>http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/</link>
		<comments>http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 02:52:15 +0000</pubDate>
		<dc:creator>Danny Thorpe</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google circles]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/?p=337</guid>
		<description><![CDATA[Google+&#8217;s Circles feature to organize your contacts into distinct groups is generating a lot of discussion about how to best use this new tool.  Some people are exited to finally have a degree of privacy and publishing control not found in Twitter, Facebook or other social sites. But is this privacy control or merely &#8220;privacy <a href='http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Google+&#8217;s Circles feature to organize your contacts into distinct groups is generating a lot of discussion about how to best use this new tool.  Some people are exited to finally have a degree of privacy and publishing control not found in Twitter, Facebook or other social sites. But is this privacy control or merely &#8220;privacy theater&#8221;, a bunch of important-looking knobs that instill confidence but are ineffective against plain old human error?</p>
<p>As new G+&#8217;ers, I imagine many of us scurry about busily categorizing or  tagging these people we know, or sort of know, or might know but can&#8217;t  quite remember, or don&#8217;t know at all.  I find myself falling into a  pattern of creating circles by workplace, school, or other &#8220;where I met  them&#8221; sort of context.  Pretty soon you&#8217;re looking at a dozen different  circles.</p>
<p>It&#8217;s all neat and tidy (sort of), but my realization now is: <strong>When am I  going to use these carefully crafted circles?</strong> I&#8217;m having difficulty  imagining a situation where I&#8217;d post something only to my Borland  colleagues and have reason not to post it to my Microsoft colleagues or  for that matter to the general public.</p>
<p>Am I going to become my own Amazon Turk and presort my outgoing posts, sending them only to the people I think would be interested?  Not likely. I know they don&#8217;t really read my posts anyway.</p>
<p>On a different level, there is the argument that people who post are desiring to be heard.  So why restrict the scope of your audience by only posting to a circle of contacts?</p>
<p>One communication vector G+ Circles could easily replace is topic oriented or regional mailing lists.  We have a few of these here in the Santa Cruz Mountains to share information p2p about wildfires, road closures, storm damage, local merchants and events.  It wouldn&#8217;t be a stretch to imagine a publicly listed circle that people could attach themselves to (inverse of the current Circles paradigm) that provides a service similar to the email mailing list, but without all the subscribe/unsubscribe headaches.</p>
<p>One tidbit that new G+&#8217;ers seem to get excited about is the potential to use these Circles to limit distribution of some of their posts, in the sense of having private conversations. This really bugs me, because this is how we lull ourselves into using good tools for the wrong job.  It&#8217;s a bad idea to approach Google+ with privacy in mind.  It&#8217;s a microblogging publishing platform.  It may have some new knobs to publish to a group slightly smaller than 7 billion people, but don&#8217;t kid yourself into thinking limited distribution is privacy.</p>
<p>There is certainly a noble case for being able to post certain personal  or sensitive items only to immediate family, (and for posting something  *not* to immediate family!).  I can appreciate that argument.  Really, I can &#8211; it would be nice to be able to post vacation updates to a select group of family and friends  without telling the whole world that our home is empty and ready to be burgled. I get that.</p>
<p>As appealing as that scenario is, it still makes me uneasy. It&#8217;s tempting, but it does not silence the little voice in my head reminding me of the online mantra I learned firsthand at an early age:</p>
<blockquote><p>If it&#8217;s sensitive enough that you wouldn&#8217;t want some individual or group to find out about what you said, <strong>don&#8217;t post it.   Anywhere. Period.</strong></p></blockquote>
<p>The Google Circles technology may be flawless &#8211; or not.  There are plenty of ways for technology to &#8220;leak&#8221; the wrong bits in the wrong direction, but technology isn&#8217;t our greatest or most common mode of failure.  That honor goes to the lump at the organic side of the human/machine interface who is still perfectly capable of screwing things up big time by posting the wrong thing to the wrong group.  Sometimes that lump is me.  Sometimes it&#8217;s a friend with whom I&#8217;ve shared or entrusted a little bit too much detail. And sometimes the lump posting the wrong stuff to the wrong place is just a congressman from New York.</p>
<p>Having streams of public and private conversations in the same place definitely does not help. We&#8217;ve all seen the email follow-up snarky remark that went to &#8220;Reply All&#8221; instead of &#8220;Reply to Sender&#8221; and cringed. Or pasted that rude (but hilarious) URL into the wrong IM window. (yikes)</p>
<p>Google Circles is no better and no worse.  Google Circles makes it easy for you to select which subgroup you want to post to, but everyone in that subgroup has the ability to share your post further, outside your control.  Google+ even reminds you of this with a little popup text to be respectful of the original poster&#8217;s intent when you share someone else&#8217;s limited distribution post.  Yes, you can disable resharing of your posts on G+, but that doesn&#8217;t prevent copy &amp; paste or screenshots from helping your post jump the privacy fence.</p>
<p>If you believe there is some truth to the notion that information is hard to keep contained, then you have to accept that anything you post has the potential to &#8220;get out&#8221; and be visible to a much larger audience than you intended. The simplest way to deal with that reality is to treat everything you post as eventually becoming public information.</p>
<p>Thus far, my work to carefully sort and tag my contacts into their soothing blue pigeonholes is turning out to be all for naught. The blue circles float there largely unused because just about anything I would post anywhere I would post as public, not to any particular circle. Maybe I should start a mailing list&#8230;</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/" data-text="Google+ Circles Users: Limited Distribution Is Not Privacy"></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdannythorpe.com%2F2011%2F07%2F11%2Fgoogle-circles-users-limited-distribution-is-not-privacy%2F&amp;title=Google%2B%20Circles%20Users%3A%20Limited%20Distribution%20Is%20Not%20Privacy" id="wpa2a_12">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2011/07/11/google-circles-users-limited-distribution-is-not-privacy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Brother MFC Network Scanning in Windows 7</title>
		<link>http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/</link>
		<comments>http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 19:25:20 +0000</pubDate>
		<dc:creator>Danny Thorpe</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[brother]]></category>
		<category><![CDATA[mfc]]></category>
		<category><![CDATA[scanner]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/?p=333</guid>
		<description><![CDATA[We&#8217;ve had a Brother MFC 5860CN multifunction printer/fax/scanner in the office here for a couple of years. It&#8217;s a dependable little office helper, and does a good enough job of scanning for office paperwork. The old XP laptop has long been the scanning portal for our office.  Remote Desktop into the laptop, scan stuff into <a href='http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve had a Brother MFC 5860CN multifunction printer/fax/scanner in the office here for a couple of years. It&#8217;s a dependable little office helper, and does a good enough job of scanning for office paperwork.</p>
<p>The old XP laptop has long been the scanning portal for our office.  Remote Desktop into the laptop, scan stuff into PDFs or images, and away you go. However, the old laptop hard disk is starting to make unhealthy noises, so it&#8217;s time to take the next step in weaning ourselves off the old box.</p>
<p>It was simple enough to find and download Brother drivers for the new Windows 7 x64 machine.  Printing worked from the start.  That&#8217;s great, but I never use the little MFC inkjet for printing &#8211; the color laser gets all of my print jobs because it&#8217;s oh so much faster.</p>
<p>What didn&#8217;t work was scanning from the Brother MFC into my Windows 7 box across the network.  Everything aborted with network connection failures.  Everything except scanning the network to locate the MFC &#8211; the Win7 box could find the MFC on the network just fine, and could print to it, but it couldn&#8217;t scan from it.</p>
<p>Web searches weren&#8217;t much help.  There&#8217;s a lot of bad and old information out there, lots of speculation and pat answers from folks who don&#8217;t actually know a thing about Brother MFC devices.  Reinstalling the Win7 drivers didn&#8217;t help. Disabling the Windows Firewall didn&#8217;t help. Uninstalling the Win7 drivers and installing the Vista drivers didn&#8217;t help.</p>
<p>I finally stumbled into a solution on none other than the Brother Solutions Center support site: <a href="http://welcome.solutions.brother.com/BSC/public/us/us/en/faq/faq/000000/002600/000037/faq002637_000.html?reg=us&amp;c=us&amp;lang=en&amp;prod=mfc5860cn_all&amp;Cat=117">&#8220;I can print but cannot scan via network&#8221;</a>. I haven&#8217;t the faintest idea how I got there, but I&#8217;m glad I finally did.</p>
<p>The problem is the Brother scanning software and/or Windows 7 can&#8217;t connect to the MFC device by network name.  The solution is simple: configure the scanner software to connect to the MFC peer to peer using its static IP address instead of its network name.</p>
<p>Bam! Scanning works in Windows 7.  Hallelujah.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/" data-text="Brother MFC Network Scanning in Windows 7"></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdannythorpe.com%2F2011%2F07%2F02%2Fbrother-mfc-network-scanning-in-windows-7%2F&amp;title=Brother%20MFC%20Network%20Scanning%20in%20Windows%207" id="wpa2a_16">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2011/07/02/brother-mfc-network-scanning-in-windows-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Databinding Collection Properties</title>
		<link>http://dannythorpe.com/2011/06/09/databinding-collection-properties/</link>
		<comments>http://dannythorpe.com/2011/06/09/databinding-collection-properties/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 19:22:06 +0000</pubDate>
		<dc:creator>Danny Thorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[databinding]]></category>
		<category><![CDATA[IList]]></category>
		<category><![CDATA[wpf]]></category>
		<category><![CDATA[xaml]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/?p=324</guid>
		<description><![CDATA[Ah, WPF.  You&#8217;ve dotted your tees and crossed your eyes and your data bound control is still not showing any data from your collection.  You set a breakpoint in the property getter that is providing the collection data, the breakpoint gets hit and returns your data, but the data doesn&#8217;t appear at the other end <a href='http://dannythorpe.com/2011/06/09/databinding-collection-properties/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ah, WPF.  You&#8217;ve dotted your tees and crossed your eyes and your data bound control is still not showing any data from your collection.  You set a breakpoint in the property getter that is providing the collection data, the breakpoint gets hit and returns your data, but the data doesn&#8217;t appear at the other end of the binding pipeline, in the databound control.  You check the Output debug window in VS to see what data binding error messages might be found there, but there are none.  What&#8217;s going on?</p>
<p>The problem is that the data collection you&#8217;re returning doesn&#8217;t meet WPF&#8217;s data binding requirements, so WPF ignores the binding expression and goes on its merry way. I can understand why WPF doesn&#8217;t throw an exception for this situation, but could we at least get an error message logged to the Output window like other data binding errors?</p>
<p>For collection properties to work on WPF controls in XAML markup, XAML requires that the collection object instance implement the IList interface.  That means the data collection you&#8217;re binding to that property needs to implement IList also.</p>
<p>If your data collection is an <strong>IEnumerable</strong>, such as data returned by a <strong>yield return</strong> iterator, your control will display no data at runtime and you&#8217;ll see no error messages.</p>
<p>If your data collection implements <strong>IList&lt;T&gt;</strong>, your control will display no data at runtime and you&#8217;ll see no error messages.  A class that implements <strong>IList&lt;T&gt;</strong> does not automatically support <strong>IList</strong>.</p>
<p>If your data collection is a <strong>Dictionary&lt;K,V&gt;</strong>, you can data bind to the dictionary&#8217;s <strong>Values</strong> collection property, which implements <strong>IList&lt;T&gt;</strong>.  You can probably guess where this is going&#8230;  The dictionary&#8217;s values collection type implements <strong>IList&lt;T&gt;</strong>, but not <strong>IList</strong>.  Your control will display no data at runtime and you&#8217;ll see no error messages.</p>
<p>Note that the type of the property that is providing the data collection is more or less immaterial.  What matters is whether the object that property returns implements <strong>IList</strong>.  WPF/XAML will query at runtime for the <strong>IList</strong> interface on whatever object is returned by the data bound source property.</p>
<p><strong>List&lt;T&gt;</strong>, <strong>Collection&lt;T&gt;</strong>, and <strong>ObservableCollection&lt;T&gt;</strong> all implement <strong>IList</strong>, so if you&#8217;re using these as your underlying storage class you&#8217;re good to go.  If your underlying storage is anything else, you probably have some work to do.</p>
<p>In the <strong>Dictionary&lt;K,V&gt;.Values</strong> case, one simple solution is to return <strong>Values.ToList().</strong> The List object returned implements <strong>IList</strong> so you&#8217;re good to go.</p>
<p>Before putting that code to bed, though, give some thought to the performance implications: <strong>ToList()</strong> will create a new list of references to all the data in the dictionary Values collection, and it will do that every time anything fetches the property value. The memory consumption is proportional to the number of items in the dictionary, but not to the size of those objects.  The objects in the dictionary are not copied, the list just contains references to the objects (as does the dictionary).</p>
<p>For a small collection of a few hundred entries or less, this is probably no big deal.  For a large collection with tens of thousands of items or more, creating a new list of N object references every time the property is fetched is probably not a good idea.</p>
<p><a class="a2a_button_twitter_tweet addtoany_special_service" data-count="none" data-url="http://dannythorpe.com/2011/06/09/databinding-collection-properties/" data-text="Databinding Collection Properties"></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://dannythorpe.com/2011/06/09/databinding-collection-properties/"></a><a class="a2a_button_facebook_like addtoany_special_service" data-href="http://dannythorpe.com/2011/06/09/databinding-collection-properties/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fdannythorpe.com%2F2011%2F06%2F09%2Fdatabinding-collection-properties%2F&amp;title=Databinding%20Collection%20Properties" id="wpa2a_20">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2011/06/09/databinding-collection-properties/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  dannythorpe.com/feed/ ) in 0.49069 seconds, on May 18th, 2012 at 1:04 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 2:04 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  dannythorpe.com/feed/ ) in 0.00044 seconds, on May 18th, 2012 at 1:10 am UTC. -->
