<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.objectsharp.com/CS/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Bruce Johnson's SOA(P) Box</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/default.aspx</link><description>Using SOA in the .NET world</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Getting Value from your Data</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/05/20/getting-value-from-your-data.aspx</link><pubDate>Wed, 20 May 2009 14:41:17 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:173613</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/173613.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=173613</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=173613</wfw:comment><description>&lt;p&gt;For those of you who are not on the ObjectSharp mailing list, you might not be aware that next week we have another in our Smart Breakfast series. This time it’s David Chennels talking about Business Intelligence. You can find the details out &lt;a href="http://www.objectsharp.com/about/events/Pages/smart-breakfast-business-intelligence.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Now the term “Business Intelligence” is one of those amorphous phrases that have the potential to make people crinkle their nose. It has the good buzzwords to entire management and it’s vague enough so that you can put many different technologies under that umbrella. If you’re a geek in the Microsoft space, typically business intelligence includes the OLAP and Analysis Services parts of SQL Server, maybe a third-party tool to visualize the data (if Reporting Services isn’t enough) and perhaps Integration Services. &lt;/p&gt;  &lt;p&gt;But those tools have been around for a while. And, even though there is no licensing fee added to be able to use then, they don’t seem to have much traction, at least in the companies that I’ve been working with. So what is the reason for this lack of interest?&lt;/p&gt;  &lt;p&gt;From my perspective, the answer seems to be lack of awareness. If you ask any managers whether more information is better than less, most will want more. If you qualify the question by letting the managers specify the type and format of the information that is presented, the percentage answering in the affirmative goes up. And yet, even though the information is already stored in the corporate database and the tools to create the desired reports are readily available, nothing is done. &lt;/p&gt;  &lt;p&gt;And what is the solution? Education. Spend some time getting up to speed on what you can do with the tools already at your disposal. Is the creation of a business dashboard a zero-effort project? No. But it’s probably much less effort than you think. And in the current business environment, doesn’t it make more sense to find a way to use your existing resources to their fullest event? Of course it does.&lt;/p&gt;  &lt;p&gt;So take a morning to learn about the possibilities. More specifically, take the morning May 28th and come to the ObjectSharp Smart Breakfast on Business Intelligence. Along with a good breakfast, you’ll learn about some tools and techniques that can make an immediate difference to your business. Now that’s &lt;u&gt;really&lt;/u&gt; getting value.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=173613" width="1" height="1"&gt;</description></item><item><title>Getting Trained in an Economic Downturn</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/30/getting-trained-in-an-economic-downturn.aspx</link><pubDate>Thu, 30 Apr 2009 22:34:07 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:171788</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/171788.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=171788</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=171788</wfw:comment><description>&lt;p&gt;I’m sure that, for the vast majority of the readers of my blog, becoming more productive with your programming tools is a desirable goal. Not all developers go out of their way to advance their skills, but the very fact that you read blogs means that getting better is of interest to you. And, for most companies, they would also like you to make better use of your existing tools. It’s certainly obvious that it’s in your company’s best interest for this to happen, even if they don’t go out of their way to explicitly advance your skills. &lt;/p&gt;  &lt;p&gt;And this is the ugly truth for most companies. In the best of times, a large number of companies don’t provide any significant budget for formal training. Usually developers are expected to pick up any new skills on their own time. Or, worse, they are expected to apply new technologies without spending any ‘exploratory’ time with them. As most of your are aware, the first time you try a new technology, the result is usually only partially successful. Only after you have worked with it a few times does it become possible to take full advantage of it. And yet, management is reluctant to pay for training classes, tech conferences, or even a programming book that will help you get ‘into the zone’ for the stuff that would make a difference in your day-to-day efforts. Here's a few suggestions that might, &lt;em&gt;possibly &lt;/em&gt;get your manager to approve educational expenses, even in the economic conditions that exist today.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Working with Books&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Over the years, I have worked with a number of different companies. Each of them takes a slightly different view of what appropriate training costs are. For companies that have a large number of developers and a small educational budget, sometimes books are all that fit. For some companies, creating a library of programming books is a viable books. Your company could purchase well-reviewed (reviews are easy to find on Amazon) programming books on the relevant topics. Employees could then ‘borrow’ books that were appropriate to their current tasks. The books end up being purchased just once, but can be shared between developers as the need arises. &lt;/p&gt;  &lt;p&gt;A more high-tech solution to the problem can be achieved with a solution to the on-line technology book site &lt;a href="http://my.safaribooksonline.com/?portal=informit"&gt;Safari&lt;/a&gt;. Safari allows for books to be searched electronically and even be downloaded (in a PDF format) or even printed on an as needed basis. This is a decent mix between the need to search for a specific answer and still being able to read a book cover-to-cover when called for. &lt;/p&gt;  &lt;p&gt;However, a corporate library is not always the best solution. Finding answers in a book requires, in many cases, that you have some inkling of the solution beforehand. At a minimum, you need to frame your query appropriately, something that is as much art as science. And the pace of technology advances means that books are almost always going to lag new technology and best practices by a period of months, if not years. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Selling Management on Training: Speak Their Language&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When you want to convince your boss to let you go to a conference or attend a course, the first thing to do is look at the expenditure from their perspective. After all, the cost of the training is an expense to them. If there is no corresponding benefit, it becomes difficult to justify spending the monies. And, ultimately, you need to convince management that the benefits that they will gain are more than the money that they will spend.&lt;/p&gt;  &lt;p&gt;In general, you will find that the attitude that a company has towards the training of developers is dictated by &lt;em&gt;how&lt;/em&gt; the company makes money and &lt;em&gt;who&lt;/em&gt; is responsible for helping to making that money. Usually, companies whose product is technology-based tend to be better at providing and paying for skill improvements for their employees. When developers productivity is closely aligned with corporate revenues, it is easier to get the boss’ attention. However, if you work on an application that has no direct correlation with how the company makes money, you’re much more likely to face an uphill battle. &lt;/p&gt;  &lt;p&gt;But regardless of where you fit in this spectrum, focus your arguments on what &lt;em&gt;they&lt;/em&gt; get out of sending you across town or across the country. Make the conversation about their Return on Investment. Show that the training will have concrete and immediate value to the company and you’re a lot closer to getting approval. &lt;/p&gt;  &lt;p&gt;One way that you might be able to do this is to offer to share materials and experiences with your team upon return. At ObjectSharp, we call these sessions ‘Lunch &amp;amp; Learns”. You many know them as “Brown Bag Training”. By offering to present such a session after your conference or course, your company gets to spread some of the benefits of sending one person on training across multiple people. And your team benefits from having the new technologies couched in terms that are directly relevant to your environment. &lt;/p&gt;  &lt;p&gt;In some cases, it’s also possible to get the trainer to offer to help with these sessions. This is something that ObjectSharp offers to attendees of our courses. We’re more than happy to have one of our instructors speak to your company about the newest technologies. While any course is on-going, instructors work hard to make the content relevant to you. To accomplish this, we ask about the kinds of projects that are being worked on and where the technology will be applied. So by having an ObjectSharp instructor give the Lunch &amp;amp; Learn, you get a person who is well-versed in the technology, but who also has a basic understanding of how it will fit into your corporate development plans.&lt;/p&gt;  &lt;p&gt;You might consider shouldering some of the burden of training yourself. I don’t necessarily mean to pay for it directly. But if you take your time to attend user group meetings and Code Camps (both of which take place in non-work hours), you show a dedication to improving your skills that might make a difference. At a minimum, you will get some insight into the latest technologies, even if it’s not quite the same personalized and intensive hand-on experience that going on a course might be.&lt;/p&gt;  &lt;p&gt;Finally, I’d like to leave you with one final, and surprisingly creative, argument. One of the most common questions we get from potential training clients is 'What if I train our developers and they leave?'&amp;quot; Our answer is invariably 'What if you don’t train them and they stay?' This usually gets an 'Aha' moment from management, followed by a realization that perhaps investing more in staff development might not be quite the pure expense that they think.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=171788" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Not-so-SOAP/default.aspx">Not-so-SOAP</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Certification/default.aspx">Certification</category></item><item><title>Data Bondage in WPF presentation at Toronto Code Camp</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/26/data-bondage-in-wpf-presentation-at-toronto-code-camp.aspx</link><pubDate>Sun, 26 Apr 2009 05:28:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:171326</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/171326.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=171326</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=171326</wfw:comment><description>&lt;P&gt;My final presentation in my April World Speaking tour was at the Toronto Code Camp this afternoon. As always, the code camp was a huge success. The efforts of many people went into making it so, but the organization was top notch.&lt;/P&gt;
&lt;P&gt;As part of the lead-up to my presentation, Joey de Villa made good on a promise to wear Microsoft branded assless chaps. And he even regaled the crowd with his version of Hit Me With Your Best Shot, a choice completely in character with the theme of the presentation. &lt;/P&gt;
&lt;P&gt;As for the presentation, it went very well. Something like 70-80 people where there and I was pleased by the questions that were asked. I have always preferred an interactive audience because it means that they are probably listening. :)&lt;/P&gt;
&lt;P&gt;As I promised at the end of the presentation, here are links to the slides and demos. Any questions are most welcome.&lt;/P&gt;
&lt;P&gt;Slides: &lt;A href="http://www.slideshare.net/LACanuck/data-bondage-in-wpf" target=_blank&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Demos: &lt;A title=Download href="http://blogs.objectsharp.com/CS/files/folders/171303/download.aspx"&gt;Download&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Update: For those who want a more complete story surrounding the title of the presentation and the assless chaps references, check out Joey's blog post &lt;A href="http://www.globalnerdy.com/2009/04/27/assless-chaps-and-data-bondage/" target=_blank&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=171326" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Never Test Alone – Presentation at KWSQA Testing Conference</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/22/never-test-alone-presentation-at-kwsqa-testing-conference.aspx</link><pubDate>Wed, 22 Apr 2009 20:14:59 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:171104</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/171104.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=171104</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=171104</wfw:comment><description>&lt;p&gt;I finished presentation four of my April World Tour of the GTA earlier today. It was actually a co-presentation with Deb Forsyth and I was basically code-monkey and the 'developer’ that she could point to with here ‘bad developer’ stories. This was an unusual conference for me, in that I was a lone developer in a room full of testers. Daniel never had it so bad with the lions. :)&lt;/p&gt;  &lt;p&gt;Anyway, as I mentioned in the presentation, the slides are now available for download at the following link. As always, questions are welcomed.&lt;/p&gt;  &lt;p&gt;Slides – &lt;a title="Download" href="http://blogs.objectsharp.com/CS/files/folders/171100/download.aspx"&gt;Download&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=171104" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category></item><item><title>Dropping Cookies in IE7</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/17/dropping-cookies-in-ie7.aspx</link><pubDate>Fri, 17 Apr 2009 13:41:32 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:170639</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/170639.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=170639</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=170639</wfw:comment><description>&lt;p&gt;I was asked an unusual question yesterday about cookies, Silverlight and WCF. The scenario was that a Silverlight application was being used in a consumer-facing situation. The application itself communicates with the server using WCF. The service which is the target of the communication uses ASP.NET Authentication to authenticate the user. It’s an implementation detail (but critical to this post) that the method of storing the authentication token is a cookie called .ASPXAUTH.&lt;/p&gt;  &lt;p&gt;In a normal (that is, working) scenario with Silverlight, the credentials are sent to the server and an .ASPXAUTH cookie is returned. The browser strips off the cookie and stores it. On any subsequent requests, Silverlight creates a request and sends it the the server through the browser’s networking API. The browser is responsible for determining which, if any, cookies should be send with the request and adding them to the outgoing header. In other words, the Silverlight application has no specific knowledge of or interaction with the .ASPXAUTH cookie.&lt;/p&gt;  &lt;p&gt;As you would expect, this mechanism works the vast majority of the time. If it didn’t, I think it would have been a significant story long before now. But my questioner was running into a situation where the Silverlight application was unable to communicate with the server even after authentication was performed. What’s worse, this behavior was only happening on IE7. When Silverlight was run through Firefox, it worked exactly as it was supposed to.&lt;/p&gt;  &lt;p&gt;The diagnostic step in a situation like this is to use Fiddler (or whatever your favorite TCP trace application is) to view the raw messages. And what was seen is that although the authentication response had the .ASPXAUTH cookie in it, any requests sent back to the server after authentication did not. Given when I’ve already explained about the processing of cookies with Silverlight requests, this eliminates the Silverlight application as the most likely culprit. But it also makes one scratch your head, as we can be pretty certain it’s not a widespread failure of IE7 to process cookies.&lt;/p&gt;  &lt;p&gt;The answer likes in a strange bug in IE7. It turns out that &lt;strong&gt;if a domain name has a underscore in it, IE7 doesn’t persist the cookies&lt;/strong&gt;. Let me repeat that, because it’s such a bizarre sounding problem. In IE7, if the domain name has an underscore (‘_’) in it, then any cookies returned from the domain will not be persisted. Which also means that subsequent requests will be ‘cookie-free’.&lt;/p&gt;  &lt;p&gt;I’m guessing that most domain names don’t have an underscore, which is why this bug didn’t get widespread notice. In this particular case, the domain was one used for development, which would keep the problem from being a production issue. But I have no reason to believe that the bug would be restricted to a local problem. Deploy a ‘underscored’ domain name to the public internet and no authentication, shopping carts or other state information can be saved.&lt;/p&gt;  &lt;p&gt;Fortunately, the solution was a simple one. If the domain name in the endpoint configuration is replaced with the raw IP address, IE7 is more than happy to save the cookie. I wouldn’t be surprise if an entry in your local hosts file would have the same effect. And the final solution would be to have your domain administrator create a DNS Alias entry…one that doesn’t have an underscore, of course.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=170639" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Code Contracts at Toronto VB User Group</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/17/code-contracts-at-toronto-vb-user-group.aspx</link><pubDate>Fri, 17 Apr 2009 13:37:53 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:170637</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/170637.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=170637</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=170637</wfw:comment><description>&lt;p&gt;On Wednesday past, I did a Code Contracts presentation to the &lt;a href="http://www.tvbug.com/default.aspx?MainFrameURL=diary.aspx" target="_blank"&gt;Toronto Visual Basic User Group&lt;/a&gt;. It was a continuation of my whirlwind ‘April Presentation Tour’, in that it was my third presentation in a week and the third of five that I’m doing in April. Tee shirts for the April Presentation Tour were available for sale from vendors as you left the arena&lt;/p&gt;  &lt;p&gt;I have posted the slides and the source code to the following links:&lt;/p&gt;  &lt;p&gt;Slides: &lt;a title="Slides" href="http://www.slideshare.net/LACanuck/code-contracts-in-net"&gt;Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Source Code: &lt;a title="Source Code" href="http://blogs.objectsharp.com/CS/files/folders/170636/download.aspx"&gt;Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have any questions, please feel free to drop me a comment or an email message.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=170637" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>What’s New in Silverlight 3 at the Toronto Silverlight User Group</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/10/what-s-new-in-silverlight-3-at-the-toronto-silverlight-user-group.aspx</link><pubDate>Sat, 11 Apr 2009 03:36:23 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:169861</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/169861.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=169861</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=169861</wfw:comment><description>&lt;p&gt;This past Thursday, I had the opportunity to present on Silverlight 3 to the &lt;a href="http://www.torontosilverlight.com/" target="_blank"&gt;Toronto Silverlight User Group&lt;/a&gt;. It was my first time presenting to the group and I was impressed by the number of attendees (I would say 30-40) who managed to hang around on the Thursday evening before a long weekend. &lt;/p&gt;  &lt;p&gt;As promised, I have posted the slides and the source code to the following links:&lt;/p&gt;  &lt;p&gt;Slides: &lt;a title="Slides" href="http://www.slideshare.net/LACanuck/whats-new-in-silverlight-3"&gt;Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Source Code: &lt;a title="Source Code" href="http://blogs.objectsharp.com/cs/files/folders/169860/download.aspx"&gt;Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have any questions, please feel free to drop me a comment or an email message.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=169861" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Catastrophic Failure While Installing an Out-of-Browser Silverlight Application</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/04/08/catastrophic-failure-while-installing-an-out-of-browser-silverlight-application.aspx</link><pubDate>Wed, 08 Apr 2009 15:00:14 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:169589</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/169589.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=169589</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=169589</wfw:comment><description>&lt;p&gt;While working on one of the demos for my upcoming &lt;a href="http://www.torontosilverlight.com/" target="_blank"&gt;Toronto Silverlight User Group&lt;/a&gt; presentation, I ran into a catastrophic failure. Actually, the starting point for the problem was that when I right-clicked on the Silverlight application and selected the installation option, nothing happened. No errors, no warnings, but also no results.&lt;/p&gt;  &lt;p&gt;While trying to figure out the problem, I when to the more direct method of installation by programmatically calling Application.Current.Detach(). When this statement was hit, an exception was thrown with the following beautiful details.&lt;/p&gt;  &lt;p&gt;&lt;font color="#804000" size="2" face="Courier New"&gt;System.Exception: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))     &lt;br /&gt;&amp;#160;&amp;#160; at MS.Internal.XcpImports.CheckHResult(UInt32 hr)      &lt;br /&gt;&amp;#160;&amp;#160; at MS.Internal.XcpImports.Application_Detach(Application app)      &lt;br /&gt;&amp;#160;&amp;#160; at System.Windows.Application.Detach()      &lt;br /&gt;&amp;#160;&amp;#160; at LocalConnectionDemo.MainPage.Button_Click(Object sender, RoutedEventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160; at System.Windows.Controls.Primitives.ButtonBase.OnClick()      &lt;br /&gt;&amp;#160;&amp;#160; at System.Windows.Controls.Button.OnClick()      &lt;br /&gt;&amp;#160;&amp;#160; at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160; at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)      &lt;br /&gt;&amp;#160;&amp;#160; at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;As you might guess, this is not particularly useful in the debugging process. After a fair bit of effort, I discovered the solution. I happen to be using a PNG file as the icon for the application. When the PNG file is added to the project, the Build Action is automatically set to Resource. When you change the Build Action to Content, the problem goes away.&lt;/p&gt;  &lt;p&gt;Also, the same exception is thrown if the file used as the out-of-browser icon is not present at the indicated location. &lt;/p&gt;  &lt;p&gt;I’m hoping that the exception becomes a little more useful as Silverlight 3 moves through the beta process.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=169589" width="1" height="1"&gt;</description></item><item><title>Design 101 – The Color Wheel</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/03/30/design-101-the-color-wheel.aspx</link><pubDate>Mon, 30 Mar 2009 18:43:55 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:168973</guid><dc:creator>bruce</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/168973.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=168973</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=168973</wfw:comment><description>&lt;p&gt;One of the most common comments from Silverlight and WPF developers is their lack of design sense. Over the next little while, I’ll be posting (interspersed with other topics) on some of the basics of color theory and how they can be applied to WPF and Silverlight.&lt;/p&gt;  &lt;p&gt;To start with, let’s talk about one of the fundamental artifacts of color theory – the color wheel.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.objectsharp.com/cs/blogs/bruce/ColorWheel_033AF319.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 10px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="Color Wheel" border="0" alt="Color Wheel" align="left" src="http://blogs.objectsharp.com/cs/blogs/bruce/ColorWheel_thumb_5EE5E8C9.jpg" width="266" height="272" /&gt;&lt;/a&gt;Originally conceived by Sir Isaac Newton, color wheel is a representation of the colors in the visual spectrum. In the representation, the three primary colors are placed equidistant from one another. The gaps between the the primary colors is then filled with with secondary and tertiary colors. &lt;/p&gt;  &lt;p&gt;Now, already I’ve used three terms, only one of which I would expect you to be familiar with. Primary colors (red, blue and yellow) are something that we learned about in elementary school. Secondary colors (orange, green and violet) are created by combining the primary colors. Tertiary colors are those that are formed by combining primary colors with secondary colors.&lt;/p&gt;  &lt;p&gt;So now that we have a color wheel, what good is it? Well, it helps identify harmonious colors. When selecting colors to use in a user interface, it is important so select colors that are, in combination, pleasing to the eye. Personally, I understand the challenge to this. As a person born without the color sense gene, I think that pink and lime green go well together. But apparently, I’m in the minority. :) &lt;/p&gt;  &lt;p&gt;There are numerous theories about the combinations of colors that promote harmony. We’ll look at some of them in more detail in upcoming blog entries, but to give you a second, two of the most commonly used ones are &lt;em&gt;complimentary &lt;/em&gt;and &lt;em&gt;analogous&lt;/em&gt;. Complimentary colors are found opposite one another on the wheel. For example, red-green, yellow-violet, and blue-orange are all complimentary. These colors promote stability and contrast in the image.&lt;/p&gt;  &lt;p&gt;Analogous colors are sets of three colors that are adjacent to one another on the color wheel. In images using analogous colors, one of the colors tends to be the dominant one. The result is an image that appears to be saturated in the dominant color with the other colors offering a subtle nuances of difference.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=168973" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Design/default.aspx">Design</category></item><item><title>Where does Off-Browser Silverlight Run?</title><link>http://blogs.objectsharp.com/CS/blogs/bruce/archive/2009/03/24/where-does-off-browser-silverlight-run.aspx</link><pubDate>Tue, 24 Mar 2009 12:45:57 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:168571</guid><dc:creator>bruce</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/CS/blogs/bruce/comments/168571.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/CS/blogs/bruce/commentrss.aspx?PostID=168571</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/CS/blogs/bruce/rsscomments.aspx?PostID=168571</wfw:comment><description>&lt;p&gt;Off-browser Silverlight is pretty cool. And one of the first questions that got raised is ‘where is it running’. Obviously, it’s not running within the browser. I mean, duh. But if not there, then where?&lt;/p&gt;  &lt;p&gt;I got the first inkling of an answer listening to &lt;a href="http://blogs.msdn.com/mharsh/" target="_blank"&gt;Mike Harsh’s&lt;/a&gt; presentation on off-browser Silverlight at MIX ‘09 (slides, demos and video can be found on his &lt;a href="http://blogs.msdn.com/mharsh/archive/2009/03/19/slides-demos-and-video-for-my-mix-09-session-building-out-of-browser-experiences-with-microsoft-silverlight-3-mix09-t45f.aspx" target="_blank"&gt;blog&lt;/a&gt;). Actually, it wasn’t his presentation, per se, but his answering of questions afterwards. I actually give Mike props for doing this presentation. Off-browser Silverlight is very easy to configure and use. It’s difficult to find 60 minutes worth of content when the user experience is ‘right-click to install…right-click again to uninstall’ and the developer experience is ‘check a box in the property sheet’. But from his easy handling of the questions afterwards, it’s pretty obvious that he knows the topic well.&lt;/p&gt;  &lt;p&gt;One of the post presentation questions Mike was asked was related to the ‘how’ of off-browser Silverlight. Mike intimated that, basically, the Browser control was used. In other words, when installed on a client’s machine, launching the Silverlight application actually launches an application which hosts the Browser control. The Browser control then hosts the Silverlight application.&lt;/p&gt;  &lt;p&gt;As it turns out, this is “basically” true. For the Windows platform, it’s precisely true. From &lt;a href="http://www.blogger.com/profile/01255600685340367644" target="_blank"&gt;Chris Hayak&lt;/a&gt;, the application which is launched is called SLLauncher.exe. This is also the application to which you will attach if you want to debug Silverlight apps in off-browser mode. For the Mac platform, the SLLauncher application runs webkit, which in turn hosts the Silverlight application.&lt;/p&gt;  &lt;p&gt;The one downside of this approach is that, at least during the beta, there is no way to distinguish between multiple, simultaneous off-browser Silverlight apps. They all appear in the process list as ‘sllauncher.exe’. Hopefully this will change before SL3 goes gold.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/CS/aggbug.aspx?PostID=168571" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Home/default.aspx">Home</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Newsletter/default.aspx">Newsletter</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.objectsharp.com/CS/blogs/bruce/archive/tags/MIX09/default.aspx">MIX09</category></item></channel></rss>