<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Karsten Januszewski on 'silverlight'</title><description>Karsten Januszewski blog posts filtered by a specific tag</description><link>/irhetoric/blog/tags/silverlight/default.aspx</link><language>en-us</language><pubDate>Wed, 20 Aug 2008 11:02:57 GMT</pubDate><generator>Oxite</generator><item><title>Interview With Effective UI</title><description>&lt;p&gt;&lt;a href="http://www.effectiveui.com/"&gt;Effective UI&lt;/a&gt; has put together a site called the &lt;a href="http://www.uiresourcecenter.com"&gt;User Interface Resource Center&lt;/a&gt;.&amp;#160; They were kind enough to interview me about WPF, Silverlight, Expression and more.&amp;#160; As they put it:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;In the 2008 whitepaper &amp;#8220;The New Iteration,&amp;#8221; Karsten Januszewski teams up with Jaime Rodriguez to spotlight what Microsoft has dubbed the XAML revolution. Based on interviews with early Windows Presentation (WPF) and Silverlight users, Januszewski drills into emerging Microsoft technologies and explores how the designer/developer collaborative process is undergoing change. But, what's the bigger picture? Why is Microsoft investing so heavily in UI Technologies? What are the business benefits that will drive adoption in a field traditionally dominated by rivals? These questions and others are answered here. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can read &lt;a href="http://www.uiresourcecenter.com/ui-technologies/microsoft-silverlight/articles.html?s=3_3_1"&gt;the full article here&lt;/a&gt; or &lt;a href="http://www.uiresourcecenter.com/ui-technologies/microsoft-silverlight/articles/karsten_interview_edit-1.mp3"&gt;download the interview&lt;/a&gt;.&lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/60/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/60/default.aspx</link><pubDate>Tue, 06 May 2008 16:16:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/60/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/60/trackback/default.aspx</trackback:ping><category>Silverlight</category><category>Silverlight 2</category><category>WPF</category></item><item><title>Patches for Video.Show()</title><description>&lt;p&gt;I &lt;a href="http://www.codeplex.com/videoshow/SourceControl/PatchList.aspx"&gt;uploaded three patches&lt;/a&gt; to Codeplex for Video.Show():&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;1. Creating a dual server configuration to offload video processing    &lt;br /&gt;2. Running the Video Processing Service as an NT Service    &lt;br /&gt;3. Enabling anonymous uploading and commenting&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;All three of these patches were used for the implementation of Video.Show() up at &lt;a href="http://pulse.sxsw.com"&gt;http://pulse.sxsw.com&lt;/a&gt;. You can download them here: &lt;a href="http://www.codeplex.com/videoshow/SourceControl/PatchList.aspx"&gt;http://www.codeplex.com/videoshow/SourceControl/PatchList.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One other lesson learned with Video.Show(): don't forget to add the various codecs that you want to support when you configure the encoding server.&amp;#160; At first, we were perplexed why .mp4 files kept failing and then realized we didn't have QuickTime installed on the box.   &lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/46/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/46/default.aspx</link><pubDate>Wed, 19 Mar 2008 18:29:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/46/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/46/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Jeroen Wijering's Silverlight Player For Audio/Video</title><description>&lt;p&gt;Up at the &lt;a href="http://2008.sxsw.com/music/showcases/date/2008-03-12.html"&gt;SxSW Music Showcasing Artists page&lt;/a&gt;, a person can browse the over 1700 artists that performed. Most of the artists have submitted a track or two that you can listen to right from the site.&amp;#160; Being curious, I right-clicked the audio player used on the site and discovered it was by &lt;a href="http://www.jeroenwijering.com"&gt;Jeroen Wijering&lt;/a&gt;.&amp;#160; I went to his site and discovered that he also has a &lt;a href="http://www.jeroenwijering.com/?item=JW_WMV_Player"&gt;Silverlight player&lt;/a&gt; as well.&amp;#160; It is dubbed as a WMV player, but it certainly could be used to play .mp3s or &lt;a href="http://blogs.msdn.com/silverlight_sdk/archive/2007/05/31/using-playlists-in-silverlight.aspx"&gt;.asx playlist files&lt;/a&gt;. What I like is how easy he makes it for a person to incorporate the player into a website. Nice.&lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/45/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/45/default.aspx</link><pubDate>Mon, 17 Mar 2008 20:22:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/45/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/45/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Pulse: Silverlight 1.0 Mash Up For SxSW</title><description>&lt;p&gt;Announcing &lt;a href="http://pulse.sxsw.com/" target="_blank"&gt;Pulse&lt;/a&gt;, which I worked on in conjunction with &lt;a href="http://www.frogdesign.com/" target="_blank"&gt;Frog Design&lt;/a&gt; for SxSW Interactive.&amp;#160; It is an interactive online community hub for the 2008 SXSW Interactive Festival, keeping users up-to-date on the latest event discussions, videos, and news. The site features premium content from SXSW, including video clips from keynotes and discussion panels, as well as user-generated videos, Flickr images, and social networking content. At the same time, aggregators from Technorati and del.icio.us comb the Internet for relevant information, keeping the site as dynamic as the event it celebrates.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2079/2321679478_d17df0847c.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;Of course, couldn't help but to do some ego twittering:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3179/2321683058_7432944507.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;Speaking of ego twittering, I saw a fair amount of ego twittering at MIX08 with Flotzam too:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3100/2312175735_8b2142c75f.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;And speaking of Twitter, &lt;a href="http://www.twitter.com/irhetoric" target="_blank"&gt;I'm doing a lot of twittering&lt;/a&gt; here at SxSW.&amp;#160; Twitter really makes sense at conferences.&amp;#160; So, if you are down at SxSW and twittering, let me know: I'm looking for people to follow who are at the conference.&lt;/p&gt;  &lt;p&gt;Back to Pulse: Hat's off to the Frog guys for writing a really cool website that is an example of doing AJAX programming with Silverlight.&amp;#160; For the video upload and display, we used &lt;a href="http://www.codeplex.com/videoshow" target="_blank"&gt;Video.Show&lt;/a&gt;. We are actually running Video.Show in a multi server configuration, which I had to tweak some code to get working.&amp;#160; I also turned the video processing application, which was a console app, into an actual NT Service that runs on the encoding server.&amp;#160; Another thing I did to the code was remove the requirement to log in for uploading videos or commenting on videos.&amp;#160; Now you can do all that anonymously.&amp;#160; I will add all of these changes to the codeplex project, although probably not until after SxSW. &lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/43/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/43/default.aspx</link><pubDate>Sun, 09 Mar 2008 18:20:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/43/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/43/trackback/default.aspx</trackback:ping><category>Silverlight</category><category>SxSW</category></item><item><title>Tweaking The Expression Encoder Templates To Turn Off AutoPlay</title><description>&lt;p&gt;James Clarke turned me on to the fact that &lt;a href="http://www.clarkezone.net/Default.aspx?channelid=4ac53cd8-17e3-4397-8de5-bbcabc522cf0" target="_blank"&gt;modifying the Expression Encoder templates&lt;/a&gt; is trivial.&amp;#160; I tweaked the AudioGrey template to turn off autoplay and changed the default volume.&amp;#160; Of course, one could even take this further and &lt;em&gt;really &lt;/em&gt;modify the templates, which Tim Heuer has &lt;a href="http://timheuer.com/blog/archive/2007/09/11/expression-encoder-custom-templates.aspx" target="_blank"&gt;a great post on&lt;/a&gt;.&amp;#160; So, this makes for a streamlined workflow for getting audio (or video) onto your blog.&amp;#160; The pieces of the puzzle: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/expression/products/download.aspx?key=encoder"&gt;Expression Encoder&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=382a3306-b212-4df3-af86-5d48be550b94&amp;amp;displaylang=en"&gt;Silverlight Streaming Publishing Plug-in&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.live.com"&gt;Silverlight Streaming Account&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://get.live.com/writer/overview"&gt;Windows Live Writer&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://gallery.live.com/liveitemdetail.aspx?li=9f952b71-9883-4937-9f28-1e58002bb2ce&amp;amp;pl=8&amp;amp;bt=9"&gt;Silverlight Streaming Live Writer Plug-in&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The net result: here's the audio player playing my composition &lt;strong&gt;hill.climb&lt;/strong&gt; embedded in this blog post:&lt;/p&gt;  &lt;div style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; width: 320px; padding-top: 0px; height: 50px"&gt;&lt;iframe style="width: 320px; height: 50px" src="http://silverlight.services.live.com/invoke/16371/hillclimb/iframe.html" frameborder="0" width="320" scrolling="no" height="50"&gt;&lt;/iframe&gt;&lt;/div&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/30/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/30/default.aspx</link><pubDate>Tue, 11 Dec 2007 18:14:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/30/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/30/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Silverlight Streaming for Audio Files</title><description>&lt;p&gt;So, I've been playing with Ableton Live&amp;nbsp;recently as my digital audio workstation.&amp;nbsp; It is great software -- fantastic UI and awesome features as far as integration audio and midi.&amp;nbsp;There's much power in this tool.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.maketunes.com/system/files/images/ableton_live.preview.jpg" alt="" /&gt; &lt;/p&gt; &lt;p&gt;I recently composed a piece called "Hill Climb" and wanted to make it available to the world via Silverlight.&amp;nbsp; I used the audio template from Expression Encoder and have the whole deal hosted on Silverlight Streaming.&amp;nbsp; I would have used the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=382a3306-b212-4df3-af86-5d48be550b94&amp;amp;displaylang=en"&gt;Silverlight Streaming Publishing Plug-in&lt;/a&gt;, but the problem I discovered is that the templates generated by Expression Encoder always auto-play the media upon page load. There's no way to toggle that from the UI, which means I had to go tweak the auto-play parameter in the generated StartPlayer.js file.&amp;nbsp; So, I couldn't use the plug-in, but rather zipped up the files and posted them to Silverlight streaming myself, adding the player to my blog on the right column.&lt;/p&gt; &lt;p&gt;If you'd like to see the workflow including the plug-in, check out this &lt;a href="http://blogs.msdn.com/silverlightmedia/archive/2007/11/30/video-silverlight-streaming-publishing-plug-in-for-expression-encoder.aspx"&gt;post&lt;/a&gt;, which has a good tutorial.&amp;nbsp; &lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/29/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/29/default.aspx</link><pubDate>Mon, 10 Dec 2007 23:34:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/29/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>5</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/29/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Flotzam Web Now Happy In Firefox</title><description>Well, I resolved one bug at least and determined why &lt;a href="http://www.rhizohm.net/apps/flotzamweb" target="_blank"&gt;Flotzam Web&lt;/a&gt; wasn't happy in Firefox: I didn't explicitly give the &lt;strong&gt;&amp;lt;div&amp;gt;&lt;/strong&gt;  &lt;div&gt;tag which contained Silverlight a height or width. IE seems to be okay with this, but Firefox is decidedly not. So, by giving the    &lt;div&gt;a classname and then adding a style for that class with a width and height, Firefox is happy. &lt;/div&gt;    &lt;div&gt;&amp;#xA0;&lt;/div&gt;    &lt;div&gt;Now on to my other bugs...&lt;/div&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/18/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/18/default.aspx</link><pubDate>Thu, 15 Nov 2007 05:27:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/18/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/18/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Flotzam Web: Databinding and Templates in Silverlight 1.0</title><description>&lt;p&gt;I've been playing with porting &lt;a href="http://flotzam.com/" target="_blank"&gt;Flotzam&lt;/a&gt; to Silverlight 1.0 and have an intial prototype working.&amp;#xA0; (Emphasis on prototype -- read, not ready for primetime yet.&amp;#xA0; If anyone wants to help fix some of the bugs listed below let me know.) I figured I'd share it out nonetheless.&amp;#xA0; You can see &lt;a href="http://rhizohm.net/apps/flotzamweb/"&gt;it running here&lt;/a&gt; and &lt;a href="http://rhizohm.net/apps/flotzamweb/flotzamweb.zip" target="_blank"&gt;download the source&lt;/a&gt; here.&amp;#xA0; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://rhizohm.net/apps/flotzamweb/" target="_blank" border="0"&gt;&lt;img id="id" src="http://www.flotzam.com/images/flotzam.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I'm pretty excited by the prospect of the architecture I've put together.&amp;#xA0; The crux is that I've created a serverside templating infrastructure that's compliant with WPF's XML Databinding syntax. My goals were to reuse as much of the WPF model as possbile, but on the server. &lt;/p&gt;  &lt;p&gt;I initially went down a path of actually instantiating WPF on the server, but pulled back from that for a couple reasons.&amp;#xA0; First, and most importantly, WPF wants to be in a Single Threaded Apartment (STA).&amp;#xA0; One can force this to happen by adding the ASPCOMPAT directive to your .aspx pages, but the scalability implications are severe.&amp;#xA0; These scalability problems might be avoided by doing some multithreading, which I started to explore, but then ran out of energy. I also had some trickiness in getting the &lt;strong&gt;ContentPresenter&lt;/strong&gt; to behave, which sidelined that approach as well.&amp;#xA0; (You can see my initial explorations of the architecture in the xaml.aspx file.)&amp;#xA0; &lt;/p&gt;  &lt;p&gt;I then went down a different path, inspired by &lt;a href="http://blogs.msdn.com/webnext/"&gt;Laurence Moroney&lt;/a&gt; and &lt;a href="http://www.visitmix.com/People/allenjs/Default.aspx"&gt;Joshua Allen&lt;/a&gt;. Laurence started me off thinking about templating based on his &lt;a href="http://msdn2.microsoft.com/en-us/library/bb410109.aspx"&gt;MSDN sample&lt;/a&gt; that does some clever things with server side generation of XAML based on an RSS feed.&amp;#xA0; I liked where Laurence was going as did Joshua, who took this idea to the next level in a prototype he wrote that uses &lt;strong&gt;XMLReader&lt;/strong&gt; and &lt;strong&gt;XMLWriter&lt;/strong&gt; for doing templating. (For some reason, he never blogged about this but he hooked me up with his code, nonetheless.&amp;#xA0; Being an ex-Web data PM, he knows how to sling infosets around, which came in real handy.)&amp;#xA0; I took his code, which is a more generic templating model as opposed to Laurence's custom sample and extended it to support the WPF databinding syntax (aka {Binding XPath=/foo}), as opposed to the custom databinding syntax Joshua had come up with.&amp;#xA0; &lt;/p&gt;  &lt;p&gt;Note on the code Joshua wrote: he has this class called &lt;strong&gt;MiniCache&lt;/strong&gt;, which he uses to store elements and attribute values in a dictionary, because he was working under the constraint of SL 1.1 not having an XMLDocument or XPathNavigator.&amp;#xA0; However, as I'm running this on the server, I don't have this constraint.&amp;#xA0; A big TODO for this code is to replace his dictionary implementation with one that uses XMLNode and XPath.&lt;/p&gt;  &lt;p&gt;Using Joshua's code with a few modifications, I was able to reuse my WPF datatemplate within Silverlight 1.0!&lt;/p&gt;  &lt;p&gt;Here's the basic architecture:&lt;/p&gt;  &lt;p&gt;The action begins in my global.asax, which populates the ASP.NET Application object with an initial set of content.&amp;#xA0; &lt;font face="Trebuchet MS"&gt;In datamodel.Fetch(), I grab the latest Twitter timeline and use it to generate my flotzams.&lt;/font&gt;&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#x27;Courier New&amp;#x27;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Fetch() { WebClient client = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WebClient(); Stream data = client.OpenRead(&lt;span style="color: #006080"&gt;&amp;quot;http://www.twitter.com/statuses/public_timeline.xml&amp;quot;&lt;/span&gt;); XmlReader twitterItems = XmlReader.Create(data); &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; idx = 0; &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (twitterItems.ReadToFollowing(&lt;span style="color: #006080"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;)) { MiniCache twitterItem = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MiniCache(twitterItems.ReadSubtree()); XmlReader template = XmlReader.Create(server.MapPath(&lt;span style="color: #006080"&gt;&amp;quot;temp4.xaml&amp;quot;&lt;/span&gt;)); &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; XamlContent = twitterItem.ProcessTemplate(template, idx.ToString()); &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; == application.Get(idx.ToString())) application.Add(idx.ToString(), XamlContent); &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; { application.Lock(); application[idx.ToString()] = XamlContent; application.UnLock(); } template.Close(); idx++; } twitterItems.Close(); client.Dispose(); }&lt;/pre&gt;
&lt;/div&gt;

