<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Windows Live Quantum Mechanics : Mashups</title><link>http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx</link><description>Tags: Mashups</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>MSN's The Podium 08 - Built On Silverlight</title><link>http://blogs.msdn.com/dthorpe/archive/2007/08/24/msn-s-the-podium-08-built-on-silverlight.aspx</link><pubDate>Sat, 25 Aug 2007 02:54:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4549717</guid><dc:creator>dthorpe</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/4549717.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=4549717</wfw:commentRss><description>&lt;p&gt;MSN just launched &lt;a href="http://election.msn.com/podium08.aspx"&gt;The Podium '08&lt;/a&gt;&amp;nbsp;as part of their 2008 US Presidential election coverage.&amp;nbsp; The Podium '08 brings together data on&amp;nbsp;presidential candidates for voters and election followers to&amp;nbsp;explore by topic and compare candidates head to head on specific issues.&lt;/p&gt; &lt;p&gt;What's interesting about The Podium is that the content is not canned editorial material.&amp;nbsp; When you select a candidate and click on a specific issue (say, Immigration) to see where the candidate stands on that issue, the list of articles displayed is actually drawn from Live Search on the fly.&amp;nbsp; As new articles appear on the web on these candidates and these topics, those articles&amp;nbsp;will&amp;nbsp;appear in&amp;nbsp;The Podium 08 for that candidate and topic.&lt;/p&gt; &lt;p&gt;The Podium 08 is built using&amp;nbsp;&lt;a href="http://www.microsoft.com/silverlight/"&gt;Silverlight&lt;/a&gt; 1.0 to present a slick, modern rich UI experience&amp;nbsp;that seamlessly and intelligently integrates services on the back-end.&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Want to&amp;nbsp;see what Software plus Services means to the average Joe?&amp;nbsp; Take a look at &lt;a href="http://election.msn.com/podium08.aspx"&gt;The Podium 08&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4549717" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/web/default.aspx">web</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>See Popfly at MakerFaire: May 19-20 San Mateo Fairgrounds</title><link>http://blogs.msdn.com/dthorpe/archive/2007/05/18/see-popfly-at-makerfaire-may-19-20-san-mateo-fairgrounds.aspx</link><pubDate>Sat, 19 May 2007 00:43:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2718985</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/2718985.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=2718985</wfw:commentRss><description>&lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px" height="73" src="http://blogs.msdn.com/blogfiles/johnmont/WindowsLiveWriter/MakerFaireMeetthePopflyTeam_C499/clip_image002%5B1%5D%5B1%5D.jpg" width="192" align="left"&gt;Hey, whadayaknow:&amp;nbsp; &lt;a href="http://blogs.msdn.com/johnmont/archive/2007/05/18/maker-faire-meet-the-popfly-team.aspx"&gt;John and the Popfly team&lt;/a&gt; will be at the &lt;a href="http://www.makerfaire.com/" target="_blank"&gt;O'Reilly Maker Faire&lt;/a&gt; this weekend in San Mateo.&amp;nbsp; &lt;/p&gt; &lt;p&gt;As a hard core tinkerer myself (don't ask what's in my garage, ask what's not!), I've been following Make: magazine since discovering it last summer.&amp;nbsp; It seems likely that Maker Faire will take a seat of honor on my &lt;a href="http://blogs.msdn.com/dthorpe/archive/2007/01/10/2007-events-calendar.aspx"&gt;short list of must-go annual events&lt;/a&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Since I'll be there anyway (got my tickets in February!), I'll be sure to drop&amp;nbsp;by the Coding4Fun booth to see what sort of heckling can be done.&amp;nbsp; (I've been in several conf calls with John Montgomery and others on his team, but we've never met in person so I don't think they'll spot me in the crowd.&amp;nbsp; heh, heh)&lt;/p&gt; &lt;p&gt;Hey, &lt;a href="http://www.makezine.com/blog/archive/2007/05/bathsheeba_grossman_back.html" target="_blank"&gt;Bathsheeba Grossman will be at Maker Faire&lt;/a&gt;, too!&amp;nbsp; Awesome!&amp;nbsp; She does some &lt;a href="http://bathsheba.com/" target="_blank"&gt;amazing things&lt;/a&gt; with topological models and direct metal deposition rapid prototyping systems.&amp;nbsp; I'm a bit of a nut for additive rapid prototyping fabrication (additive process = constructing solid shapes by building up raw material, as opposed to subtractive processes such as milling).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2718985" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/events/default.aspx">events</category></item><item><title>Popfly: Mashups Made Easy</title><link>http://blogs.msdn.com/dthorpe/archive/2007/05/18/popfly-mashups-made-easy.aspx</link><pubDate>Sat, 19 May 2007 00:05:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2718256</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/2718256.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=2718256</wfw:commentRss><description>&lt;p&gt;Today &lt;a href="http://blogs.msdn.com/johnmont/"&gt;John Montgomery&lt;/a&gt;'s NPT team launched &lt;a href="http://www.popfly.com/" target="_blank"&gt;Microsoft Popfly&lt;/a&gt;, a web-based development environment for building web applications with little or no code.&amp;nbsp; John shares some background and history on his &lt;a href="http://blogs.msdn.com/johnmont/archive/2007/05/18/what-i-ve-been-doing-for-the-last-year.aspx"&gt;blog&lt;/a&gt;, but what you really ought to see first is the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=91175" target="_blank"&gt;Popfly video&lt;/a&gt;&amp;nbsp;on the &lt;a href="http://www.popfly.com/Overview/" target="_blank"&gt;Overview&lt;/a&gt; page.&amp;nbsp;&amp;nbsp;Seeing is believing!&lt;/p&gt; &lt;p&gt;This project has been around for awhile, but I must say it went from a lump of goo to a snappy "wow" creature in only a matter of weeks.&amp;nbsp; As John mentions on his blog, they rewrote the frontend only a few weeks ago to run on &lt;a href="http://www.microsoft.com/silverlight/"&gt;Silverlight&lt;/a&gt; instead of plain old JavaScript, to boost the features, the performance, and the visual sex.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Galo and I got a ping from the Popfly team literally 7 days ago to see what sort of Windows Live stuff could be incorporated into the Popfly blocks toolset.&amp;nbsp; We showed them how to set up the &lt;a href="http://dev.live.com/contactscontrol/"&gt;Windows Live Contacts web control&lt;/a&gt; and &lt;a href="http://dev.live.com/spacescontrol"&gt;Windows Live Spaces web control&lt;/a&gt;, they wrote some glue code in their block thingie, and poof!&amp;nbsp; We're in the Popfly blocks gallery!&amp;nbsp; Shazam!&lt;/p&gt; &lt;p&gt;(ok, so there was that&amp;nbsp;one late night last minute panic crisis along the way, but the freakish HTML problem was finally identified and trivially solved so it hardly bears mentioning except to point out that it wasn't Firefox that was keeping us up late.&amp;nbsp; I'll post a tech note on what we discovered about IE's document.namespaces right after I get the stitches removed from my butt.)&lt;/p&gt; &lt;p&gt;Congrats to the Popfly team!&amp;nbsp; The world (including me) eagerly awaits your broader beta.&amp;nbsp; Meanwhile, please keep posting videos so we can see what we're missing.&amp;nbsp; :P&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2718256" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/web/default.aspx">web</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Print Labels With the Windows Live Contacts Control</title><link>http://blogs.msdn.com/dthorpe/archive/2007/04/26/print-labels-with-the-windows-live-contacts-control.aspx</link><pubDate>Fri, 27 Apr 2007 00:26:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2290300</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/2290300.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=2290300</wfw:commentRss><description>&lt;p&gt;I was installing&amp;nbsp;a new&amp;nbsp;label printer at home a&amp;nbsp;little while&amp;nbsp;ago and noticed mention of a developer SDK in the readme docs. (Yes, some people actually read the readme) I know from experience that getting text to land right side up&amp;nbsp;on a target as small as an address label can be a pain in the neck using&amp;nbsp;good old Win32 GDI.&amp;nbsp; So the prospect of an SDK that dealt with the nitty gritty of handling multiple label formats and orientations and made spitting out a label easy piqued my curiosity.&lt;/p&gt; &lt;p&gt;On&amp;nbsp;my first glance&amp;nbsp;at the &lt;a href="https://global.dymo.com/enUS/RNW/RNW.html"&gt;Dymo Label Printer SDK&lt;/a&gt; &lt;a href="http://www.dymo.com/media/UserGuides/DLS_SDK_76_ReadMe.pdf"&gt;readme (PDF)&lt;/a&gt;, I was pleasantly surprised to see Delphi among the long list of languages supported by the SDK's COM-based print engine.&amp;nbsp; Not just supported, but sample code for all those languages is included in the SDK.&lt;/p&gt; &lt;p&gt;As&amp;nbsp;I was about to pop this sidetrack off the stack and get back&amp;nbsp;to whatever it was&amp;nbsp;I was supposed to be doing, this&amp;nbsp;word jumped out at me:&amp;nbsp; &amp;nbsp;JavaScript.&amp;nbsp; A printer driver for JavaScript?&amp;nbsp; Hmm...&amp;nbsp; The Dymo SDK contains sample code to print labels in JavaScript or VBScript using COM objects in IE, and using a browser extension in Firefox.&lt;/p&gt; &lt;p&gt;Printing labels from a browser web app... interesting idea, but where would a web app fetch and store postal addresses of the people you know?&amp;nbsp; Hmm...&lt;/p&gt; &lt;p&gt;Ok, that was a baited question. If you answered "&lt;a href="http://dev.live.com/contactscontrol"&gt;&lt;strong&gt;The Windows Live Contacts Control&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, of course!&lt;/strong&gt;", have a cookie.&lt;/p&gt; &lt;p&gt;So I installed the Dymo Label Printer SDK and sure enough, there was the IE JavaScript sample code.&amp;nbsp; The code instantiates the Dymo print engine as an ActiveX object, and then makes calls into it to fetch the list of available Dymo printers on the machine, select a printer, select a label format, and send an address off to be printed.&amp;nbsp; Easy as pie.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Now, what to do about that address?&amp;nbsp; &lt;/p&gt; &lt;p&gt;The idea is to receive the contact infos&amp;nbsp;that the user selects in the contacts control, display them in mock labels on the web page, and prompt the user to select a printer and label format to&amp;nbsp;render the address bits in meatspace.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Selecting the printer and label format after selecting the contacts allows the user a moment's pause to reflect on the printing journey they're about to undertake.&amp;nbsp;&amp;nbsp;They&amp;nbsp;may discover in the label preview that some of their contact infos are out of date or missing address info, and go fix that in the contacts control before printing.&amp;nbsp; Or they may&amp;nbsp;realize that Valentine's Day was yesterday and no amount of postage will get&amp;nbsp;their marvelous card to its intended recipient by yesterday, so maybe a wimpy little email apology will do.&amp;nbsp; (Hint: It won't.&amp;nbsp; Send the card!&amp;nbsp; Blame the post office!)&lt;/p&gt; &lt;p&gt;I plopped a Windows Live Contacts Control onto a new HTML page, dressed it up with the traditional border and float-right placement, and hooked up its onData event to a new function called &lt;font face="Courier New"&gt;&lt;strong&gt;receiveData(p_contacts)&lt;/strong&gt; &lt;/font&gt;to format the contact objects into postal addresses:&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;function&lt;/font&gt;&lt;font size="2"&gt; receiveData(p_contacts) {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;    document.getElementById(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"ContactsDisplay"&lt;/font&gt;&lt;font size="2"&gt;).innerHTML = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Done! "&lt;/font&gt;&lt;font size="2"&gt; + p_contacts.length + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" records received. &amp;lt;br&amp;gt;"&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    var&lt;/font&gt;&lt;font size="2"&gt; s = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;""&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    var&lt;/font&gt;&lt;font size="2"&gt; c;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    var&lt;/font&gt;&lt;font size="2"&gt; lines;&lt;/p&gt;&lt;p&gt;    labels = [];&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    for&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;font size="2"&gt; i = 0; i &amp;lt; p_contacts.length; i++) {&lt;/p&gt;&lt;p&gt;        c = p_contacts[i];&lt;/p&gt;&lt;p&gt;        lines = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;        if&lt;/font&gt;&lt;font size="2"&gt; (c.personalStreet &amp;amp;&amp;amp; c.personalCity &amp;amp;&amp;amp; c.personalPostalCode) {&lt;/p&gt;&lt;p&gt;            lines = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; Array();&lt;/p&gt;&lt;p&gt;            lines[0] = c.name;&lt;/p&gt;&lt;p&gt;            lines[1] = c.personalStreet;&lt;/p&gt;&lt;p&gt;            lines[2] = c.personalCity + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.personalState + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.personalPostalCode;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            if&lt;/font&gt;&lt;font size="2"&gt; (c.personalCountry) {&lt;/p&gt;&lt;p&gt;                lines[2] += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.personalCountry;&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;        } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;else&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (c.businessStreet &amp;amp;&amp;amp; c.businessCity &amp;amp;&amp;amp; c.businessPostalCode) {&lt;/p&gt;&lt;p&gt;            lines = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; Array();&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            if&lt;/font&gt;&lt;font size="2"&gt; (c.name) {&lt;/p&gt;&lt;p&gt;                lines.push(c.name);&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            if&lt;/font&gt;&lt;font size="2"&gt; (c.businessName) {&lt;/p&gt;&lt;p&gt;                lines.push(c.businessName);&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;            lines.push(c.businessStreet);&lt;/p&gt;&lt;p&gt;            lines.push(c.businessCity + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.businessState + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.businessPostalCode);&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            if&lt;/font&gt;&lt;font size="2"&gt; (c.businessCountry) {&lt;/p&gt;&lt;p&gt;                lines[lines.length-1] += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;" "&lt;/font&gt;&lt;font size="2"&gt; + c.businessCountry;&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;        } &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;        if&lt;/font&gt;&lt;font size="2"&gt; (lines) {&lt;/p&gt;&lt;p&gt;            s += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"&amp;lt;div class='mocklabel'&amp;gt;"&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            for&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;font size="2"&gt; k = 0; k &amp;lt; lines.length; k++) {&lt;/p&gt;&lt;p&gt;                s += lines[k] + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"&amp;lt;br&amp;gt;"&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;            labels.push(lines);&lt;/p&gt;&lt;p&gt;        } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;else&lt;/font&gt;&lt;font size="2"&gt; {&lt;/p&gt;&lt;p&gt;            s += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"&amp;lt;div class='errorlabel'&amp;gt;Incomplete address info: &amp;lt;br&amp;gt;"&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;           for&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;font size="2"&gt; j &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; c) {&lt;/p&gt;&lt;p&gt;               s += j + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;": "&lt;/font&gt;&lt;font size="2"&gt; + c[j] + &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"&amp;lt;br&amp;gt;"&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;           }&lt;/p&gt;&lt;p&gt;        }&lt;/p&gt;&lt;p&gt;        s += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"&amp;lt;/div&amp;gt;"&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;    }&lt;/p&gt;&lt;p&gt;    showPage(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"reviewandprint"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt;&lt;p&gt;    document.getElementById(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"displayLabels"&lt;/font&gt;&lt;font size="2"&gt;).innerHTML = s;&lt;/p&gt;&lt;p&gt;    document.getElementById(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"PrintBtn"&lt;/font&gt;&lt;font size="2"&gt;).disabled = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;Contact objects can contain personal and/or business address info, or no address info at all.&amp;nbsp; &lt;strong&gt;receiveData()&lt;/strong&gt; handles these three cases, checking first to see if the contact object has sufficient minimal personal address info, then for sufficient business address info.&amp;nbsp; The first one found gets converted into a US Postal Service style 3 or 4&amp;nbsp;line address string.&amp;nbsp; If the contact info is insufficient in both categories, we'll set things up so that the mock labels will show an error message instead of a label on screen.&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;function&lt;/font&gt;&lt;font size="2"&gt; print() {&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    if&lt;/font&gt;&lt;font size="2"&gt; (!DymoAddIn || !DymoLabel) { &lt;/p&gt;&lt;p&gt;        alert(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Can't connect to Dymo printer software. Are you sure you have a Dymo printer installed?"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt;&lt;p&gt;    }&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    if&lt;/font&gt;&lt;font size="2"&gt; (labels.length == 0) {&lt;/p&gt;&lt;p&gt;        alert(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"Nothing to print!"&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt;&lt;p&gt;    }&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;    if&lt;/font&gt;&lt;font size="2"&gt; (DymoAddIn.Open2(labelFile)) {&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;        var&lt;/font&gt;&lt;font size="2"&gt; i;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;        var&lt;/font&gt;&lt;font size="2"&gt; roll = chooseRollEl.disabled ? 0 : chooseRollEl.value;&lt;/p&gt;&lt;p&gt;        DymoAddIn.StartPrintJob();&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;        for&lt;/font&gt;&lt;font size="2"&gt; (i = 0; i &amp;lt; labels.length; i++) {&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            var&lt;/font&gt;&lt;font size="2"&gt; s = labels[i][0];&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            var&lt;/font&gt;&lt;font size="2"&gt; j;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;            for&lt;/font&gt;&lt;font size="2"&gt; (j = 1; j &amp;lt; labels[i].length; j++) {&lt;/p&gt;&lt;p&gt;                s += &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"\n"&lt;/font&gt;&lt;font size="2"&gt; + labels[i][j];&lt;/p&gt;&lt;p&gt;            }&lt;/p&gt;&lt;p&gt;            DymoLabel.SetAddress(1, s);&lt;/p&gt;&lt;p&gt;            DymoAddIn.Print2(1, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;, roll);&lt;/p&gt;&lt;p&gt;        }&lt;/p&gt;&lt;p&gt;        DymoAddIn.EndPrintJob();&lt;/p&gt;&lt;p&gt;    } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;else&lt;/font&gt;&lt;font size="2"&gt; {&lt;/p&gt;&lt;p&gt;        alert(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;'Error: Label file Not Found!'&lt;/font&gt;&lt;font size="2"&gt;);&lt;/p&gt;&lt;p&gt;    }&lt;/p&gt;&lt;p&gt;}&lt;/font&gt; &lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;As you might guess, the &lt;strong&gt;print()&lt;/strong&gt; function is where the rubber meets the road.&amp;nbsp; Or the address meets the label.&amp;nbsp; &lt;strong&gt;DymoAddIn.Open2()&lt;/strong&gt; opens the named label file on the client file system, or pops up a file open common dialog if the given file can't be found.&amp;nbsp; The local file name paths of recently used label files are obtained by calling &lt;strong&gt;DymoAddIn.GetMRULabelFiles()&lt;/strong&gt; in the HTML page's init code.&amp;nbsp; The list of lines associated with each label is strung together using "\n" to mark line breaks.&amp;nbsp; "\n" doesn't mix well with HTML in the label preview, so I add it in only as we send the data off to the printer.&amp;nbsp; &lt;strong&gt;DymoLabel.SetAddress()&lt;/strong&gt; submits the address to the label format, and &lt;strong&gt;DymoAddIn.Print2()&lt;/strong&gt; commits the label contents and advances the print job to the next label.&amp;nbsp; Wrap it all up in a &lt;strong&gt;DymoAddIn.StartPrintJob()&lt;/strong&gt; and &lt;strong&gt;DymoAddIn.EndPrintJob()&lt;/strong&gt; and you have a &lt;a href="http://www.dannythorpe.com/live/v0.2/printlabels.html" target="_blank"&gt;web-based label printer app to print your Windows Live Contacts on your local Dymo label printer&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Side note:&amp;nbsp; Strictly speaking, the fact that this Dymo ActiveX interface provides browser JavaScript visibility into the local file system is a slight information disclosure issue.&amp;nbsp; An evil.com hacker could learn a little bit about how your hard disk is organized by looking at the path information of these label files.&amp;nbsp; He/she&amp;nbsp;may glean personally identifying information about you such as your login name from those local file paths or could&amp;nbsp;use that information to take random pokes and prods at your browser to try to replace or damage critical files on your system.&amp;nbsp; Without your local file paths, the hacker would just be stabbing in the dark, but with the local file paths, he/she could target your machine more precisely.&amp;nbsp; This assumes the hacker has found a hole in your machine's firewall protection to begin with, and that you're too lazy to change the default directory that you install software into.&amp;nbsp; You never install into the default directories, right?&lt;/p&gt;
&lt;p&gt;There's plenty of room for improvement in this little web app:&amp;nbsp; fetching label templates from the web instead of from the local file system, supporting custom label formats, editing &amp;amp; correcting addresses in place on the mock labels on the html page and pushing those back into the contacts control, etc.&amp;nbsp; Dymo also supports printing US postage on special postage labels; the ultimate extension of this web app would be to print labels and postage at the same time.&amp;nbsp; Alas, there doesn't appear to be an API to talk to the Dymo postage app (yet?) so that idea will have to wait.&lt;/p&gt;
&lt;p&gt;Dymo provides a Firefox plugin to provide the same API entry points for Firefox users as the&amp;nbsp;Dymo ActiveX APIs for IE.&amp;nbsp; I 've successfully installed the plugin and run the Dymo sample script from their SDK to print a test label, but I can't figure out for the life of me how to get the Firefox plugin to work with a real live HTML page from a real server.&amp;nbsp; I understand that some configuration must be made on the local browser to tell it to allow the plugin to work, but nothing I've tried has worked.&amp;nbsp; Firefox gurus out there, please help!&amp;nbsp; Send me a clue! I really want this to work on multiple browsers.&lt;/p&gt;
&lt;p&gt;Obviously, to use of this label printing app to print labels, you need a Dymo printer.&amp;nbsp; This is not an endorsement of Dymo over any other label printer brand - it's just the printer that was sitting on my desk when this idea popped into my head.&amp;nbsp; If you're a label printer vendor with a JavaScript-reachable printer API and want some help building a sample app like this for your printer, send me an email.&amp;nbsp; I'd be happy to help you out.&lt;/p&gt;
&lt;p&gt;Windows Live Contacts Label Printing web app: &lt;a href="http://www.dannythorpe.com/live/v0.2/printlabels.html"&gt;http://www.dannythorpe.com/live/v0.2/printlabels.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2290300" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Programming/default.aspx">Programming</category></item><item><title>LiveInABox - Windows Live Service APIs and Examples In One Convenient Location</title><link>http://blogs.msdn.com/dthorpe/archive/2007/03/07/liveinabox-windows-live-service-apis-and-examples-in-one-convenient-location.aspx</link><pubDate>Thu, 08 Mar 2007 03:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1832051</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/1832051.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=1832051</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.codeplex.com/liveinabox" mce_href="http://www.codeplex.com/liveinabox"&gt;LiveInABox&lt;/A&gt; is a collection of sample projects that show how to use the many&amp;nbsp;Windows Live Services in your own web apps.&amp;nbsp; It's a 4MB MSI&amp;nbsp;that sets up the sample web apps to run on your localhost IIS server, so you can modify and experiment with them on your local machine. You'll still need to be online so that the web apps can connect to Live services.&lt;/P&gt;
&lt;P&gt;So far, the sample apps include coverage of the Windows Live Search API, Windows Live Local / Virtual Earth mapping API, the Windows Live Contacts Control (surprise!), Messenger Activity APIs, web gadgets and WPF/E - the Avalon-based web runtime engine.&amp;nbsp; We'll be adding more samples over time, so it'd be a good idea to grab the &lt;A href="http://www.codeplex.com/liveinabox/Project/ProjectRss.aspx" mce_href="http://www.codeplex.com/liveinabox/Project/ProjectRss.aspx"&gt;LiveInABox RSS feed&lt;/A&gt; so you can hear about updates automatically.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="FLOAT: right; MARGIN: 0px 15px" src="http://www.codeplex.com/CodePlex/Project/FileDownload.aspx?DownloadId=3878" mce_src="http://www.codeplex.com/CodePlex/Project/FileDownload.aspx?DownloadId=3878"&gt;The &lt;A href="http://www.codeplex.com/liveinabox" mce_href="http://www.codeplex.com/liveinabox"&gt;LiveInABox&lt;/A&gt; project is hosted on &lt;A href="http://www.codeplex.com/" mce_href="http://www.codeplex.com"&gt;CodePlex&lt;/A&gt;, Microsoft's open source project hosting web site.&amp;nbsp; This makes it easy for us to coordinate changes between geographically distributed contributors, publish source code to you, and accept community feedback and code contributions.&lt;/P&gt;
&lt;P&gt;CodePlex is built on &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" mce_href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx"&gt;Visual Studio Team Foundation Server&lt;/A&gt;.&amp;nbsp; Members in a CodePlex project can manage the project and check in and check out changes right in Visual Studio.&lt;/P&gt;
&lt;P&gt;If you have an app or code snippet that shows a cool or unique use of Windows Live Services that you want to&amp;nbsp;&lt;STRIKE&gt;stroke your ego and &lt;/STRIKE&gt;&lt;STRIKE&gt;boost your&amp;nbsp;street cred&lt;/STRIKE&gt; contribute, let us know!&amp;nbsp; You can contact us via the comments on the LiveInABox project homepage, via private messages&amp;nbsp;on the people profile pages, via comments on this blog, or via plain old email.&amp;nbsp; Just don't talk to us face to face.&amp;nbsp; That would be weird.&lt;/P&gt;
&lt;P&gt;If we&amp;nbsp;are unable to incorporate your sample code directly into the LiveInABox project for some&amp;nbsp;corporate reason, we can&amp;nbsp;certainly help you set up your own CodePlex project and cross reference with LiveInABox.&lt;/P&gt;
&lt;P&gt;Now all we have to do is&amp;nbsp;agree on how to pronounce&amp;nbsp;"LiveInABox" (it's &lt;A class="" href="http://delphi.about.com/gi/pages/poll.htm?poll_id=9830559124&amp;amp;linkback=http://delphi.about.com/library/poll/blpoll_pronouncedelphi.htm" target=_blank mce_href="http://delphi.about.com/gi/pages/poll.htm?poll_id=9830559124&amp;amp;linkback=http://delphi.about.com/library/poll/blpoll_pronouncedelphi.htm"&gt;del-fye / del-fee&lt;/A&gt; all over again!).&amp;nbsp;&amp;nbsp;LYV-in-a-box? LIV-in-a-box?&amp;nbsp; livin-abox?&amp;nbsp; luh-VEIN-a-box?&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ah, here we go: &amp;nbsp;&lt;STRONG&gt;livi-NAHB-ox&lt;/STRONG&gt;!&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1832051" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/web/default.aspx">web</category></item><item><title>Contacts Control Now Available in 9 Languages</title><link>http://blogs.msdn.com/dthorpe/archive/2007/02/16/contacts-control-now-available-in-9-languages.aspx</link><pubDate>Sat, 17 Feb 2007 00:00:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1691333</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/1691333.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=1691333</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;We've just rolled out an update to the Windows Live Contacts control, adding language support for German, Dutch, Italian, Spanish, Korean, and Chinese!&amp;nbsp; That's on top of the English, French, and Japanese we hacked together by hand earlier.&amp;nbsp; If my fingers are correct, that's 9 languages covering several of the largest&amp;nbsp;populations of web users&amp;nbsp;worldwide.&lt;/p&gt; &lt;p&gt;You can see them in action in the contacts control list view: &lt;a title="http://dev.live.com/mashups/trycontactscontrol/" href="http://dev.live.com/mashups/trycontactscontrol/"&gt;&lt;u&gt;&lt;font color="#800080"&gt;http://dev.live.com/mashups/trycontactscontrol/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;and tile view: &lt;a title="http://dev.live.com/mashups/trypresencecontrol/" href="http://dev.live.com/mashups/trypresencecontrol/"&gt;&lt;u&gt;&lt;font color="#800080"&gt;http://dev.live.com/mashups/trypresencecontrol/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; Select a language from the dropdown list in the middle of the test page and the control will reload with those strings.&amp;nbsp; You can even switch languages after you've signed in!&lt;/p&gt; &lt;p&gt;You specify the language or regional market you want in the "market" attribute of the contacts control.&amp;nbsp; If you don't care about regions, you can just request by language code ("en"), too.&amp;nbsp; But be careful with that -&amp;nbsp;when&amp;nbsp;we get around to adding support for date fields and region-appropriate address formatting, you'll want to care about the region as well as the language.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Popup blockers resolved&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;We also rearranged the work flow to eliminate the popup blocker hazard when writing contact data to the contacts control using the write API.&amp;nbsp; The user is now prompted to review the submitted data.&amp;nbsp; It's the same review dialog as before, but by opening that window in response to a user click on the control, we avoid setting off any popup blocker landmines.&amp;nbsp; (Popup blockers block OpenWindow() calls made independent of user action.&amp;nbsp; Opening a window in response to a user click will not trigger the popup blockers)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1691333" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item><item><title>Windows Live Contacts Control Shows Online Presence</title><link>http://blogs.msdn.com/dthorpe/archive/2007/01/17/windows-live-contacts-control-shows-online-presence.aspx</link><pubDate>Thu, 18 Jan 2007 04:35:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1486095</guid><dc:creator>dthorpe</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/1486095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=1486095</wfw:commentRss><description>&lt;p&gt;This month's rev of the &lt;a href="http://dev.live.com/contactscontrol/v0.2/default.aspx"&gt;Windows Live Contacts Control&lt;/a&gt; adds a new "tile" view that displays the photos of your Windows Live IM contacts in the control, and makes starting an IM session with them a simple one-click operation.&amp;nbsp; The top part of this screenshot shows the new tile view.&amp;nbsp; The bottom part is another instance of the contacts control in list view mode.&lt;/p&gt; &lt;p&gt;&lt;img alt="Windows Live Contacts Control tile and list views" src="http://dev.live.com/contactscontrol/contactscontrol.jpg"&gt;&lt;/p&gt; &lt;p&gt;The web site that is hosting the contacts control can set a message string and/or URL that will be preloaded into the IM chat window.&amp;nbsp; This makes it very easy to build a web site that encourage visitors to bring their friends to your site - the "swarm" effect that ad-monetized sites crave.&amp;nbsp; Viral swarming, even.&lt;/p&gt; &lt;h3&gt;"Hey, did you see this? ..."&lt;/h3&gt; &lt;p&gt;This new tile view is all about sharing what you're browsing with your friends.&amp;nbsp; The list view continues to be all about managing and using your contact infos.&amp;nbsp; In tile view, the host web page does not receive any info about your contacts.&amp;nbsp; The only thing the host web page can do is preload the message string for an IM session when you click on one of your buddy icons.&amp;nbsp; As you browse around in the pages of a particular web site, the web site can be updating the message string in the contacts control sitting in a sidebar so that whenever you click on your friends face the message string will reflect the page you're looking at.&lt;/p&gt; &lt;h4&gt;Presence&lt;/h4&gt; &lt;p&gt;The little head and shoulders icon to the right of each image tile is the presence indicator, just like the Messenger client.&amp;nbsp; Gray means offline, green means online, and red flashy things on top means their hair's on fire.&lt;/p&gt; &lt;p&gt;Click on the presence indicator icon to start an IM chat session with that person.&amp;nbsp; Note that while the chat window is preloaded with the web site's message string, it has not been sent yet.&amp;nbsp; You have the opportunity to edit the message text or cancel the whole thing before buzzing your buddy.&amp;nbsp; To buzz with impunity, just hit Enter.&lt;/p&gt; &lt;h4&gt;Email&lt;/h4&gt; &lt;p&gt;If they're not online or you can't IM them for various reasons, you can still contact them by email, by clicking on the email icon.&amp;nbsp; The preloaded message for the IM chat becomes the subject of the email message.&amp;nbsp; &lt;/p&gt; &lt;h4&gt;Gleams&lt;/h4&gt; &lt;p&gt;In the whitespace below those two icons there is a third indicator:&amp;nbsp; gleams!&amp;nbsp; Little starburst icons indicate that the person has updated their profile info.&amp;nbsp; Click on the gleam and the person's contact card displaying their recently changed info will popup.&amp;nbsp; Gleams are ephemeral, as demonstrated by their absence in the demo screenshot!&lt;/p&gt; &lt;h3&gt;Beta Caveats&lt;/h3&gt; &lt;p&gt;Requirements and caveats:&amp;nbsp; This beta release works in IE6, IE7, Firefox 1.5 and Firefox 2.0.&amp;nbsp; The contacts that are shown in the "tile" view are only the IM contacts in your address book.&amp;nbsp; If you entered a friend's contact info into your addressbook manually (instead of by IM invitation), then that friend won't show up in the tile view.&amp;nbsp; Obviously, we can only show a photo of your&amp;nbsp;contacts if they&amp;nbsp;have put a photo of themselves in their profile.&amp;nbsp; Those that haven't will display the blue silhouette image.&lt;/p&gt; &lt;p&gt;To display the online state of your contacts, you need to have the Windows Live Messenger client installed on your machine, and have it running, and be logged in.&amp;nbsp; I know, that's a bit much to ask, but it was the fastest way to get this off the ground.&amp;nbsp; We can back-fill the web controls to reduce these requirements over time.&amp;nbsp; &lt;/p&gt; &lt;p&gt;We use the WL Messenger client's ActiveX interface to get the online state information.&amp;nbsp; ActiveX works in IE, but not in Firefox, so no online state info in the Firefox browsers.&lt;/p&gt; &lt;p&gt;Currently, setting the message string can only be done at page load.&amp;nbsp; That will be fixed soon, so that the message can be programmatically updated at any time during the control's lifetime.&lt;/p&gt; &lt;p&gt;Up next:&amp;nbsp; More languages!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1486095" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Programming/default.aspx">Programming</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/web/default.aspx">web</category></item><item><title>Windows Live Contacts Gadget Beta Release</title><link>http://blogs.msdn.com/dthorpe/archive/2006/08/18/706422.aspx</link><pubDate>Sat, 19 Aug 2006 02:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:706422</guid><dc:creator>dthorpe</dc:creator><slash:comments>28</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/706422.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=706422</wfw:commentRss><description>&lt;P&gt;I'm pleased to announced the beta release of a new kind of web component:&amp;nbsp;&amp;nbsp;the &lt;A href="http://dev.live.com/contactsgadget/"&gt;Windows Live Contacts Gadget&lt;/A&gt;!&lt;/P&gt;
&lt;H3&gt;What's it for?&lt;/H3&gt;
&lt;P&gt;The contacts gadget is client-side JavaScript that enables end&amp;nbsp;users to use their Windows Live contacts (from Windows Live Mail/Hotmail and Messenger) with&amp;nbsp;third party (non-Microsoft)&amp;nbsp;web sites, conveniently and securely.&amp;nbsp; The gadget works with any web server, most browsers, and doesn't require reams of license or partnership paperwork with Microsoft.&amp;nbsp; You don't have to assimilate your web server into the Microsoft collective in order to play with Windows Live contact data.&lt;/P&gt;
&lt;H3&gt;What's the benefit for end users?&lt;/H3&gt;Convenience and confidence. If you're shopping for flowers for Grandma online, it's much easier to tell the contacts gadget to give Grandma's postal address to the florist site than to type in her address each time you visit the site. 240 million Hotmail and Messenger users have already amassed some 14 billion contact records. Wouldn't it be nice if you could use&amp;nbsp;your contacts&amp;nbsp;for things beyond just Hotmail and Messenger? 
&lt;P&gt;&lt;/P&gt;
&lt;H3&gt;What's the benefit for web sites?&lt;/H3&gt;
&lt;P&gt;Higher completion of orders (by making address entry easier), low setup cost, and new app scenarios.&amp;nbsp; Wouldn't it be nice if your web apps could tap into those 14 billion contact records?&amp;nbsp; (With end user approval, of course)&lt;/P&gt;
&lt;H3&gt;What's special about it?&lt;/H3&gt;The contact gadget aggregates UI and contact data across multiple domains without requiring any special server support - it's all done on the browser client, in JavaScript.&amp;nbsp; Normally, if you wanted to&amp;nbsp;splice data from another server into your web page, you'd need to implement some sort of logic on your web server to handle relaying the data from the other server to your browser through your domain.&amp;nbsp; For sensitive data you'd also need to work out some agreement with the data provider so that your server could access the data on behalf of the end user.&amp;nbsp; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;If that were easy to do, then everybody would be doing it, right?&amp;nbsp; In truth, it's a royal pain in the neck, and a little scary on the security front.&amp;nbsp; As a result, the web today consists of a forest of isolated silos.&amp;nbsp; Users can move freely between sites, but they can't take their data with them.&amp;nbsp; Each site has its own login system, another username/password for the user to keep track of, another collection of user preferences to configure, and another island of the user's data that can only be used with that site.&lt;/P&gt;
&lt;P&gt;The Windows Live Contacts Gadget is a step in the direction of user data accompanying users as they wander freely between web sites.&amp;nbsp; The data is within easy reach of the user, but not available to a web site until the user selects exactly which data to submit to the web site.&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;How does it do it?&lt;/H3&gt;
&lt;P&gt;It's really quite simple, actually:&amp;nbsp; magic.&amp;nbsp; Or pretty darn close to that in the severely constrained world of JavaScript. Cross domain scripting (&lt;STRONG&gt;XSS&lt;/STRONG&gt;) is generally associated with "exploits" but in the contacts gadget we're using valid DHTML techniques to build secure, user-controlled data sharing.&amp;nbsp; Since one end of the data channel can't see the other end, this general category of XSS has picked up the nickname&amp;nbsp;"&lt;STRONG&gt;wormhole&lt;/STRONG&gt;" in the JS community.&amp;nbsp; It's a fun metaphor and moniker, but if anyone says "Voyager" or "quantum singularity" I'm going to have to hurt somebody!&lt;/P&gt;
&lt;H3&gt;How do I use it?&lt;/H3&gt;
&lt;P&gt;Check out the two sample apps on the&amp;nbsp;&lt;A href="http://dev.live.com/contactsgadget"&gt;Windows Live Contacts Gadget&lt;/A&gt;&amp;nbsp;intro page on dev.live.com, as well as the &lt;A href="http://msdn.microsoft.com/library/en-us/dnlive/html/mashupWLContacts.asp?frame=true&amp;amp;_r=1"&gt;&lt;FONT color=#000000&gt;Building a Mashup with the Windows Live Contacts Gadget and Virtual Earth&lt;/FONT&gt;&lt;/A&gt; article just posted to MSDN.&amp;nbsp; I'll be posting more examples and walkthroughs this weekend.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;H3&gt;It's a Beta&lt;/H3&gt;
&lt;P&gt;Keep in mind that this contacts gadget is a beta release.&amp;nbsp; It has a few rough spots that we're still working out, but shouldn't prevent you from trying it out or even brainstorming what you can do with it.&amp;nbsp; We plan to push out updates early and often as we fine tune the hoop-jumping that goes on behind the scenes.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The API is stable and not expected to change for release.&amp;nbsp; (There's only one function in the API - how hard could it be?)&amp;nbsp; File names and URLs should be stable during beta, but all the URLs will change for the 1.0 production release.&lt;/P&gt;
&lt;P&gt;I'm a little pressed for time at the moment, so I'll wrap up this first post now and do a few more posts this weekend when (hopefully)&amp;nbsp;the deployment drama has subsided a bit.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=706422" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item><item><title>Map Your Mind:  MindMap + VirtualEarth</title><link>http://blogs.msdn.com/dthorpe/archive/2006/07/31/684330.aspx</link><pubDate>Mon, 31 Jul 2006 20:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:684330</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/684330.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=684330</wfw:commentRss><description>&lt;P&gt;Here's an interesting mashup:&amp;nbsp; Michael Scherotter (the MindMap guy) has added &lt;A href="http://blog.mindjet.com/2006/07/trip-planning-with-mindmanager-and-microsoft-virtual-earth/trackback/"&gt;address lookup and route finding to MindManager using Virtual Earth&lt;/A&gt; web services.&amp;nbsp; He says the idea came to him at &lt;A href="http://blogs.msdn.com/dthorpe/archive/2006/07/19/672107.aspx"&gt;Mashup Camp&lt;/A&gt;, and took root in planning a family vacation.&lt;/P&gt;
&lt;P&gt;It's an interesting cross-pollination in part because it's a mashup between domains that normally avoid each other:&amp;nbsp; stand alone applications (&lt;A href="http://www.mindjet.com"&gt;MindJet&lt;/A&gt;'s MindManager) and Windows Live web services (&lt;A href="http://local.live.com"&gt;Virtual Earth&lt;/A&gt;).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;One tablet-toting &lt;A href="http://blogs.zdnet.com/mobile-gadgeteer/wp-trackback.php?p=61"&gt;Matthew Miller&lt;/A&gt; raves about the injection of&amp;nbsp;routing into MindManager over on&amp;nbsp;ZDNet's &lt;A href="http://blogs.zdnet.com/mobile-gadgeteer/wp-trackback.php?p=61"&gt;Mobile Gadgeteer&lt;/A&gt; blog.&lt;/P&gt;
&lt;P&gt;Michael's set it up so that if you draw a&amp;nbsp;relation in MindManager between two elements containing&amp;nbsp;street addresses and select "GetRoute" from the context menu, it requests a route and map from Windows Live's Virtual Earth web service.&lt;/P&gt;
&lt;P&gt;Cool!&lt;/P&gt;
&lt;P&gt;Does your app handle addresses or locations of people/places/things?&amp;nbsp; Visualize them with the &lt;A href="http://dev.live.com/virtualearth/sdk/"&gt;Virtual Earth SDK&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Now if MindManager could tell me where I left my keys...&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=684330" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item><item><title>Mashup Camp 2006 Wrapup</title><link>http://blogs.msdn.com/dthorpe/archive/2006/07/19/mashup-camp-2006-wrapup.aspx</link><pubDate>Thu, 20 Jul 2006 04:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:672107</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/672107.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=672107</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.mashupcamp.com/" mce_href="http://www.mashupcamp.com"&gt;Mashup Camp&lt;/A&gt; brought together some 400 people interested in developing web applications quickly by combining mutiple data sources or services in interesting ways.&amp;nbsp; This being my first "unconference", I found the just-in-time and minimal organization of the camp an interesting study in the balance of forces between anarchy and social grace.&lt;/P&gt;
&lt;P&gt;The camp itself ran Wednesday and Thursday.&amp;nbsp; Mashup University, a more traditionally structured single track of sessions, ran the two days prior to a handful (60?) of camp registrants who signed up for the&amp;nbsp;university as well.&amp;nbsp;&amp;nbsp;Mashup University provided&amp;nbsp;Mashup Camp sponsors with a soapbox&amp;nbsp;(session slot) to tout their wares,&amp;nbsp;as well as much needed funding to cover the costs of the food and venue for the Mashup Camp itself.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As you can see from the &lt;A href="http://wiki.mashupcamp.com/index.php/MashupU" mce_href="http://wiki.mashupcamp.com/index.php/MashupU"&gt;schedule&lt;/A&gt;, the sessions were roughly split between major hitters such as&amp;nbsp;Adobe, AOL, Intel, and Microsoft, up-and-comers such as Plaxo, and a variety of&amp;nbsp;very early&amp;nbsp;startups.&amp;nbsp; At least one of&amp;nbsp;the startups&amp;nbsp;opened their session with "We don't have a business plan; we're hoping you can tell us what you want us to build."&amp;nbsp; Sounds like money looking for a pit.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Google and Yahoo were&amp;nbsp;conspicuously absent on the University days, and very light on the camp days.&amp;nbsp; What's up with that?&amp;nbsp; This isn't just a crufty Microsoftie taking pot shots - several of the attendees wondered aloud why/if Google had abandoned them.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Who Do&amp;nbsp;I Trust?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A recurring theme throughout the mashup event were questions like&amp;nbsp;"What data/service providers can we trust to support the services we're building our business on?" and variations such as "What happens two years from now when they pull the plug on the service?&amp;nbsp; Am I SOL or do I have some sort of recourse for ongoing support?" and even "What if my mashup really does become popular, and profitable?&amp;nbsp; Are they going to pull the plug on me because of load or competitive issues?&amp;nbsp; Or just move into my space?"&lt;/P&gt;
&lt;P&gt;The answer to all of these is simple business:&amp;nbsp; get to know your service provider(s).&amp;nbsp; Look at their track records for support, their policies, and their attitudes.&amp;nbsp; If you're building&amp;nbsp;a business around&amp;nbsp;assets (core services)&amp;nbsp;provided by someone else, common horsesense says you'd better do everything you can to protect your access to those mission-critical assets.&amp;nbsp; Demand service level agreements (SLAs) that include not only network uptime minimums but also termination and transition terms with real monetary teeth if the provider lets you down.&amp;nbsp; Novices may balk at the idea of paying for SLAs&amp;nbsp;for a "free" web service, but in the real world&amp;nbsp;of business the smart money&amp;nbsp;hedges against a greater loss.&amp;nbsp; Spend a little now as insurance against losing a lot later.&amp;nbsp;&amp;nbsp;Heavy&amp;nbsp;SLA penalties for failure to perform also give the provider serious motivation to pay attention to operations and accountability rather than the easy money of selling services ahead of actual capacity.&lt;/P&gt;
&lt;P&gt;One thing is absolutely certain:&amp;nbsp; Do not accept anyone's promises or goodwill.&amp;nbsp; Get it in writing.&amp;nbsp; If you accept anything less than contractual commitments (and their associated costs), then you can't really say you're in business;&amp;nbsp; you can only say that you're busy.&lt;/P&gt;
&lt;P&gt;Because the mix of participants at Mashup Camp was highly tech-entreprenurial, there were&amp;nbsp;a lot of&amp;nbsp;folks there with&amp;nbsp;a lot more&amp;nbsp;technical ideas&amp;nbsp;than business experience.&amp;nbsp; Questions and passionate debates about whether a service can be trusted to be around in 2 or 3 years just don't come up that often at more line-of-business events such as TechEd.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Caught in Passing&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Various folks I bumped into at Mashup Camp:&lt;/P&gt;
&lt;P&gt;Michael Scherotter of &lt;A href="http://www.mindjet.com/" mce_href="http://www.mindjet.com"&gt;MindJet&lt;/A&gt;.&amp;nbsp; "the &lt;A href="http://blog.mindjet.com/2006/07/mashed-up-mindmanager" mce_href="http://blog.mindjet.com/2006/07/mashed-up-mindmanager"&gt;MindMap&lt;/A&gt; guy"&lt;/P&gt;
&lt;P&gt;The &lt;A href="http://dara-abrams.com/" mce_href="http://dara-abrams.com/"&gt;Dara-Abrams&lt;/A&gt; clan (Alec, Benay, Cassie, and Drew) churned up quite&amp;nbsp;a bit of discussion.&amp;nbsp; Very interesting people.&amp;nbsp; Teen Cassie led two Mashup Camp discussion on the topic of addressing the younger generation of web users, but spend most of the time fielding questions from those pesky older folks.&amp;nbsp; Officially, Alec is with Sony, though it might be more accurate to say Sony is with Dara-Abrams.&lt;/P&gt;
&lt;P&gt;Daniel Charles of &lt;A href="http://www.digitalketchup.net/" mce_href="http://www.digitalketchup.net"&gt;Digital Ketchup&lt;/A&gt;. "The Software Condiment Company"&amp;nbsp;&amp;nbsp;Finding a&amp;nbsp;catchy name is half the battle of breaking into the market.&amp;nbsp; Plus, they're in Toronto, Bruce's neck of the woods.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.uiuc.edu/~mjones2" mce_href="http://www.uiuc.edu/~mjones2"&gt;Cameron Jones&lt;/A&gt;, PhD candidate at University of Illinois at Urbana-Champaign.&amp;nbsp; Cameron came to Mashup Camp to study the mashers as much as the mashups they produce.&amp;nbsp; He's digging into questions like what the development patterns are in mashups, and whether those may be beneficial in other collaborative contexts such as academic research.&lt;/P&gt;
&lt;P&gt;Krishnan Iyer asked about Vista application compatibility and whether the app compat info available on Microsoft web sites would be provided in a digestible (RSS) form anytime soon.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://netmesh.info/jernst" mce_href="http://netmesh.info/jernst"&gt;Johannes Ernst&lt;/A&gt; of &lt;A href="http://www.netmesh.us/" mce_href="http://www.netmesh.us"&gt;NetMesh&lt;/A&gt;&amp;nbsp;led the session on managing identity across multiple vendors mentioned in the previous post.&lt;/P&gt;
&lt;P&gt;John Planzer of AOL was also in the identity session.&amp;nbsp; We concurred on a number of points during the discussion, and talked briefly after the session as well.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.traincheck.com/about/" mce_href="http://www.traincheck.com/about/"&gt;Bartosz (Bart)&amp;nbsp;Solowiej&lt;/A&gt; came out to Mashup Camp from Washington DC to demo his &lt;A href="http://www.traincheck.com/" mce_href="http://www.traincheck.com"&gt;traincheck.com&lt;/A&gt; mashup app that provides next train times for a given station via SMS or email.&amp;nbsp; He planned ahead - added the San Francisco BART and CalTrain timetables to his app to make it relevant to the folks here at Mashup Camp.&amp;nbsp; I pointed him toward the Windows Live Messenger bots so that he could handle IM requests as well as SMS.&lt;/P&gt;
&lt;P&gt;Eric Keosky-Smith of &lt;A href="http://www.incendomarketing.com/" mce_href="http://www.incendomarketing.com"&gt;Incendo Marketing&lt;/A&gt;&amp;nbsp;was demoing a small-community portal system whose business model is to address the lack of marketing focused on the middle of the U.S.&amp;nbsp; "We stay away from the coasts and the metropolitain areas, and instead focus on a thousand communities of a thousand consumers."&amp;nbsp; Interesting premise.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Joseph Smarr of &lt;A href="http://www.plaxo.com/" mce_href="http://www.plaxo.com"&gt;Plaxo&lt;/A&gt; was there showing ways to tap into address books across domain boundaries.&amp;nbsp; He found a way to talk to just about everybody at the event, but I think Scherotter still has him beat.&amp;nbsp; Scherotter runs circles around &lt;EM&gt;everbody.&amp;nbsp; &lt;/EM&gt;Even those who saw the MindMap pitch at TechEd only a few weeks earlier!&amp;nbsp; ;&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.strikeiron.com/" mce_href="http://www.strikeiron.com"&gt;StrikeIron&lt;/A&gt; and &lt;A href="http://www.mashery.com/" mce_href="http://www.mashery.com"&gt;Mashery&lt;/A&gt;,&amp;nbsp;both service providers targeting mashup developers,&amp;nbsp;had good representation at the event, though Mashery is still very much in the formative stages at this point.&amp;nbsp; We'll see how that forms up over the next few weeks.&amp;nbsp; StrikeIron's model of aggregating other services under one roof bears some looking into.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.maxdunn.com/" mce_href="http://www.maxdunn.com"&gt;Max Dunn&lt;/A&gt;, self-described as a "retired serial entrepreneur", led a couple of Ruby on Rails discussions.&amp;nbsp; When asked if he answered to "rabid Ruby on Rails advocate" he replied "Well, people say I get excited when I talk about Ruby on Rails!"&amp;nbsp; Yep, that qualifies.&lt;/P&gt;
&lt;P&gt;For Microsoft, we had &lt;A href="http://blogs.msdn.com/klevy/" mce_href="http://blogs.msdn.com/klevy/"&gt;Ken Levy&lt;/A&gt;&amp;nbsp;talking about Windows Live Messenger APIs, &lt;A href="http://connectedinnovation.com/" mce_href="http://connectedinnovation.com/"&gt;Steve Milroy&lt;/A&gt;&amp;nbsp;on everything Virtual Earth, &lt;A href="http://siteexperts.spaces.msn.com/PersonalSpace.aspx" mce_href="http://siteexperts.spaces.msn.com/PersonalSpace.aspx"&gt;Scott Isaacs&lt;/A&gt;&amp;nbsp;on Windows Live gadgets, &lt;A href="http://trevin.spaces.msn.com/" mce_href="http://trevin.spaces.msn.com/"&gt;Trevin Chow&lt;/A&gt;&amp;nbsp;fielding questions on Windows LiveID from the back of the room, and&amp;nbsp;&lt;A href="http://biggs.spaces.msn.com/blog/" mce_href="http://biggs.spaces.msn.com/blog/"&gt;Todd Biggs&lt;/A&gt;&amp;nbsp;doing the sponsor thang.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For the Next Mashup Camp&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Two suggestions for the next Mashup Camp:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;1. Figure out some way for people to submit session topics online, to eliminate the ridiculous paper chase scheduling system.&amp;nbsp; Everybody in attendence had a minimum of two web connected devices on their person.&amp;nbsp; Wiki doesn't handle mass submissions well;&amp;nbsp; find a queue front end and let people submit into the queue, and chew that up into wiki pages on the back end.&lt;/P&gt;
&lt;P&gt;2. Host a panel discussion with a group of teens to talk about web use amongst the younger generation of Internet consumers.&amp;nbsp; Then perhaps Cassie can actually have a discussion with developers about her questions instead being hounded by their questions of her.&amp;nbsp; Cassie's bright, technical, and a teen, but a sample size of one is not a good survey to base mashup business upon.&lt;/P&gt;
&lt;P&gt;Over all, Mashup Camp was a fun, free event for developers.&amp;nbsp; I look forward to the next one!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=672107" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/events/default.aspx">events</category></item><item><title>Mashup Camp: Identity discussion</title><link>http://blogs.msdn.com/dthorpe/archive/2006/07/13/665078.aspx</link><pubDate>Fri, 14 Jul 2006 02:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:665078</guid><dc:creator>dthorpe</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/665078.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=665078</wfw:commentRss><description>&lt;P&gt;This discussion, led by Johannes Ernst, sought to explore ways to improve the user experience in maintaining personal information across multiple web sites.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Multiple logins on multiple sites are more than just a nuisance for the end user -&amp;nbsp;a typical pattern of behavior is that end users tend to use the same login id and same password across multiple sites.&amp;nbsp; This is a significant security risk, since a malicious hacker would only need to compromise one of those sites to potentially gain access to any/all of the end user's private data on the other sites.&amp;nbsp; The sites themselves are not affiliated, so the hacker would some luck or do some digging to find the other sites used by the end user, but that's really beside the point.&amp;nbsp; It would take all of 10 minutes for a script to take the user's login info to&amp;nbsp;"try the latch" of a thousand of the largest bank or other web sites.&lt;/P&gt;
&lt;P&gt;Some of the participants advocated replication of personal profiles between web sites, with user consent, while others (including me) considered this not only impractical but downright scary.&amp;nbsp; Sharing by reference rather than by replication vastly reduces the risk of someone somewhere getting improper access to personal data.&amp;nbsp; However, sharing by reference requires a more sophistocated level of communication than servers just throwing data at each other.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There were also differences of opinion over whether the large identity providers could ever be trusted or accepted by the general populace and therefore open source distributed systems currently being developed are the only acceptable solution.&amp;nbsp; (Umm..&amp;nbsp; Doesn't large mean accepted by lots of users?&amp;nbsp; Oh, nevermind)&amp;nbsp; I'm told this point dominated another discussion into oblivion, but fortunately Johannes Ernst was able to guide the discussion towards productive topics.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=665078" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item><item><title>Mashup Camp Photos</title><link>http://blogs.msdn.com/dthorpe/archive/2006/07/13/664889.aspx</link><pubDate>Thu, 13 Jul 2006 23:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:664889</guid><dc:creator>dthorpe</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/664889.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=664889</wfw:commentRss><description>&lt;P&gt;Mashup Camp is rolling along, purposefully on the edge of giddy chaos.&amp;nbsp; It's an interesting mix of people - independent (for pay) developers, corporate devs, passionate hobbyists, venture capitalists, press, and service providers.&amp;nbsp; Everybody is interested in what everybody else is doing, and which ones look and/or work best.&amp;nbsp; The venture caps wander from discussion to discussion, keeping one ear open for actionable business opportunities and the other open to capture buzz and terminology to help them sift the grain from the chaff back at the office.&lt;/P&gt;
&lt;P&gt;I've posted a few photos out on flickr:&amp;nbsp; &lt;A href="http://www.flickr.com/photos/dannythorpe/tags/mashupcamp2/"&gt;Mashup Camp 2006&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;More commentary to follow.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=664889" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item><item><title>Mashup Camp!  And a Crack of Thunder...</title><link>http://blogs.msdn.com/dthorpe/archive/2006/07/09/661108.aspx</link><pubDate>Mon, 10 Jul 2006 09:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:661108</guid><dc:creator>dthorpe</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dthorpe/comments/661108.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dthorpe/commentrss.aspx?PostID=661108</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.mashupcamp.com/"&gt;&lt;IMG class=imgRight style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://blog.programmableweb.com/wp-content/mashupcamp2.png"&gt;&lt;/A&gt;I'm off to &lt;A href="http://www.mashupcamp.com"&gt;Mashup Camp&lt;/A&gt; this week!&amp;nbsp;&amp;nbsp; Monday and Tuesday are pegged for Mashup University, with&amp;nbsp;a more traditional conference session structure, and the unstructured (or just-in-time structured) mashup camp is on Wednesday.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I'm told that last year's camp was nothing short of a web geek tech orgy, so these next few days should be&amp;nbsp;a lot of plain old fun!&lt;/P&gt;
&lt;P&gt;To add to the fray, I'll be presenting a talk at Mashup U. at&amp;nbsp;10:30am&amp;nbsp;Tuesday about a technique we've been working on here for the past several weeks to pass data across domain boundaries in web apps, all on the client side (no server bounce), and all in JavaScript (no browser extensions).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you're&amp;nbsp;familiar with&amp;nbsp;cross-site scripting (XSS) security&amp;nbsp;barriers in the browser&amp;nbsp;and DOM, your first reaction to this claim&amp;nbsp;should be "&lt;STRONG&gt;You can't do that!&lt;/STRONG&gt;"&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ah, but&amp;nbsp;we can.&amp;nbsp; It's supported by all the browsers, and by the DOM standards.&amp;nbsp; And it's not a security hole.&amp;nbsp; The implementation itself is a pain in the ass, but it can be crammed into a nice tidy API only slightly more complicated than "Send this over there."&lt;/P&gt;
&lt;P&gt;This technique will be instrumental in building next-generation web applications&amp;nbsp;using data drawn from multiple domains.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Instead of using the Internet as a collection of isolated domain silos, wouldn't it be nice if&amp;nbsp;web applications could actually use the Internet &lt;EM&gt;as a web&lt;/EM&gt;?&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We're gonna do what they say can't be done!&amp;nbsp;&amp;nbsp; (yeeha)&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=661108" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dthorpe/archive/tags/Mashups/default.aspx">Mashups</category></item></channel></rss>