&lt;pre class="code"&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The code in &lt;strong&gt;Fetch()&lt;/strong&gt; is pretty darned straight forward, which is what I like about the architecture.&amp;#xA0; I'm basically just walking the nodes from the Twitter feed, merging them with my template (temp4.xaml), which came from Blend. Once I have the resulting XAML, I stick it in the &lt;strong&gt;Application &lt;/strong&gt;object. &lt;/p&gt;

&lt;p&gt;I'm not going to go into the code of the MiniCache, because the idea is that is encapsulated sufficiently so as to be black box.&amp;#xA0; However, I did do some things that customized it. In particular, I created my own syntax to pull of the equivalent of databinding functions.&amp;#xA0; You can dig into the code to see what I did.&lt;/p&gt;

&lt;p&gt;With my application object filled with generated XAML content, I'm now ready to display it.&amp;#xA0; I do this from default.aspx, which instantiates Silverlight.&amp;#xA0; In the javascript &lt;strong&gt;PageLoad &lt;/strong&gt;function I start up a timer, which makes an AJAX GET call to default2.aspx, which is where my dynamic XAML is served from:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#x27;Courier New&amp;#x27;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; displayTimer(){ &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; webRequest = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Sys.Net.WebRequest(); webRequest.set_url(&lt;span style="color: #006080"&gt;&amp;quot;default2.aspx?tweet=&amp;quot;&lt;/span&gt; + i); webRequest.set_httpVerb(&lt;span style="color: #006080"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;); webRequest.add_completed(completedHandler); webRequest.invoke(); i = i + 1; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (i == 19) i = 0; setTimeout(&lt;span style="color: #006080"&gt;&amp;quot;displayTimer()&amp;quot;&lt;/span&gt;,4000) } &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; completedHandler(result, eventargs) { &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (result.get_responseAvailable()) { &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; host = document.getElementById(&lt;span style="color: #006080"&gt;&amp;quot;SilverlightPlugIn&amp;quot;&lt;/span&gt;); &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; xaml = host.content.createFromXAML(result.get_responseData(),&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;); &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; rootElement = host.content.findName(&lt;span style="color: #006080"&gt;&amp;quot;rootElement&amp;quot;&lt;/span&gt;); rootElement.children.add(xaml); } }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;When the call completes, I use the createFromXAML method to create my Canvas object, which is then inserted at the root.&amp;#xA0; Note how I pass true to the createFromXAML method so I don't have naming collisions. &lt;/p&gt;

&lt;p&gt;The code is default2.aspx is pretty darned straight forward.&amp;#xA0; It just picks out the querystring and returns the XAML, extracting it from the application object.&amp;#xA0; And there you have it: a databinding infrastructure for Silverlight 1.0 based on WPF.&lt;/p&gt;

&lt;p&gt;The bugs I'm still reckoning with:&lt;/p&gt;

&lt;p&gt;--Firefox issues. It was working in Firefox and then at some point it broke.&amp;#xA0; It seems to hang on fetching the images for the Twitter avatars from &lt;a href="http://s3.amazonaws.com"&gt;http://s3.amazonaws.com&lt;/a&gt;.&amp;#xA0; Not sure what's going on there.&amp;#xA0; I think Firefox stopped working when I added some error handling on image retrieval.&lt;/p&gt;

&lt;p&gt;--Refresh issues.&amp;#xA0; I can't figure out why my cache is not being updated.&amp;#xA0; I try to update it after displaying all 20 twitters, but it seems to hang to the original 20.&lt;/p&gt;

&lt;p&gt;--TranslateTransform and RenderTransformOrigin.&amp;#xA0; I'm randomly adding these values to the Canvas, but they don't seem to be getting acknowledged by Silverlight, thus flotzams always coming in from the right to left and often landing in the same place.&lt;/p&gt;

&lt;p&gt;The things I'd like to do:&lt;/p&gt;

&lt;p&gt;--Pass credentials so that the data is personalized&lt;/p&gt;

&lt;p&gt;--Add Digg, Flickr, Facebook, RSS&lt;/p&gt;

&lt;p&gt;--Improve the MiniCache&lt;/p&gt;

&lt;p&gt;--Show how Blend fits into this workflow &lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/17/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/17/default.aspx</link><pubDate>Fri, 09 Nov 2007 22:39:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/17/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/17/trackback/default.aspx</trackback:ping><category>Silverlight</category><category>WPF</category></item><item><title>Triangulating Moonlight, Yochai Benkler and Web 2.0</title><description>&lt;p&gt;With the &lt;a href="http://www.microsoft.com/presspass/press/2007/sep07/09-04SilverlightPR.mspx"&gt;recent announcement&lt;/a&gt; of Silverlight being released to the web and the corollary announcement that Microsoft will work with Novell to create a player, named&amp;nbsp;Moonlight, for running Silverlight on Linux, there's been quite a bit of commentary, some of which can be seen on &lt;a href="http://digg.com/microsoft/Silverlight_1_0_Launched_With_Linux_Support/"&gt;Digg&lt;/a&gt; and &lt;a href="http://developers.slashdot.org/article.pl?sid=07/09/05/1442254"&gt;SlashDot&lt;/a&gt;.&amp;nbsp; There are many different lenses to view this announcement with.&amp;nbsp; For me, the announcement dovetails with a lot of thinking I've been doing about the Web 2.0 phenomenon and, in particular, its articulation by Yochai Benkler in &lt;a href="http://www.benkler.org/wealth_of_networks/index.php?title=Download_PDFs_of_the_book"&gt;The Wealth of Networks&lt;/a&gt;.&amp;nbsp; I'm about halfway through the book (at over 500 pages it is dense).&amp;nbsp; As Bruce Sterling commented at SxSW last year, it is the Das Capital of Web 2.0 -- the allusion to Adam Smith in the title shouldn't be discounted either.&amp;nbsp; Invisible hand of Web 2.0&amp;nbsp;anyone?&lt;/p&gt; &lt;p&gt;I love Benkler's theorization of commons-based peer production.&amp;nbsp; He quite elegantly unpacks the "new modes of production" that are governing the transformation of information and entertainment.&amp;nbsp; But sometimes I feel his position isn't nuanced enough and becomes either too celebratory or too barbed.&amp;nbsp; And Microsoft seems to always fall into the "bad guy" camp, where, for example, IBM doesn't?&amp;nbsp;&amp;nbsp;&amp;nbsp; I don't feel that he gives Microsoft credence in being a positive force toward the "transformation of markets and freedom."&amp;nbsp; Partly, this is because he wants to use open source as his shining example of how commons-based peer production works and, rhetorically, he must position Microsoft as the "other way". He never teases this out fully, a shame, and his discussion of technology disrupts his more interesting theorization on the cultural and economic consequences.&amp;nbsp; In discrediting Microsoft, he ends up putting Microsoft&amp;nbsp;down and not recognizing that, in fact, &lt;em&gt;Microsoft is not antithetical&amp;nbsp;to commons-based peer production&lt;/em&gt;.&amp;nbsp; He falls into the very common trap of not acknowledging Microsoft&amp;nbsp;as a platform company.&amp;nbsp;&amp;nbsp;The infrastructure required for commons-based peer production&amp;nbsp;is made available by Microsoft, often for free,&amp;nbsp;whether it is in the form of an operating system, a development language, a database, a web server&amp;nbsp;&amp;nbsp;or a blogging engine. The list could go on and on here: Popfly, Codeplex (not to mention the thousands of Windows and .NET projects on SourceForge), Windows Live and more.&lt;/p&gt; &lt;p&gt;And this is where Moonlight comes to mind: to me it is yet another example of how Microsoft is in fact committed to the explosion of the Web 2.0 phenomenon.&amp;nbsp; Just as Microsoft embraced web services and interoperability for improved heterogeneity in the back end, Silverlight and Moonlight are acts of embracing interoperability and heterogeneity on the front end.&amp;nbsp; To bring it back to Benkler, I can create my videos using Microsoft tooling and know that they will be viewable on a Mac, a Windows box or a Linux box in the browser of my choice. &lt;/p&gt;</description><comments>http://www.rhizohm.net//irhetoric/blog/13/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/13/default.aspx</link><pubDate>Wed, 12 Sep 2007 23:16:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/13/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/13/trackback/default.aspx</trackback:ping><category>Moonlight</category><category>Silverlight</category><category>Web 2.0</category></item><item><title>Irhetoric Enters the Rhizohm</title><description>Welcome</description><comments>http://www.rhizohm.net//irhetoric/blog/1/default.aspx</comments><link>http://www.rhizohm.net//irhetoric/blog/1/default.aspx</link><pubDate>Mon, 06 Aug 2007 04:00:00 GMT</pubDate><guid isPermaLink="true">http://www.rhizohm.net//irhetoric/blog/1/default.aspx</guid><dc:creator>Karsten Januszewski</dc:creator><slash:comments>4</slash:comments><trackback:ping>http://www.rhizohm.net//irhetoric/blog/1/trackback/default.aspx</trackback:ping><category>Silverlight</category></item></channel></rss>