<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:ng="http://newsgator.com/schema/extensions" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>My Clippings on NewsGator Online</title><link>http://www.newsgator.com</link><description>My Clippings on NewsGator Online</description><lastBuildDate>Tue, 29 Sep 2009 15:47:45 GMT</lastBuildDate><ttl>60</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/hsorbo/shared" type="application/rss+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Subpoenaed in Apple lawsuit</title><link>http://nanocr.eu/2009/08/11/subpoenaed-in-apple-lawsuit/</link><description>&lt;p&gt;I&amp;#8217;ve been &lt;a href="http://www.scribd.com/document_downloads/18466587?extension=pdf&amp;#038;secret_password="&gt;subpoenaed&lt;/a&gt; in the ongoing anti-trust lawsuit against Apple. &lt;br/&gt;&lt;br /&gt;
&lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_548631897644463" name="doc_548631897644463" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle"	height="500" width="100%" &gt;&lt;param name="movie"	value="http://d.scribd.com/ScribdViewer.swf?document_id=18466587&amp;#038;access_key=key-1p5ul7t325wjhkbybz3c&amp;#038;page=1&amp;#038;version=1&amp;#038;viewMode="&gt;&lt;param name="quality" value="high"&gt;&lt;param name="play" value="true"&gt;&lt;param name="loop" value="true"&gt;&lt;param name="scale" value="showall"&gt;&lt;param name="wmode" value="opaque"&gt;&lt;param name="devicefont" value="false"&gt;&lt;param name="bgcolor" value="#ffffff"&gt;&lt;param name="menu" value="true"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="salign" value=""&gt;&lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=18466587&amp;#038;access_key=key-1p5ul7t325wjhkbybz3c&amp;#038;page=1&amp;#038;version=1&amp;#038;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_548631897644463_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
I suggest the plaintiffs lighten up and try &lt;a href="http://www.doubletwist.com/cure"&gt;The Cure for iPhone Envy&lt;/a&gt;:&lt;br/&gt;&lt;br /&gt;
&lt;a href="http://www.doubletwist.com/cure"&gt;&lt;img border="0" alt="the Cure for iPhone Envy" src="http://farm4.static.flickr.com/3326/3617812595_05cd00a113.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Tue, 11 Aug 2009 23:52:45 GMT</pubDate><guid isPermaLink="false">http://nanocr.eu/?p=286</guid><comments>http://nanocr.eu/2009/08/11/subpoenaed-in-apple-lawsuit/#comments</comments><author>JonLech</author><source url="http://nanocrew.net/?feed=rss2">nanocr.eu</source><ng:postId>10314567262</ng:postId><ng:feedId>4391</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Process One: PubSub is taking off</title><link>http://www.process-one.net/en/blogs/article/pubsub_is_taking_off/</link><description>&lt;p&gt;PubSub, the short name for "Publish-Subscribe", is an XMPP technology, bringing instant or "real-time" publication, notification and distribution of content to the internet.&lt;/p&gt; &lt;p&gt;The PubSub technology is quite exhaustively described in this specification: &lt;a href="http://xmpp.org/extensions/xep-0060.html"&gt;XEP-0060: Publish-Subscribe&amp;thinsp;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PubSub enables a user or machine to publish information in a tree-organized structure, much like a web server would do with static content (folders and HTML files). PubSub instantly sends notifications (only meta-data) or the full content (which we name "payload") to all the subscribers. XMPP users (machines or humans) can subscribe to these nodes, and receive instant updates.&lt;/p&gt;
&lt;p&gt;This general broadcast mechanism is an instant Push technology, enabling a PubSub server to send only what is necessary, as soon as it has updates.&lt;/p&gt;
&lt;p&gt;Push avoids the (too) widely-used polling technique and its drawbacks: updates lag and server overload. The most known example is RSS: myriads of RSS clients constantly poll an RSS feed, most of the time for nothing, because there is no update.&lt;/p&gt;
&lt;p&gt;The first draft of the PubSub specification has been published a few years ago (2003), and has been widely peer reviewed since. Although we have had few implementations in the recent years, we now have seen real-world examples of this technology silently appear on the internet.&lt;/p&gt;
&lt;p&gt;Here is a short and non-exhaustive review:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress: &lt;a href="http://wordpress.com/"&gt;WordPress.com&amp;thinsp;&lt;/a&gt; is a massive blog hosting website, based on the free/opensource blog engine (&lt;a href="http://wordpress.org/"&gt;WordPress.org&lt;/a&gt;). WordPress.com is using PubSub at &lt;a&gt;im.wordpress.com&lt;/a&gt;&amp;thinsp;, each blog and comment is instantly published on PubSub, and these contents instantly sent to the subscribers.&lt;/li&gt;
&lt;li&gt;BBC: &lt;a href="http://www.bbc.co.uk/"&gt;BBC&lt;/a&gt;&amp;thinsp; is the well known british TV and radio broadcasting company, respected for the quality of their programs. BBC is broadcasting the TV and radio programs to all the users by using PubSub.&lt;/li&gt;
&lt;li&gt;Apple: &lt;a href="http://www.apple.com/"&gt;Apple&lt;/a&gt;, the computer, phone and software maker, has put up an infrastructure and API that enables applications (E-mail, chat, etc.) to send &lt;a href="http://developer.apple.com/iphone/program/sdk/apns.html"&gt;notifications&lt;/a&gt; to iPhones.&lt;/li&gt;
&lt;li&gt;Seesmic: &lt;a href="http://seesmic.com/"&gt;Seesmic&lt;/a&gt;&amp;thinsp; is a video-based social network. They use PubSub as a real-time message notifier service, for users and peers.&lt;/li&gt;
&lt;li&gt;Yahoo!: &lt;a href="http://fireeagle.yahoo.net/"&gt;FireEagle&lt;/a&gt;&amp;thinsp; is a Yahoo! service for user geolocation sharing, using also OAuth. PubSub is here used to broadcast geolocation to users and third party applications.&lt;/li&gt;
&lt;li&gt;Notifixious: &lt;a href="http://superfeedr.com/"&gt;Superfeedr&lt;/a&gt;&amp;thinsp; is a real-time bloggosphere notifications service. Superfeedr is a real-time feed fetching and parsing infrastructure. PubSub is the core or realt-ime content distribution.&lt;/li&gt;
&lt;li&gt;Identica: the opensource web site for federated microblogging, based on the &lt;a href="http://openmicroblogging.org/"&gt;OpenMicroBlogging&lt;/a&gt;&amp;thinsp;specification, is using &lt;a href="http://laconi.ca/"&gt;Laconica&lt;/a&gt;. PubSub is used here as the message broker, along with ATOM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;WordPress, BBC, SuperFeedr are all using ejabberd's mod_pubsub, which will gain &lt;a href="http://www.process-one.net/en/blogs/article/pubsub_upcoming_improvements_in_ejabberd_2.1/"&gt;improvements&lt;/a&gt;&amp;thinsp; on the soon-to-be-released ejabberd 2.1.&lt;/p&gt;
&lt;p&gt;The PubSub technology is arising, slowly, but surely, as businesses understand and leverage their core activity with PubSub's intrinsic advantages.&lt;/p&gt;
&lt;p&gt;Expect more innovative projects to come to life in the coming months... Especially from ProcessOne! Stay tuned.&lt;/p&gt;</description><pubDate>Fri, 07 Aug 2009 16:19:50 GMT</pubDate><guid isPermaLink="false">tag:process-one.net,2009:en/blogs/3.1536</guid><source url="http://www.planet-im.com/rss20.xml">Planet IM</source><ng:postId>10316490579</ng:postId><ng:feedId>39771</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Team Tenenbaum to fight on for those "RIAA has screwed over"</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/xIPlTHpZOsI/charlie-nesson-still-fights-for-those-riaa-has-screwed-over.ars</link><description>&lt;a href="http://arstechnica.com/tech-policy/news/2009/08/charlie-nesson-still-fights-for-those-riaa-has-screwed-over.ars?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss"&gt;
                &lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/06/blind_justice_ars-thumb-230x130-6449-f.jpg" alt="companion photo for Team Tenenbaum to fight on for those &amp;quot;RIAA has screwed over&amp;quot;" /&gt;
            &lt;/a&gt;
          
        
    
    &lt;p&gt;Harvard Law professor Charles Nesson can only shake his head over the &lt;a href="http://arstechnica.com/tech-policy/news/2009/07/o-tenenbaum-riaa-wins-675000-or-22500-per-song.ars"&gt;outcome of the Joel Tenenbaum trial&lt;/a&gt;, a case in which his young client was hit with a $675,000 damage award for uploading and downloading 30 songs. "How can a jury of common sense people be brought to a conclusion that is clearly divorced from its common sense base?" he wants to know.&lt;/p&gt; 

&lt;p&gt;"The law here is off base," he added, the verdict functioning as a &lt;em&gt;reductio ad absurdum&lt;/em&gt; that highlights the problem with applying statutory damages to noncommercial copyright infringers.&lt;/p&gt;

    
       
           &lt;a href="http://arstechnica.com/tech-policy/news/2009/08/charlie-nesson-still-fights-for-those-riaa-has-screwed-over.ars?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss" title="Click here to continue reading this article"&gt;&lt;img src="http://static.arstechnica.com/mt-static/plugins/ArsTheme/images/read-more.jpg" alt="Read the rest of this article..."&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/jms1vE30Z03IXXY-BQhndl-LB3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/jms1vE30Z03IXXY-BQhndl-LB3g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/jms1vE30Z03IXXY-BQhndl-LB3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/jms1vE30Z03IXXY-BQhndl-LB3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=xIPlTHpZOsI:B6irbRCFlnw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=xIPlTHpZOsI:B6irbRCFlnw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=xIPlTHpZOsI:B6irbRCFlnw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=xIPlTHpZOsI:B6irbRCFlnw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=xIPlTHpZOsI:B6irbRCFlnw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=xIPlTHpZOsI:B6irbRCFlnw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/arstechnica/index/~4/xIPlTHpZOsI" height="1" width="1"/&gt;</description><pubDate>Mon, 10 Aug 2009 03:45:00 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/tech-policy/news/2009/08/charlie-nesson-still-fights-for-those-riaa-has-screwed-over.ars</guid><author>nate@arstechnica.com (Nate Anderson)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>10302734775</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Repair Your Electronics</title><link>http://www.instructables.com/id/Repair-Your-Electronics/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FNZ/CSK1/FY5WRJTG/FNZCSK1FY5WRJTG.SMALL.jpg" align="left" hspace="10"&gt;Capacitors and cold or loose solder joints are the most common failure.&lt;br/&gt;
&lt;br/&gt;
Caution&lt;br/&gt;
&lt;br/&gt;
Beware of high voltage.  Capacitors store energy.  They store energy even when the power is removed.  Always remove your device from power and discharge capacitors using a resistance probe.  Proceed at your own risk!&lt;br/&gt;
&lt;br/&gt;
...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/cashew76/"&gt;cashew76&lt;/a&gt;</description><pubDate>Sun, 09 Aug 2009 22:48:31 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/10301833438</guid><author>cashew76</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>10301833438</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>A protective case for the Atmel AVR Dragon</title><link>http://www.instructables.com/id/A-protective-case-for-the-Atmel-AVR-Dragon/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FF6/1BXH/FY3KSN5S/FF61BXHFY3KSN5S.SMALL.jpg" align="left" hspace="10"&gt;This instructable will show you how to easily modify a readily available plastic case to hold and protect your AVR Dragon PCB.&lt;br/&gt;
&lt;br/&gt;
Atmel promotes their AVR Dragon as a low cost development product tool for use with their AVR microcrontollers. While the product does come in a fancy red cardboard box, un...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/bperrybap/"&gt;bperrybap&lt;/a&gt;</description><pubDate>Mon, 10 Aug 2009 01:29:13 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/10302212706</guid><author>bperrybap</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>10302212706</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Miguel de Icaza: Bridging C# and C++ on Unix</title><link>http://tirania.org/blog/archive/2009/Aug-03-2.html</link><description>
	&lt;p&gt;Unlike Microsoft's .NET, Mono lacks a C++ compiler that can
	generate CIL code or mixed CIL/native code.   This makes it
	harder for C++ codebases to integrate with C# code.

	&lt;p&gt;One solution to the problem is to write C wrappers for
	every C++ method and then use P/Invoke to call into each
	wrapper.   Dealing with virtual methods then becomes
	challenging.

	&lt;p&gt;&lt;a href="http://blog.worldofcoding.com"&gt;Andreia Gaita&lt;/a&gt;
	explains
	on &lt;a href="http://blog.worldofcoding.com/2009/08/binding-c-apis.html"&gt;Binding
	C++ APIs&lt;/a&gt; a technique that can be used to bridge the C++
	and C# worlds using Mono's built-in support for COM objects.
</description><pubDate>Mon, 03 Aug 2009 21:44:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/Aug-03-2.html</guid><author>Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>10263268500</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Replace Comments With Code</title><link>http://feedproxy.google.com/~r/torresdal/~3/wUO2R2iCT1E/ReplaceCommentsWithCode.aspx</link><description>&lt;div&gt;&lt;p&gt;It's tempting to just leave this blog post with that statement only :-) I will however explain this a bit further for those of you who either are forced to write comments (like by your boss or a policy at your company), or actually believe a lot of comments in code increase readability and ease maintenance.&lt;/p&gt;  &lt;p&gt;I'm not trying to be sarcastic, I just believe 100% in code and not in comments. In .NET and most other OO languages there are two types of comments. The first type is the one you write in your code to explain what your code does. Like this:&lt;/p&gt;  &lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:525px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#008000"&gt;//Calculate interest&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;double&lt;/span&gt; amount 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;    = balance * Math.Pow(1 + (annualPercentage / 100) / 365, days)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;      - balance;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;How do you replace this comment with code? What about this:&lt;/p&gt;

&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:525px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;double&lt;/span&gt; amount = CalculateInterest(balance, annualPercentage, days);&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Whenever you come across comments like the above, I encourage you to refactor by replacing comments with code. Often you don't even have to extract a method like above, but just give better names to variables.&lt;/p&gt;

&lt;p&gt;The second type of comments is the ones you use to generate API documentation:&lt;/p&gt;

&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:525px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// Calculate interest&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;param name=&amp;quot;balance&amp;quot;&amp;gt;Current balance of the account&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;param name=&amp;quot;annualPercentage&amp;quot;&amp;gt;Annual percentage&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;param name=&amp;quot;days&amp;quot;&amp;gt;Days to calculate interest for&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#808080"&gt;/// &amp;lt;returns&amp;gt;Interest amount&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; CalculateInterest(&lt;span style="color:#0000ff"&gt;double&lt;/span&gt; balance, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;                                &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; annualPercentage, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;                                &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; days)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;font-size:12px"&gt;{&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Almost on every project I've been on we've had these comments/documentation. Also, on the same projects they've never been used for anything useful. I've actually forced devs to do this myself! If you're creating a product/framework to be used by other devs, writing this type of documentation makes sense. If you don't, it makes no sense! I used to do this just to satisfy my own satisfaction of generating a chm file and see that all my methods and classes was documented. That was about it. I never used it once! It's much easier to look in the code than to look at the API doc.&lt;/p&gt;

&lt;p&gt;The worst thing about this type of documentation is that it clutters your code and makes the code hard to read. A class with 50 lines of code becomes 100 lines with comments. As a practice, try to remove all comments and see if it's easier to understand and read the class. I strongly believe it is. If not, it's a code smell and you should refactor your code! Comments should not be used to explain bad code.&lt;/p&gt;

&lt;p&gt;When I talk to people about comments in code I often ask them two questions: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Do you think it's hard to maintain code? &lt;/p&gt;

  &lt;p&gt;How hard to you think it is to maintain comments?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you change your code, do you also make sure to check if the comments are still correct after you've done the changes? Most people don't and you shouldn't really need to worry about it. Outdated comments can create confusion and bugs just because someone forgot to update them.&lt;/p&gt;&lt;img width="0" height="0" src="http://blog.torresdal.net/aggbug.ashx?id=b2c34507-244a-424b-bc2a-d886201a4502"&gt;&lt;/div&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/torresdal?a=wUO2R2iCT1E:CJt3c1dKlZg:UQJ_KNDcA3w"&gt;&lt;img src="http://feeds.feedburner.com/~ff/torresdal?d=UQJ_KNDcA3w" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/torresdal?a=wUO2R2iCT1E:CJt3c1dKlZg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/torresdal?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/torresdal/~4/wUO2R2iCT1E" height="1" width="1"&gt;</description><pubDate>Sun, 02 Aug 2009 22:36:48 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/4c97e45a91dbc225</guid><author>Jon Arild Tørresdal</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>10274465888</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>C# Sqlite</title><link>http://tirania.org/blog/archive/2009/Aug-06.html</link><description>
	&lt;p&gt;Noah Hart did a line-by-line port of Sqlite to C# and has
	uploaded the code
	to &lt;a href="http://code.google.com/p/csharp-sqlite/"&gt;code.google.com/p/csharp-sqlite&lt;/a&gt;.

	&lt;p&gt;The &lt;a href="http://code.google.com/p/csharp-sqlite/wiki/FrequentlyAskedQuestions"&gt;frequently
	asked questions&lt;/a&gt; on the web site talks about performance
	(it is about 5 times slower than native code, but still, it
	can do 1.5 million selects per second, 300k inserts per second).

	&lt;p&gt;Still, not bad for a line-by-line port;    Folks on the
	#mono channel on irc.gnome.org a couple of days ago were
	commenting on the possible ways of tuning it up by not forcing
	the C way where the C# way would work just fine.  

	&lt;p&gt;The potential for this library is huge.   It could be used
	for ASP.NET servers running in medium trust mode, or it could
	be used by Silverlight applications.

	&lt;p&gt;It seems like Tim Anderson is attempting to remove all the
	P/Invokes from it to make it run on Silverlight (the P/Invokes
	are mostly used for doing file-level locking;   Again part of
	the line-by-line history of it).
</description><pubDate>Thu, 06 Aug 2009 23:54:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/Aug-06.html</guid><author>miguel@gnome.org (Miguel de Icaza)</author><source url="http://tirania.org/blog/miguel.rss2">Miguel de Icaza</source><ng:postId>10284633731</ng:postId><ng:feedId>429</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Apple's Schiller personally responds to App Store criticism</title><link>http://www.appleinsider.com/articles/09/08/06/apples_schiller_personally_responds_to_app_store_criticism.html</link><description>In an unprecedented move, Apple executive Phil Schiller has personally responded a report that criticized the company's handling of a third-party dictionary program on the iPhone App Store.&lt;div style="clear: both;"&gt;&lt;a href="http://www.pheedo.com/click.phdo?feedUrl=http%3A//www.appleinsider.com/appleinsider.rss&amp;amp;itemLink=http%3A%2F%2Fwww.appleinsider.com%2Farticles%2F09%2F08%2F06%2Fapples_schiller_personally_responds_to_app_store_criticism.html&amp;amp;itemDate=2009-08-06%2014%3A00%3A00&amp;amp;itemTitle=Apple%26%2339%3Bs%20Schiller%20personally%20responds%20to%20App%20Store%20criticism"&gt;&lt;img border="0" src="http://www.pheedo.com/img.phdo?feedUrl=http%3A//www.appleinsider.com/appleinsider.rss&amp;amp;itemLink=http%3A%2F%2Fwww.appleinsider.com%2Farticles%2F09%2F08%2F06%2Fapples_schiller_personally_responds_to_app_store_criticism.html&amp;amp;itemDate=2009-08-06%2014%3A00%3A00&amp;amp;itemTitle=Apple%26%2339%3Bs%20Schiller%20personally%20responds%20to%20App%20Store%20criticism" /&gt;&lt;/a&gt;&lt;/div&gt;</description><pubDate>Thu, 06 Aug 2009 18:00:00 GMT</pubDate><guid isPermaLink="false">http://www.appleinsider.com/articles/09/08/06/apples_schiller_personally_responds_to_app_store_criticism.html</guid><source url="http://www.appleinsider.com/appleinsider.rss">AppleInsider</source><ng:postId>10284636154</ng:postId><ng:feedId>1068</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Microsoft Acknowledges Linux Threat</title><link>http://www.osnews.com/story/21954/Microsoft_Acknowledges_Linux_Threat</link><description>Microsoft for the first time has named Linux distributors Red Hat and Canonical as competitors to its Windows client business in its annual filing to the U.S. Securities and Exchange Commission. The move is an acknowledgment of the first viable competition from Linux to Microsoft's Windows client business, due mainly to the use of Linux on netbooks, which are rising in prominence as alternatives to full-sized notebooks.</description><pubDate>Wed, 05 Aug 2009 19:15:27 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21954/Microsoft_Acknowledges_Linux_Threat</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10277312847</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Interview: What's Behind Linux's 3D GUI Revolution?</title><link>http://www.osnews.com/story/21960/Interview_What_s_Behind_Linux_s_3D_GUI_Revolution_</link><description>Clutter is the magic bringing Apple-like 3D goodness to GNOME 3.0, Moblin netbooks, and even Windows CE/Mobile devices. Learn its past, present, and future in this intriguing interview with the "man behind the curtain." "MoblinZone's Henry Kingman catches up with Emmanuele Bassi, maintainer of the Clutter hardware-accelerated GUI toolkit. Bassi discusses Clutter history, the recent 1.0 release, and what lies ahead for this key Moblin and GNOME technology."</description><pubDate>Thu, 06 Aug 2009 19:54:37 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21960/Interview_What_s_Behind_Linux_s_3D_GUI_Revolution_</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10284936075</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Office 2010 To Get File Format Ballot</title><link>http://www.osnews.com/story/21962/Office_2010_To_Get_File_Format_Ballot</link><description>Just when you thought the world couldn't get any crazier, something happens that makes you move your expectations of the world up a few nothces. We already have to deal with the browser ballot, but that's not the only ballot Microsoft will deliver. Hold on to your panties, as Microsoft will also offer a file format ballot in Microsoft Office 2010. On a happier note, Microsoft makes a whole load of promises to the EU about opening up technologies and file formats.</description><pubDate>Thu, 06 Aug 2009 22:04:55 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21962/Office_2010_To_Get_File_Format_Ballot</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10285579045</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Apple Censors Dictionary iPhone App</title><link>http://www.osnews.com/story/21947/Apple_Censors_Dictionary_iPhone_App</link><description>"[Ninjawords] is a terrific app - pretty much exactly what I've always wanted in an iPhone dictionary, and, yes, with both a better user experience and better dictionary content than the other low-cost dictionaries in the App Store. But Ninjawords for iPhone suffers one humiliating flaw: it omits all the words deemed "objectionable" by Apple's App Store reviewers, despite the fact that Ninjawords carries a 17+ rating. Apple censored an English dictionary. A dictionary. A reference book. For words contained in all reasonable dictionaries. For words contained in dictionaries that are used every day in elementary school libraries and classrooms."</description><pubDate>Wed, 05 Aug 2009 08:38:16 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21947/Apple_Censors_Dictionary_iPhone_App</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10273872769</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Supported Features</title><link>http://xkcd.com/619/</link><description>&lt;img src="http://imgs.xkcd.com/comics/supported_features.png" title="I hear many of you finally have smooth Flash support, but me and my Intel card are still waiting on a kernel patch somewhere in the pipeline before we can watch Jon Stewart smoothly." alt="I hear many of you finally have smooth Flash support, but me and my Intel card are still waiting on a kernel patch somewhere in the pipeline before we can watch Jon Stewart smoothly." /&gt;</description><pubDate>Wed, 05 Aug 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/619/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>10272653046</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Some new Spotify community sites</title><link>http://www.spotify.com/blog/archives/2009/07/30/some-new-spotify-community-sites/</link><description>&lt;p&gt;It&amp;#8217;s been a little while since I last &lt;a href="http://www.spotify.com/blog/archives/2009/02/19/spotified-cd-collection-and-some-other-community-sites/"&gt;highlighted&lt;/a&gt; some of the community sites built around Spotify.  Lots of new ones have appeared and some significant improvements have been made to existing sites so here&amp;#8217;s a short list of a few recent sites. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://spotify.wearehunted.com/"&gt;We Are Hunted&lt;/a&gt; have created a dedicated Spotify chart with top tracks and artists.  Another neat feature is the constantly changing playlist of the 99 hottest songs in the world right now.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sharemyplaylists.com/"&gt;Share My Playlists&lt;/a&gt; have done a major new release incorporating all sorts of cool social features.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://themacbox.co.uk/smr/"&gt;Spotify Mac Remote&lt;/a&gt; lets you control Spotify using the remote that came with your Mac.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.foxytunes.net/2009/07/08/foxytunes-supports-spotify/"&gt;FoxyTunes&lt;/a&gt; has added Spotify support to their application.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://spotifitunes.philnash.co.uk/"&gt;SpotifiTunes&lt;/a&gt; is a tool that allows you to take your iTunes library and create Spotify links for your music collection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;#8217;ve created a Spotify related website or tool that we haven&amp;#8217;t seen let us know - post your site in the comments and we&amp;#8217;ll check it out.&lt;/p&gt;
</description><pubDate>Thu, 30 Jul 2009 08:08:21 GMT</pubDate><guid isPermaLink="false">http://www.spotify.com/blog/archives/2009/07/30/some-new-spotify-community-sites/</guid><comments>http://www.spotify.com/blog/archives/2009/07/30/some-new-spotify-community-sites/#comments</comments><author>Andres Sehr</author><source url="https://www.spotify.com/blog/feed/">Spotify</source><ng:postId>10237383646</ng:postId><ng:feedId>3683532</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Linus: "Microsoft Hatred Is a Disease"</title><link>http://www.osnews.com/story/21887/Linus_quot_Microsoft_Hatred_Is_a_Disease_quot_</link><description>So, Microsoft submits 20000 lines of code to the Linux kernel, all licensed under the GPL. Microsoft, who considers Linux a great threat, and once called the GPL a "cancer". Opinions on this one are flying all around us, but what does Linus Torvalds, Linux' benevolent dictator, think about all this?</description><pubDate>Thu, 23 Jul 2009 22:53:24 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21887/Linus_quot_Microsoft_Hatred_Is_a_Disease_quot_</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10197437386</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Clutter Takes A Step Closer To 1.0 Release</title><link>http://feedproxy.google.com/~r/Phoronix/~3/YXV_YWig6EE/vr.php</link><description>Clutter, the free software tool-kit that makes it easier to develop compelling user-interfaces that use OpenGL / OpenGL ES, is now nearing its version 1.0 release. Emmanuele Bassi with the Intel Open-Source Technology Center has announced the release of Clutter 1.0 Release Candidate 3.

This latest release candidate of the Clutter tool-kit brings performance improvements, a fix for a potential tearing problem, and various other bug-fixes...
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vl87CTKZMTlzF5oI7veTP1naIcQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vl87CTKZMTlzF5oI7veTP1naIcQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vl87CTKZMTlzF5oI7veTP1naIcQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vl87CTKZMTlzF5oI7veTP1naIcQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Phoronix/~4/YXV_YWig6EE" height="1" width="1"/&gt;</description><pubDate>Mon, 20 Jul 2009 02:42:45 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=NzM4OQ</guid><source url="http://www.phoronix.com/rss.php">Phoronix</source><ng:postId>10169135890</ng:postId><ng:feedId>1490133</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Discussion: Partial Open-Source GPU Drivers</title><link>http://feedproxy.google.com/~r/Phoronix/~3/GCEBI2ORFj8/vr.php</link><description>Last week VIA re-released their Chrome 9 DRM in hopes of pushing it into the mainline Linux kernel. However, the only user of this DRM code at present is their Linux binary graphics driver and VIA Technologies has no intentions of providing an open-source Chrome 9 3D driver...
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XvxGPmYlHzmSEsPYRZyx8DQp_Jc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XvxGPmYlHzmSEsPYRZyx8DQp_Jc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XvxGPmYlHzmSEsPYRZyx8DQp_Jc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XvxGPmYlHzmSEsPYRZyx8DQp_Jc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Phoronix/~4/GCEBI2ORFj8" height="1" width="1"/&gt;</description><pubDate>Tue, 21 Jul 2009 00:57:30 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=NzM5MA</guid><source url="http://www.phoronix.com/rss.php">Phoronix</source><ng:postId>10175480908</ng:postId><ng:feedId>1490133</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Linux Kernel Virtual Machine Improves Build Performance</title><link>http://www.osnews.com/story/21855/Linux_Kernel_Virtual_Machine_Improves_Build_Performance</link><description>KVM acts as the host for the guest operating systems that build the target software for the user. By switching from VMware build guests to Linux KVM guests, build times for each guest are reduced by as much as 50 percent. Learn how to set up the build server and create guests, customize build requests, and organize and access build results.</description><pubDate>Mon, 20 Jul 2009 14:53:22 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21855/Linux_Kernel_Virtual_Machine_Improves_Build_Performance</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10172673665</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How Apple's App Review Is Undermining The iPhone</title><link>http://www.osnews.com/story/21863/How_Apple_s_App_Review_Is_Undermining_The_iPhone</link><description>InfoWorld's Peter Wayner provides an inside look at the frustration iPhone developers face from Apple when attempting to distribute their apps through the iPhone App Store. Determined to simply dump an HTML version of his book into UIWebView and offer two versions through the App Store, Wayner endures four months of inexplicable silences, mixed messages, and almost whimsical rejections from Apple -- the kind of frustration and uncertainty Wayner believes is fast transforming Apple's regulated marketplace into a hotbed of bottom-feeding mediocrity. 'Developers are afraid to risk serious development time on the platform as long as anonymous gatekeepers are able to delay projects by weeks and months with some seemingly random flick of a finger,' Wayner writes of his experience. 'It's one thing to delay a homebrew project like mine, but it's another thing to shut down a team of developers burning real cash. Apple should be worried when real programmers shrug off the rejections by saying, "It's just a hobby."'</description><pubDate>Mon, 20 Jul 2009 23:29:34 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21863/How_Apple_s_App_Review_Is_Undermining_The_iPhone</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10175071950</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Lost iPhone Prototype Pushes Foxconn Worker to Commit Suicide</title><link>http://www.osnews.com/story/21869/Lost_iPhone_Prototype_Pushes_Foxconn_Worker_to_Commit_Suicide</link><description>This is one sad story to report on. Sun Danyong, 25-year-old employee at Chinese manufacturing company Foxconn, has committed suicide after being subjected to apparently rather rigorous interrogation methods by Foxconn's Central Security Division. Danyong handled a shipment of 16 iPhone prototypes, and one of them went missing.</description><pubDate>Tue, 21 Jul 2009 20:10:17 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21869/Lost_iPhone_Prototype_Pushes_Foxconn_Worker_to_Commit_Suicide</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10181343453</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Estimation</title><link>http://xkcd.com/612/</link><description>&lt;img src="http://imgs.xkcd.com/comics/estimation.png" title="They could say &amp;quot;the connection is probably lost,&amp;quot; but it's more fun to do naive time-averaging to give you hope that if you wait around for 1,163 hours, it will finally finish." alt="They could say &amp;quot;the connection is probably lost,&amp;quot; but it's more fun to do naive time-averaging to give you hope that if you wait around for 1,163 hours, it will finally finish." /&gt;</description><pubDate>Mon, 20 Jul 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/612/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>10169259030</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Intel's new 34nm SSDs cut prices by 60 percent, boost speed</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/-i6IPiUDP_U/intels-new-34nm-ssds-cut-prices-by-60-percent-boost-speed.ars</link><description>&lt;a href="http://arstechnica.com/hardware/news/2009/07/intels-new-34nm-ssds-cut-prices-by-60-percent-boost-speed.ars"&gt;
            &lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/07/Intel_SSD_angle-thumb-230x130-7155-f.jpg" alt="companion photo for Intel's new 34nm SSDs cut prices by 60 percent, boost speed" /&gt;
        &lt;/a&gt;
      
    
    &lt;p&gt;
Intel has announced two new solid state disk drives made on its leading-edge 34nm process. The two new SSDs are X25M SATA parts weighing in at 80GB and 160GB, and they're meant to replace Intel's existing X25M drives in those capacities, but at 60 percent less cost and with better performance. The 80GB X25-M is $225 in lots of 1,000 (down from $595), and the 160GB is $440 (from $945). That's some serious discounting, and it may well drive even more SSD uptake in the coming quarters despite the ongoing IT spending crunch.
&lt;/p&gt;

&lt;p&gt;
So what do you get for 60 percent less? In a word, speed. The new drives boast a 25 percent reduction in read latency, which was already about 60x the speed of an average hard disk; write performance has also doubled with this new generation. 
&lt;/p&gt;

    
       
         &lt;a href="http://arstechnica.com/hardware/news/2009/07/intels-new-34nm-ssds-cut-prices-by-60-percent-boost-speed.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/nMY5uSNGu-vHcL9O6vpHA4PTKSI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/nMY5uSNGu-vHcL9O6vpHA4PTKSI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/nMY5uSNGu-vHcL9O6vpHA4PTKSI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/nMY5uSNGu-vHcL9O6vpHA4PTKSI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-i6IPiUDP_U:_ReHC6hIs3w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=-i6IPiUDP_U:_ReHC6hIs3w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-i6IPiUDP_U:_ReHC6hIs3w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=-i6IPiUDP_U:_ReHC6hIs3w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-i6IPiUDP_U:_ReHC6hIs3w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-i6IPiUDP_U:_ReHC6hIs3w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/arstechnica/index/~4/-i6IPiUDP_U" height="1" width="1"/&gt;</description><pubDate>Tue, 21 Jul 2009 20:04:00 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/hardware/news/2009/07/intels-new-34nm-ssds-cut-prices-by-60-percent-boost-speed.ars</guid><author>hannibal@arstechnica.com (Jon Stokes)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>10181390036</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>MacRumors: AIM Messages Sent to Unlocked iPhones Routed to Unintended Recipients</title><link>http://www.macrumors.com/2009/07/21/aim-messages-sent-to-unlocked-iphones-routed-to-unintended-recipients/</link><description>   
CrunchGear reports that developer Till Schadde has discovered a security flaw that allows AIM instant messages sent to certain unlocked and jailbroken iPhones to be misrouted to unintended recipients.&lt;p class="quote"&gt;Till tested the service by sendin...
</description><pubDate>Tue, 21 Jul 2009 20:05:19 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1515159/10181247968</guid><source url="http://www.macrumors.com/iphone/iphone.xml">MacRumors iPhone Blog</source><ng:postId>10181247968</ng:postId><ng:feedId>1515159</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Fun with Light (aka: Quantum Computing: A Physicist's Perspe</title><link>http://www.youtube.com/watch?v=euc0XZt1VEA</link><description>Google Tech Talk July 10, 2009 ABSTRACT Fun with Light (aka: Quantum Computing: A Physicist's Perspective on Recent Developments) Presented by Jung-Tsung Shen The lightsaber is a supercool gadget that all of us would like to get one. It exhibits many novel light phenomena, notably the light blades of two lightsabers could interact with each other. Unfortunately it takes an enormous amount of energy to achieve that. One of the main difficulties of making a lightsaber is that photons normally ...</description><pubDate>Fri, 17 Jul 2009 23:56:35 GMT</pubDate><guid isPermaLink="false">http://gdata.youtube.com/feeds/api/videos/euc0XZt1VEA</guid><author>googletechtalks</author><source url="http://gdata.youtube.com/feeds/api/users/googletechtalks/uploads?orderby=updated">Uploads by googletechtalks</source><ng:postId>10160545680</ng:postId><ng:feedId>2674753</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>VIA Will Not Provide An OSS Chrome 9 3D Driver</title><link>http://feedproxy.google.com/~r/Phoronix/~3/byViY1pYpyk/vr.php</link><description>This morning VIA's Bruce Chang had submitted the DRM code for the Chrome 9 IGP with a request that it be pushed into the mainline Linux kernel. The DRM alone isn't usable to an end-user without a Mesa driver or something else to take advantage of this kernel component. VIA previously expressed interest in a Gallium3D-based Chrome 9 driver, but now today we find out they have no intentions on creating an open-source Chrome 9 3D driver. Instead, they just want this DRM into the mainline Linux kernel so that it can be used by their binary blob and to hopefully have some open-source developers come along and create a free software driver from their incomplete documentation.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YsiqHDzjX0oVqWQjzENIBMRQbuE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YsiqHDzjX0oVqWQjzENIBMRQbuE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YsiqHDzjX0oVqWQjzENIBMRQbuE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YsiqHDzjX0oVqWQjzENIBMRQbuE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Phoronix/~4/byViY1pYpyk" height="1" width="1"/&gt;</description><pubDate>Fri, 17 Jul 2009 15:12:11 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=14051</guid><source url="http://www.phoronix.com/rss.php">Phoronix</source><ng:postId>10152755126</ng:postId><ng:feedId>1490133</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Mono LLVM Compilation</title><link>http://www.osnews.com/story/21847/Mono_LLVM_Compilation</link><description>Mono from SVN is now able to use LLVM as a backend for code generation in addition to Mono's built-in JIT compiler. "This allows Mono to benefit from all of the compiler optimizations done in LLVM. For example the SciMark score goes from 482 to 610. This extra performance comes at a cost: it consumes more time and more memory to JIT compile using LLVM than using Mono's built-in JIT, so it is not a solution for everyone. Long running desktop applications like Banshee and Gnome-Do want to keep memory usage low and also would most likely not benefit from better code generation. Our own tests show that ASP.NET applications do not seem to benefit very much (but web apps are inherently IO-bound). But computationally intensive applications will definitely benefit from this. Financial and scientific users will surely appreciate this performance boost."</description><pubDate>Fri, 17 Jul 2009 10:45:19 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21847/Mono_LLVM_Compilation</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10151182925</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>På akuttmottaket hos alternative behandlere</title><link>http://feedproxy.google.com/~r/stian/shared/~3/o8LBidXsj08/</link><description>&lt;p&gt;Hysterisk morsomt :-D&lt;/p&gt;
&lt;p&gt;&lt;embed src="http://www.youtube.com/v/HMGIbOGu8q0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" allowFullScreen="true" allowScriptAccess="never" width="425" height="344" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/p&gt;


&lt;p&gt;Relateterte bloggposter:&lt;ol&gt;&lt;li&gt;&lt;a href="http://blog.tjomlid.com/?p=150" rel="bookmark" title="Permanent Link: Alternative løsninger"&gt;Alternative løsninger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.tjomlid.com/?p=1457" rel="bookmark" title="Permanent Link: Peek-a-boo"&gt;Peek-a-boo&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.g.doubleclick.net/~ah/f/je99la6e3m8e75o43nlhkfekf8/300/250#http%3A%2F%2Fblog.tjomlid.com%2F%3Fp%3D2187" width="100%" height="250" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogtjomlidcom/~4/nlRg0vEEa90" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/stian/shared/~4/o8LBidXsj08" height="1" width="1"/&gt;</description><pubDate>Fri, 03 Jul 2009 19:49:26 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/e2437e961ffe4c96</guid><author>Gunnar Roland Tjomlid</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>10037499082</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Data som vi alt har betalt for</title><link>http://feedproxy.google.com/~r/stian/shared/~3/XYTSDKHkZD8/</link><description>&lt;p&gt;I går skrev vi om &lt;a href="http://nrkbeta.no/2009/07/02/gratis-flydata-fra-avinor/"&gt;Avinor som legger ut data om flyavganger og ankomster&lt;/a&gt; i et eget API. Tidligere har Ruter/Trafikanten &lt;a href="http://nrkbeta.no/2008/05/19/gi-oss-trafikkdataene-som-xml-filer/"&gt;gjort det samme&lt;/a&gt;, selv om de dessverre gjør det på en måte som gjør tjenesten forholdsvis ubrukelig.&lt;/p&gt;
&lt;p&gt;Her i NRK samarbeider vi med Meteorologisk institutt om værtjenesten yr.no, som &lt;a href="http://nrkbeta.no/2007/10/10/yr-api/"&gt;også deler ut alle værdata&lt;/a&gt; til de som måtte ha bruk for den. &lt;/p&gt;
&lt;h3&gt;Data som folk alt har betalt for&lt;/h3&gt;
&lt;p&gt;Før internetts tid så var alle disse dataene noe folk flest ikke trengte å forholde seg til. De ble samlet inn og behandlet av store statlige institusjoner, og det var de samme institusjonene som presenterte dataene for oss når vi trengte dem. &lt;/p&gt;
&lt;p&gt;I 2009 er det ikke slik lengre.&lt;/p&gt;
&lt;p&gt;Takket være internett, trådløs tilkobling, bedre programmeringsverktøy og ikke minst enorm datakraft på håndholdte “terminaler” – les: mobiltelefoner – kan hver enkelt av oss ta i bruk disse dataene på måter som vi får ikke hadde forestilt oss. &lt;/p&gt;
&lt;p&gt;Noen eksempler: Du bruker yr.nos &lt;a href="http://nrkbeta.no/2009/01/03/vaer-paa-iphone/"&gt;iPhone-app for å sjekke været&lt;/a&gt; akkurat der du er nå, du får ferske opplysninger og avgangene på flyplassen du er på vei til på en tv-skjerm i flybussen, du ser når neste buss/trikk går på en monitor ved døren når du er på vei ut fra firmaet du har besøkt og du ser på nettsiden til campingplassen hvilket vær som er meldt for helga.&lt;/p&gt;
&lt;h3&gt;Neste trinn&lt;/h3&gt;
&lt;p&gt;Hvem er det som har mest data som er samlet inn “for folket” – som du og jeg har bruk for? To kandidater peker seg kraftig ut: Statistisk Sentralbyrå (SSB) og Statens Kartverk.&lt;/p&gt;
&lt;h4&gt;SSB&lt;/h4&gt;
&lt;p&gt;SSB har data om hvor mange det er av oss, hvor vi bor og hva vi lever av. De har data om valgene i Norge, levekår, sosiale tilstander, utdanning, miljø, arbeidsliv og fritid. Kort sagt &lt;a href="http://www.ssb.no/emner/"&gt;det meste som forteller oss hvem vi er i tall og prosenter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Derfor er det veldig spennende å lese &lt;a href="http://3djegrad.net/blog/2009/07/api-fra-ssb-ssbdata/"&gt;på bloggen til Christian&lt;/a&gt; i dag at SSB planlegger å åpne opp disse dataene med et API fra neste år. Trygve Falch med den kule tittelen løsningsarkitekt, skriver følgende:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Svaret på spørsmålet ditt er både ja og nei. Vi har en alpha-tjeneste som vi har tilbudt noen etater og bedrifter. Jeg er ikke helt fornøyd med denne, og er derfor litt restriktiv i forhold til å gi deg tilgang til disse, men også fordi vi jobber med en total omlegging av hele SSB.no. I den sammenheng kommer vi til å tilby en hel del API-er, både på datanivå, men også på metadatanivå. Foreløpig sluttdato for prosjektet er ikke satt, men det er snakk om en lansering midten eller slutten av 2010. MEN; det jeg ser for meg er at vi kommer til å tilby betatesting av disse tjenestene på et tidligere tidspunkt enn det. (håper jeg!)&lt;/p&gt;
&lt;p&gt;Det jeg i mellomtiden kunne ønske meg var tilbakemeldinger på hva slags API-er du kunne tenke deg (både i forhold til innhold, men også teknisk implementasjon, REST, SOAP, Json osv.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Dette er gode nyheter! Det er selvsagt altfor lenge til 2010, men det testene er i gang og vi kommer til å følge nøye med på dette og være aktivt med i diskusjonen om hvordan disse dataene skal gjøres tilgjengelig for folk. NRK og Meteorologisk institutt har gjort mange erfaringer med dette i forbindelse med yr.no, og vi oppfordrer SSB til å ta kontakt både fordi vi har erfaringer å dele, og fordi NRK kommer til å være en bruker av dissse dataene. NRK samarbeider allerede med SSB om blant annet data og resultater i forbindelse med valgene.&lt;/p&gt;
&lt;h4&gt;Kartverket&lt;/h4&gt;
&lt;p&gt;Så var det Kartverket. I Norge samles alle kartdata i kommunene inn og lagres sentralt hos &lt;a href="http://www.statkart.no/"&gt;Statens Kartverk&lt;/a&gt; på Hønefoss. De har så forskjellige tjenester for å formidle kartene ut igjen til forskjellige aktører. Det lages kart på papir som du kan kjøpe i butikken, og det leveres digitale kart til en rekke formål: Sjøkart, kart som brukes ved bygging av veier, hus og næring, det finnes kart for miljø og forskning og kart for rekreasjon og fritid.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://nrkbeta.no/wp-content/uploads/2009/07/kart-detalj-570x396.jpg" alt="kart-detalj" title="kart-detalj" width="570" height="396"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Eksempel på detaljrikdom i et kart fra Statens Kartverk – &lt;a href="http://kart.statkart.no"&gt;http://kart.statkart.no&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;På yr.no bruker vi kart fra Kartverket, men de lagret på vår egen server. På ut.no som kommer i løpet av året vil vi samarbeide med Kartverket slik at du kan få detaljerte turkart i nettleseren når du skal planlegge turene dine.&lt;/p&gt;
&lt;p&gt;Men hva med alt det andre? NRKs Forbrukerinspektørene – FBI – har tidligere laget sak om &lt;a href="http://www.nrk.no/programmer/tv/fbi/1.5824212"&gt;hvorfor ikke alle kart fra Kartverket slippes fri&lt;/a&gt;. Hvorfor skal vi være nødt til å betale for disse kartene, som både er samlet inn av mennesker som vi har betalt lønnen til og som lagres hos Kartverket som betales for av staten?&lt;/p&gt;
&lt;p&gt;Jeg har ved flere anlendinger det siste året vært hos Kartverket for å snakke om disse tingene. På “gulvet” i Kartverket er det en rekke mennesker som ser at verden har forandret seg og at det er på tide “å ta en yr” – slippe datene helt fri. Denne holdningen siver sakte oppover i systemet og jeg er optimistisk på Kartverkets vegne. Men det går sakte! &lt;/p&gt;
&lt;p&gt;Såvidt jeg har kunne bringe på det rene har Kartverket et budsjett på rundt 400 millioner kroner i året. Så selger de kart for en brøkdel av dette, rundt 7-8 millioner i året. Tallene har ingen på Kartverket ville bekrefte, men heller ikke avkrefte.&lt;/p&gt;
&lt;p&gt;Uansett er det peanøtter. Det er valgår i år, og hvis en minister kjenner sin besøkelsestid – legg en kraftig føring på Kartverket:&lt;/p&gt;
&lt;p&gt;1) Slipp fri datene.&lt;br&gt;
2) Lag et API som gjør det mulig for alle som ønsker å bruke dem.&lt;br&gt;
3) Gi Kartverket penger til å kjøre servere som tåler dette.&lt;/p&gt;
&lt;p&gt;På engelsk heter det så fint ROI – Return Of Investment. Det å bruke noen millioner på å gi Kartverket mulighetene til å servere høykvalitets kart til alle som trenger dem, vil være ROI så det griner. På kort tid vil det komme tjenester og produkter som gjør hverdagen vår enklere, sikrere og bedre. Håkon Wium Lie er teknologisjef i Opera Software og sier til FBI:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Jeg tror at ved å frigi denne informasjonen så vil staten gå glipp av bittelite grann av lisensinntekter, men du vil få en skog av ny virksomhet som blir brukt oppå disse dataene.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Det vil kanskje ikke være så enkelt å regne direkte ut hvor mye penger disse er verdt, men at de er langt langt høyere enn den lille kostnaden det vil være for Kartverket å åpne opp, er det ingen tvil om.&lt;/p&gt;
&lt;h3&gt;Data.gov&lt;/h3&gt;
&lt;p&gt;Norske politikere har kikket grundig over havet og sett hva Obama gjorde med nettet i valgkampen i USA. Nå bør de la seg inspirere igjen over det som Obama-administrasjonen vil gjøre med &lt;a href="http://data.gov"&gt;data.gov&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://nrkbeta.no/wp-content/uploads/2009/07/data-gov-570x258.jpg" alt="data-gov" title="data-gov" width="570" height="258"&gt;&lt;/p&gt;
&lt;p&gt;På nettstedet vi man kunne finne all data som staten har samlet inn, lett tilgjengelig ved hjelp av et moderne API.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The purpose of Data.gov is to increase public access to high value, machine readable datasets generated by the Executive Branch of the Federal Government.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Det er lite der foreløpig men planen er at alt som kan skal samles på et sted. Dette er en knall ide og jeg vil oppfordre til at det samme gjøres her i landet. Lag en oversikt over statlig data som finnes, og hvordan man kan få tak i den. Ta med yr, SSB, Kartverket, Avinor osv. og lenk til de respektives APIer og tilbud. Bruk musklene som staten har til å presse andre statlige institusjoner til å åpne opp. &lt;/p&gt;
&lt;h3&gt;Spørsmål til deg: Hva har vi glemt?&lt;/h3&gt;
&lt;p&gt;For hvem har vi glemt? Hvilke andre data er det som noen har samlet inn men som er låst ned i en database et eller annet sted? Bruk kommentarfeltet!&lt;/p&gt;
&lt;p&gt;Og en siste oppfordring: Fortell oss hvordan du vil ha data fra akkurat SSB og Kartverket. Fortell oss i detalj hva du kunne tenke deg å lage med dataene, hvordan du vil ha dem servert (høy nerdefaktor er tillatt) og gjerne hvordan du ser for deg at vi i NRK kunne bruke disse dataene på våre tjenester og produkter. Vi er også betalt av deg – og vil også åpne opp så mye som mulig i samarbeid med andre statlige institusjoner.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Oppdatering&lt;/ins&gt;: Når det gjelder deling av NRKs data og et API fra vår side, så finner du en status på det i &lt;a href="http://nrkbeta.no/2009/03/19/hva-skjer-saa-med-nrks-api/"&gt;“Hva skjer så med NRKs API?”&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/nrkbeta?a=oQ_58EnQwfI:rbGJBAYXy2k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/nrkbeta?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/nrkbeta?a=oQ_58EnQwfI:rbGJBAYXy2k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/nrkbeta?i=oQ_58EnQwfI:rbGJBAYXy2k:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/nrkbeta?a=oQ_58EnQwfI:rbGJBAYXy2k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/nrkbeta?i=oQ_58EnQwfI:rbGJBAYXy2k:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/nrkbeta?a=oQ_58EnQwfI:rbGJBAYXy2k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/nrkbeta?d=qj6IDK7rITs" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nrkbeta/~4/oQ_58EnQwfI" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/stian/shared/~4/XYTSDKHkZD8" height="1" width="1"/&gt;</description><pubDate>Fri, 03 Jul 2009 10:22:55 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/ef87361819abd09a</guid><author>Øyvind Solstad</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>10037498385</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>The Flood of New</title><link>http://www.sparkfun.com/commerce/news.php?id=273</link><description>If you're in the Denver/Boulder area and you're interested in the IEEE and automation, there's a new &lt;a name="" target="_blank" classname="" class="" href="http://ras-denver.blogspot.com/"&gt;IEEE/Robotics society forming&lt;/a&gt;! Matt Taylor and Sam Siewert (one of my old university professors, oddly enough) asked us to pass the word on. The meeting is this Wednesday (7/1/09) at 7PM on the CU campus. &lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9012" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/SFUIcon-01_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;There's a class tonight! &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9012"&gt;Napkin Schematics&lt;/a&gt; is the first class of the 6 week course. All are welcome to attend. We are going to try to broadcast the show live, as well as record it for later editing and posting. Check the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9012"&gt;class page&lt;/a&gt; for more information.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;I get excited about simple things. But when Aaron came to me a few weeks back and mentioned that we should carry RF adapters - I wasn't entirely convinced. Who cares about adapting SMA to RPSMA? But as we started to talk, he showed me just how confusing it can be. He wrote a short and sweet &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=140"&gt;tutorial&lt;/a&gt; to explain the confusing state of SMA RF connectors. Well done Aaron!&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9233" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09233-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9232" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09232-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;These are the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/categories.php?c=78"&gt;two RF adapters&lt;/a&gt; that convert between reverse polarized SMA, normal SMA, shrouded SMA, inner nut RPSMA, whatever. It's quite weird and hard to explain, so be sure to check Aaron's &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=140"&gt;SMA tutorial&lt;/a&gt; with nice, clean pictures.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;Speaking of new stuff, we've got a lot rolling out:&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9284" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09284-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;We took some of our favorite bits and pieces and created an &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9284"&gt;Arduino Starter Kit&lt;/a&gt;. The great thing about this kit is that it includes all the parts you need to hack for a significant amount of time, without anything else. We put it together as sort of an answer to the question: 'What would I give my niece/nephew/son/daughter/friend to get started with microcontrollers?' Kit includes some good inputs (linear pot, &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9190"&gt;12mm button&lt;/a&gt;), good outputs (&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/categories.php?c=89"&gt;LEDs&lt;/a&gt;, &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=105"&gt;tri-color LED&lt;/a&gt;, &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=7950"&gt;buzzer&lt;/a&gt;), and sensors (&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9088"&gt;light sensor&lt;/a&gt;, &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9199"&gt;vibration sensor&lt;/a&gt;). Happy hacking.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9168" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09168-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;A new breakout board for the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9168"&gt;MAX7456&lt;/a&gt; is now available. This simple to use IC gives the user the ability to throw text over a video stream. Also called on-screen display (OSD) or text overlay, the MAX7456 has an SPI interface and makes it easy hook up to PAL or NTSC TVs or larger displays with an RCA type input.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9169" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09169-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;Another slick little breakout board for a different IC: The &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9169"&gt;AD9835&lt;/a&gt; is a compact signal generator with extremely good accuracy up to 50MHz!&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9265" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09265-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;Speaking of Analog Devices - this is the new &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9265"&gt;ADXL335&lt;/a&gt;, small, low-power, triple axis accelerometer. I got the chance to take a tour of the Analog Devices' fabrication plant in Cambridge, MA. I was blown away to find out that the world's supply of &lt;a name="" target="_blank" classname="" class="" href="http://en.wikipedia.org/wiki/MEMS"&gt;MEMs&lt;/a&gt; &lt;a name="" target="_blank" classname="" class="" href="http://www.analog.com/en/mems/low-g-accelerometers/products/index.html"&gt;accelerometers&lt;/a&gt; and &lt;a name="" target="_blank" classname="" class="" href="http://www.analog.com/en/mems/gyroscopes/products/index.html"&gt;gyros&lt;/a&gt; from Analog Devices are fabbed in the two lower floors of a non-descript brick building in the heart of Boston, a few streets from MIT. Weird. The nice folks in the MEMs sensor group gave me a tour and took me out to lunch. Thanks &lt;a name="" target="_blank" classname="" class="" href="http://www.analog.com"&gt;ADI&lt;/a&gt;!&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9237" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09237-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;The &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9237"&gt;SD Sniffer&lt;/a&gt; is a device that was recommended by a SparkFun customer. It's pretty simple, yet very helpful. It's a breakout board that allows you to hook an SD card into an SD socket, and expose the signal pins so that you can listen in on the data signals, SD traffic, electrical levels, whatever. &lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9286" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09286-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9287" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09287-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;Dale Wheat is just such a neat guy, and his kits are so simple and cool, we just couldn't say no. We now carry the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9286"&gt;tinyCylon&lt;/a&gt; and &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9287"&gt;Lux Spectralis&lt;/a&gt; kits. These kits are a quick, simple build and do one thing well - amaze people with LED blinking goodness.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9291" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09291-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;After much beating our heads against a wall, we landed a deal with Extech to resell their excellent bench power supplies. These are not cheap supplies, these are good &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/categories.php?c=28"&gt;DC power supplies&lt;/a&gt;. We especially like the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9291"&gt;slim-line 80W DC switcher&lt;/a&gt;, but it's also the most expensive...&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9271" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09271-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;The &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9271"&gt;GE864&lt;/a&gt; is Telit's next step into miniaturization of a quad-band cellular module. Telit is the highest quality cellular module manufacturer on the market. The GE864 continues this trend with more great AT commands. You can effectively power this unit up, send it some serial AT commands, and start piping webpage and data information over the cellular network. Nifty.&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9260" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09260-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;The &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9260"&gt;PICAXE USB Programmer&lt;/a&gt; is effectively the same thing as the &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=8312"&gt;PICAXE USB Programming Cable&lt;/a&gt;. The
difference is this board has two on-board LEDs to show the serial data
(TX and RX) being passed back and forth. Why buy this board? Because
blinky things are better.&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9301" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/getting-started_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9300" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/making-talk_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;Books! Sometimes it just makes a lot more sense to have a printed thing in front of you. These two books dovetail well together. On the left, we have &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9301"&gt;Getting Started with Arduino&lt;/a&gt; by Arduino's playboy (and co-creater) &lt;a name="" target="_blank" classname="" class="" href="http://www.tinker.it/en/People/HomePage"&gt;Massimo Banzi&lt;/a&gt; . It is a good beginner's book to Arduino and general circuit hacking. On the right is Making Things Talk written by &lt;a name="" target="_blank" classname="" class="" href="http://itp.nyu.edu/itp/"&gt;ITP's&lt;/a&gt; playboy (and prolific spokesperson) &lt;a name="" target="_blank" classname="" class="" href="http://www.tigoe.net/"&gt;Tom Igoe&lt;/a&gt;. Making Things Talk is a more advanced book that shows how to hook various systems and components (like Bluetooth, force sensors, and monkeys) together.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9299" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09299-3_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;A &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9299"&gt;photo gate&lt;/a&gt; is a great thing to have. Whether you're detecting food pellets for mice during a controlled experiment, or you're using it as a safety stop for a printer head, these IR gates will help you detect the world around you.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9273" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09273-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;The &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9273"&gt;555 Timer&lt;/a&gt; is a very old staple of circuits and electrical engineering. While I jump on the chance to use a microcontroller any chance I get, there are still many good uses for this work horse. Being able to drive 200mA is just one of the many neat features of this timing chip.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9258" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09258-3_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;You will need a resistor at some point in your project. It's really annoying whenever you don't have the right one. This &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9258"&gt;resistor kit&lt;/a&gt; will have the right resistor. As SparkFun user &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/account.php?id=13159"&gt;Quazar&lt;/a&gt; points out, there's 365 - one for every day of the year!&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9274" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09274-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;Triple A batteries are a staple for many small projects. We now sell good quality &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9274"&gt;AAAs&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;div style="text-align: center;"&gt;&lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9275" id="image-main-link"&gt;&lt;img src="http://www.sparkfun.com/commerce/images/products/09275-1_i_ma.jpg" style="border: 1px solid #D8D5CB;" id="image-main" width="188" height="188"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="text-align: left;"&gt;And for the final new widget on the list, we have a &lt;a name="" target="" classname="" class="" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9275"&gt;6A DC to DC converter module&lt;/a&gt;. 6 amps! This little guy takes 4.5V to 14V and with great efficiency, outputs a regulated 0.6V to 5.5V. Output voltage is set with an external resistor and capacitor.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><pubDate>Sun, 28 Jun 2009 23:00:00 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/486061/9989779651</guid><source url="http://www.sparkfun.com/commerce/rss.php">SparkFun Electronics - News</source><ng:postId>9989779651</ng:postId><ng:feedId>486061</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>VirtualBox 3.0 Released</title><link>http://www.osnews.com/story/21762/VirtualBox_3_0_Released</link><description>Sun has released VirtualBox 3.0. The major improvements are: "Guest SMP with up to 32 virtual CPUs (VT-x and AMD-V only); Windows guests: ability to use Direct3D 8/9 applications/games (experimental); Support for OpenGL 2.0 for Windows, Linux and Solaris guests."</description><pubDate>Wed, 01 Jul 2009 21:11:06 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21762/VirtualBox_3_0_Released</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10014945136</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>New The Pirate Bay Owners Detail Business Plan</title><link>http://www.osnews.com/story/21763/New_The_Pirate_Bay_Owners_Detail_Business_Plan</link><description>The story around The Pirate Bay acquisition seems to be developing fast. The torrent search engine was bought by Global Gaming Factory yesterday, and they promised to build a legal P2P distribution network where content providers and copyright holders get compensated. In an exclusive interview with the BBC, GGF's Hans Pandeya detailed the business plan they have in mind for TPB.</description><pubDate>Wed, 01 Jul 2009 21:28:10 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21763/New_The_Pirate_Bay_Owners_Detail_Business_Plan</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>10014945206</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Scott Peterson: Variance, Thy Name is Ambiguity</title><link>http://themonkeysgrinder.blogspot.com/2009/06/variance-thy-name-is-ambiguity.html</link><description>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:130%;" &gt;Previously&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;On This Blog...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;"I love you, Generic Variance, and I want your babies &lt;a href="http://themonkeysgrinder.blogspot.com/2009/02/c-4-is-now.html"&gt;RIGHT NOW!&lt;/a&gt;"&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;"I think there's &lt;a href="http://themonkeysgrinder.blogspot.com/2009/04/whos-afraid-of-generic-variance.html"&gt;&lt;span style="font-style: italic;"&gt;something you should know&lt;/span&gt;&lt;/a&gt; about Generic Variance..."&lt;br /&gt;&lt;br /&gt;"&lt;a href="http://themonkeysgrinder.blogspot.com/2009/05/further-generic-variance-thoughts.html"&gt;I can change him!&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:130%;" &gt;And now, the thrilling continuation...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I've just sent my recommendation to the ECMA 335 committee regarding the generic variance problem. I present it here for your reading pleasure:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Quick Recap&lt;/h3&gt;&lt;br /&gt;The following is an example of an ambiguous circumstance involving generic variance, the very sort over which we have all lost so much sleep:&lt;br /&gt;&lt;br /&gt;.class interface abstract I&amp;lt;+T&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method public abstract virtual instance !T Foo ()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.class A {}&lt;br /&gt;.class B extends A {}&lt;br /&gt;.class C extends A {}&lt;br /&gt;&lt;br /&gt;.class X implements I&amp;lt;class B&amp;gt;, I&amp;lt;class C&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class B I[B].Foo () { .override I&amp;lt;class B&amp;gt;::Foo }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class C I[C].Foo () { .override I&amp;lt;class C&amp;gt;::Foo }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Meanwhile, in some unsuspecting method...&lt;br /&gt;I&amp;lt;A&amp;gt; i = new X ();&lt;br /&gt;A a = i.Foo (); // AMBIGUITY!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Give a Runtime A Bone&lt;/h3&gt;&lt;br /&gt;To disambiguate such situations, we introduce a new custom attribute in the BCL. For the sake of example, let's call it System.PreferredImplementationAttribute. The PreferredImplementationAttribute is applied to a type and indicates which implementation should be selected by the runtime to resolve variance ambiguities. Our above definition of the type X would now look like this:&lt;br /&gt;&lt;br /&gt;.class X implements I&amp;lt;class B&amp;gt;, I&amp;lt;class C&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .custom instance void System.PreferredImplementationAttribute::.ctor (class System.Type) = { type(I&amp;lt;class C&amp;gt;) }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class B I[B].Foo () { .override I&amp;lt;class B&amp;gt;::Foo }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class C I[C].Foo () { .override I&amp;lt;class C&amp;gt;::Foo }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;New Rules&lt;/h3&gt;&lt;br /&gt;With the addition of this attribute, the runtime requires that any type defined in an assembly targeting the 335 5th edition runtime which implements multiple interfaces that are variants of a common generic interface MUST specify ONE AND ONLY ONE PerferredImplementationAttribute for EACH of the potentially ambiguous common interfaces, and that each such specification of a PerferredImplementationAttribute must reference an interface implemented by the type that is a legal variant of the ambiguous common interface. In other words, all possible ambiguities MUST be disambiguated by the use of PreferredImplementationAttribute custom attributes. If a type does not satisfy these rules, the runtime MUST throw a System.TypeLoadException.&lt;br /&gt;&lt;br /&gt;As this rule only applies to assemblies targeting the new version of the runtime, old images will continue to execute without issue. If the committee prefers, the resolution of ambiguities in old types may remain unspecified, or alphabetical priority could be codified in the spec to standardize such behavior. I would be fine leaving it unspecified.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Custom Attributes vs. Metadata&lt;/h3&gt;&lt;br /&gt;Ideally, I feel disambiguation information belongs in the type metadata structure rather than a custom attribute. If the committee feels that amending the metadata specification is tenable, I would recommend doing so (though I don't have any thoughts at this time on the exact logical or physical nature of such an amendment). If, on the other hand, changing the metadata spec at this point in the game is not feasible, then a custom attribute will just have to do. I see the addition of one custom attribute type to the Base Class Library as entirely justified.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;An Aside to Our Friends on the 334 Committee&lt;/h3&gt;&lt;br /&gt;As a note to language designers targeting the runtime, I personally would consider it obnoxious if developers where burdened with the manual application of such a custom attribute. C# and other languages would do well to prohibit the direct use of the custom attribute, favoring instead a special syntax to denote the preferred implementation (the "default" keyword comes to mind in the case of C#). If this committee changes the type metadata spec to include preferred implementation information (and does not introduce a custom attribute type for that purpose), then special language syntaxes will be necessary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;An Alternative&lt;/h3&gt;&lt;br /&gt;In the interest of completeness, I will describe an alternate (if similar) approach to the ambiguity resolution problem. Rather than annotate types to indicate which of their interface implementations will satisfy ambiguous calls, the preferred implementation could be denoted on a per-member basis. Referring again to our original type X, this solution would modify that type thusly:&lt;br /&gt;&lt;br /&gt;.class X implements I&amp;lt;class B&amp;gt;, I&amp;lt;class C&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class B I[B].Foo () { .override I&amp;lt;class B&amp;gt;::Foo }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class C I[C].Foo () {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.override I&amp;lt;class C&amp;gt;::Foo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.custom instance void System.PreferredImplementationAttribute::.ctor ()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The member I[C].Foo is annotated with the System.PreferredImplementationAttribute, indicating that it will be selected by the runtime to fulfill otherwise ambiguous calls to I&amp;lt;T&amp;gt;.Foo. Note that in this solution the constructor to the PerferredImplementationAttribute type is parameterless. The runtime ensures that for EACH of the members of an interface which is the common variant of two or more of the interfaces implemented by a type, ONE AND ONLY ONE of the implementations for that member is flagged as "preferred."&lt;br /&gt;&lt;br /&gt;Per-member preference definition affords developers more control but costs runtime implementers time, effort, and simplicity. I also don't envision many scenarios when developers would desire per-member control over implementation preference. I personally find this approach less tasteful than the per-interface solution but I mention it here, as I said, for completeness.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;One More Thing...&lt;/h3&gt;&lt;br /&gt;There remains a situation on which there are varied opinions:&lt;br /&gt;&lt;br /&gt;.class interface abstract I&amp;lt;+T&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method public abstract virtual instance !T Foo ()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.class A {}&lt;br /&gt;.class B extends A {}&lt;br /&gt;&lt;br /&gt;.class X implements I&amp;lt;class A&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class A I[A].Foo () { .override I&amp;lt;class A&amp;gt;::Foo }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.class Y extends X implements I&amp;lt;class B&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .method virtual instance class B I[B].Foo () { .override I&amp;lt;class B&amp;gt;::Foo }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Meanwhile, in some unsuspecting method...&lt;br /&gt;I&amp;lt;A&amp;gt; i = new Y ();&lt;br /&gt;A a = i.Foo ();&lt;br /&gt;&lt;br /&gt;In this situation I&amp;lt;A&amp;gt;::Foo is called on an object of type Y. There is an implementation of I&amp;lt;A&amp;gt;::Foo in Y's type hierarchy (X::I[A].Foo), but there is also an available implementation which is a legal variant of I&amp;lt;A&amp;gt; in Y itself (Y:I[B].Foo). Does the runtime favor the exact implementation, or the more derived variant implementation? I don't have strong feelings on the matter, but my slight preference is for favoring the exact implementation.&lt;br /&gt;&lt;br /&gt;The runtime is deciding on behalf of the developer which implementation is most appropriate. It could be argued that an exact implementation, wherever it is to be found the type hierarchy, is more appropriate than a variant implementation.&lt;br /&gt;&lt;br /&gt;Also - and this is an implementation detail which should not outweigh other considerations but may be useful to keep in mind if all other things are equal - Mono stores a type's implemented interfaces in a binary tree, meaning that finding an exact implementation is an O(log n) worst-case operation, whereas finding a legal variant interface among a type's implemented interfaces is an O(n) worst-case operation (all interfaces must be examined to see if a legal variant exists among them). I haven't heard of any way to do O(log n) (or better) lookup of variants. With such popular types as IEnumerable`1 becoming variant, the superior time complexity could make a difference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3573606178901893990-8862156145792846035?l=themonkeysgrinder.blogspot.com'/&gt;&lt;/div&gt;</description><pubDate>Wed, 01 Jul 2009 06:23:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3573606178901893990.post-8862156145792846035</guid><author>Scott_x0020_Peterson@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>10008874975</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Miguel de Icaza: Mono</title><link>http://tirania.org/blog/archive/2009/Jun-29.html</link><description>
	&lt;center&gt;
	&lt;img src="http://tirania.org/tmp/monotouch1.png"&gt;
	&lt;/center&gt;

	&lt;p&gt;
	
	&lt;center&gt;
	&lt;img src="http://tirania.org/tmp/monotouch2.png"&gt;
	&lt;/center&gt;
</description><pubDate>Mon, 29 Jun 2009 09:52:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/Jun-29.html</guid><author>Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>9984950796</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Alan McGovern: Mono.Nat 1.0.2</title><link>http://monotorrent.blogspot.com/2009/06/mononat-102.html</link><description>I just tagged and released &lt;a href="http://projects.qnetp.net/news/show/4"&gt;Mono.Nat 1.0.2&lt;/a&gt; . It's a fairly minor bugfix release which addresses a number of minor issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added workaround for certain versions of miniupnpd which incorrectly advertise their available services (bug has been reported upstream)&lt;/li&gt;&lt;li&gt;Fixed some other minor issues with routers reporting incorrect services.&lt;/li&gt;&lt;li&gt;Added extra API to make it easy to log the full handshake/request process to help diagnose issues&lt;/li&gt;&lt;li&gt;Stopping and Starting discovery will rediscover all available devices correctly&lt;/li&gt;&lt;li&gt;Full support for computers with multiple network cards on multiple subnets&lt;/li&gt;&lt;li&gt;Rewrote the internals to ensure that the asynchronous API is 100% asychronous - prevents calls to BeginXXX blocking on some slower routers.&lt;/li&gt;&lt;/ul&gt; Precompiled binaries and sourcecode can be downloaded &lt;a href="http://projects.qnetp.net/projects/list_files/mono-nat"&gt;here&lt;/a&gt; and packages will soon be winding their way to a repository near you.&lt;br /&gt;&lt;br /&gt;If you want to forward ports automagically on a upnp empowered router near you, this is the library for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29153919-1155520668978050146?l=monotorrent.blogspot.com'/&gt;&lt;/div&gt;</description><pubDate>Mon, 29 Jun 2009 15:20:02 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29153919.post-1155520668978050146</guid><author>Alan_x0020_McGovern@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>9995234983</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>VirtualBox 3.0 Beta 2 Brings SMP Performance Boosts</title><link>http://feedproxy.google.com/~r/Phoronix/~3/_24kjDYkudM/vr.php</link><description>Earlier this month VirtualBox 3.0 Beta 1 was introduced by Sun Microsystems, which brought OpenGL 2.0 support for virtualized guests along with SMP support for guest operating systems. There were other notable changes present too...
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-BB3u3pX3ezvAVuI0GiGe6mwwd0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-BB3u3pX3ezvAVuI0GiGe6mwwd0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-BB3u3pX3ezvAVuI0GiGe6mwwd0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-BB3u3pX3ezvAVuI0GiGe6mwwd0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Phoronix/~4/_24kjDYkudM" height="1" width="1"/&gt;</description><pubDate>Wed, 24 Jun 2009 20:37:00 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=NzM0OA</guid><source url="http://www.phoronix.com/rss.php">Phoronix</source><ng:postId>9935442029</ng:postId><ng:feedId>1490133</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Introducing Tinder, an XMPP object implementation library</title><link>http://www.igniterealtime.org/community/blogs/ignite/2009/06/22/introducing-tinder-an-xmpp-object-implementation-library</link><description>&lt;!-- [DocumentBodyStart:e0c77ca1-5713-413e-a99f-c359f8e7ec7b] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;We've just released a new project, named Tinder. Tinder is a new Java based XMPP library, providing an implementation for XMPP stanzas and components.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tinders origins lie in code that's shared between Jive Software's Openfire and Whack implementations. The implementation that's provided in Tinder hasn't been written again from scratch. Instead, code has been moved from the original projects into Tinder, preserving al of the existing features and functionality. Most of the code that's now in Tinder is based on the &lt;span style="font-family: courier new,courier;"&gt;org.xmpp&lt;/span&gt; package implementation that previously existed in Openfire and Whack. This is the code that defines classes such as Packet, JID, IQ, Component and their extensions. Additionally, some multi-purpose code (such as the DataForm and Result Set Management implementations have been moved to Tinder as well.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Why a new project?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Parts of the code of Openfire are useful in other contexts than that of an XMPP server implementation. Developers might, for instance, want to use the XMPP stanza implementation within other projects. Having to include Openfire as a dependency of such a project is quite a bit of overkill. In such an example, it would be useful to have a small project that you can include, that offers you a lightweight XMPP object implementation, without the rest of the features that Openfire offers. Enter Tinder. Tinder will allow developers to re-use parts of Openfire, without having to include Openfire itself.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There's other benefits to Tinder though:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tinder will replace some most of the duplicate code that's currently shared in Openfire, Whack and ConnectionManager projects. Removing duplicate code will make it easier to maintain and develop these projects. By delegating the implementation and maintenance of the low-level XMPP implementation, Openfire, Whack and other developers will be able to focus on the development that adds value to their project.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On the flip-side of that medal, you can argue that the 'core' code that will make up Tinder deserves a bit of dedicated development attention (unit tests, bug-tracking, stuff like that). This would benefit any attempt to really fine-tune the code, for example for high-performance tuning. Currently, the code is a bit put in the shadows of the other projects (of which they are part of).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So, will this replace Smack (the library that provides the base of Spark)?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;No, definitely not. Smack offers a full-fledged XMPP client implementation, while Tinder only defines some XMPP building blocks. Tinder provides some basic objects on which a client library such as Smack could be build. However, Smack does not share the same code base as Openfire and Whack do. It's therefor unlikely that Tinder and Smack will be merged in the foreseeable future - there's simply to much difference.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;What's next?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We've wrapped up a &lt;a class="jive-link-wiki-small" href="http://www.igniterealtime.org/community/docs/DOC-1844"&gt;initial roadmap&lt;/a&gt;, in which we capture the first steps of the development of Tinder. As always, you're invited to contribute. We're looking forward to hear your suggestions, thoughts and ideas. If you're interested, you can find more information on the new &lt;a class="jive-link-community-small" href="http://www.igniterealtime.org/community/community/developers/tinder"&gt;Tinder-related community space&lt;/a&gt; and &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/projects/tinder"&gt;project page&lt;/a&gt; that have been opened on IgniteRealtime.org.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:e0c77ca1-5713-413e-a99f-c359f8e7ec7b] --&gt;</description><pubDate>Mon, 22 Jun 2009 23:42:32 GMT</pubDate><guid isPermaLink="false">http://www.igniterealtime.org/community/blogs/ignite/2009/06/22/introducing-tinder-an-xmpp-object-implementation-library</guid><author>guus.der.kinderen@gmail.com</author><source url="http://www.igniterealtime.org/community/blogs/ignite/feeds/posts">Ignite Realtime Blog</source><ng:postId>9912649968</ng:postId><ng:feedId>1674505</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>MacRumors: AIM and Beejive Instant Messaging iPhone Apps Updated with Push Notifications</title><link>http://www.macrumors.com/2009/06/22/aim-and-beejive-instant-messaging-iphone-apps-updated-with-push-notifications/</link><description>   
Two major instant messaging clients (AIM and Beejive) for the iPhone and iPod Touch were updated tonight with support for Push notifications.  Instant messaging was always cited as one of the major reasons the iPhone and iPod Touch needed some form o...
</description><pubDate>Tue, 23 Jun 2009 03:34:37 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1515159/9914759471</guid><source url="http://www.macrumors.com/iphone/iphone.xml">MacRumors iPhone Blog</source><ng:postId>9914759471</ng:postId><ng:feedId>1515159</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Review: iPhone 3GS lives up to its speedy claims</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/l7DDss7nJyQ/iphone-3g-s-review.ars</link><description>&lt;a href="http://arstechnica.com/apple/reviews/2009/06/iphone-3g-s-review.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/06/iphone_3gs_review-thumb-230x130-6495-f.jpg" alt="companion photo for Review: iPhone 3GS lives up to its speedy claims" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Right on schedule, Apple has introduced the third iteration of the iPhone to the public. The new model, called the iPhone 3GS, is much like the iPhone 3G introduced in 2008 but, as Apple says, the "S" stands for speed. There are a number of other improvements made to the iPhone 3GS that differentiate it from its less-speedy sibling, but the one thing that will stick out in any phone owner's mind after playing with one will definitely be its zip.&lt;/p&gt;

&lt;p&gt;We have already &lt;a href="http://arstechnica.com/apple/reviews/2009/06/hands-on-review-iphone-os-30-chock-full-of-changes.ars"&gt;reviewed the large majority of iPhone OS 3.0&lt;/a&gt; that comes with the iPhone 3GS (and is available for all past iPhone and iPod touch models), so this review will mostly focus on changes to the device that differentiate it from previous versions. &lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/apple/reviews/2009/06/iphone-3g-s-review.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/4HcEwozxmZrhsRXwio9pGSKOP_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/4HcEwozxmZrhsRXwio9pGSKOP_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/4HcEwozxmZrhsRXwio9pGSKOP_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/4HcEwozxmZrhsRXwio9pGSKOP_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=l7DDss7nJyQ:08_iHbHxm64:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=l7DDss7nJyQ:08_iHbHxm64:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=l7DDss7nJyQ:08_iHbHxm64:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?i=l7DDss7nJyQ:08_iHbHxm64:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=l7DDss7nJyQ:08_iHbHxm64:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=l7DDss7nJyQ:08_iHbHxm64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/arstechnica/index/~4/l7DDss7nJyQ" height="1" width="1"/&gt;</description><pubDate>Tue, 23 Jun 2009 04:38:53 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/apple/reviews/2009/06/iphone-3g-s-review.ars</guid><author>jacqui@arstechnica.com (Jacqui Cheng, Clint Ecker)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9915428577</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Jail sentence for hentai owner raises First Amendment issues</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/e16TFrPkHPY/jail-sentence-for-hentai-owner-raises-first-amendment-issues.ars</link><description>&lt;a href="http://arstechnica.com/tech-policy/news/2009/06/jail-sentence-for-hentai-owner-raises-first-amendment-issues.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/06/tentacle-girl-ars-thumb-230x130-6424-f.jpg" alt="companion photo for Jail sentence for hentai owner raises First Amendment issues" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Under the Bush administration, obscenity laws went through a period of revival and assumed a more prominent position in federal law enforcement efforts. This largely began in 2005 when the FBI assembled a team to actively search for "deviant porn" as part of an anti-obscenity initiative that then Attorney General Gonzales and FBI Director Robert Mueller described as "one of the top priorities" of the Bureau. Cases brought before the courts as a result of the trend towards stronger enforcement of obscenity laws has led to some troubling legal precedents.&lt;/p&gt;

&lt;p&gt;In a recent example &lt;a href="http://www.wired.com/threatlevel/2009/06/email-obscenity/"&gt;reported by Wired&lt;/a&gt;, an appeals court has upheld an obscenity conviction against defendant Dwight Whorley for possession of hentai, pornographic Japanese comic books. Whorley was also convicted of a second obscenity count for writing an e-mail describing a sexual fantasy that was regarded as deviant by a jury. In a dissenting opinion, judge Roger Gregory argued that the court's decision has troubling implications for freedom of expression and is not consistent with decisions that have been issued by the Supreme Court.&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/tech-policy/news/2009/06/jail-sentence-for-hentai-owner-raises-first-amendment-issues.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/ywm0Ebza9MfdZ7kHtkE5AafFqZo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/ywm0Ebza9MfdZ7kHtkE5AafFqZo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/ywm0Ebza9MfdZ7kHtkE5AafFqZo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/ywm0Ebza9MfdZ7kHtkE5AafFqZo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=e16TFrPkHPY:7L-Lb9GdL5o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=e16TFrPkHPY:7L-Lb9GdL5o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=e16TFrPkHPY:7L-Lb9GdL5o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=e16TFrPkHPY:7L-Lb9GdL5o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=e16TFrPkHPY:7L-Lb9GdL5o:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=e16TFrPkHPY:7L-Lb9GdL5o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/e16TFrPkHPY" height="1" width="1"/&gt;</description><pubDate>Thu, 18 Jun 2009 14:39:02 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/tech-policy/news/2009/06/jail-sentence-for-hentai-owner-raises-first-amendment-issues.ars</guid><author>segphault@arstechnica.com (Ryan Paul)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9863713791</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Researchers conclude piracy not stifling content creation</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/gfSV7oMuv58/researchers-conclude-piracy-not-stifling-content-creation.ars</link><description>&lt;a href="http://arstechnica.com/media/news/2009/06/researchers-conclude-piracy-not-stifling-content-creation.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/02/copyright_blur-thumb-230x130-2513-f.jpg" alt="companion photo for Researchers conclude piracy not stifling content creation" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;
File-sharing, to the (very large) extent that it involves copyright infringement, has affected the music business.  But, as a pair of academic researchers happily point out in a working paper they've posted online, copyright law was never meant to protect the music business in the first place&amp;#8212;instead, it is intended to foster creative production in the arts, which happen to include music.  As such, they argue it's worth analyzing the deeper question of whether file sharing is putting a damper on music creation.  Their conclusion is that this is a much more complicated question, but the answer seems to be "probably not."
&lt;/p&gt;
&lt;p&gt;
Some academic fields rely on the use of working papers&amp;#8212;complete drafts of potential publications&amp;#8212;to solicit feedback on the basic arguments and analyses used in the work-in-progress.  These days, that simply involves posting it on the Internet for all to see; you can have a &lt;a href="http://www.hbs.edu/research/pdf/09-132.pdf"&gt;look at the document&lt;/a&gt; yourself.  There are clearly a few places where the authors could polish up their arguments, but the paper makes a compelling case that the relationship between file-sharing and copyright law is a complex one.  
&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/media/news/2009/06/researchers-conclude-piracy-not-stifling-content-creation.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/dkJSmAxiJENYAKZe4sXRj_ryrQM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/dkJSmAxiJENYAKZe4sXRj_ryrQM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/dkJSmAxiJENYAKZe4sXRj_ryrQM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/dkJSmAxiJENYAKZe4sXRj_ryrQM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=gfSV7oMuv58:B1mqMvBG7D8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=gfSV7oMuv58:B1mqMvBG7D8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=gfSV7oMuv58:B1mqMvBG7D8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=gfSV7oMuv58:B1mqMvBG7D8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=gfSV7oMuv58:B1mqMvBG7D8:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=gfSV7oMuv58:B1mqMvBG7D8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/gfSV7oMuv58" height="1" width="1"/&gt;</description><pubDate>Thu, 18 Jun 2009 18:41:41 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/media/news/2009/06/researchers-conclude-piracy-not-stifling-content-creation.ars</guid><author>jtimmer@arstechnica.com (John Timmer)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9865774374</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>IR Remote Control Signal Capture and Visualization</title><link>http://www.instructables.com/id/IR-Remote-Control-Signal-Capture-and-Visualization/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F0D/I441/FV40B3NX/F0DI441FV40B3NX.SMALL.jpg" align="left" hspace="10"&gt;This is a device that can capture the IR signal from most remote controls and send the information via serial port to a computer for display. It provides all the vital information such as on/off durations, pulse counts, and carrier frequency. The captured information can be use to aid development of...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/%3F%3FPossum/"&gt;??Possum&lt;/a&gt;</description><pubDate>Tue, 26 May 2009 11:29:56 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9623860700</guid><author>??Possum</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9623860700</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>XMPP Roundup 10</title><link>http://blog.xmpp.org/index.php/2009/06/xmpp-roundup-10/</link><description>&lt;p&gt;[Reporters: Nicolas Vérité and Peter Saint-Andre]&lt;/p&gt;
&lt;p&gt;For those who love round numbers, welcome to the tenth edition of the XMPP Roundup, our semi-regular review of news and events in the XMPP community. Since our &lt;a href='http://blog.xmpp.org/index.php/2009/05/xmpp-roundup-9/'&gt;last roundup&lt;/a&gt; on May 11, here&amp;#8217;s what&amp;#8217;s been happening&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Google Wave&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Google has announced the existence of &lt;a href='http://www.waveprotocol.org/'&gt;Google Wave&lt;/a&gt;, an early-stage technology for real-time interaction that will incorporate aspects of IM, email, wikis, and other collaboration techniques. The technology for federating different Wave instances is pure XMPP, so the developer community is watching this project quite closely.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Minbif&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://symlink.me/wiki/minbif"&gt;Minbif&lt;/a&gt; is an IRC gateway to IM networks which lets the user connect to Jabber (and many proprietary legacy IM systems), through IRC command lines. It is release under the GPLv2 license, in version 1.0alpha as the time of this writing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Utterance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nolan Darilek has announced the development of &lt;a href="http://gitorious.org/utterance"&gt;Utterance&lt;/a&gt;, an XMPP microblog transport, written in Ruby under a BSD license.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;modular_muc&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cestari.info/"&gt;Eric Cestari&lt;/a&gt; wrote a &lt;a href="http://github.com/cstar/modular_muc/tree/master"&gt;Multi-User Chat (MUC) module&lt;/a&gt; in ejabberd that is as modular as the PubSub module.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;exmpp&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;ProcessOne has launched its &lt;a href="https://support.process-one.net/doc/display/EXMPP/exmpp+home"&gt;exmpp&lt;/a&gt; Erlang XMPP library under the Erlang Public License (EPL), in its newly opened &lt;a href="http://www.process-one.net/en/labs/"&gt;Labs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hemlock&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hemlock-kills.com/"&gt;Hemlock&lt;/a&gt; is an opensource soon-to-be-released Flash XMPP framework.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ask me&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://askme.im/"&gt;http://askme.im/&lt;/a&gt; has a set of XMPP bots that cover quotes, jokes, movie reviews, stock prices and daliy horoscopes, and much more&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Jabbim&amp;#8217;s URL shorting service&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jabbim community has released a &lt;a href="http://dev.jabbim.cz/?p=65"&gt;new URL shortening service&lt;/a&gt; at &lt;a href="xmpp:shorty@jabbim.com"&gt;xmpp:shorty@jabbim.com&lt;/a&gt;: just add it to your roster and start chatting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Members of the XMPP community have started work on two new initiatives: an open framework for XMPP protocol testing and a website for information about the XMPP network. To participate, join the &lt;a href='http://mail.jabber.org/mailman/listinfo/interop'&gt;interop@xmpp.org&lt;/a&gt; discussion list or the &lt;a href='http://mail.jabber.org/mailman/listinfo/operators'&gt;operators@xmpp.org&lt;/a&gt; discussion list, respectively. Expect to see more work on these projects in the coming months!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protocols&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The big news here is that the core Jingle specifications have finally advanced from Experimental to Draft status (version 1.0)! We&amp;#8217;ll post more about this in the near future. The specs that have moved forward are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0166.html"&gt;XEP-0166: Jingle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0167.html"&gt;XEP-0167: Jingle RTP Sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0176.html"&gt;XEP-0176: Jingle ICE-UDP Transport Method&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0177.html"&gt;XEP-0177: Jingle Raw UDP Transport Method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another important specification to advance from Experimental to Draft is &lt;a href='http://xmpp.org/extensions/xep-0237.html'&gt;Roster Versioning&lt;/a&gt;. This technology will make it much more efficient for IM clients to log into XMPP servers, since the server can inform the client if the user&amp;#8217;s contact list has not changed since the client last logged in (or send a small diff if it has changed). This is especially important in mobile applications such as cell phones and PDAs. The roster versioning technology is one of the mobile optimizations we are working on, and will be incorporated into the revisions to RFC 3921 within the IETF&amp;#8217;s newly re-formed &lt;a href='http://tools.ietf.org/wg/xmpp/'&gt;XMPP Working Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition, the &lt;a href='http://xmpp.org/council/'&gt;XMPP Council&lt;/a&gt; has been working to advance more XEPs from Draft to Final. The latest specification to be so honored are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href='http://xmpp.org/extensions/xep-0138.html'&gt;XEP-0138: Stream Compression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://xmpp.org/extensions/xep-0199.html'&gt;XEP-0199: XMPP Ping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, the Council has also been performing some &amp;#8220;spring cleaning&amp;#8221; by officially obsoleting XEP-0003: Proxy Accept Socket Service, XEP-0011: Jabber Browsing, XEP-0022: Message Events, XEP-0023: Message Expiration, XEP-0025: Jabber HTTP Polling, XEP-0090: Legacy Entity Time, and XEP-0091: Legacy Delayed Delivery.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Again, 2009 seems to be a very active year for XMPP technologies.&lt;/p&gt;
</description><pubDate>Thu, 11 Jun 2009 21:13:40 GMT</pubDate><guid isPermaLink="false">http://blog.xmpp.org/?p=495</guid><comments>http://blog.xmpp.org/index.php/2009/06/xmpp-roundup-10/#comments</comments><author>nyco</author><source url="http://blog.xmpp.org/?feed=rss2">Extended Conversation</source><ng:postId>9789917563</ng:postId><ng:feedId>1201572</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Hints &amp; Tips – Link to a specific track time</title><link>http://www.spotify.com/blog/archives/2009/06/12/hints-tips-%e2%80%93-link-to-a-specific-track-time/</link><description>&lt;p&gt;Here&amp;#8217;s a little feature that you may not know about. You can link directly to a specific time in a track by adding, for example &amp;#8220;#1:31&amp;#8243; to the end of a URI, where 1:31 is the time you want to link to.  &lt;strike&gt;Just a note that this feature only works with Spotify URIs, HTTP links do not support it.&lt;/strike&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a full example, &lt;a href="spotify:track:2QO8cnnFW6khDuAuUAySeV#3:04"&gt;spotify:track:2QO8cnnFW6khDuAuUAySeV#3:04&lt;/a&gt; will link to what I think is the best part of this song.&lt;/p&gt;
&lt;p&gt;So if you&amp;#8217;ve ever wanted to send your friend a track so he could hear only the great guitar riff or fabulous chorus, now you can.  &lt;/p&gt;
&lt;p&gt;Update: As I&amp;#8217;ve mentioned earlier, you learn something new every day.  A user points out in the comments that this feature does work with HTTP links if you use &amp;#8220;%23&amp;#8243; in place of the &amp;#8220;#&amp;#8221; symbol.  So my example would look like this: &lt;a href="http://open.spotify.com/track/2QO8cnnFW6khDuAuUAySeV%233:04"&gt;http://open.spotify.com/track/2QO8cnnFW6khDuAuUAySeV%233:04&lt;/a&gt;. Thanks ditech!&lt;/p&gt;
</description><pubDate>Fri, 12 Jun 2009 08:19:47 GMT</pubDate><guid isPermaLink="false">https://www.spotify.com/blog/archives/2009/06/12/hints-tips-%e2%80%93-link-to-a-specific-track-time/</guid><comments>http://www.spotify.com/blog/archives/2009/06/12/hints-tips-%e2%80%93-link-to-a-specific-track-time/#comments</comments><author>Andres Sehr</author><source url="https://www.spotify.com/blog/feed/">Spotify</source><ng:postId>9794649108</ng:postId><ng:feedId>3683532</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to convert a IKEA Jonisk lamp with LEDs</title><link>http://www.instructables.com/id/How-to-convert-a-IKEA-Jonisk-lamp-with-LEDs/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FHO/4AE6/FVTVXKSO/FHO4AE6FVTVXKSO.SMALL.jpg" align="left" hspace="10"&gt;I bought a IKEA Jonisk lamp to have in my living room, but when i powered the lamp up with a 60W bulb it become hot as ****. I started to figure out how to convert it to a LED-lamp instead.&lt;br/&gt;
I found a company that sells high powered LED modules (www.leds.de). I ordered 3 SEOUL P5 RGB LED that already...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/lond/"&gt;lond&lt;/a&gt;</description><pubDate>Thu, 11 Jun 2009 23:24:28 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9800352888</guid><author>lond</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9800352888</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>En kort guide til alternativ medisin</title><link>http://feedproxy.google.com/~r/stian/shared/~3/mcpH2TPwaOg/</link><description>&lt;p&gt;Bloggen &lt;a href="http://www.dcscience.net/"&gt;DC’s Improbable Science&lt;/a&gt; har postet en fin &lt;a href="http://www.dcscience.net/?page_id=733"&gt;oversikt over alternative behandlingsformer&lt;/a&gt;. Denne inneholder vel stort sett det du trenger å vite.&lt;/p&gt;
&lt;p&gt;Og nei, denne er ikke postet under kategorien humor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Homeopathy&lt;/strong&gt;: giving patients medicines that contain no medicine whatsoever.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herbal medicine&lt;/strong&gt;: giving patients an unknown dose of an ill-defined drug, of unknown effectiveness and unknown safety.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acupuncture&lt;/strong&gt;: a rather theatrical placebo, with no real therapeutic benefit in most if not all cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chiropractic&lt;/strong&gt;: an invention of a 19th century salesmen, based on nonsensical principles, and shown to be no more effective than other manipulative therapies, but less safe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reflexology&lt;/strong&gt;: plain old foot massage, overlaid with utter nonsense about non-existent connections between your feet and your thyroid gland.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nutritional therapy&lt;/strong&gt;: self-styled ‘nutritionists’ making untrue claims about diet in order to sell you unnecessary supplements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spiritual healing&lt;/strong&gt;: tea and sympathy, accompanied by arm-waving.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reiki&lt;/strong&gt;: ditto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Angelic Reiki&lt;/strong&gt;: The same but with added “Angels, Ascended Masters and Galactic Healers”.  Excellent for advanced fantasists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colonic irrigation&lt;/strong&gt;: a rectal obsession that fails to rid you of toxins which you didn’t have in the first place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anthroposophical medicine&lt;/strong&gt;: followers of the mystic barmpot, Rudolf Steiner, for whom nothing whatsoever  seems to strain credulity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alternative diagnosis&lt;/strong&gt;: kinesiology, iridology, vega test etc,  various forms of fraud, designed to sell you cures that don’t work  for problems you haven’t got.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Any alternative ‘therapist’ who claims to cure AIDS or malaria&lt;/strong&gt;: agent of culpable homicide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Libel&lt;/strong&gt;: A very expensive remedy, to be used only when you have no evidence. Appeals to alternative practitioners because truth is irrelevant.&lt;/li&gt;
&lt;img src="http://feeds2.feedburner.com/~r/blogtjomlidcom/~4/hNdgW07XBzo" height="1" width="1"&gt;&lt;/ul&gt;&lt;img src="http://feeds2.feedburner.com/~r/stian/shared/~4/mcpH2TPwaOg" height="1" width="1"/&gt;</description><pubDate>Wed, 03 Jun 2009 20:32:11 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/66b86d1130942304</guid><author>Gunnar Roland Tjomlid</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>9699382695</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>My Tesla's radiant energy collector (open project)</title><link>http://www.instructables.com/id/My-Teslas-radiant-energy-collector-open-project/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FG7/ZYI5/FVDC32US/FG7ZYI5FVDC32US.SMALL.jpg" align="left" hspace="10"&gt;I did this experiment in February 2009. This device was invented to detect / collect &amp;quot;radiant energy&amp;quot; and convert it into electricity it was patented by Tesla in 1905 original patent:  &lt;a  href="http://keelynet.com/tesla/00685958.pdf"&gt;http://keelynet.com/tesla/00685958.pdf&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
My device  not collect  &amp;quot;radiant energy&amp;quot;, it collect st...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/alessiof76/"&gt;alessiof76&lt;/a&gt;</description><pubDate>Tue, 02 Jun 2009 09:02:06 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9686529018</guid><author>alessiof76</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9686529018</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Pep Rally</title><link>http://xkcd.com/588/</link><description>&lt;img src="http://imgs.xkcd.com/comics/pep_rally.png" title="You know, pep rallies weirded me out in high school, and they've only gotten creepier in retrospect." alt="You know, pep rallies weirded me out in high school, and they've only gotten creepier in retrospect." /&gt;</description><pubDate>Mon, 25 May 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/588/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>9612458747</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Release 0.8.1: Crazy Delicious</title><link>http://feedproxy.google.com/~r/osxbmc/~3/oG5ARah-yx4/</link><description>&lt;!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	--&gt;&lt;div style='float:left'&gt;&lt;table&gt; &lt;td&gt;&lt;iframe src='http://digg.com/api/diggthis.php?w=new&amp;amp;u=http://elan.plexapp.com/2009/05/22/release-081-crazy-delicious/&amp;amp;t=Release+0.8.1%3A+Crazy+Delicious&amp;amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Remember how when Windows 3.0 came out, it really sucked, and it wasn&amp;#8217;t until 3.1 that Microsoft got things right? Well, I&amp;#8217;d like to think of this release (download &lt;a href="http://www.plexapp.com/plexstable.shtml"&gt;here&lt;/a&gt;) as being the &amp;#8220;Windows 3.1&amp;#8243; release of Plex. We&amp;#8217;ve fixed a lot of issues, and this version should be much more stable than the previous one. Additionally, the people who were staying with v0.7.13 because of issues with BluRay rips in subsequent versions can now download this version &lt;a href="http://forums.plexapp.com/index.php?s=&amp;#038;showtopic=5354&amp;#038;view=findpost&amp;#038;p=40891"&gt;without fear&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Idle CPU reduced greatly. On an iMac we went from 24% to around 9.8%. On a 1.83GHz Mini we went from 38% to 16%. Al Gore is happy.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Hang when playing WebKit content after 5.1 content.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: A few issues causing App Store/plug-ins to disappear.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Hang on exit (when Media Server Scrobbler was enabled).
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Cannot play/browse AC/DC (and other artists with funky names) from the iTunes library. Heavy metal fans rejoice!
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Scrobbling plays of AAC files to the Plex Media Server wasn&amp;#8217;t working.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Crash on start when Plex Media Server was run on a computer without Plex.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Intermittant lack of audio when starting 5.1 videos when background music/themes was enabled. (We also disabling the fading, which was not helping.)
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: VC-1 apparent regression in ffmpeg 0.5 which caused much higher CPU usage and related problems. Ryan and I resolved it by reverting to an earlier version of the codec. Thanks to Peter for bringing the issue to our attention, and to Aaron for help in tracking it down.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: View Slideshow context menu items weren&amp;#8217;t enabled for top-level photo plug-ins.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Jay and Isaac tweaked the default settings for IMDB to make sure the best quality posters are returned.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: James made some tweak to Now Playing. The flip time is now configurable in the Advanced Settings Cocoa UI (Make it flip every 5 seconds! Make your child and/or pets motion sick!) Additionally, the background is more in line with look of MediaStream.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: We&amp;#8217;ve defaulted the automatic audio stream selection to false, as we think that default makes more sense (Thanks, Isaac! You can turn it off manually yourself in the video player preferences.) We also fixed an issue with the auto-selection of subtitles if the auto-selection of audio streams was disabled.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: We pulled the latest libdcr code which decodes RAW images (it fixes some pink-hue issues with newer cameras).
&lt;li&gt;&lt;strong&gt;&lt;a href="http://forums.plexapp.com/index.php?showtopic=6164&amp;#038;st=0&amp;#038;gopid=38763&amp;#entry38763"&gt;FIX&lt;/a&gt;&lt;/strong&gt;: As forum user &amp;#8220;someone&amp;#8221; reported, the German strings were botched in the previous version.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Sébastien Vaast kindly send us updates to the French translation.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: We fixed a possible crash with Javascript seek bars in site profiles.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: Relative coordinates on &amp;#8220;thumb&amp;#8221; seek-bars were broken, many thanks to Robert Nio for reporting the issue and testing the fix.
&lt;li&gt;&lt;strong&gt;FIX&lt;/strong&gt;: We pulled the latest XBMC UPnP code, in hopes this would help with some problems reported on the forums. We also pulled a fix related to the &lt;em&gt;sendkey&lt;/em&gt; HTTP-API command, and a few other fixes.
&lt;/ul&gt;
&lt;p&gt;We&amp;#8217;ve been taking Barkley more and more to the pool as he continues his recovery from his CCL injury. So far he&amp;#8217;s doing great and is really happy to get in the water.&lt;/p&gt;
&lt;div style="padding:10px;"&gt;&lt;img src="http://elan.plexapp.com/wp-content/uploads/2009/05/untitled.png" alt="untitled.png" border="0" width="580" height="374" /&gt;&lt;/div&gt;
</description><pubDate>Sat, 23 May 2009 00:15:51 GMT</pubDate><guid isPermaLink="false">http://elan.plexapp.com/?p=448</guid><comments>http://elan.plexapp.com/2009/05/22/release-081-crazy-delicious/#comments</comments><author>elan</author><source url="http://www.osxbmc.com/feed/">Plex</source><ng:postId>9604340277</ng:postId><ng:feedId>2113268</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Spotify music catalogue updated with 10,624 new tracks</title><link>http://www.spotify.com/blog/archives/2009/05/25/spotify-music-catalogue-updated-with-10624-new-tracks/</link><description>&lt;p&gt;After a nice long weekend we&amp;#8217;ve got some more music for you today. We&amp;#8217;ve added 919 albums and singles today, in total 10,624 new tracks are now available. &lt;/p&gt;
&lt;p&gt;Some of the new releases from today&amp;#8217;s update include &lt;a href="spotify:album:6QwlhIbsK5hrP95Q5FPKXr"&gt;Wolfgang Amadeus Phoenix&lt;/a&gt; by &lt;a href="spotify:artist:1xU878Z1QtBldR7ru9owdU"&gt;Phoenix&lt;/a&gt;.  Also released today was &lt;a href="spotify:artist:2VYQTNDsvvKN9wmU5W7xpj"&gt;Marilyn Manson&amp;#8217;s&lt;/a&gt; new album, &lt;a href="spotify:album:2Gs0ZRG1tkEeYiIMrA8zp8"&gt;The High End of Low&lt;/a&gt;.  The 80s rockers &lt;a href="spotify:album:4lCmHBERYvTziI6f75C5VY"&gt;Simple Minds&lt;/a&gt; have a new release today, &lt;a href="spotify:album:0m9G0xTa8I1Ijf7B7KmXIw"&gt;Graffiti Soul&lt;/a&gt;.  Also up today is a special &lt;a href="spotify:artist:0XNa1vTidXlvJ2gHSsRi4A"&gt;Franz Ferdinand&lt;/a&gt; release, &lt;a href="spotify:album:0oyuaaprv7rCT9UuhMknXX"&gt;Blood&lt;/a&gt; was originally packaged in the deluxe and box-set versions of their last album.&lt;/p&gt;
&lt;p&gt;Also part of today&amp;#8217;s update is the wider release of &lt;a href="spotify:artist:6HD2mo0Gz8wd8IbOXYwUfN"&gt;Daniel Merriweather&amp;#8217;s&lt;/a&gt; new album, &lt;a href="spotify:album:7esBRX55cujeL0iSZWu0U6"&gt;Love &amp;#038; War&lt;/a&gt;.  Previously this was available only to premium subscribers in Sweden, UK and Norway but now users of our free service in those countries can also listen to the album a full week before its wide release.&lt;/p&gt;
&lt;p&gt;For a full listing of today&amp;#8217;s additions please have a look at the &lt;a href="http://spreadsheets.google.com/pub?key=r-wfmHZ2P1GXUX864H3RBLg&amp;output=html"&gt;Google Doc&lt;/a&gt;.  As with every update not all albums listed may be available in your country and some tracks previously available may no longer be playable due to regional restrictions.
&lt;/p&gt;
</description><pubDate>Mon, 25 May 2009 10:56:05 GMT</pubDate><guid isPermaLink="false">https://www.spotify.com/blog/archives/2009/05/25/spotify-music-catalogue-updated-with-10624-new-tracks/</guid><comments>http://www.spotify.com/blog/archives/2009/05/25/spotify-music-catalogue-updated-with-10624-new-tracks/#comments</comments><author>Andres Sehr</author><source url="https://www.spotify.com/blog/feed/">Spotify</source><ng:postId>9614999256</ng:postId><ng:feedId>3683532</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Psi with voice calls</title><link>http://feedproxy.google.com/~r/simplicidade/notes/~3/CyCvqZOK2bs/psi_with_voice.html</link><description>
&lt;p&gt;The &lt;a href="http://delta.affinix.com/2009/05/23/psi-013-rc1-released/"&gt;first release candidate of the 0.13 version of Psi was released just now&lt;/a&gt;, and it includes voice calls using &lt;a href="http://xmpp.org/extensions/xep-0167.html"&gt;Jingle RTP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'll keep it running in case you need a guinea pig for tests.&lt;/p&gt;

&lt;p&gt;Very good news.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=CyCvqZOK2bs:yJ2PwyYKjQk:QAbEOQDFbZY"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?i=CyCvqZOK2bs:yJ2PwyYKjQk:QAbEOQDFbZY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=CyCvqZOK2bs:yJ2PwyYKjQk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=CyCvqZOK2bs:yJ2PwyYKjQk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/simplicidade/notes/~4/CyCvqZOK2bs" height="1" width="1"/&gt;</description><pubDate>Sun, 24 May 2009 06:33:48 GMT</pubDate><guid isPermaLink="false">967@http://www.simplicidade.org/notes/</guid><author>melo@simplicidade.org</author><source url="http://feeds.feedburner.com/simplicidade/notes">Notes</source><ng:postId>9605939613</ng:postId><ng:feedId>419448</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Spotify and McAfee - a little mix-up</title><link>http://www.spotify.com/blog/archives/2009/05/22/spotify-and-mcafee-a-little-mix-up/</link><description>&lt;p&gt;A little bit of unwanted excitement today when McAfee released an update to their virus definition file. This caused the antivirus software to &lt;i&gt;falsely&lt;/i&gt; identify Spotify as a virus.  Both Spotify and MacAfee are aware of this problem and they have released an update for their antivirus software.  &lt;/p&gt;
&lt;p&gt;I can assure you that Spotify &lt;b&gt;is not&lt;/b&gt; a virus and contains no virus files, this is simply a misunderstanding on McAfee&amp;#8217;s part.&lt;/p&gt;
&lt;p&gt;A statement from them says: &amp;#8220;This issue will be resolved in an early release of the 5623 DAT today (22nd May, 2009).  Your McAfee products will update to this DAT version in the normal way and no additional action is required on your part.&amp;#8221;  You can also &lt;a href="http://www.mcafee.com/apps/downloads/security_updates/dat.asp?region=us&amp;segment=enterprise"&gt;download&lt;/a&gt; the latest DAT version directly from their website.&lt;/p&gt;
&lt;p&gt;To get Spotify working again, we suggest that you update your virus definition file now, you can normally do this by right clicking the McAfee icon in your system tray and selecting &amp;#8220;Update&amp;#8221;. If necessary, you can remove Spotify from your quarantine list as &lt;a href="http://service.mcafee.com/FAQDocument.aspx?lc=2057&amp;id=TS100682"&gt;described&lt;/a&gt; by McAfee.&lt;/p&gt;
&lt;p&gt;If you need to reinstall Spotify it is quite easy to do and you can always log in with your existing account, no need to create a new one. You can &lt;a href="https://www.spotify.com/download/"&gt;download&lt;/a&gt; the installer from our website if necessary.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re really sorry that this happened but we hope everyone can get back up and running in time for a nice weekend.&lt;/p&gt;
</description><pubDate>Fri, 22 May 2009 16:51:46 GMT</pubDate><guid isPermaLink="false">http://www.spotify.com/blog/archives/2009/05/22/spotify-and-mcafee-a-little-mix-up/</guid><comments>http://www.spotify.com/blog/archives/2009/05/22/spotify-and-mcafee-a-little-mix-up/#comments</comments><author>Andres Sehr</author><source url="https://www.spotify.com/blog/feed/">Spotify</source><ng:postId>9592952977</ng:postId><ng:feedId>3683532</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>NRK som filsystem</title><link>http://blog.averlend.com/2009/05/23/nrk-som-filsystem/</link><description>&lt;p&gt;Så var det laget; tilgang på NRK sin nett-TV som om tilgangen til innholdet skulle ligge lokal. I mitt forsøk på å gjøre om &lt;a href="http://www1.nrk.no/nett-tv/"&gt;NRK Nett-TV&lt;/a&gt; til et virtuelt filsystem har jeg valgt å bedrive &amp;#8220;&lt;a href="http://en.wikipedia.org/wiki/Screen_scraping"&gt;screen scraping&lt;/a&gt;&amp;#8221; av nettsidene, og ender opp med én spilleliste for hvert program som er lagt ut.&lt;/p&gt;
&lt;p&gt;Jeg har valgt å benytte Python, sammen med modulene &lt;a href="http://pypi.python.org/pypi/fuse-python"&gt;Fuse-Python&lt;/a&gt; og &lt;a href="http://www.crummy.com/software/BeautifulSoup/"&gt;BeautifulSoup&lt;/a&gt;, så dette kan man sette opp på sin egen maskin som kjører Linux eller MacOS.&lt;/p&gt;
&lt;p&gt;Filene er &lt;a href="http://svn.averlend.com/public/nrkfs/trunk/"&gt;lagt ut i kildekodekontrollen&lt;/a&gt;, og er delt opp i to filer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nrk.py - Bibliotek for å aksessere NRK Nett-TV&lt;/li&gt;
&lt;li&gt;nrkfs.py - Koden som oppretter og fórer det virtuelle filsystemet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For å montere filsystemet kjører man enkelt og greit:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./nrkfs.py nrk&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Filen må være kjørbar, og &amp;#8220;nrk&amp;#8221; vil i dette tilfellet bli mappen som skal være monteringspunktet, denne mappen må allerede være opprettet. Gevinsten er ikke vanskelig å forestille seg:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-152 aligncenter" title="NrkFS" src="http://blog.averlend.com/wp-content/uploads/2009/05/nrkfs.png" alt="NrkFS" width="554" height="422" /&gt;&lt;/p&gt;
&lt;p&gt;Det er bevisst ikke opprettet noen debian-pakke eller egg-pakke av dette lille prosjektet enda, det får komme etter litt mer testing om det skulle være noen interesse for det.&lt;/p&gt;
&lt;p&gt;Håper noen har ønske om å teste dette ut og kan komme med tilbakemeldinger, er svært interessert i det som ikke måtte fungere.&lt;/p&gt;
</description><pubDate>Sat, 23 May 2009 07:22:45 GMT</pubDate><guid isPermaLink="false">http://blog.averlend.com/?p=148</guid><comments>http://blog.averlend.com/2009/05/23/nrk-som-filsystem/#comments</comments><author>Erlend</author><source url="http://blog.averlend.com/feed/">Erlend Klakegg Bergheim</source><ng:postId>9599538535</ng:postId><ng:feedId>4813195</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Jeroen Frijters: .NET 4.0 -- AssemblyBuilderAccess.RunAndCollect</title><link>http://weblog.ikvm.net/PermaLink.aspx?guid=0df57cfc-1028-42c0-a706-c5f1bac529d0</link><description>&lt;p&gt;
   This week .NET 4.0 beta 1 was released. I've been playing around with it a little
   bit and was very excited to find a new Reflection.Emit feature. If you're a reflection
   nut like me, the title of this blog entry probably already gave it away. Dynamic assemblies
   can now be garbage collected!
&lt;/p&gt;
&lt;p&gt;
   &lt;b&gt;A Little Demo&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
   Running this simple example will show that a System.Type instance is created and then
   garbage collected.
&lt;/p&gt;
&lt;p&gt;
   &lt;code&gt;&lt;font color=#0000ff&gt;using&lt;/font&gt; System;&lt;br&gt;
   &lt;font color=#0000ff&gt;using&lt;/font&gt; System.Reflection;&lt;br&gt;
   &lt;font color=#0000ff&gt;using&lt;/font&gt; System.Reflection.Emit;&lt;br&gt;
   &lt;br&gt;
   &lt;font color=#0000ff&gt;class&lt;/font&gt; &lt;font color=#2b91af&gt;RunAndCollectDemo&lt;/font&gt;
   &lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp; &lt;font color=#0000ff&gt;static void&lt;/font&gt; Main()&lt;br&gt;
   &amp;nbsp; {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;Type&lt;/font&gt; type = CreateType();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;object&lt;/font&gt; obj = &lt;font color=#2b91af&gt;Activator&lt;/font&gt;.CreateInstance(type);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;Console&lt;/font&gt;.WriteLine(obj);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;WeakReference&lt;/font&gt; weak = &lt;font color=#0000ff&gt;new&lt;/font&gt; &lt;font color=#2b91af&gt;WeakReference&lt;/font&gt;(type);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; type = &lt;font color=#0000ff&gt;null&lt;/font&gt;;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; obj = &lt;font color=#0000ff&gt;null&lt;/font&gt;;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;Console&lt;/font&gt;.WriteLine(&lt;font color=#a31515&gt;"type
   = "&lt;/font&gt; + weak.Target);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;GC&lt;/font&gt;.Collect();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;Console&lt;/font&gt;.WriteLine(&lt;font color=#a31515&gt;"type
   = "&lt;/font&gt; + weak.Target);&lt;br&gt;
   &amp;nbsp; }&lt;br&gt;
   &lt;br&gt;
   &amp;nbsp; &lt;font color=#0000ff&gt;static&lt;/font&gt; &lt;font color=#2b91af&gt;Type&lt;/font&gt; CreateType()&lt;br&gt;
   &amp;nbsp; {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;AssemblyBuilder&lt;/font&gt; ab =&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;AppDomain&lt;/font&gt;.CurrentDomain.DefineDynamicAssembly(&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;new&lt;/font&gt; &lt;font color=#2b91af&gt;AssemblyName&lt;/font&gt;(&lt;font color=#a31515&gt;"foo"&lt;/font&gt;),&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="BACKGROUND-COLOR: #ffff00"&gt;&lt;font color=#2b91af&gt;AssemblyBuilderAccess&lt;/font&gt;.RunAndCollect&lt;/span&gt;);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;ModuleBuilder&lt;/font&gt; modb = ab.DefineDynamicModule(&lt;font color=#a31515&gt;"foo.dll"&lt;/font&gt;);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#2b91af&gt;TypeBuilder&lt;/font&gt; tb = modb.DefineType(&lt;font color=#a31515&gt;"Foo"&lt;/font&gt;);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#0000ff&gt;return&lt;/font&gt; tb.CreateType();&lt;br&gt;
   &amp;nbsp; }&lt;br&gt;
   }&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
   As you can imagine, this required some pretty deep runtime changes. One of them is
   that &lt;a href="http://msdn.microsoft.com/en-us/library/system.runtimemethodhandle.aspx"&gt;RuntimeMethodHandle&lt;/a&gt; is
   no longer a handle. Previously it contained an unmanaged pointer to the native CLR
   datastructure corresponding to the method, but now it contains a managed interface
   reference, because the corresponding method can be garbage collected (I haven't looked
   into it, but I assume that the interface reference points either to a RuntimeMethodInfo
   or in the case of a method in a RunAndCollect assembly a proxy that contains a weak
   reference to the RuntimeMethodInfo.)
&lt;/p&gt;
&lt;p&gt;
   Somewhat ironically, this change breaks the compilation of ikvm's &lt;a href="http://ikvm.cvs.sourceforge.net/viewvc/ikvm/ikvm/runtime/JniInterface.cs?revision=1.69&amp;amp;view=markup"&gt;JniInterface.cs&lt;/a&gt;,
   because it stuffs a RuntimeMethodHandle in unmanaged memory. The&amp;nbsp;fix is fairly
   straightforward (using a GCHandle to point to the MethodBase instead), but it does
   reveal an interesting property of C#, if you use unsafe code the (normally hidden)
   implementation details of managed value types can cause your code to break (and not
   because you explicitly depend on any internals).
&lt;/p&gt;
&lt;p&gt;
   &lt;b&gt;What Does This Mean for IKVM.NET?&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
   It would be really awesome if this feature could be used to finally make ClassLoaders
   garbage collectable, but unfortunately for that to happen &lt;a href="http://weblog.ikvm.net/commentview.aspx?guid=54"&gt;this
   ancient bug&lt;/a&gt; first has to be fixed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.ikvm.net/aggbug.ashx?id=0df57cfc-1028-42c0-a706-c5f1bac529d0"&gt;</description><pubDate>Fri, 22 May 2009 05:26:20 GMT</pubDate><guid isPermaLink="false">http://weblog.ikvm.net/PermaLink.aspx?guid=0df57cfc-1028-42c0-a706-c5f1bac529d0</guid><comments>http://weblog.ikvm.net/CommentView.aspx?guid=0df57cfc-1028-42c0-a706-c5f1bac529d0</comments><author>Jeroen_x0020_Frijters@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>9588440295</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>OpenID</title><link>http://feedproxy.google.com/~r/simplicidade/notes/~3/HIEiW60i7jQ/openid_1.html</link><description>
&lt;p&gt;I've switched providers of &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt;. I was using &lt;a href="http://claimid.com/"&gt;ClaimID&lt;/a&gt;, but now I'm using &lt;a href="http://www.myopenid.com/"&gt;MyOpenID&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The anti-pishing features are great, specially the personal icon feature. It basically sets a cookie on your browser, with a picture URL, and shows you that picture on the login page. If you don't see the picture, then the site didn't get the cookie, and the URL is probably fake. Simple and effective.&lt;/p&gt;

&lt;p&gt;I've also gained OpenID 2.0 and &lt;a href="http://en.wikipedia.org/wiki/XRDS"&gt;XRDS&lt;/a&gt; support, which is nice.&lt;/p&gt;

&lt;p&gt;And given that &lt;a href="https://www.myopenid.com/help#own_domain"&gt;I was already using &lt;code&gt;simplicidade.org&lt;/code&gt; as my identifier&lt;/a&gt;, I only had to update the &amp;lt;link&amp;gt;'s on that page to point to my new provider.&lt;/p&gt;

&lt;p&gt;OpenID delegation FTW...&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=HIEiW60i7jQ:4I2tiZL49DU:QAbEOQDFbZY"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?i=HIEiW60i7jQ:4I2tiZL49DU:QAbEOQDFbZY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=HIEiW60i7jQ:4I2tiZL49DU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=HIEiW60i7jQ:4I2tiZL49DU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/simplicidade/notes/~4/HIEiW60i7jQ" height="1" width="1"/&gt;</description><pubDate>Thu, 21 May 2009 06:40:14 GMT</pubDate><guid isPermaLink="false">960@http://www.simplicidade.org/notes/</guid><author>melo@simplicidade.org</author><source url="http://feeds.feedburner.com/simplicidade/notes">Notes</source><ng:postId>9577598781</ng:postId><ng:feedId>419448</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Facebook lowers barrier for new users with OpenID logins</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/DhuKderIPKQ/facebook-launches-support-for-openid-logins.ars</link><description>&lt;a href="http://arstechnica.com/web/news/2009/05/facebook-launches-support-for-openid-logins.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/05/passport_ars-thumb-230x130-5534-f.jpg" alt="companion photo for Facebook lowers barrier for new users with OpenID logins" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Social networking giant Facebook has implemented support for OpenID logins. The move reflects Facebook's growing support for interoperability and open standards. It's also a win for OpenID, which is rapidly becoming ubiquitous.&lt;/p&gt;

&lt;p&gt;OpenID is a distributed authentication system that allows a single login to be used with multiple Web services. Originally developed for LiveJournal in 2005, the system has gained significant traction and is now supported by a growing number of large companies, including Microsoft, Google, IBM, and Yahoo. Many OpenID adopters, however, only support the provider part of the protocol&amp;#8212;meaning that you can use your credentials from their service as your OpenID identity but you can't use OpenID to log into their service.&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/web/news/2009/05/facebook-launches-support-for-openid-logins.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/U7ZnNRzpOumaE12Lut5o_hrZ9Rw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/U7ZnNRzpOumaE12Lut5o_hrZ9Rw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/U7ZnNRzpOumaE12Lut5o_hrZ9Rw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/U7ZnNRzpOumaE12Lut5o_hrZ9Rw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=DhuKderIPKQ:mxJbTh7UbSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=DhuKderIPKQ:mxJbTh7UbSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=DhuKderIPKQ:mxJbTh7UbSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=DhuKderIPKQ:mxJbTh7UbSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=DhuKderIPKQ:mxJbTh7UbSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=DhuKderIPKQ:mxJbTh7UbSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/DhuKderIPKQ" height="1" width="1"/&gt;</description><pubDate>Tue, 19 May 2009 15:35:05 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/web/news/2009/05/facebook-launches-support-for-openid-logins.ars</guid><author>segphault@arstechnica.com (Ryan Paul)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9559601454</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Microsoft Ships Betas of Visual Studio 2010, .NET Framework 4.0</title><link>http://www.osnews.com/story/21512/Microsoft_Ships_Betas_of_Visual_Studio_2010_NET_Framework_4_0</link><description>As expected, Microsoft has released Beta 1 of its Visual Studio 2010 tool set along with the first beta of the NET Framework 4.0. The software represents the next major version of Microsoftâs flag ship software development environment.</description><pubDate>Mon, 18 May 2009 22:25:05 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21512/Microsoft_Ships_Betas_of_Visual_Studio_2010_NET_Framework_4_0</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9551289562</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Mozilla Asks Users To Improve Tabbed Browsing</title><link>http://www.osnews.com/story/21514/Mozilla_Asks_Users_To_Improve_Tabbed_Browsing</link><description>Tabbed browsing is pretty much the norm by now, with even someone like me (who disliked it vehemently for a long time) finally giving in and start using tabbed browsing (thanks to Chrome, by the way). Well, apparently, Mozilla thinks its time to move on. They believe tabbed browsing has become obsolete, and are asking users to come up with a better alternative.</description><pubDate>Mon, 18 May 2009 22:42:14 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21514/Mozilla_Asks_Users_To_Improve_Tabbed_Browsing</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9551391503</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Miguel de Icaza: Moonlight 2 Preview 3</title><link>http://tirania.org/blog/archive/2009/May-18.html</link><description>
	&lt;p&gt;Another week of excellent work on the Moonlight universe
	and we bring you our Preview 3 release of Moonlight.    Alan
	McGovern &lt;a href="http://monotorrent.blogspot.com/2009/05/so-whatve-i-been-working-on.html"&gt;said
	it best&lt;/a&gt; though.

	&lt;p&gt;This week stats:


	&lt;p&gt;This is what
	the &lt;a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html"&gt;Silverlight
	Toolkit Sample&lt;/a&gt; page looked with Preview 2:

&lt;p&gt;&lt;center&gt;&lt;a href="http://tirania.org/blog/pic.php?name=ML2-Preview2.png&amp;caption= Moonlight 2 Preview 2"&gt;&lt;img border=0 src="http://primates.ximian.com/~miguel/pictures/small-ML2-Preview2.png"&gt;&lt;/a&gt;&lt;p&gt; Moonlight 2 Preview 2&lt;/center&gt;&lt;/p&gt;	
	&lt;p&gt;This is what the Silverlight Toolkit page looks with
	Preview 3:

&lt;p&gt;&lt;center&gt;&lt;a href="http://tirania.org/blog/pic.php?name=ML2-Preview3.png&amp;caption= Moonlight 2 Preview 3"&gt;&lt;img border=0 src="http://primates.ximian.com/~miguel/pictures/small-ML2-Preview3.png"&gt;&lt;/a&gt;&lt;p&gt; Moonlight 2 Preview 3&lt;/center&gt;&lt;/p&gt;	
	&lt;p&gt;You should be able to update directly from Firefox, or if
	you are trying it for the first time, go to
	our &lt;a href="http://go-mono.com/moonlight-preview/"&gt;http://go-mono.com/moonlight-preview/&lt;/a&gt;
	page. 

	&lt;p&gt;Now, although Preview 2 was able to run
	the &lt;a href="http://www.voidspace.org.uk/ironpython/webide/webide.html"&gt;IronPython
	mini-Web IDE&lt;/a&gt; I am still going to try to pass that as a new
	feature.

	&lt;p&gt;And now you can try the &lt;a href="http://www.voidspace.org.uk/ironpython/webide/webide.html"&gt;IronPython
	mini-Web IDE!&lt;/a&gt;
</description><pubDate>Tue, 19 May 2009 03:27:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/May-18.html</guid><author>Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>9551276681</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Outreach</title><link>http://xkcd.com/585/</link><description>&lt;img src="http://imgs.xkcd.com/comics/outreach.png" title="Completely implausible? Yes. Nevertheless, worth keeping a can of shark repellant next to the bed." alt="Completely implausible? Yes. Nevertheless, worth keeping a can of shark repellant next to the bed." /&gt;</description><pubDate>Mon, 18 May 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/585/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>9540196165</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Math? Of Course!</title><link>http://feedproxy.google.com/~r/stian/shared/~3/L5-Lv-bi-6g/</link><description>&lt;blockquote&gt;Shared by  Stian 
&lt;br&gt;
Ok! Fuck google, this is the shit!!!&lt;/blockquote&gt;
&lt;p&gt;Some of you have asked whether you’ll be able to use &lt;a href="http://www.wolframalpha.com"&gt;Wolfram|Alpha&lt;/a&gt; for challenging math. Of course!&lt;/p&gt;
&lt;p&gt;Remember your old friend, pi (&lt;span style="font-family:serif"&gt;π&lt;/span&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img title="pi to 100 digits" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513pi100digits.png" alt="pi to 100 digits" width="500" height="291"&gt;&lt;span&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
Or the power tower:&lt;/p&gt;
&lt;p&gt;&lt;img title="2^3^4^5^6" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513powertower.png" alt="2^3^4^5^6" width="500" height="339"&gt;&lt;/p&gt;
&lt;p&gt;Or perhaps you’d like to do a little calculus (note that you can Show steps to see the derivation of the answer):&lt;/p&gt;
&lt;p&gt;&lt;img title="integrate x^3 sin^2x dx" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513integrate.png" alt="integrate x^3 sin^2x dx" width="500" height="753"&gt;&lt;/p&gt;
&lt;p&gt;Or explore number-theoretic sums:&lt;/p&gt;
&lt;p&gt;&lt;img title="prime pi(10^6)" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513numbertheoreticsums.png" alt="prime pi(10^6)" width="500" height="750"&gt;&lt;/p&gt;
&lt;p&gt;Or obtain eigenvalues (with a beautiful graph):&lt;/p&gt;
&lt;p&gt;&lt;img title="eigenvalues {{1,x,2},{x,4,2},{-1,x,x^2}}" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513eigenvalues.png" alt="eigenvalues {{1,x,2},{x,4,2},{-1,x,x^2}}" width="500" height="1477"&gt;&lt;/p&gt;
&lt;p&gt;Or consider the integral representations of &lt;a href="http://reference.wolfram.com/mathematica/ref/BesselJ.html"&gt;&lt;tt&gt;BesselJ&lt;/tt&gt;&lt;/a&gt; (if you don’t recognize a Bessel function as a friend, you might want to skip this example and look at the others below):&lt;/p&gt;
&lt;p&gt;&lt;img title="integral representations BesselJ" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513besselj.png" alt="integral representations BesselJ" width="500" height="777"&gt;&lt;/p&gt;
&lt;p&gt;If you’re interested in browsing some examples, as a complement to the examples that were highlighted in an earlier &lt;a href="http://blog.wolframalpha.com/2009/05/11/wolframalpha-examples/"&gt;blog post&lt;/a&gt;, check out Wolfram|Alpha’s Gallery of Visual Examples once the site is live.&lt;/p&gt;
&lt;p&gt;For instance, Dini’s surface:&lt;/p&gt;
&lt;p&gt;&lt;img title="Dini&amp;#39;s surface" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513dini.png" alt="Dini&amp;#39;s surface" width="500" height="1309"&gt;&lt;/p&gt;
&lt;p&gt;And, from 3D geometry, Archimedean solids:&lt;/p&gt;
&lt;p&gt;&lt;img title="Archimedean solids" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513archsolids.png" alt="Archimedean solids" width="500" height="1038"&gt;&lt;/p&gt;
&lt;p&gt;Of course, there are lots of examples of knowledge that Wolfram|Alpha can help you access that require advanced math to process, where the math is not so obvious. For example, checking the odds of a poker hand:&lt;/p&gt;
&lt;p&gt;&lt;img title="probability full house" src="http://blog.wolframalpha.com/data/uploads/2009/05/0513fullhouse.png" alt="probability full house" width="500" height="631"&gt;&lt;/p&gt;
&lt;p&gt;So, as you’re waiting to try Wolfram|Alpha, you might want to spend some time thinking about the math you’d like to try there!&lt;/p&gt;
&lt;img src="http://feeds2.feedburner.com/~r/stian/shared/~4/L5-Lv-bi-6g" height="1" width="1"/&gt;</description><pubDate>Thu, 14 May 2009 23:36:27 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/3e1887749a94c401</guid><author>(author unknown)</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>9505304775</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>USB Car Charger</title><link>http://www.instructables.com/id/USB-Car-Charger-1/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F6E/3A8N/FUNOWM5F/F6E3A8NFUNOWM5F.SMALL.jpg" align="left" hspace="10"&gt;charge your iPod or any usb device in the car with this handy little gadget made for only a few bucks!&lt;br/&gt;
&lt;br/&gt;
Things Needed&lt;br/&gt;
&lt;br/&gt;
Tools: Soldering Iron, solder Flathead Screwdriver, Razor Knife, Super Glue, Wire Cutters(mine are big cause they are my best pair but you can use any kind obviously.  &lt;br/&gt;
&lt;br/&gt;
Materials: ...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/jdogtotherescue/"&gt;jdogtotherescue&lt;/a&gt;</description><pubDate>Thu, 14 May 2009 06:07:00 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9503122347</guid><author>jdogtotherescue</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9503122347</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Li-Ion Battery capacity tester (Lithium power tester)</title><link>http://www.instructables.com/id/Li-Ion-Battery-capacity-tester-Lithium-power-test/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F7Q/THDA/FUI0SF3T/F7QTHDAFUI0SF3T.SMALL.jpg" align="left" hspace="10"&gt;Build a Li-Ion battery tester&lt;br/&gt;
Simple made of junk tester.&lt;br/&gt;
I have so many old lap-top batteries ling around and some work better then other but I really wanted a way to measure each battery exact capacity and couldn't find anything on the web so I took the time (2 hours) and built my own.&lt;br/&gt;
Now I am sh...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/moris_zen/"&gt;moris_zen&lt;/a&gt;</description><pubDate>Thu, 14 May 2009 18:55:13 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9503283343</guid><author>moris_zen</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9503283343</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>LLVM/Clang Replacing GCC In FreeBSD Base</title><link>http://feedproxy.google.com/~r/Phoronix/~3/Ed7zVsRSldQ/vr.php</link><description>In the quarterly report for FreeBSD, we learned something interesting: the FreeBSD developers intend to replace GCC with LLVM/Clang. The FreeBSD project wants to replace the GNU Compiler Collection with the Apple-backed Clang front-end compiler from LLVM...
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds2.feedburner.com/~r/Phoronix/~4/Ed7zVsRSldQ" height="1" width="1"/&gt;</description><pubDate>Mon, 11 May 2009 11:24:13 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=NzI1Ng</guid><source url="http://feedproxy.google.com/~r/Phoronix/~3/Ed7zVsRSldQ/vr.php" /><ng:postId>9464710323</ng:postId><ng:feedId>4826470</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Intel, Nokia Announce Open Source Telephony Project</title><link>http://www.osnews.com/story/21472/Intel_Nokia_Announce_Open_Source_Telephony_Project</link><description>Something I bumped into on Maemo-developers mailing list: "Intel and Nokia are pleased to jointly announce the oFono project, an open source project for developing an open source telephony solution." The full announcement is available at the oFono website.  It's GPLv2, but not really hampered by the license because the API is exposed through DBus.</description><pubDate>Mon, 11 May 2009 21:43:10 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21472/Intel_Nokia_Announce_Open_Source_Telephony_Project</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9465752458</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>CNR</title><link>http://xkcd.com/583/</link><description>&lt;img src="http://imgs.xkcd.com/comics/cnr.png" title="Can't and shouldn't." alt="Can't and shouldn't." /&gt;</description><pubDate>Wed, 13 May 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/583/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>9482182506</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>XMPP Roundup #9</title><link>http://blog.xmpp.org/index.php/2009/05/xmpp-roundup-9/</link><description>&lt;p&gt;[Reporters: Nicolas Vérité and Peter Saint-Andre]&lt;/p&gt;
&lt;p&gt;Welcome to the 9th edition of the XMPP Roundup, the periodic stream of news and events in the XMPP universe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New and updated software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wokkel 0.6.0&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ralph Meijer has announced &lt;a href="http://wokkel.ik.nu/"&gt;Wokkel 0.6.0&lt;/a&gt;, a set of XMPP tools on top of the Python Twisted framework.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PySoy game engine&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="external text" title="http://www.pysoy.org" rel="nofollow" href="http://www.pysoy.org/"&gt;PySoy&lt;/a&gt; is a 3d game engine including networking support being based around XMPP for player chat and server discovering, Jingle ICE-UDP for network games. It is released under the AGPLv3 license.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;XMPPLogger&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ahzf.de/itstuff/XMPPLogger/"&gt;XMPPLogger&lt;/a&gt; is a small Perl utility written under the BSD license that listens on a FIFO and sends every line to the given XMPP/Jabber account(s).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mojo Messaging Service: PubSub by Palm&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.precentral.net/palm-introduce-push-services"&gt;In a article titled &amp;#8220;Palm to Introduce Push Services&lt;/a&gt;&amp;#8220;, &lt;a href="http://www.precentral.net/"&gt;pre central&lt;/a&gt; notes:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;When the Mojo SDK is broadly released later this year, it will include a developer-facing offering called the Mojo Messaging Service, an XMPP publish/subscribe service. The Mojo Messaging Service is an elegant, standards-based way to exchange information over the Internet. When new information is available, it is “published” to the cloud and all interested parties who are subscribers are notified that new information is available. This will allow developers to push live content to their applications or services. The Mojo Messaging Service initially will have a limited feature set and service level that will evolve over time.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;xBookmarks addon for Firefox&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/9970"&gt;xBookmarks&lt;/a&gt; stands for &amp;#8220;XMPP bookmarks&amp;#8221;, it is a Firefox extension that implements &lt;a href='http://xmpp.org/extensions/xep-0048.html'&gt;XEP-0048&lt;/a&gt; so that a user having an XMPP account can store all of his bookmarks in one place and can retrieve them from anywhere. xBookmarks needs &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3632"&gt;xmpp4moz&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Babylon&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://babylon.rubyforge.org/README_rdoc.html"&gt;Babylon&lt;/a&gt; is a Ruby framework for XMPP applications, written under the MIT license and currently available in a &amp;#8220;pre-0.1&amp;#8243; version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;WordPress.com&amp;#8217;s firehose&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wordpress.com/"&gt;WordPress.com&lt;/a&gt;, a hosting service for &lt;a href="http://wordpress.org"&gt;WordPress&lt;/a&gt; blogs (this blog is using WordPress), has launched &lt;a href="http://en.wordpress.com/firehose/"&gt;Firehose&lt;/a&gt;, a private, commercial stream service for blog posts and comments:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;The WordPress.com firehose is designed for partners like search engines and market intelligence providers who would like to ingest a real-time stream of new WordPress.com posts and comments the second they get published. The firehose is XMPP based and can be accessed s2s (server-to-server) or c2s (client-to-server). &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;File transfer proxy at jabber.org&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The jabber.org XMPP service has &lt;a href="http://www.jabber.org/index.php/2009/05/new-file-transfer-proxy/"&gt;gained a SOCKS5 file transfer proxy&lt;/a&gt;, it is located at &lt;a href="xmpp:proxy.eu.jabber.org"&gt;proxy.eu.jabber.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;WeFeelFine&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="xmpp:wefeelfine@jabber.spektral.at"&gt;wefeelfine@jabber.spektral.at&lt;/a&gt; is a Jabber bot that seeks the feeling expressed in blogs worldwide. More information &lt;a href="http://blog.disktree.net/?p=84"&gt;on the blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Articles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What Can You Do with XMPP?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Kathryn Barrett from O&amp;#8217;Reilly, &lt;a href="http://fyi.oreilly.com/2009/05/what-can-you-do-with-xmpp.html"&gt;has written a lengthy article&lt;/a&gt; on the book XTDG, aka &lt;a href='http://oreilly.com/catalog/9780596521264/'&gt;XMPP: The Definitive Guide&lt;/a&gt; by Peter Saint-Andre, Kevin Smith, and Remko Tronçon, detailing a large range of the features and possible applications of XMPP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Specifications&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since the last XMPP Roundup, several specifications published by the XMPP Standards Foundation have evolved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0256.html"&gt;XEP-0256: Last Activity in Presence&lt;/a&gt; has advanced from Experimental to Draft&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0237.html"&gt;XEP-0237: Roster Versioning&lt;/a&gt; has been updated to reflect feedback receiving during Last Call, and a second Last Call has been issued before advancing it from Experimental to Draft&lt;/li&gt;
&lt;li&gt;&lt;a href='http://xmpp.org/extensions/xep-0124.html'&gt;XEP-0124: Bidirectional-streams Over Synchronous HTTP&lt;/a&gt; (BOSH) was updated to correct the XML schema and incorporate technical discussions held at &lt;a href='http://xmpp.org/summit/summit6.shtml'&gt;XMPP Summit 6&lt;/a&gt; in February&lt;/li&gt;
&lt;li&gt;&lt;a href='http://xmpp.org/extensions/xep-0267.html'&gt;XEP-0267: Server Rosters&lt;/a&gt; and &lt;a href='http://xmpp.org/extensions/xep-0268.html'&gt;XEP-0268: Incident Reporting&lt;/a&gt; were published, also as a result of discussions held at &lt;a href='http://xmpp.org/summit/summit6.shtml'&gt;XMPP Summit 6&lt;/a&gt; in February&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0266.html"&gt;XEP-0266: Codecs for Jingle RTP Sessions&lt;/a&gt; was updated with information about the &lt;a href='http://diracvideo.org/'&gt;Dirac codec&lt;/a&gt; for video&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xmpp.org/extensions/xep-0238.html"&gt;XEP-0238: XMPP Protocol Flows for Inter-Domain Federation&lt;/a&gt; and &lt;a href="http://xmpp.org/extensions/xep-0154.html"&gt;XEP-0154: User Profile&lt;/a&gt; have been deferred because of inactivity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;A final word&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;XMPP&amp;#8217;s ubiquity shows even more after months pass.&lt;/p&gt;
</description><pubDate>Mon, 11 May 2009 20:20:41 GMT</pubDate><guid isPermaLink="false">http://blog.xmpp.org/?p=449</guid><comments>http://blog.xmpp.org/index.php/2009/05/xmpp-roundup-9/#comments</comments><author>nyco</author><source url="http://blog.xmpp.org/?feed=rss2">Extended Conversation</source><ng:postId>9465298937</ng:postId><ng:feedId>1201572</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Building a WeakReference Hashtable</title><link>http://blogs.msdn.com/jaredpar/archive/2009/03/03/building-a-weakreference-hashtable.aspx</link><description>&lt;p&gt;Recently I ran into a situation on a personal project where I needed a hashtable like structure for a set of WeakReference values.&amp;#160; When poking around for an existing implementation I saw found several versions which were very thin, type safe wrapper around a Dictionary&amp;lt;TKey,WeakReference&amp;gt; (usually the class even implements IDictionary&amp;lt;TKey,TValue&amp;gt; directly).&amp;#160; While this produces a type safe API it fails to take into account the different nature of a WeakReference.&amp;#160; Because a WeakReference is constantly being collected without explicit user action it alters the types of operations that be performed on them.&amp;#160; Failing to take this into account produced APIs which lead users to write incorrect code.&lt;/p&gt;  &lt;p&gt;Finding no suitable implementation I set off to build my own.&amp;#160; It took several iterations and I thought the result and process would be fun to share the design experience as a blog post.&amp;#160; &lt;/p&gt;  &lt;p&gt;Let start with the basics.&amp;#160; At a high level the API should appear to the user as a type safe Dictionary&amp;lt;TKey,TValue&amp;gt;.&amp;#160; Under the hood all values will be stored in an instance of WeakReference in order to enable collection.&amp;#160; But this is an implementation detail and should not be visible to the user.&amp;#160;&amp;#160; The user should only see type safe keys and values.&lt;/p&gt;  &lt;p&gt;A standard Hashtable works on the concept of a key/value pair.&amp;#160; A value is associated with a particular key in the table and at any time, the value can be retrieved from the hashtable with the specified key.&amp;#160; A key can be determined to be valid simply by ascertaining it’s presence in the underlying table.&amp;#160; The value is irrelevant, it’s mere presence makes it valid. &lt;/p&gt;  &lt;p&gt;A weak hashtable will work on the same concept but have a much different implementation.&amp;#160; Keys are only valid if they point to an actual value.&amp;#160; Since the value in the hashtable is a WeakReference the mere presence of the key does not determine it’s validity.&amp;#160; Only the presence of the key and the value contained within the weak reference determines the validity of a key.&amp;#160; &lt;/p&gt;  &lt;p&gt;This seems like an obvious assumption but it has a dramatic impact on the type of API a weak hashtable can have.&amp;#160; Lets take a simple property such as Count for an example of why this is important.&amp;#160; Count on a hashtable is used to determine the number of valid key/value pairs in the table.&amp;#160; On a normal hashtable, this count is simply incremented and decremented with the corresponding Add and Remove API’s.&amp;#160; With a weak hashtable, any given run of the garbage collector can affect the count of key/value pairs by collecting a value.&amp;#160; This means a simple counter cannot be used to keep track of the valid key/value pairs.&amp;#160; &lt;/p&gt;  &lt;p&gt;In order to get the actual Count every singe value must be accessed an verified that it is still alive.&amp;#160; What’s even worse is that once a value is determined to exist, it must be stored for the duration of the Count method.&amp;#160; Otherwise a GC could occur in the middle of the loop and collect Values that were marked as still alive.&amp;#160; &lt;/p&gt;  &lt;p&gt;This is what Count would need to look like …&amp;#160; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WeakHashtable&lt;/span&gt;&amp;lt;TKey,TValue&amp;gt; {
    &lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;TKey, &lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;&amp;gt; _map;
    &lt;span style="color: blue"&gt;public int &lt;/span&gt;Count {
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{
            &lt;span style="color: blue"&gt;var &lt;/span&gt;list = _map.Values
                .Select(x =&amp;gt; x.Target)
                .Where(x =&amp;gt; x != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
                .ToList();
            &lt;span style="color: blue"&gt;return &lt;/span&gt;list.Count;
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Count transformed from a simple O(1) return of an internal counter to a O(N) method which allocates memory.&amp;#160; Worse yet, the return value is practically useless.&amp;#160; As soon as the value is returned it cannot be considered to be valid.&amp;#160; A GC could kick in and invalidate half the table.&amp;#160; Count would in fact be giving the user information about the object in the past.&amp;#160; &lt;/p&gt;

&lt;p&gt;In some ways, this problem is similar to issues encountered with multi-threaded applications.&amp;#160; In between every line of your code there is another operation, in this case the GC, which can alter the state of your structure.&amp;#160; &lt;/p&gt;

&lt;p&gt;The only API’s that can ask questions about a value and still have a reasonable use by the user must return the value with the call.&amp;#160; Returning the value will, at least temporarily, provide a GC root and prevent the object from being collected.&amp;#160; It gives the user a chance to use the value before it’s taken out from under them. &lt;/p&gt;

&lt;p&gt;A good API comparison here are operations such as Contains and TryGetValue.&amp;#160; Contains holds no value to the user because as soon as the call returns the GC can collect the value.&amp;#160; TryGetValue on the other hand returns the value in question thus locking it in memory and preventing a collection.&amp;#160; &lt;/p&gt;

&lt;p&gt;When designing the API for a weak hashtable I tried to keep it simple and stick to these ideas.&amp;#160; I started with the &lt;a href="http://msdn.microsoft.com/en-us/library/s4ys34ea.aspx"&gt;IDictionary&amp;lt;TKey,TValue&amp;gt;&lt;/a&gt; interface and removed the methods which hold no value for the end user due to GC limitations.&amp;#160; In the end I was left with only the following.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;void Add(TKey key, TValue value) &lt;/li&gt;

  &lt;li&gt;bool Remove(TKey key) &lt;/li&gt;

  &lt;li&gt;void Clear() &lt;/li&gt;

  &lt;li&gt;bool TryGetValue(TKey key, out TValue value) &lt;/li&gt;

  &lt;li&gt;List&amp;lt;TValue&amp;gt; Values { get; } &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also added the following methods&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;List&amp;lt;Tuple&amp;lt;TKey,TValue&amp;gt;&amp;gt; Pairs&amp;#160; { get; } &lt;/li&gt;

  &lt;li&gt;Put(TKey key, TValue value) &lt;/li&gt;

  &lt;li&gt;Option&amp;lt;TValue&amp;gt; TryGetValue(TKey key); &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Values property returns a List&amp;lt;TValue&amp;gt; implementation instead of IEnumerable&amp;lt;TValue&amp;gt;&amp;#160; In order to guarantee the values remain in existence they must be rooted in some structure.&amp;#160; The easy choice is a List&amp;lt;TValue&amp;gt;.&amp;#160; Since a List&amp;lt;TValue&amp;gt; must be created anyways, why return a less accessible interface such as IEnumerable&amp;lt;TValue&amp;gt;?&amp;#160; &lt;/p&gt;

&lt;p&gt;At first I did consider a design where Values returned IEnumerable.&amp;#160; It is fairly simple to implement with a C# iterator.&amp;#160; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;TValue&amp;gt; Values {
    &lt;span style="color: blue"&gt;get &lt;/span&gt;{
        &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;weakRef &lt;span style="color: blue"&gt;in &lt;/span&gt;_map.Values) {
            &lt;span style="color: blue"&gt;var &lt;/span&gt;obj = weakRef.Target;
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(obj != &lt;span style="color: blue"&gt;null&lt;/span&gt;) {
                &lt;span style="color: blue"&gt;yield return &lt;/span&gt;(TValue)obj;
            }
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The problem though is that anything more than a simple .ForEach() over the IEnumerable may behave unexpectedly.&amp;#160; Consecutive calls to GetEnumerator can produce different enumerations with no explicit user alteration of the table.&amp;#160; I’ve seen several APIs which (rightly or wrongly) make this assumption.&amp;#160; Given the user is not explicitly modifying the collection, it is not a necessarily bad assumption to make.&amp;#160; However it would not work for a collection of this type.&lt;/p&gt;

&lt;p&gt;I intentionally left off Keys here.&amp;#160; Keys are only valid when they have a live value in the table.&amp;#160; Unless the Value is returned with Key this cannot be guaranteed.&amp;#160; The Pairs property serves this role.&amp;#160; &lt;/p&gt;

&lt;p&gt;This post went a bit longer than I originally intended.&amp;#160; I also wanted to discuss how compaction of the table should work in a weak hashtable.&amp;#160; I’ll save that for next time.&amp;#160; &lt;/p&gt;

&lt;p&gt;Here is the implementation of the dictionary without any compaction support.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public sealed class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WeakDictionary&lt;/span&gt;&amp;lt;TKey, TValue&amp;gt; {
    &lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;TKey, &lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;&amp;gt; m_map;

    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;&amp;lt;TKey, TValue&amp;gt;&amp;gt; Pairs {
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{
            &lt;span style="color: blue"&gt;return &lt;/span&gt;m_map
                    .Select(p =&amp;gt; &lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;.Create(p.Key, p.Value.Target))
                    .Where(t =&amp;gt; t.Second != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
                    .Select(t =&amp;gt; &lt;span style="color: #2b91af"&gt;Tuple&lt;/span&gt;.Create(t.First, (TValue)t.Second))
                    .ToList();
        }
    }

    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;TValue&amp;gt; Values {
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;Pairs.Select(x =&amp;gt; x.Second).ToList(); }
    }

    &lt;span style="color: blue"&gt;public &lt;/span&gt;WeakDictionary()
        : &lt;span style="color: blue"&gt;this&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;EqualityComparer&lt;/span&gt;&amp;lt;TKey&amp;gt;.Default) {
    }

    &lt;span style="color: blue"&gt;public &lt;/span&gt;WeakDictionary(&lt;span style="color: #2b91af"&gt;IEqualityComparer&lt;/span&gt;&amp;lt;TKey&amp;gt; comparer) {
        m_map = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;TKey, &lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;&amp;gt;(comparer);
    }

    &lt;span style="color: blue"&gt;public void &lt;/span&gt;Add(TKey key, TValue value) {
        m_map.Add(key, &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;(value));
    }

    &lt;span style="color: blue"&gt;public void &lt;/span&gt;Put(TKey key, TValue value) {
        m_map[key] = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;(value);
    }

    &lt;span style="color: blue"&gt;public bool &lt;/span&gt;Remove(TKey key) {
        &lt;span style="color: blue"&gt;return &lt;/span&gt;m_map.Remove(key);
    }

    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Option&lt;/span&gt;&amp;lt;TValue&amp;gt; TryGetValue(TKey key) {
        &lt;span style="color: #2b91af"&gt;WeakReference &lt;/span&gt;weakRef;
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(!m_map.TryGetValue(key, &lt;span style="color: blue"&gt;out &lt;/span&gt;weakRef)) {
            &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Option&lt;/span&gt;.Empty;
        }

        &lt;span style="color: blue"&gt;var &lt;/span&gt;target = weakRef.Target;
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(target == &lt;span style="color: blue"&gt;null&lt;/span&gt;) {
            &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Option&lt;/span&gt;.Empty;
        }

        &lt;span style="color: blue"&gt;return &lt;/span&gt;(TValue)target;
    }

    &lt;span style="color: blue"&gt;public bool &lt;/span&gt;TryGetValue(TKey key, &lt;span style="color: blue"&gt;out &lt;/span&gt;TValue value) {
        &lt;span style="color: blue"&gt;var &lt;/span&gt;option = TryGetValue(key);
        value = option.ValueOrDefault;
        &lt;span style="color: blue"&gt;return &lt;/span&gt;option.HasValue;
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9389341" width="1" height="1"&gt;</description><pubDate>Tue, 03 Mar 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9389341</guid><comments>http://blogs.msdn.com/jaredpar/comments/9389341.aspx</comments><author>Jared Parsons</author><source url="http://blogs.msdn.com/jaredpar/rss.xml">jaredpar's WebLog</source><ng:postId>7208763468</ng:postId><ng:feedId>26826</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>LLVM/Clang Replacing GCC In FreeBSD Base</title><link>http://feedproxy.google.com/~r/Phoronix/~3/Ed7zVsRSldQ/vr.php</link><description>In the quarterly report for FreeBSD, we learned something interesting: the FreeBSD developers intend to replace GCC with LLVM/Clang. The FreeBSD project wants to replace the GNU Compiler Collection with the Apple-backed Clang front-end compiler from LLVM...
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pLPu0YWuKaFyUtL7lPrp0ccj4ck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds2.feedburner.com/~r/Phoronix/~4/Ed7zVsRSldQ" height="1" width="1"/&gt;</description><pubDate>Mon, 11 May 2009 11:24:13 GMT</pubDate><guid isPermaLink="false">http://www.phoronix.com/vr.php?view=NzI1Ng</guid><source url="http://www.phoronix.com/rss.php">Phoronix</source><ng:postId>9460235310</ng:postId><ng:feedId>1490133</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Why are thread safe collections so hard?</title><link>http://blogs.msdn.com/jaredpar/archive/2009/02/11/why-are-thread-safe-collections-so-hard.aspx</link><description>&lt;p&gt;Writing a collection which is mutable, thread safe and usable is an extremely difficult process.&amp;nbsp; At least that’s what you’ve likely been told all through your schooling.&amp;nbsp; But then you get out on the web and see a multitude of thread safe lists, maps and queues.&amp;nbsp; If it’s so hard, why are there so many examples?&amp;nbsp; &lt;/p&gt;  &lt;p&gt;The problem is there are several levels of thread safe collections.&amp;nbsp; I find that when most people say thread safe collection what they really mean “a collection that will not be corrupted when modified and accessed from multiple threads”.&amp;nbsp;&amp;nbsp; Lets call this “data thread safe” for brevity.&amp;nbsp; This type of collection is rather easy to build.&amp;nbsp; Virtually any collection that is not thread safe can be made “data thread safe” by synchronizing access via a simple locking mechanism.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;For Example, lets build a data thread safe List&amp;lt;T&amp;gt;.&amp;nbsp; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeList&lt;/span&gt;&amp;lt;T&amp;gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;    &lt;span style="color: blue;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; m_list = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;();&lt;br&gt;    &lt;span style="color: blue;"&gt;private object &lt;/span&gt;m_lock = &lt;span style="color: blue;"&gt;new object&lt;/span&gt;();&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Add(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_list.Add(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Remove(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_list.Remove(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;Contains(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list.Contains(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public int &lt;/span&gt;Count { &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list.Count; } } }&lt;br&gt;    &lt;span style="color: blue;"&gt;public &lt;/span&gt;T &lt;span style="color: blue;"&gt;this&lt;/span&gt;[&lt;span style="color: blue;"&gt;int &lt;/span&gt;index] {&lt;br&gt;        &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list[index]; } }&lt;br&gt;        &lt;span style="color: blue;"&gt;set &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { m_list[index] = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; } }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: green;"&gt;// IEnumerable&amp;lt;T&amp;gt; left out&lt;br&gt;&lt;/span&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;And there you have it.&amp;nbsp; The lock statement prevents concurrent access from multiple threads.&amp;nbsp; So the actual m_list instance is only ever accessed by a single thread at a time which is all it’s designed to do.&amp;nbsp; This means instances of ThreadSafeList&amp;lt;T&amp;gt; can be used from any thread without fear of corrupting the underlying data.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;But if building a data thread safe list is so easy, why doesn’t Microsoft add these standard collections in the framework?&lt;/p&gt;

&lt;p&gt;Answer: ThreadSafeList&amp;lt;T&amp;gt; is a virtually unusable class because the design leads you down the path to bad code.&lt;/p&gt;

&lt;p&gt;The flaws in this design are not apparent until you examine how lists are commonly used.&amp;nbsp; For example,&amp;nbsp; take the following code which attempts to grab the first element out of the list if there is one.&amp;nbsp; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;static int &lt;/span&gt;GetFirstOrDefault(&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeList&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&amp;gt; list) {&lt;br&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(list.Count &amp;gt; 0) {&lt;br&gt;        &lt;span style="color: blue;"&gt;return &lt;/span&gt;list[0];&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;0;&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This code is a classic race condition.&amp;nbsp; Consider the case where there is only one element in the list.&amp;nbsp; If another thread removes that element in between the if statement and the return statement, the return statement will throw an exception because it’s trying to access an invalid index in the list.&amp;nbsp; Even though ThreadSafeList&amp;lt;T&amp;gt; is data thread safe, there is nothing guaranteeing the validity of a return value of one call across the next call to the same object.&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p&gt;I refer to procedures like Count as decision procedures.&amp;nbsp; They server only to allow you to make a decision about the underlying object.&amp;nbsp; Decision procedures on a concurrent object are virtually useless.&amp;nbsp; As soon as the decision is returned, you must assume the object has changed and hence you cannot use the result to take any action.&lt;/p&gt;

&lt;p&gt;Decision procedures are one of the reasons why &lt;a href="http://code.msdn.microsoft.com/BclExtras" mce_href="http://code.msdn.microsoft.com/BclExtras"&gt;Immutable Collections&lt;/a&gt; are so attractive.&amp;nbsp; They are both data thread safe and allow you to reason about there APIs.&amp;nbsp; Immutable Collections don’t change &lt;b&gt;ever.&amp;nbsp; &lt;/b&gt;Hence it’s perfectly ok to have decision procedures on them because the result won’t get invalidated.&lt;/p&gt;

&lt;p&gt;The fundamental issue with ThreadSafeList&amp;lt;T&amp;gt; is it is designed to act like a List&amp;lt;T&amp;gt;.&amp;nbsp; Yet List&amp;lt;T&amp;gt; is not designed for concurrent access.&amp;nbsp;&amp;nbsp; When building a mutable concurrent collection, in addition to considering the validity of the data, you must consider how design the API to deal with the constantly changing nature of the collection.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;When designing a concurrent collection you should follow different guidelines than for a normal collection class.&amp;nbsp; For example.&amp;nbsp; &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Don’t add an decision procedures.&amp;nbsp; They lead users down the path to bad code. &lt;/li&gt;

  &lt;li&gt;Methods which query the object can always fail and the API should reflect this. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Based on that, lets look at a refined design for ThreadSafeList&amp;lt;T&amp;gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeList&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;    &lt;span style="color: blue;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; m_list = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;();&lt;br&gt;    &lt;span style="color: blue;"&gt;private object &lt;/span&gt;m_lock = &lt;span style="color: blue;"&gt;new object&lt;/span&gt;();&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Add(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_list.Add(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;TryRemove(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list.Remove(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;TryGet(&lt;span style="color: blue;"&gt;int &lt;/span&gt;index, &lt;span style="color: blue;"&gt;out &lt;/span&gt;T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;( m_lock ) {&lt;br&gt;            &lt;span style="color: blue;"&gt;if&lt;/span&gt;( index &amp;lt; m_list.Count ) {&lt;br&gt;                value = m_list[index];&lt;br&gt;                &lt;span style="color: blue;"&gt;return true&lt;/span&gt;;&lt;br&gt;            }&lt;br&gt;            value = &lt;span style="color: blue;"&gt;default&lt;/span&gt;(T);&lt;br&gt;            &lt;span style="color: blue;"&gt;return false&lt;/span&gt;;&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Summary of the changes&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Both the Contains and Count procedures were removed because they were decision procedures &lt;/li&gt;

  &lt;li&gt;Remove was converted to TryRemove to indicate it’s potential to fail &lt;/li&gt;

  &lt;li&gt;The TryGet property was added and is reflective of the fragile nature of the method.&amp;nbsp; Sure it’s possible for users to simply ignore the return value and plow on with the invalid value.&amp;nbsp; However the API is not lulling the user into a false sense of security &lt;/li&gt;

  &lt;li&gt;The collection no longer implements IEnumerable&amp;lt;T&amp;gt;.&amp;nbsp; IEnumerable&amp;lt;T&amp;gt; is only valid when a collection is not changing under the hood.&amp;nbsp; There is no way to easily make this guarantee with a collection built this way and hence it was removed.&amp;nbsp; &lt;/li&gt;

  &lt;li&gt;The indexers were removed as well.&amp;nbsp; I’m a bit wishy washy in this particular point as there is nothing in the API which gives a user a false sense of security.&amp;nbsp; But at the same time mutable concurrent collections are dangerous and should be treated with a heightened sense of respect so the indexers were removed. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This version of ThreadSafeList is more resilient, but not immune to, accidental user failure.&amp;nbsp; The design tends to lead users on the path to better code.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;But is it really usable?&amp;nbsp; Would you use it in your application?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9412190" width="1" height="1"&gt;</description><pubDate>Wed, 11 Feb 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9412190</guid><comments>http://blogs.msdn.com/jaredpar/comments/9412190.aspx</comments><author>Jared Parsons</author><source url="http://blogs.msdn.com/jaredpar/rss.xml">jaredpar's WebLog</source><ng:postId>7051091888</ng:postId><ng:feedId>26826</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>A more usable API for a mutable thread safe collection</title><link>http://blogs.msdn.com/jaredpar/archive/2009/02/16/a-more-usable-thread-safe-collection.aspx</link><description>
&lt;p&gt;In my last &lt;a href="http://blogs.msdn.com/jaredpar/archive/2009/02/11/why-are-thread-safe-collections-so-hard.aspx" mce_href="http://blogs.msdn.com/jaredpar/archive/2009/02/11/why-are-thread-safe-collections-so-hard.aspx"&gt;post&lt;/a&gt; we discussed the problems with designing a safer API for mutable thread safe collections that employ only an internal locking system.&amp;nbsp; The result was an API that was more difficult to mess up, yet pretty much unusable.&amp;nbsp; Lets take a look at this problem and see if we can come up with a usable API that still helps to eliminate mistakes.&amp;nbsp; &lt;/p&gt;
  
&lt;p&gt;One of the main issues I have with mutable thread safe collections is the use of decision procedures such as Count and Contains.&amp;nbsp; Procedures such these only return information that pertains to the collection as it existed at a previous point in time.&amp;nbsp; It can provide no relevant information to the collection in it’s current state and only encourages the user to write bad code.&amp;nbsp; For example.&amp;nbsp; &lt;/p&gt;
  
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;if &lt;/span&gt;(col.Count &amp;gt; 0) {&lt;br&gt;    &lt;span style="color: green;"&gt;// Collection can be modified before this next line executes leading to &lt;br&gt;    // an error condition&lt;br&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;var &lt;/span&gt;first = col[0]; &lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Therefore they have no place on a mutable thread safe collection.&amp;nbsp; Yet, once you take away these procedures, you’re left with a collection that is virtually useless.&amp;nbsp; It can only have a minimal API by which to access data.&amp;nbsp; Here is the last example we were left with &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeList&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Add(T value) { ... }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;TryRemove(T value) { ... }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;TryGet(&lt;span style="color: blue;"&gt;int &lt;/span&gt;index, &lt;span style="color: blue;"&gt;out &lt;/span&gt;T value) { ... }&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This is hardly a usable API.&amp;nbsp; What’s worse, as wekempf point out, is that I inadvertently exposed a decision procedure in this API.&amp;nbsp; It’s possible to infer state about a lower or equal index by a successful return result from TryGet().&amp;nbsp; For example, a user may say that “if I can access element 2, then surely element 1 must exist”.&amp;nbsp; The result would still be evident in code (ignoring the return value of a TryGet method should be a red flag).&amp;nbsp; But a better choice for this method would have been a TryGetFirst().&amp;nbsp; &lt;/p&gt;

&lt;p&gt;At the end of the day, users are going to want some level of determinism out of their collections.&amp;nbsp; It’s possible to program against API’s like the above, but most people won’t do it.&amp;nbsp; In order to be more used, the collection must be able to reliably implement procedures such as Count and Contains and allow the user to use the return to reason about the state of the collection.&lt;/p&gt;

&lt;p&gt;One way to do this is to simply exposed the internal lock to the consumer of the collection.&amp;nbsp; Consumers can take the lock and then query to their hearts content.&amp;nbsp; Lets do a quick modification of the original sample to allow for this.&amp;nbsp; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeList&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;    &lt;span style="color: blue;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt; m_list = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;();&lt;br&gt;    &lt;span style="color: blue;"&gt;private object &lt;/span&gt;m_lock = &lt;span style="color: blue;"&gt;new object&lt;/span&gt;();&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public object &lt;/span&gt;SyncLock { &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_lock; } }&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Add(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_list.Add(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Remove(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_list.Remove(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;Contains(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list.Contains(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    &lt;span style="color: blue;"&gt;public int &lt;/span&gt;Count { &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list.Count; } } }&lt;br&gt;    &lt;span style="color: blue;"&gt;public &lt;/span&gt;T &lt;span style="color: blue;"&gt;this&lt;/span&gt;[&lt;span style="color: blue;"&gt;int &lt;/span&gt;index] {&lt;br&gt;        &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_list[index]; } }&lt;br&gt;        &lt;span style="color: blue;"&gt;set &lt;/span&gt;{ &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) { m_list[index] = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; } }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Now we can go back to the original sample code and write a version which can use the decision procedures safely.&amp;nbsp; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;lock &lt;/span&gt;(col.SyncLock) {&lt;br&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(col.Count &amp;gt; 0) {&lt;br&gt;        &lt;span style="color: blue;"&gt;var &lt;/span&gt;first = col[0];&lt;br&gt;        ...&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This code will function correctly.&amp;nbsp; But the API leaves a lot to be desired.&amp;nbsp; In particular … &lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;It provides no guidance to the user as to which procedures must be accessed with the SyncLock object locked.&amp;nbsp; They can just as easily write the original bad sample code.&amp;nbsp; &lt;/li&gt;

  
&lt;li&gt;
    
&lt;p&gt;All procedures used within the lock reacquire the lock recursively which is definitely &lt;a href="http://zaval.org/resources/library/butenhof1.html" mce_href="http://zaval.org/resources/library/butenhof1.html"&gt;not advisable&lt;/a&gt;.&amp;nbsp; We could provide properties which do not acquire the lock such as CountNoLock that work around this problem. While ok in small doses, it's just a matter of time before you see this snippet in the middle of a huge mostly undocumented function&lt;/p&gt;

    
&lt;pre class="code"&gt;&lt;span style="color: green;"&gt;// Lock should be held at this point&lt;br&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;int &lt;/span&gt;count = col.CountNoLock;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
    
&lt;p&gt;This code makes my eyes bleed&lt;/p&gt;
  &lt;/li&gt;

  
&lt;li&gt;The API provides 0 information to the user on exactly what the rules are for this lock.&amp;nbsp; It would be left as an artifact in documentation (which you simply cannot count on users reading).&amp;nbsp; &lt;/li&gt;

  
&lt;li&gt;There is really nothing telling the user that they ever have to unlock the collection.&amp;nbsp; Surely, any user entering into the world of threading should know this but if they do a Monitor.Enter call without a corresponding Monitor.Exit, they will receive no indication this is a bad idea.&amp;nbsp; &lt;/li&gt;

  
&lt;li&gt;Overall this collection requires a lot of new knowledge about the collection to use &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This design though is exactly how a “synchronized” collection in 1.0 version of the BCL worked.&amp;nbsp; This code is essentially what you would get by passing an ArrayList instance to ArrayList.Synchronized (and most other BCL 1.0 collections).&amp;nbsp;&amp;nbsp; It was problematic enough that all of the new collections in 2.0 did not implement this &lt;i&gt;feature&lt;/i&gt;.&amp;nbsp; Here’s the BCL team’s explanation on this &lt;a href="http://blogs.msdn.com/bclteam/archive/2005/03/15/396399.aspx" title="http://blogs.msdn.com/bclteam/archive/2005/03/15/396399.aspx" mce_href="http://blogs.msdn.com/bclteam/archive/2005/03/15/396399.aspx"&gt;http://blogs.msdn.com/bclteam/archive/2005/03/15/396399.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall this design poses several problems because it exposes internal implementation details directly to the consumer.&amp;nbsp; An improved design should seek to hide the lock from direct access.&amp;nbsp; What we really want is a way to not even provide API’s like Count and Contains unless the object is already in a locked state.&amp;nbsp; This prevents them from being used at all in an incorrect scenario.&lt;/p&gt;

&lt;p&gt;Lets run with this idea to design a more usable thread safe queue.&amp;nbsp; First we’ll divide the interface for a queue into two parts.&amp;nbsp; &lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;All procedures that have 0 reliance on the internal state of the collection.&amp;nbsp; Namely Enqueue, and Clear.&amp;nbsp; No state is required to use these methods &lt;/li&gt;

  
&lt;li&gt;All procedures that rely on the internal state of the collection to function correctly.&amp;nbsp; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The ThreadSafeQueue class will contain all of the methods in category #1.&amp;nbsp; It will also provide a method which returns an instance of an interface which has all of the methods in category #2.&amp;nbsp; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public interface &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ILockedQueue&lt;/span&gt;&amp;lt;T&amp;gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;IDisposable&lt;/span&gt;{&lt;br&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;Count { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; }&lt;br&gt;    &lt;span style="color: blue;"&gt;bool &lt;/span&gt;Contains(T value);&lt;br&gt;    T Dequeue();&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The implementation of this interface object will acquire the internal lock of the original ThreadSafeQueue during construction and hold it for the duration if it’s lifetime.&amp;nbsp; This effectively freezes the queue allowing for decision procedures to be used reliably.&amp;nbsp; Implementing IDisposable and releasing the lock in the Dispose method provides a measure of lifetime management.&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p&gt;The rest of the code sample is below.&amp;nbsp; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeQueue&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;#region &lt;/span&gt;LockedQueue&lt;br&gt;    &lt;span style="color: blue;"&gt;private sealed class &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;LockedQueue &lt;/span&gt;: &lt;span style="color: rgb(43, 145, 175);"&gt;ILockedQueue&lt;/span&gt;&amp;lt;T&amp;gt; {&lt;br&gt;        &lt;span style="color: blue;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeQueue&lt;/span&gt;&amp;lt;T&amp;gt; m_outer;&lt;br&gt;        &lt;span style="color: blue;"&gt;internal &lt;/span&gt;LockedQueue(&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeQueue&lt;/span&gt;&amp;lt;T&amp;gt; outer) {&lt;br&gt;            m_outer = outer;&lt;br&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Monitor&lt;/span&gt;.Enter(m_outer.m_lock);&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        &lt;span style="color: blue;"&gt;#region &lt;/span&gt;ILockedQueue&amp;lt;T&amp;gt; Members&lt;br&gt;        &lt;span style="color: blue;"&gt;public int &lt;/span&gt;Count { &lt;br&gt;            &lt;span style="color: blue;"&gt;get &lt;/span&gt;{ &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_outer.m_queue.Count; }&lt;br&gt;        }&lt;br&gt;        &lt;span style="color: blue;"&gt;public bool &lt;/span&gt;Contains(T value) {&lt;br&gt;            &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_outer.m_queue.Contains(value);&lt;br&gt;        }&lt;br&gt;        &lt;span style="color: blue;"&gt;public &lt;/span&gt;T Dequeue() {&lt;br&gt;            &lt;span style="color: blue;"&gt;return &lt;/span&gt;m_outer.m_queue.Dequeue();&lt;br&gt;        }&lt;br&gt;        &lt;span style="color: blue;"&gt;#endregion&lt;br&gt;        #region &lt;/span&gt;IDisposable Members&lt;br&gt;        &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Dispose() {&lt;br&gt;            Dispose(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;br&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;GC&lt;/span&gt;.SuppressFinalize(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);&lt;br&gt;        }&lt;br&gt;        &lt;span style="color: blue;"&gt;private void &lt;/span&gt;Dispose(&lt;span style="color: blue;"&gt;bool &lt;/span&gt;disposing) {&lt;br&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;Debug&lt;/span&gt;.Assert(disposing, &lt;span style="color: rgb(163, 21, 21);"&gt;"ILockedQueue implementations must be explicitly disposed"&lt;/span&gt;); &lt;br&gt;            &lt;span style="color: blue;"&gt;if &lt;/span&gt;(disposing) {&lt;br&gt;                &lt;span style="color: rgb(43, 145, 175);"&gt;Monitor&lt;/span&gt;.Exit(m_outer.m_lock);&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        ~LockedQueue() {&lt;br&gt;            Dispose(&lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;br&gt;        }&lt;br&gt;        &lt;span style="color: blue;"&gt;#endregion&lt;br&gt;    &lt;/span&gt;}&lt;br&gt;    &lt;span style="color: blue;"&gt;#endregion&lt;br&gt;&lt;br&gt;    private &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Queue&lt;/span&gt;&amp;lt;T&amp;gt; m_queue = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Queue&lt;/span&gt;&amp;lt;T&amp;gt;();&lt;br&gt;    &lt;span style="color: blue;"&gt;private object &lt;/span&gt;m_lock = &lt;span style="color: blue;"&gt;new object&lt;/span&gt;();&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public &lt;/span&gt;ThreadSafeQueue() { }&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Enqueue(T value) {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_queue.Enqueue(value);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public void &lt;/span&gt;Clear() {&lt;br&gt;        &lt;span style="color: blue;"&gt;lock &lt;/span&gt;(m_lock) {&lt;br&gt;            m_queue.Clear();&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    &lt;span style="color: blue;"&gt;public &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ILockedQueue&lt;/span&gt;&amp;lt;T&amp;gt; Lock() {&lt;br&gt;        &lt;span style="color: blue;"&gt;return new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;LockedQueue&lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;

&lt;p&gt;This design now cleanly separates out the two modes by which the collection can be asked.&amp;nbsp; It completely hides the explicit synchronization aspects from the users and replaces it with design patterns (such as IDisposable) that they are likely already familiar with.&amp;nbsp; Now our original bad sample can be rewritten as follows.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;static void &lt;/span&gt;Example1(&lt;span style="color: rgb(43, 145, 175);"&gt;ThreadSafeQueue&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&amp;gt; queue) {&lt;br&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;locked = queue.Lock()) {&lt;br&gt;        &lt;span style="color: blue;"&gt;if &lt;/span&gt;(locked.Count &amp;gt; 0) {&lt;br&gt;            &lt;span style="color: blue;"&gt;var &lt;/span&gt;first = locked.Dequeue();&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;No explicit synchronization code is needed by the user.&amp;nbsp; This design makes it much harder for the user to make incorrect assumptions or misuses of the collection.&amp;nbsp; The “decision procedures” are simply not available unless the collection is in a locked state.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;As with most thread safe designs, there are ways in which this code can be used incorrectly &lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;
    
&lt;p&gt;Using an instance of ILockedQueue&amp;lt;T&amp;gt; after it’s been disposed.&amp;nbsp; This though is already considered taboo though and we can rely on existing user knowledge to help alleviate this problem.&amp;nbsp; Additionally, static analysis tools, such as FxCop, will flag this as an error.&lt;/p&gt;

    
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

    
&lt;p&gt;With a bit more rigor this can also be prevented. Simply add a disposed flag and check it on entry into every method.&lt;/p&gt;
  &lt;/li&gt;

  
&lt;li&gt;It’s possible for the user to maintain values, such as Count, between calls to Lock and use it to make an incorrect assumption about the state of the list.&amp;nbsp; &lt;/li&gt;

  
&lt;li&gt;If the user fails to dispose the ILockedQueue&amp;lt;T&amp;gt; instance it will be forever locked.&amp;nbsp; Luckily FxCop will also flag this as an error since it’s an IDisposable.&amp;nbsp; It’s not a foolproof mechanism though. &lt;/li&gt;

  
&lt;li&gt;There is nothing that explicitly says to the user “please only use ILockedQueue&amp;lt;T&amp;gt; for a very short time”.&amp;nbsp; IDisposable conveys this message to a point but it’s certainly not perfect.&lt;/li&gt;

  
&lt;li&gt;The actual ILockedQueue&amp;lt;T&amp;gt; implementation is not thread safe.&amp;nbsp; Ideally users won’t pass instances of IDisposable between threads but it is something to think about.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The good news is that two of these flaws (1 and 3) are issues with existing types and tools are already designed to weed them out.&amp;nbsp; FxCop will catch common cases for both of them.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;Also, many of these cases are considered bad code in the absence of a thread safe collection.&amp;nbsp; This allows users to rely on existing knowledge instead of forcing them to learn new design patterns for mutable thread safe collections.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;Overall I feel like this design is a real win over the other versions.&amp;nbsp; It provides an API which helps to limit the mistakes a user can make with a mutable thread safe collection without requiring a huge deal of new patterns in order to use.&amp;nbsp; &lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9424930" width="1" height="1"&gt;</description><pubDate>Mon, 16 Feb 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9424930</guid><comments>http://blogs.msdn.com/jaredpar/comments/9424930.aspx</comments><author>Jared Parsons</author><source url="http://blogs.msdn.com/jaredpar/rss.xml">jaredpar's WebLog</source><ng:postId>7089061438</ng:postId><ng:feedId>26826</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Dvorak keyboard … is it really faster ???</title><link>http://blogs.msdn.com/jaredpar/archive/2009/01/12/dvorak-keyboard-is-it-really-faster-gasp.aspx</link><description>&lt;P&gt;Most people discover I’m a Dvorak user because they’re in my office, attempt to drive during a conversation and find they are typing gibberish.&amp;nbsp; I take the keyboard, hit CTRL+LEFT_SHIFT and they’re on their way again.&amp;nbsp; Well at least until they open up a new window.&amp;nbsp; It usually leads to a conversation about how I like Dvorak.&amp;nbsp; And most importantly … “is it really faster than QWERTY?”&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I’ve been using a &lt;A href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard" mce_href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvorak keyboard&lt;/A&gt; for 4 years now.&amp;nbsp; If you’re not familiar with Dvorak, it’s an alternative keyboard layout designed to be better in QWERTY in both efficiency and speed back in 1936.&amp;nbsp; Other benefits are also associated with it such as ergonomics, reduced typos, etc.&amp;nbsp; In my experience I find developers are much more keenly interested in the speed part.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Over 70 years later there is still a bit of debate if it achieved these goals.&amp;nbsp; There are several studies of greater and lesser quality on the subject.&amp;nbsp; None of which really has seemed to end the debate.&amp;nbsp; If you are curious about the actual studies I encourage you to start at the &lt;A href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard" mce_href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;wikipedia page&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Before I switched to Dvorak I read a few of the studies.&amp;nbsp; In the end I’m not sure of their respective quality level but it didn’t stop me from trying out Dvorak anyways.&amp;nbsp; Why?&amp;nbsp; As I said there appeared to be a lot of debate, typing faster sounded nice and my former college roommate convinced me it was a great idea.&amp;nbsp;&amp;nbsp; The last reason being the most important.&lt;/P&gt;
&lt;P&gt;What I didn’t see a lot of though when I was reading up on it was how the Dvorak keyboard affects the life of a developer (at least outside the speed thing).&amp;nbsp; The studies were geared toward more general problems.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So this post is about how I feel the layout affects me as a developer 4 years later.&amp;nbsp; Note the word &lt;STRONG&gt;feel&lt;/STRONG&gt;.&amp;nbsp; If you are looking for a hard core scientific study, I would navigate elsewhere.&amp;nbsp; This is about my personal experiences as a developer with learning Dvorak and using it in my daily routine.&amp;nbsp; So please read this post as an opinion piece and not a statement of fact.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is it faster?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;While I was reading up on Dvorak but still typing QWERTY I started timing myself with several programs.&amp;nbsp; In particular I measured peak WPM and average WPM.&amp;nbsp; Two weeks later I started with Dvorak and kept timing myself for about the next six months.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In terms of peak WPM Dvorak is definitely faster for me.&amp;nbsp; I could get a steady peak at 120 WPM on QWERTY but can get into 140 with Dvorak.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For my normal day to day typing, I do type faster but not appreciably so.&amp;nbsp; Maybe 5 WPM.&amp;nbsp; I can easily hit and maintain 70-80 WPM for day to day tasks and once you’re at that speed, much more isn’t really noticed when you’re coding.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How long did it take to switch?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The first month was mostly me trying to work in Dvorak but getting so frustrated that I switched back to QWERTY to get real work done.&amp;nbsp; After the first month I spent the majority of my time in Dvorak.&amp;nbsp; I was noticeably slower in replying to email and occasionally I would switch back to QWERTY to fire off a longer email or code snippet.&amp;nbsp; The third month was the turning point.&amp;nbsp; I hit full time Dvorak and stopped switching to QWERTY except for cases where someone else was in my office.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I kept using typing tests continually check on how my overall speed was doing.&amp;nbsp; Around the end of the third month I pretty much hit parity with my QWERTY abilities.&amp;nbsp; After six months I did see a small increase in my average WPM and I hit 140 WPM several times.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is it more ergonomic?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Before I started using Dvorak I was getting a bit of CTS in my right shoulder.&amp;nbsp; Enough so that I started looking into exercises to help it out.&amp;nbsp; The symptoms started to go away fairly soon after I started using Dvorak as my full time layout.&lt;/P&gt;
&lt;P&gt;Now I am &lt;STRONG&gt;not&lt;/STRONG&gt; actually making a claim that it’s more ergonomic.&amp;nbsp; For me in my situation it helped.&amp;nbsp; IMHO, I think it’s just as likely that a simple change of pace had as much to do with it as the actual layout.&amp;nbsp; But if you’re desperate and you have time to kill … &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Are any of the key repositioning impactful for development?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Yes.&amp;nbsp; The repositioning of the {},[] and = keys is brutal for a developer in a C based language.&amp;nbsp; Essentially anything in the top right corner of the QWERTY keyboard.&amp;nbsp; They keys are in almost the same position.&amp;nbsp; This made the switch even harder as muscle memory kept taking over and spitting jibberish into my code.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This will make life difficult for the first month or so.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What weird issues did I encounter?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I think the biggest issue is I’m a VIM user.&amp;nbsp; For some reason I thought it a bright idea to not do any special VIM mapping and learn to use the standard VIM key mappings with Dvorak.&amp;nbsp; That was … a learning experience.&amp;nbsp; It took quite some time before it turned back into muscle memory.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Can you still type QWERTY?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Somewhat.&amp;nbsp; It takes me about 5 minutes to get going but after that I can touch type to a degree.&amp;nbsp; Albeit pretty slowly.&amp;nbsp; Enough though that I can use a machine for a few hours and debug a problem.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Using very cryptic command line programs such as WinDbg, PowerShell or VIM on QWERTY is very painful.&amp;nbsp; It’s amazing how much of that is just muscle memory.&amp;nbsp; Even if I get into QWERTY touch type mode I have to think very hard about what I’m typing in those types of programs.&amp;nbsp; I flat out can’t use VIM but the rest I get by after a bit of frustration.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Do you make less typos?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;That sound you heard was the rest of my coworkers and my wife laughing hysterically.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;One of the benefits I read about when I switched to Dvorak is that it would reduce typos and misspellings.&amp;nbsp; I’ll sum that claim up with a quick “Didn’t wrok for me”.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Passwords&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Eventually, you will encounter a situation that forces you to type your password in QWERTY.&amp;nbsp; Prior to QWERTY when choosing a new password, I would stare at my keyboard and type in gibberish for a new password.&amp;nbsp; Well not exactly gibberish, it had to have a certain count of numbers, symbols, letters and a minimum length.&amp;nbsp; But I would take 5 minutes and just learn the gibberish via muscle memory.&lt;/P&gt;
&lt;P&gt;This is not so great when you need to type in a&amp;nbsp;passworld via QWERTY.&amp;nbsp; Muscle memory doesn't quite translate back to the QWERTY binding.&amp;nbsp;&amp;nbsp;To the people sitting in the room with me I'm sure it was fairly humerous.&amp;nbsp; I would type a few letters into the password box, then mouse to&amp;nbsp;the desktop, type quickly, see where my fingers ended up, and then type the next few letters of the password.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The lesson is, make sure you know what your password is, and not just where to move your fingers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Do I think that developers should switch to Dvorak?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For 95% of the developers out there I would say no.&amp;nbsp; The gains are minor if any.&amp;nbsp; Outside of WPM the gains are subjective.&amp;nbsp; Developers really seem intent on the speed portion of the switch.&amp;nbsp; This speed gain was minor for me.&amp;nbsp; Once you can steady type ~70WPM the gain really doesn’t seem worth it for programming.&amp;nbsp; But more importantly though, being faster won’t make you a better programmer, practice will. &lt;/P&gt;
&lt;P&gt;Additionally, besides the learning curve of getting to Dvorak, you have to retain some level of competence at QWERTY.&amp;nbsp; Whether it’s debugging problems on other peoples machines, or participating in a group presentation you will be using QWERTY more often than you think.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;But there are that 5% who are &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Looking for a challenge &lt;/LI&gt;
&lt;LI&gt;Want to try something different &lt;/LI&gt;
&lt;LI&gt;Or simply just want other people to stop using your computer &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Even if you do stick it out though, the benefits are small and many are very subjective. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;EDIT:&lt;/STRONG&gt; Forgot the problems I had with passwords&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9244403" width="1" height="1"&gt;</description><pubDate>Mon, 12 Jan 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9244403</guid><comments>http://blogs.msdn.com/jaredpar/comments/9244403.aspx</comments><author>Jared Parsons</author><source url="http://blogs.msdn.com/jaredpar/rss.xml">jaredpar's WebLog</source><ng:postId>6809917770</ng:postId><ng:feedId>26826</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>MPAA: teachers should videotape monitors, not rip DVDs</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/y1RFwbXnbRY/mpaa-teachers-should-video-record-tv-screens-not-rip-dvds.ars</link><description>&lt;a href="http://arstechnica.com/tech-policy/news/2009/05/mpaa-teachers-should-video-record-tv-screens-not-rip-dvds.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/05/thumb_chalkboard-thumb-230x130-4975-f.jpg" alt="companion photo for MPAA: teachers should videotape monitors, not rip DVDs" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;The Motion Picture Association of America has put itself back into the limelight as the &lt;a href="http://arstechnica.com/tech-policy/news/2009/04/fight-for-your-right-to-crack-drm.ars"&gt;DMCA exemptions&lt;/a&gt; hearings wraps up, thanks to a video circulating online suggesting teachers should use camcorders to record video instead of ripping DVD clips for classroom use. Though this suggestion has been floating around for some time now, the MPAA's attempt to push such a convoluted (and more costly) process into the classroom only highlights the industry's desperation to keep people away from DVD ripping&amp;#8212;even when what they're doing falls into the category of fair use.&lt;/p&gt;

&lt;p&gt;The video, posted on &lt;a href="http://vimeo.com/4520463"&gt;Vimeo&lt;/a&gt;, is actually of MPAA execs showing another video (meant to instruct teachers) to the US Copyright Office. The MPAA was showing the video as &lt;a href="http://arstechnica.com/apple/news/2009/02/apple-sides-with-mpaa-riaa-against-drm-circumvention.ars"&gt;part of the triennial DMCA exemptions&lt;/a&gt;&amp;nbsp;review, when all sides of the copyright debate whip out as much ammo as they can in an attempt to get the law extended to allow certain behaviors (or disallow, as the case may be) for the next three years. &lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/tech-policy/news/2009/05/mpaa-teachers-should-video-record-tv-screens-not-rip-dvds.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/tmzijFyiyYm2NO1pk2njmV_01wA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/tmzijFyiyYm2NO1pk2njmV_01wA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/tmzijFyiyYm2NO1pk2njmV_01wA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/tmzijFyiyYm2NO1pk2njmV_01wA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=y1RFwbXnbRY:Z3plLuworkY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=y1RFwbXnbRY:Z3plLuworkY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=y1RFwbXnbRY:Z3plLuworkY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=y1RFwbXnbRY:Z3plLuworkY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=y1RFwbXnbRY:Z3plLuworkY:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=y1RFwbXnbRY:Z3plLuworkY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/y1RFwbXnbRY" height="1" width="1"/&gt;</description><pubDate>Fri, 08 May 2009 02:49:38 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/tech-policy/news/2009/05/mpaa-teachers-should-video-record-tv-screens-not-rip-dvds.ars</guid><author>jacqui@arstechnica.com (Jacqui Cheng)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9421868183</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Theora Pulling Ahead of H264</title><link>http://www.osnews.com/story/21451/Theora_Pulling_Ahead_of_H264</link><description>Chris Montgomery, otherwise known as Monty, is the founder of Xiph.org foundation and creator of the Ogg container format. He has been sponsored by Red Hat for several years to improve the codec quality of Theora and the next generation version, called Thusnelda, is already proving to be better than H264 as bitrate increases. Monty has posted some test results demonstrating the improvements. Chris Blizzard from Mozilla Foundation has some updates as well.</description><pubDate>Fri, 08 May 2009 09:07:44 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21451/Theora_Pulling_Ahead_of_H264</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9424831178</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Miguel de Icaza: Developing Silverlight Apps on Linux and MacOS with Moonlight</title><link>http://tirania.org/blog/archive/2009/May-08.html</link><description>
	&lt;p&gt;Earlier this week I promised I would blog about how to
	build Silverlight apps in Linux.    Michael beat me to this
	and did a couple of screencasts.

	&lt;p&gt;In &lt;a href="http://mjhutchinson.com/journal/2009/05/08/moonlight_development_linux_monodevelop"&gt;Moonlight
	Development in Linux with MonoDevelop&lt;/a&gt; he walks us through
	the steps necessary to install the Moonlight SDK on top of
	Mono 2.4 and using MonoDevelop to create your app.    Once you
	get these installed, here is how you get started with
	development:

	&lt;div id="mdMoonVidDiv"&gt;
	&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="600" height="450" style="max-width: 98%; display: block; margin-left: auto; margin-right: auto;"&gt;
	&lt;param name="source" value="http://mjhutchinson.com/files/screencasts/SL2VideoPlayerM.xap" /&gt;
	&lt;param name="background" value="white" /&gt;
	&lt;param name="enableHtmlAccess" value="True" /&gt;
	&lt;param name="initParams" value="m=http://silverlight.services.live.com/99206/Moonlight%20Development%20on%20Linux%20with%20MonoDevelop/video.wmv,thumbnail=http://mjhutchinson.com/files/screencasts/MDMoonDemo.png" /&gt;
	
	&lt;param name="minruntimeversion" value="2.0.31005.0" /&gt;
	&lt;a href="http://go.microsoft.com/fwlink/?LinkId=124807" style="text-decoration: none;"&gt;
	&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;
	&lt;/a&gt;
	&lt;/object&gt;&lt;/div&gt;

	&lt;p&gt;MonoDevelop will provide auto-complete for the Silverlight
	APIs and also provide auto-complete in XAML files.

	&lt;p&gt;In addition to Linux, you can
	also &lt;a href="http://monodevelop.com/Download/Mac_Preview"&gt;use
	MonoDevelop on OSX&lt;/a&gt; to do the same thing.  We shipped
	Moonlight's SDK as part of the MonoDevelop/OSX release, the
	result runs with Microsoft's Silverlight.

	&lt;p&gt;Michael
	again &lt;a href="http://mjhutchinson.com/journal/2009/05/07/moonlight_development_mac_using_monodevelop"&gt;talks
	about it&lt;/a&gt; and produced a nice screencast:

	&lt;p&gt;&lt;a href="http://www.go-mono.com/media/MonoDevelopMacMoonlightPreview.swf"&gt;
	&lt;img src="http://mjhutchinson.com/files/screencasts/MonoDevelopMacMoonlightPreview.png" alt="Screencast" style="max-width:98%; display:block;margin-left:auto;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
	
</description><pubDate>Fri, 08 May 2009 19:50:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/May-08.html</guid><author>Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com</author><source url="http://www.go-mono.com/monologue/index.rss">Monologue</source><ng:postId>9427884172</ng:postId><ng:feedId>1737</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>XBee adapter</title><link>http://www.instructables.com/id/XBee-adapter/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F3V/U7ZV/FT3KABAU/F3VU7ZVFT3KABAU.SMALL.jpg" align="left" hspace="10"&gt;Simple wireless communication: An XBee wireless modem adapter that doesn't suck!&lt;br/&gt;
&lt;br/&gt;
XBee modems are one of the easiest ways to create a wireless point-to-point or mesh network. They have error correction, are configured with AT commands, come in multiple flavors and can create a wireless serial link o...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/adafruit/"&gt;adafruit&lt;/a&gt;</description><pubDate>Fri, 08 May 2009 00:28:48 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9420986796</guid><author>adafruit</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9420986796</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Amazon unveils 9.7-inch Kindle DX with focus on education </title><link>http://www.appleinsider.com/articles/09/05/06/amazon_unveils_9_7_inch_kindle_dx_with_focus_on_education.html</link><description>Amazon on Tuesday introduced the Kindle DX, a new multi-purpose version of its digital eBook reader that, thanks to a 2.5 times larger screen, is garnering the support of several universities, newspapers and textbook publishers who&amp;#39;ve announce pilot programs around the device.</description><pubDate>Wed, 06 May 2009 15:00:00 GMT</pubDate><guid isPermaLink="false">http://www.appleinsider.com/articles/09/05/06/amazon_unveils_9_7_inch_kindle_dx_with_focus_on_education.html</guid><source url="http://www.appleinsider.com/appleinsider.rss">AppleInsider</source><ng:postId>9403042017</ng:postId><ng:feedId>1068</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Researchers hijack botnet, score 56,000 passwords in an hour</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/MCd4VuzkIYg/researchers-hijack-botnet-score-56000-passwords-in-an-hour.ars</link><description>&lt;a href="http://arstechnica.com/security/news/2009/05/researchers-hijack-botnet-score-56000-passwords-in-an-hour.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/05/thumb_network_neurons-thumb-230x130-4882-f.jpg" alt="companion photo for Researchers hijack botnet, score 56,000 passwords in an hour" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Researchers at the University of California Santa Barbara have &lt;a href="http://www.cs.ucsb.edu/%7Eseclab/projects/torpig/torpig.pdf"&gt;published a paper&lt;/a&gt; (PDF) detailing their findings after hijacking a botnet for ten days earlier this year. Among other things, the researchers were able to collect 70GB of data that the bots stole from users, including 56,000 passwords gathered within a single hour. The information not only gave them a look at the inner workings of the botnet, they also got to see how secure users &lt;em&gt;really&lt;/em&gt; are when it comes to online activities. (Hint: they aren't.)&lt;/p&gt;

&lt;p&gt;The botnet in question is controlled by Torpig (also known as Sinowal), a malware program that aims to gather personal and financial information from Windows users. The researchers gained control of the Torpig botnet by exploiting a weakness in the way the bots try to locate their commands and control servers&amp;#8212;the bots would generate a list of domains that they planned to contact next, but not all of those domains were registered yet. The researchers then registered the domains that the bots would resolve, and then set up servers where the bots could connect to find their commands. This method lasted for a full ten days before the botnet's controllers updated the system and cut the observation short.&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/security/news/2009/05/researchers-hijack-botnet-score-56000-passwords-in-an-hour.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~at/tHQ4ygPy_1y6chojzpjij5n1rxw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/tHQ4ygPy_1y6chojzpjij5n1rxw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~at/tHQ4ygPy_1y6chojzpjij5n1rxw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~at/tHQ4ygPy_1y6chojzpjij5n1rxw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=MCd4VuzkIYg:RjLsEufMBi0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=MCd4VuzkIYg:RjLsEufMBi0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=MCd4VuzkIYg:RjLsEufMBi0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=MCd4VuzkIYg:RjLsEufMBi0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=MCd4VuzkIYg:RjLsEufMBi0:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=MCd4VuzkIYg:RjLsEufMBi0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/MCd4VuzkIYg" height="1" width="1"/&gt;</description><pubDate>Mon, 04 May 2009 21:39:29 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/security/news/2009/05/researchers-hijack-botnet-score-56000-passwords-in-an-hour.ars</guid><author>jacqui@arstechnica.com (Jacqui Cheng)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9380724784</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to make a solar iPod/iPhone charger -aka MightyMintyBoost</title><link>http://www.instructables.com/id/How-to-make-a-solar-iPodiPhone-charger-aka-Might/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FND/UH9D/FU6LR2MF/FNDUH9DFU6LR2MF.SMALL.jpg" align="left" hspace="10"&gt;I wanted a charger for my iPodTouch and the MintyBoost was definitely my first choice. I wanted to take it a bit further and make it not only rechargeable but also solar powered.  The other issue is that the iPhone and iPodTouch have large batteries in them and will deplete the two AA batteries in t...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Honus/"&gt;Honus&lt;/a&gt;</description><pubDate>Sun, 03 May 2009 06:45:25 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9379126830</guid><author>Honus</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9379126830</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>MonoDevelop on MacOS X</title><link>http://tirania.org/blog/archive/2009/May-05-1.html</link><description>
	&lt;p&gt;Good news for all OSX users, a build of MonoDevelop that
	integrates with OSX
	is &lt;a href="http://mjhutchinson.com/journal/2009/05/06/monodevelop_mac_preview_builds"&gt;now
	available&lt;/a&gt;:

	&lt;center&gt;
	&lt;a href"http://primates.ximian.com/~miguel/pictures/MacMainMenu.png"&gt;
	&lt;img src="http://primates.ximian.com/~miguel/pictures/MacMainMenu-thumb.png"&gt;
	&lt;p&gt;
	MonoDevelop OSX-ified.
	&lt;/a&gt;
	&lt;/center&gt;
	
	&lt;p&gt;For the impatient among you, click and
	run &lt;a href="http://mjhutchinson.com/files/temp/MonoDevelop.app.zip"&gt;MonoDevelop.app.zip&lt;/a&gt;.

	&lt;p&gt;It
	requires &lt;a href="http://www.go-mono.com/mono-downloads/download.html"&gt;Mono
	2.4 for OSX&lt;/a&gt;, on the upside, you can use this to develop
	ASP.NET MVC apps on the Mac.

&lt;h3&gt;Some Background&lt;/h3&gt;

	&lt;p&gt;&lt;a href="http://tirania.org/blog/archive/2009/Feb-19-1.html"&gt;Back
	in February&lt;/a&gt; I showed a screenshot of MonoDevelop 2.0 for
	the Mac, it looked like this:

&lt;p&gt;&lt;center&gt;&lt;a href="http://tirania.org/blog/pic.php?name=md-macos.png&amp;caption= Super-Alpha-Preview of MonoDevelop on OSX."&gt;&lt;img border=0 src="http://primates.ximian.com/~miguel/pictures/small-md-macos.png"&gt;&lt;/a&gt;&lt;p&gt; Super-Alpha-Preview of MonoDevelop on OSX.&lt;/center&gt;&lt;/p&gt;
	&lt;p&gt;It was basically the Gtk# based MonoDevelop IDE binary
	executing on the Mac.    There was no porting involved, just
	the same executable running under Mono/OSX.   The code works,
	but it did not feel like a Mac app:

	&lt;ul&gt;
		&lt;li&gt;The Menu bar was embedded in the window.
		
		&lt;li&gt;The keyboard accelerators were the Linux ones.
		They felt unnatural for OSX users, and also did not
		take advantage of the spare key (Command) to liberate
		the control key for other uses.

		&lt;li&gt;The editor behaved like a Linux editor.
	&lt;/ul&gt;

	&lt;p&gt;There is a vibrant Mono on OSX community out there, and it
	will only grow larger.   We wanted to make sure that all of
	the work that is going into creating a great IDE is available
	for folks on the Mac in a way that is actually comfortable to
	use.   

	&lt;p&gt;So working with folks in the Mac Community and with folks
	at Unity Michael has been working on tuning up MonoDevelop on
	the Mac to become an editor that does not get in the way of
	Mac users and developers and integrates better from the "feel"
	perspective with other tools in the OS.

	&lt;p&gt;For instance, not only does the new MonoDevelop for MacOS
	use the Mac menu bar, and the Mac accelerators (a combination
	of XCode and Textmate accelerators), but even the text editor
	has been altered to support the way selection and navigation
	works on the Mac.

	&lt;p&gt;I figured that for every 100 users of MonoDevelop one of
	them will contribute patches back to the effort.  If you
	happen to be that 1% hacker that will contribute back, you
	might want to look at
	a &lt;a href="http://monodevelop.com/Developers/Mac_Support#Known_Issues"&gt;list
	of ideas&lt;/a&gt; to improve MonoDevelop on the Mac.

&lt;h3&gt;MonoDevelop on Windows.&lt;/h3&gt;

	&lt;p&gt;MonoDevelop on Windows is on a similar boat: the 2.0
	release works "out of the box" on Windows, but again, it is a
	GNOME IDE in a Windows land.

	&lt;p&gt;Stay tuned for news from the MonoDevelop community as to
	what will happen there.
</description><pubDate>Wed, 06 May 2009 08:08:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/May-05-1.html</guid><author>miguel@gnome.org (Miguel de Icaza)</author><source url="http://tirania.org/blog/miguel.rss2">Miguel de Icaza</source><ng:postId>9396746778</ng:postId><ng:feedId>429</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Spotify - Missing songs..</title><link>http://feedproxy.google.com/~r/blaagg/~3/W8PWQx3feQQ/</link><description>&lt;p&gt;&lt;img class="alignleft" title="Spotify - Missing songs" src="http://img.skitch.com/20090501-4mng2cifwxib7pjhxbjjbraj3.png" alt="" width="349" height="222" /&gt;I really like Spotify, and it&amp;#8217;s currently my main source of music. There are a couple of problems though that&amp;#8217;s keeping me from completely going to Spotify (and paying for it to avoid the ads).&lt;/p&gt;
&lt;p&gt;So many of the artists I like are not on spotify - like Pink Floyd, Metallica, Beatles, Led Zeppelin, AC/DC, etc. etc.. But what&amp;#8217;s even worse is the music that once were available to you, but got removed because of rights. Some music can&amp;#8217;t be played in some countries. Lately I&amp;#8217;ve had a feeling that my playlists were shrinking, and suddenly wanted to hear &amp;#8220;Eagles - Hotel California&amp;#8221; - a song that I&amp;#8217;ve had in one of my playlists from the start. It wasn&amp;#8217;t there..&lt;/p&gt;
&lt;p&gt;Turned off &amp;#8220;Hide unplayable tracks&amp;#8221;.. and a bunch of red songs showed up.. Songs that once were available, that now are hidden from Norwegian Spotify listeners. After searching for replacements, about 5-10% of this particular playlist was still unplayable. Bah!&lt;/p&gt;
&lt;p&gt;NRKbeta had a great post about this after the pirate bay trial: &lt;a title="Congratulations - you just wet your pants" href="http://nrkbeta.no/an-epic-fail/"&gt;Congratulations - you just wet your pants&lt;/a&gt; .. They hit the nail on the head. People don&amp;#8217;t get why they can play a song in one country just fine, but just across the border you can&amp;#8217;t.. Or why you can&amp;#8217;t buy TV-series on iTunes if you live outside the US, and so on.. Rights owners, record companies, MPAA, RIAA, etc, etc, needs to loosen up a bit. The Internet is global and it&amp;#8217;s heavily integrated in our culture these days, country restrictions just creates obstacles for people - obstacles they don&amp;#8217;t get why should be there. When you add other obstacles such as DRM, forced anti-piracy propganda on original DVDs/Blurays, etc, etc, it&amp;#8217;s no wonder why pirating is so much easier, faster and better when they impose stupid restrictions like this.&lt;/p&gt;
&lt;p&gt;And wrap up todays wail, here&amp;#8217;s a funny video Håvard gave me - explaining IFPI&amp;#8217;s anti-piracy strategy:&lt;/p&gt;
&lt;p&gt;&lt;object width="425" height="344" data="http://www.youtube.com/v/-01gS-7GwUs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.youtube.com/v/-01gS-7GwUs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=-01gS-7GwUs&amp;amp;eurl=http%3A%2F%2Fblaagg%2Etadkom%2Enet%2Fteknologi%2Fspotify%2Dmissing%2Dsongs%2F&amp;amp;feature=player_embedded"&gt;Link&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds2.feedburner.com/~r/blaagg/~4/W8PWQx3feQQ" height="1" width="1"/&gt;</description><pubDate>Fri, 01 May 2009 15:17:49 GMT</pubDate><guid isPermaLink="false">http://blaagg.tadkom.net/?p=121</guid><comments>http://blaagg.tadkom.net/teknologi/spotify-missing-songs/#comments</comments><author>Stian</author><source url="http://blaagg.tadkom.net/feed/">Blågg</source><ng:postId>9351052836</ng:postId><ng:feedId>712555</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Monty Hall-problemet</title><link>http://feedproxy.google.com/~r/stian/shared/~3/Q_o9DGSyGPI/</link><description>&lt;p&gt;&lt;img src="http://blog.tjomlid.com/wp-content/uploads/180px-monty-open-doorsvg.png" alt="180px-Monty_open_door.svg.png" border="0" width="180" height="100"&gt;Det er vel et par år siden jeg første gang leste om Monty Hall-problemet, men jeg fikk lyst å trekke det frem i lyset for lesere som ikke kjenner til det fra før.&lt;/p&gt;
&lt;p&gt;Her er problemet:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Under et TV-show får en deltager valget mellom tre dører. Bak en av dørene er det en bil, mens det bak de to andre er en geit. Deltageren velger først en dør. Programlederen, som vet bak hvilken dør bilen befinner seg, åpner så en av de andre dørene, som han vet det står en geit bak. Deltageren får så valget om han ønsker å bytte dør eller beholde den han allerede har valgt. Spørsmålet er om det lønner seg å bytte.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ja, hva tror du? Lønner det seg å bytte dør?&lt;/p&gt;
&lt;p&gt;De fleste vil intuitivt si at det er helt likegyldig om deltakeren bytter dør eller ikke. Vinnersjansen vil uansett være 50% fordi det er 50/50 sjans for at bilen er bak døren man velger. Det høres logisk ut, men det er riv ruskende feil.&lt;/p&gt;
&lt;p&gt;Svaret er at ved å bytte dør øker deltakeren vinnersjansen til 2/3, eller 67%.&lt;/p&gt;
&lt;p&gt;WTF?!? tenker du kanskje nå. Det kan jo ikke stemme. Og du er i godt selskap. Monty Hall-problemet ble viden kjent da &lt;a href="http://en.wikipedia.org/wiki/Marilyn_vos_Savant"&gt;Marilyn vos Savant&lt;/a&gt; skrev om problemet i et magasin i 1990. Hun forklarte at man burde bytte dør i et slikt scenario, og det ble en &lt;a href="http://en.wikipedia.org/wiki/Marilyn_vos_Savant#The_Monty_Hall_problem"&gt;storm av protester fra leserne&lt;/a&gt;. Tusenvis av lesere sendte henne brev, deriblant flere hundre matematikkprofessorer, og de mente alle at hun tok feil. Det var bred enighet fra brevskriverne om at deltakeren ville vinne bilen med en sannsynlighet på 1/2 uansett om han bytter dør eller lar være.&lt;/p&gt;
&lt;p&gt;Men Savant sin løsning er altså korrekt. Det lønner seg å bytte dør. Dette kan også enkelt &lt;a href="http://skepticblog.org/2009/03/10/monty-hall-problem-put-to-the-test/"&gt;simuleres i dataprogram&lt;/a&gt;, og da vil man se at om man kjører scenarioet hvor deltakeren bytter dør mange ganger, f.eks. 100.000 eller en million ganger, så ser man at deltakeren vinner 2 av 3 ganger.&lt;/p&gt;
&lt;p&gt;Forklaringen er også veldig enkel når man bare får den presentert på en ryddig måte. &lt;a href="http://no.wikipedia.org/wiki/Monty_Hall-problemet"&gt;Wikipedia-artikkelen om Monty Hall-problemet&lt;/a&gt; gir en enkel og visuell forklaring på hvorfor vinnersjansen øker til 67% om man velger å bytte dør.&lt;/p&gt;
&lt;img src="http://feeds2.feedburner.com/~r/blogtjomlidcom/~4/OGyCUZM0Umo" height="1" width="1"&gt;&lt;img src="http://feeds2.feedburner.com/~r/stian/shared/~4/Q_o9DGSyGPI" height="1" width="1"/&gt;</description><pubDate>Wed, 11 Mar 2009 22:12:11 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/304ee000828c7ead</guid><author>Gunnar Roland Tjomlid</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>9347854882</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Paven - historiens største massemorder</title><link>http://feedproxy.google.com/~r/stian/shared/~3/Y4lAX3Ez9Rg/</link><description>&lt;p&gt;&lt;a href="http://hosted.ap.org/dynamic/stories/A/AF_POPE_AFRICA?SITE=AP&amp;amp;SECTION=HOME&amp;amp;TEMPLATE=DEFAULT&amp;amp;CTIME=2009-03-17-06-54-46"&gt;Pave Benedikt XVI reiser i dag på pilgrimsferd til Afrika.&lt;/a&gt; Et av de største problem dette kontinentet står ovenfor, er AIDS. I Afrika sør for Sahara lever rundt 26 millioner mennesker med denne dødelige sykdommen. Det utgjør over 5% av befolkningen. &lt;a href="http://www.huffingtonpost.com/james-boyce/over-4000-people-will-die_b_147310.html"&gt;Mer enn 4000 personer&lt;/a&gt; dør hver eneste dag av AIDS i dette området. Innen år 2015 er det estimert at inntil &lt;a href="http://www.stwr.org/health-education-shelter/world-aids-dayhow-many-millions-more-will-die.html"&gt;74 millioner mennesker&lt;/a&gt; vil dø av AIDS, de fleste av disse i Afrika.&lt;/p&gt;
&lt;p&gt;Og hva har paven å si om dette gigantiske problemet? &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Pope Benedict XVI says the distribution of condoms is not the answer in the fight against AIDS.&lt;/p&gt;
&lt;p&gt;Benedict insisted that the church is in the forefront of the battle against AIDS in Africa. He spoke Tuesday aboard the papal plane on his way to Africa, his first trip to the continent as pontiff.&lt;/p&gt;
&lt;p&gt;Benedict said &lt;em&gt;“you can’t resolve it with the distribution of condoms.&lt;/em&gt;” He said that “&lt;em&gt;on the contrary it increases the problem.&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;The Vatican encourages sexual abstinence to fight the spread of disease.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pavens løsning er altså: &lt;em&gt;Slutt å ha sex!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Det er så dødelig naivt. Tror de kanskje på engler og mirakler også?&lt;/p&gt;
&lt;p&gt;Å føre en &lt;a href="http://www.vg.no/helse/artikkel.php?artid=570967"&gt;kamp mot bruk av kondom&lt;/a&gt; er det samme som å indirekte slakte ned millioner av mennesker som ellers kunne vært spart. Å la de fattigste av de fattige lide fordi man selv har en religiøs vrangforestilling, er bare sykt.&lt;/p&gt;
&lt;p&gt;Hvis du noengang lurer på om religion er farlig, så har du altså svaret her. Seksualmoralen som kristendommen har ført med seg går på tvers av de naturlige instinker og skaper uhyre mye problemer, alt fra dårlig selvbilde og redusert livsglede, til selvmord og AIDS-død.&lt;/p&gt;
&lt;p&gt;Dødstallene er så høye som de er bl.a. fordi Paven har hatt god hjelp av historiens nest største massemorder, George W Bush og hans kristenfundamentalistiske regjering:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“The U.S. has created an artificial condom shortage in Uganda; it refuses to fund comprehensive sex education for youth; and it gags comprehensive family planning services and simultaneously undermines efforts to work with sex workers by requiring an anti-prostitution oath by service providers”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Bush-regjeringen nektet å gi bistand der hvor seksualundervisning ble gitt. Familieplanlegging og informasjon om &lt;a href="http://www.voanews.com/english/archive/2007-08/Confusion-Surrounds-Condom-Policies-Of-US-AIDS-Plan.cfm"&gt;bruk av kondomer var tabu&lt;/a&gt; under hans styre. Dette på tross av at forskning fra hans eget land, USA, har vist gang på gang at ideen om å være seksuelt avholden uten unntak &lt;a href="http://news.bbc.co.uk/2/hi/health/6927733.stm"&gt;skaper flere problemer enn den løser&lt;/a&gt;. Prosentandelen som klarer å være seksuelt avholden er liten, og den store majoritet som gir etter for sine naturlige lyster ender da opp med å ha ubeskyttet sex i mye større grad enn de som tar sex på alvor og har forberedt seg.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Paven kan mislike sex utenfor ekteskapet så mye han vil, men når man mener at det er bedre at folk dør enn at de følger hans subjektive seksualetikk, så er man en fryktelig ond person.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Det er bare en ting å si til dette, og det er å sitere Steven Weinberg:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“&lt;em&gt;Religion is an insult to human dignity. With or without it, you’d have good people doing good things and evil people doing bad things, but for good people to do bad things, it takes religion.&lt;/em&gt;“&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds2.feedburner.com/~r/blogtjomlidcom/~4/gDueiipPbq8" height="1" width="1"&gt;&lt;img src="http://feeds2.feedburner.com/~r/stian/shared/~4/Y4lAX3Ez9Rg" height="1" width="1"/&gt;</description><pubDate>Tue, 17 Mar 2009 12:10:57 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/eca9a0a4a456f718</guid><author>Gunnar Roland Tjomlid</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>9347854055</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>In-depth Wiimote Whiteboard How-to</title><link>http://www.instructables.com/id/In-depth-Wiimote-Whiteboard-How-to/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FG0/EBKC/FU0HZ1IL/FG0EBKCFU0HZ1IL.SMALL.jpg" align="left" hspace="10"&gt;This Instructable is an in-depth step by step process on how to create the Wii remote interactive whiteboard, christened the &amp;quot;Wiimote Whiteboard.&amp;quot;  It will go through the supplies you will need to complete the Wiimote Whiteboard, the free programs that you will need to download, how to con...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/jhmsoccer/"&gt;jhmsoccer&lt;/a&gt;</description><pubDate>Thu, 30 Apr 2009 22:29:07 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9337060469</guid><author>jhmsoccer</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9337060469</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to put a Lightsaber on Anything</title><link>http://www.instructables.com/id/How-to-put-a-Lightsaber-on-Anything/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F3L/WMW0/FU54UBPD/F3LWMW0FU54UBPD.SMALL.jpg" align="left" hspace="10"&gt;this instructable will teach you how to put a Lightsaber onto any image, just in case you were wondering. You`ll need to download a couple of stuff, so, if you don`t want to download GO BACK Now. For the rest of you, go to the next step.&lt;br/&gt;
&lt;br/&gt;
Downloads&lt;br/&gt;
&lt;br/&gt;
Here are some links for you to download. If they d...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Peacedude/"&gt;Peacedude&lt;/a&gt;</description><pubDate>Fri, 01 May 2009 01:42:05 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9338588967</guid><author>Peacedude</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9338588967</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Ghetto DVD Rewinder</title><link>http://www.instructables.com/id/Ghetto-DVD-Rewinder/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FAQ/0Z2M/FU5527X1/FAQ0Z2MFU5527X1.SMALL.jpg" align="left" hspace="10"&gt;Since regular DVD rewinders are so expensive I designed a simple cheap DVD rewinder you can make yourself.&lt;br/&gt;
&lt;br/&gt;
Parts&lt;br/&gt;
&lt;br/&gt;
-A motor&lt;br/&gt;
-Some Tape&lt;br/&gt;
-A Small Cardboard Box&lt;br/&gt;
-Some Wire&lt;br/&gt;
-A Battery&lt;br/&gt;
&lt;br/&gt;
Wire up the motor&lt;br/&gt;
&lt;br/&gt;
Get your motor (I found mine in a thing)  and attach wire to it.&lt;br/&gt;
Then, attach one of the wire to one...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Magnelectrostatic/"&gt;Magnelectrostatic&lt;/a&gt;</description><pubDate>Fri, 01 May 2009 01:48:30 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9338589041</guid><author>Magnelectrostatic</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9338589041</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Google Earth, Nine Inch Nails, and Real-time Geo Community</title><link>http://www.youtube.com/watch?v=ifmZSC8ca6Q</link><description>Google Tech Talks April 28, 2009 ABSTRACT Presented by Craig Johnston and Brian Hull The band Nine Inch Nails recently released a ground-breaking geo-Twitter-like iphone / Google Earth plug-in application. This follows on the heels of many creative uses of KML and Google Earth to communicate with fans. This talk is from the software developer team that supports the band. access.nin.com Throughout the last couple of years Google Earth has enabled us to present amazing visualizations and ...</description><pubDate>Wed, 29 Apr 2009 20:59:45 GMT</pubDate><guid isPermaLink="false">http://gdata.youtube.com/feeds/api/videos/ifmZSC8ca6Q</guid><author>googletechtalks</author><source url="http://gdata.youtube.com/feeds/api/users/googletechtalks/uploads?orderby=updated">Uploads by googletechtalks</source><ng:postId>9324852627</ng:postId><ng:feedId>2674753</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to neatly solder (without loads of wires!) decoupling caps on SMT microcontrollers.</title><link>http://www.instructables.com/id/How-to-neatly-solder-without-loads-of-wires-dec/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FDC/1WR5/FU0HZ5EX/FDC1WR5FU0HZ5EX.SMALL.jpg" align="left" hspace="10"&gt;This instructable is written to teach you how to use a neat and tidy method of prototyping with SMT microcontrollers (or other devices) on an adaptor board.&lt;br/&gt;
&lt;br/&gt;
After struggling to make a neat job of effectively decoupling the power pins on my PIC18F I decided something needed to be done!&lt;br/&gt;
&lt;br/&gt;
This instruc...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/ste5442/"&gt;ste5442&lt;/a&gt;</description><pubDate>Wed, 29 Apr 2009 12:25:43 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9319096824</guid><author>ste5442</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9319096824</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>[video] Fireball V90 CNC Router Assembly</title><link>http://www.instructables.com/id/Fireball-V90-CNC-Router-Assembly-1/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FWY/X9TT/FU4TO1EK/FWYX9TTFU4TO1EK.SMALL.jpg" align="left" hspace="10"&gt;&lt;br/&gt;
The Fireball V90 CNC Router is a CNC machine that comes in kit form requiring assembly. Currently the Fireball V90 is one of the cheapest CNC machines on the market and is a great way to get your feet wet with CNC machining. I spent considerable time researching entry level machines prior to making...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/abbtech/"&gt;abbtech&lt;/a&gt;</description><pubDate>Thu, 30 Apr 2009 06:32:25 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9328349480</guid><author>abbtech</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9328349480</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Six Months with a Hackintosh Netbook</title><link>http://www.osnews.com/story/21398/Six_Months_with_a_Hackintosh_Netbook</link><description>Over at Wired Gadget Lab, they're taking a look back at several people who've gone to a bunch of trouble to hack up and deal with the pitfalls of netbooks running OSX. As the story's title states, it ain't pretty.  In a nutshell, they found that even if you load a nice OS onto a cheap, tiny computer, you still have to deal with the inherent downsides of a cheap, tiny computer, and when you run an Apple OS on a non-Apple machine, you'll have some software problems.  I read this article with great interest, because a few months ago I bought an MSI Wind (the same netbook that this guy used) with thoughts of putting OSX on it.  But this article set me to thinking about netbooks, the mythical Apple netbook, and Apple's Newton legacy.</description><pubDate>Wed, 29 Apr 2009 17:29:15 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21398/Six_Months_with_a_Hackintosh_Netbook</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9321675911</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Interactive C# Code Completion</title><link>http://tirania.org/blog/archive/2009/Apr-28.html</link><description>
	&lt;p&gt;Last month I introduced code completion in
	Mono's &lt;a href="http://tirania.org/blog/archive/2008/Sep-08.html"&gt;Interactive
	C# shell&lt;/a&gt;.  You can use the TAB key to auto-complete at the
	current cursor position.  Pressing the TAB key twice will list
	all possible completions.

	&lt;p&gt;This should make the &lt;code&gt;csharp&lt;/code&gt; more pleasurable
	to use and for bash junkies like me a more natural fit.

	&lt;p&gt;This is particularly useful to explore an API like Gtk#:

	&lt;pre class="code-csharp"&gt;
	csharp&gt; LoadPackage ("gtk-sharp-2.0");
	csharp&gt; using Gtk;
	csharp&gt; Application.Init ();
	csharp&gt; var w = new Window ("Hello");
	csharp&gt; w.SetF[tab]
	SetFlag SetFocus SetFrameDimensions
	csharp&gt; w.SetFocus ();
	&lt;/pre&gt;

	&lt;p&gt;This comes in quite handy for completing namespaces, types
	and valid methods.   It works with the C# 3.0 initializer
	syntax as well, that one is useful in Silverlight for those of
	us that can not stand to type XAML instead of C#:

	&lt;pre class="code-csharp"&gt;
	csharp&gt; new TextBlock () { Bac[tab]
	&lt;/pre&gt;

	&lt;p&gt;Does the nice:

	&lt;pre class="code-csharp"&gt;
	csharp&gt; new TextBlock () { Background
	&lt;/pre&gt;

	&lt;p&gt;Bonus points: another tab at that point inserts the equal
	sign to assign the value.

	&lt;p&gt;This was done by extending the
	&lt;a href="http://go-mono.com/docs/index.aspx?tlink=18@N%3aMono.CSharp"&gt;Mono.CSharp.Evaluator&lt;/a&gt;
	API to provide code completion.

	&lt;p&gt;The API is fairly simple:

	&lt;pre class="code-csharp"&gt;
public static string [] GetCompletions (string input, out string prefix)
	&lt;/pre&gt;

	&lt;p&gt;This will provide possible completions (methods,
	properties, fields) that are valid at that point in the
	string.

	&lt;p&gt;A discussion that details the implementation of how the
	compiler supports code completion is in
	the &lt;a href="http://lists.ximian.com/pipermail/mono-devel-list/2009-March/031355.html"&gt;mailing
	list&lt;/a&gt; and
	our &lt;a href="http://anonsvn.mono-project.com/viewvc/trunk/mcs/docs/compiler.txt?revision=HEAD"&gt;compiler
	documentation&lt;/a&gt; has been updated to include a tutorial on
	expanding code completion.

	&lt;p&gt;The next step is to implement this for
	the &lt;a href="http://tirania.org/blog/archive/2008/Nov-02.html"&gt;interactive
	GUI&lt;/a&gt; shell.

</description><pubDate>Wed, 29 Apr 2009 00:15:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/Apr-28.html</guid><author>miguel@gnome.org (Miguel de Icaza)</author><source url="http://tirania.org/blog/miguel.rss2">Miguel de Icaza</source><ng:postId>9310108405</ng:postId><ng:feedId>429</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>EU extends musical copyrights by 20 years, eyes movies next</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/CKC_ctNs_mI/eu-extends-musical-copyrights-by-20-years-eyes-movies-next.ars</link><description>&lt;a href="http://arstechnica.com/tech-policy/news/2009/04/eu-extends-musical-copyrights-by-20-years-eyes-movies-next.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/euro-notes-thumb-230x130-3126-f.jpg" alt="companion photo for EU extends musical copyrights by 20 years, eyes movies next" /&gt;&lt;/a&gt;
      
    
    


  &lt;p&gt;The European Parliament late last week agreed to extend musical copyrights from their current 50-year term to 70 years. So all that early rock 'n roll about to pass into the public domain? Don't count on using it in your documentary for another two decades&amp;#8212;and there's nothing to say that the term won't be extended again.&lt;/p&gt;
  
  &lt;p&gt;While the vote is a big victory for the music labels who can continue to market major artists like The Beatles (let's face it, the obscure stuff from the 1950s isn't selling in measurable quantities anymore, and it's not playing on the radio), the movie industry looks set to cash in soon, too. In passing the term extension, Parliament also asked the European Commission "to launch an impact assessment of the situation in the European audiovisual sector by January 2010, with a view to deciding whether a similar copyright extension would benefit the audiovisual world."&lt;/p&gt;
  
    
       
         &lt;a href="http://arstechnica.com/tech-policy/news/2009/04/eu-extends-musical-copyrights-by-20-years-eyes-movies-next.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/RoqcpIYqKSVoVDF0tN03B9qW3v8/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/RoqcpIYqKSVoVDF0tN03B9qW3v8/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=CKC_ctNs_mI:Wug_pj8M690:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=CKC_ctNs_mI:Wug_pj8M690:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=CKC_ctNs_mI:Wug_pj8M690:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=CKC_ctNs_mI:Wug_pj8M690:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=CKC_ctNs_mI:Wug_pj8M690:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=CKC_ctNs_mI:Wug_pj8M690:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/CKC_ctNs_mI" height="1" width="1"/&gt;</description><pubDate>Mon, 27 Apr 2009 13:32:00 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/tech-policy/news/2009/04/eu-extends-musical-copyrights-by-20-years-eyes-movies-next.ars</guid><author>nate@arstechnica.com (Nate Anderson)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9295110183</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Understanding the outbreak: an influenza biology primer</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/NxY6zN3eaqY/understanding-the-outbreak-an-influenza-biology-primer.ars</link><description>&lt;a href="http://arstechnica.com/science/news/2009/04/understanding-the-outbreak-an-influenza-biology-primer.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/04/Influenza_virus-thumb-230x130-4729-f.jpg" alt="companion photo for Understanding the outbreak: an influenza biology primer" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;
Swine flu, bird flu, H1N1&amp;#8212;tracking the influenza virus can be a confusing task, not generally made easier by the fact that most people only attempt to do so when addled by flu symptoms or in the midst of worries about a potential pandemic.  We recognize that the latter appears to apply to the current situation, but we'll do our part to try to explain a bit of the biology of the virus. Putting together this explanation was made a bit challenging by the fact that anyone we could find who has detailed knowledge of the influenza virus appears to be busy actually working on the current outbreak.
&lt;/p&gt;
&lt;h3&gt;On the surface: the HxNx nomenclature&lt;/h3&gt;
&lt;p&gt;
Like most viruses, the currently spreading swine flu virus has a coat formed of proteins which surround the genetic material that allows the virus to hijack a cell and reproduce.  These coat proteins are critical in a variety of ways: they determine which cells the virus can latch onto and infect and, being exposed, they're the things that antibodies recognize when your body generates an immune response to the virus.  For the flu virus, the major coat proteins are called hemagglutinin and neuraminidase&amp;#8212;the H and N of the commonly used nomenclature for identifying these viruses.
&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/science/news/2009/04/understanding-the-outbreak-an-influenza-biology-primer.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/zpxPD-7uOzW_1soYAjuyZhBaFfw/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/zpxPD-7uOzW_1soYAjuyZhBaFfw/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=NxY6zN3eaqY:96X9OeV2EEA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=NxY6zN3eaqY:96X9OeV2EEA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=NxY6zN3eaqY:96X9OeV2EEA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=NxY6zN3eaqY:96X9OeV2EEA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=NxY6zN3eaqY:96X9OeV2EEA:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=NxY6zN3eaqY:96X9OeV2EEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/NxY6zN3eaqY" height="1" width="1"/&gt;</description><pubDate>Tue, 28 Apr 2009 03:13:00 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/science/news/2009/04/understanding-the-outbreak-an-influenza-biology-primer.ars</guid><author>jtimmer@arstechnica.com (John Timmer)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9301635107</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Ubuntu brings advanced Screen features to the masses</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/wvt8PUYcUiA/ubuntu-brings-advanced-screen-features-to-the-masses.ars</link><description>&lt;a href="http://arstechnica.com/open-source/news/2009/04/ubuntu-brings-advanced-screen-features-to-the-masses.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/04/Lcars-listing-thumb-230x130-4734-f.jpg" alt="companion photo for Ubuntu brings advanced Screen features to the masses" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;GNU Screen is a powerful terminal multiplexer that makes it easy for users to manage multiple sessions at the command line. It provides rudimentary window management capabilities in text-based environments and enables users to detach a session and resume it later. The tool has long held a position of distinction among the most popular terminal utilities for system administrators.&lt;/p&gt;

&lt;p&gt;Although Screen is very powerful, it is also difficult to configure. Most users aren't even aware of its more advanced features and few take advantage of its full potential. In an effort to make Screen more accessible to the masses, the Ubuntu developers have assembled a nice collection of embellishments that make the program easier to configure and use. These improvements are delivered in the screen-profiles package, which was introduced in Ubuntu 9.04.&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/open-source/news/2009/04/ubuntu-brings-advanced-screen-features-to-the-masses.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/Mqs9c_jhLhSqNQJsAWbzOOfh_Ms/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/Mqs9c_jhLhSqNQJsAWbzOOfh_Ms/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=wvt8PUYcUiA:F2522tzMg_M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=wvt8PUYcUiA:F2522tzMg_M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=wvt8PUYcUiA:F2522tzMg_M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=wvt8PUYcUiA:F2522tzMg_M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=wvt8PUYcUiA:F2522tzMg_M:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=wvt8PUYcUiA:F2522tzMg_M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/wvt8PUYcUiA" height="1" width="1"/&gt;</description><pubDate>Tue, 28 Apr 2009 11:29:49 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/open-source/news/2009/04/ubuntu-brings-advanced-screen-features-to-the-masses.ars</guid><author>segphault@arstechnica.com (Ryan Paul)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>9305710237</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Infrared Intruder Alert</title><link>http://www.instructables.com/id/Infrared-Intruder-Alert/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FD3/OLQ6/FTY4BT34/FD3OLQ6FTY4BT34.SMALL.jpg" align="left" hspace="10"&gt;Stop intruders from trespassing on your property with this infrared alarm system.&lt;br/&gt;
&lt;br/&gt;
What You Need&lt;br/&gt;
&lt;br/&gt;
1. Garage Door Sensors like these&lt;br/&gt;
2. Wireless Doorbell Chime for $6&lt;br/&gt;
3. Photocell&lt;br/&gt;
4. Various components as shown in the schematic.&lt;br/&gt;
5. 5 Volt AC Adapter. You need a regulated supply so the voltage does n...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Kipkay/"&gt;Kipkay&lt;/a&gt;</description><pubDate>Sun, 26 Apr 2009 12:22:43 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9281573991</guid><author>Kipkay</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9281573991</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Silver and Gold</title><link>https://stpeter.im/index.php/2009/04/22/silver-and-gold/</link><description>&lt;p&gt;The more I think about the financial system, the less I understand it. The entire thing is based on, well, nothing at all: fiat money, little strips of paper, the full faith and credit of the United States government (!), and other inanities. Given the utter lack of a foundation, it&amp;#8217;s no surprise that more people are converting some of their Federal Reserve Notes into things of real value. I&amp;#8217;m thinking especially of silver and gold. I&amp;#8217;m no expert on the matter, although I have done a bit of experimenting. Since I don&amp;#8217;t see too much point in having a stock of Krugerrands around the house (where are you going to spend them?), I&amp;#8217;ve focused on two forms of metal: silver coins and gold bullion. So far I&amp;#8217;ve had good experiences with &lt;a href='http://www.kitco.com/'&gt;Kitco&lt;/a&gt; and especially &lt;a href='http://www.apmex.com/'&gt;Apmex&lt;/a&gt; for silver coins and &lt;a href='http://www.bullionvault.com/'&gt;BullionVault&lt;/a&gt; for gold bullion. BullionVault has an interesting model: you actually buy some percentage of a gold bar in Zurich, London, or New York, which never leaves the vault (thus never leaving the core gold market). Their policies and procedures strike me as very rational and appropriately conservative, so that even if they go out of business, you still own your gold in the vault. Sure, you don&amp;#8217;t have physical possession, but you reduce your sovereignty risk. Check them out and let me know if you have other recommendations.&lt;/p&gt;
</description><pubDate>Thu, 23 Apr 2009 05:11:37 GMT</pubDate><guid isPermaLink="false">https://stpeter.im/?p=2629</guid><author>stpeter</author><source url="http://stpeter.im/?feed=atom">one small voice</source><ng:postId>9243555722</ng:postId><ng:feedId>1471877</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Mom, I'm on .NET Rocks!</title><link>http://feedproxy.google.com/~r/follesoe/~3/SLRVSpexUhY/MomImOnNETRocks.aspx</link><description>&lt;p&gt;

          &lt;img border="0" alt="dotnetrocks" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MomImon.NETRocks_11AE2/dotnetrocks_8d3442ab-27c3-45fa-ba2d-f3c3ce1f056d.jpg" width="478" height="128"&gt;&lt;/img&gt;

        &lt;/p&gt;

        &lt;p&gt;

This Monday I had a conversation with Carl Franklin and Richard Campell on .&lt;a href="http://www.dotnetrocks.com"&gt;NET

Rocks!&lt;/a&gt; about Silverlight, WPF, Live Mesh and different UI platforms. Having a

two-way conversation on a postcast is quite different from giving a technical presentation,

so I was a bit scared how this was going to turn out. Thanks to Pwop! Productions

streamlined production process &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=439"&gt;the

episode is now available online&lt;/a&gt;.

&lt;/p&gt;

        &lt;p&gt;

.NET Rocks! (for the two of you who don’t know) is the most successful technology

podcasts out there. They have been in the business of internet audio talk shows since

long before the term podcast was invented, and the episode I appeared on was number

439!

&lt;/p&gt;

        &lt;p&gt;

I’ve been a big fan and avid listener to .NET Rocks! since the very beginning.

I think episode 10 with Chris Sells was the first one I listened to back in 2002.

So in many ways I’ve been following .NET Rocks! since the beginning of my professional

software development career. Being invited on as a guest is a great honor.

&lt;/p&gt;

        &lt;p&gt;

Thanks to Richard and Carl for inviting me – and I hope to invited back on some

time in the future. If you have comments or questions regarding the show feel free

to post them as comments to this blog post. 

&lt;/p&gt;

        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=b93e8237-4bc4-46a0-b777-fffeff1ea47e"&gt;&lt;/img&gt;

      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/follesoe?i=SLRVSpexUhY:4Pv1AuIfN-Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/follesoe/~4/SLRVSpexUhY" height="1" width="1"/&gt;</description><pubDate>Wed, 22 Apr 2009 18:06:57 GMT</pubDate><guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</guid><comments>http://jonas.follesoe.no/CommentView,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</comments><author>Jonas Folles</author><source url="http://feeds.feedburner.com/follesoe">http://jonas.follesoe.no</source><ng:postId>9238545830</ng:postId><ng:feedId>712566</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>$20 CNC Machine</title><link>http://www.instructables.com/id/20-CNC-Machine/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F2D/K0PS/FTM73385/F2DK0PSFTM73385.SMALL.jpg" align="left" hspace="10"&gt;I got inspired for this instructable when I viewed the Easy To Build Stepper Controller&lt;br/&gt;
&lt;br/&gt;
instructable .When I read the instructable I knew I could make a decent looking and functioning cnc machine for under 20 dollars with a recycled twist, Not to mention I did this in under a week.&lt;br/&gt;
&lt;br/&gt;
I expect you to...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Techbuilder/"&gt;Techbuilder&lt;/a&gt;</description><pubDate>Mon, 20 Apr 2009 06:38:03 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9206250457</guid><author>Techbuilder</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9206250457</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Killer PCBs</title><link>http://www.instructables.com/id/Killer-PCBs/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FL6/VT6F/FTM733D6/FL6VT6FFTM733D6.SMALL.jpg" align="left" hspace="10"&gt;This instructable demonstrates the process for making printed circuit boards with features as small as 0.005#29; suitable for LQFP or QFN ICs using negative dry film photoresist.  This will enable you to handle just about any kind of integrated circuit available--even ball grid array!  Pictured are ...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/incoherent/"&gt;incoherent&lt;/a&gt;</description><pubDate>Mon, 20 Apr 2009 06:52:33 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9206370998</guid><author>incoherent</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9206370998</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Can't Sleep</title><link>http://xkcd.com/571/</link><description>&lt;img src="http://imgs.xkcd.com/comics/cant_sleep.png" title="If androids someday DO dream of electric sheep, don't forget to declare sheepCount as a long int." alt="If androids someday DO dream of electric sheep, don't forget to declare sheepCount as a long int." /&gt;</description><pubDate>Mon, 20 Apr 2009 04:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/571/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>9204540638</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Threat To Net Neutrality In Europe</title><link>http://feedproxy.google.com/~r/stian/shared/~3/EWEPBCwo9Uk/article.pl</link><description>Narcissus writes to tell us that the European Parliament is planning a vote in the Industry, Transport, Energy (ITRE) committee that could reintroduce amendment 138 (currently amendment 46) which deals with safeguards to user rights on the internet and graduated response schemes. There are several online campaigns trying to drive awareness and action already but there is limited time to act. "The Council may propose a compromise version of amendment 138/46 that is completely neutralized, or that may even become the opposite of the original by allowing the 'three strikes' scheme instead of preventing it. According to the latest negotiations, am.138/46 wouldn't anymore be an article (that must be transposed by Member States in their law) but a mere recital that has just indicative value. It is urgent to contact the members of the ITRE committee to advise them to reject compromise with the Council that failed to respect the intent of the original amendment. The best would be once again to approve the amendment."&lt;p&gt;&lt;a href="http://tech.slashdot.org/article.pl?sid=09/04/20/196223&amp;amp;from=rss"&gt;&lt;img src="http://slashdot.org/slashdot-it.pl?from=rss&amp;amp;op=image&amp;amp;style=h0&amp;amp;sid=09/04/20/196223"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://tech.slashdot.org/article.pl?sid=09/04/20/196223&amp;amp;from=rss"&gt;Read more of this story&lt;/a&gt; at Slashdot.&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://feedads.googleadservices.com/~ah/El2_bO3Ec8otVHRwsejJDoLghZ4/h?w=300&amp;amp;h=250" width="100%" height="250"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;img src="http://feeds2.feedburner.com/~r/Slashdot/slashdot/~4/ELsLn3p1jjk" height="1" width="1"&gt;&lt;img src="http://feeds2.feedburner.com/~r/stian/shared/~4/EWEPBCwo9Uk" height="1" width="1"/&gt;</description><pubDate>Mon, 20 Apr 2009 20:11:00 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/684600cb9bcb2e71</guid><author>ScuttleMonkey</author><source url="http://feeds2.feedburner.com/stian/shared">Stian's shared items in Google Reader</source><ng:postId>9220620176</ng:postId><ng:feedId>4826477</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>EDA is Back</title><link>http://iphonejtag.blogspot.com/2009/04/eda-is-back.html</link><description>When I made the last post, I started thinking about EDA again. EDA was going to be amazing. But it suffered from cruft buildup and a lack of a good design plan. And such bad source I didn't even want to release it.&lt;br /&gt;Two fridays ago, posixninja and I started talking about the design. A picture started coming together in my head. EDA 2.0; completely new code base, C++ instead of C, and a beautiful foundation.&lt;br /&gt;&lt;br /&gt;For a quick idea of what EDA is, imagine a simulator that logs *every* state change and allows you to view the system state from any clock cycle. It's a debugger with an extra dimension. And with a really simple, IDA-like, web based frontend.&lt;br /&gt;Say you are reversing a function and have no idea what it does. Run the code that calls it. Now see the data passed to and returned from the function. If you still don't know what the function does, change the input and rerun. Forget xrefs, think about viewing every time a piece of memory was accessed.&lt;br /&gt;&lt;br /&gt;I want people to get excited about this and contribute, since I leave for my job at Google in Cambridge today and won't be able to contribute for a bit. Let's harness the power of open source to make the reversing world a better place.&lt;br /&gt;&lt;br /&gt;See a &lt;a href="http://www.youtube.com/watch?v=9VO74HdCex0"&gt;demo video&lt;/a&gt;, the &lt;a href="http://theiphonewiki.com/wiki/index.php?title=EDA"&gt;iPhone wiki entry&lt;/a&gt;, and &lt;a href="http://github.com/geohot/eda-reversing/tree/master"&gt;the source&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/6131863920069143471-4795719211939561651?l=iphonejtag.blogspot.com'/&gt;&lt;/div&gt;</description><pubDate>Sun, 19 Apr 2009 21:51:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-6131863920069143471.post-4795719211939561651</guid><author>George Hotz (noreply@blogger.com)</author><source url="http://iphonejtag.blogspot.com/feeds/posts/default">On the iPhone</source><ng:postId>9202030215</ng:postId><ng:feedId>1582925</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Battery-free 5 volt project power</title><link>http://www.instructables.com/id/Battery-free-5-volt-project-power/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FYE/NMYO/FTM72RSP/FYENMYOFTM72RSP.SMALL.jpg" align="left" hspace="10"&gt;Now you can have a regulated power supply constantly at your fingertips with NO batteries to replace or recharge!  This Instructable shows you how to modify a keychain dynamo flashlight into a lean mean supply that can replace batteries for any projects requiring quick 5 volt direct-current (5V DC) ...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Griswold+Lighting/"&gt;Griswold Lighting&lt;/a&gt;</description><pubDate>Sun, 19 Apr 2009 06:39:58 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/9195644924</guid><author>Griswold Lighting</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>9195644924</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>IDA v5.4 demo</title><link>https://www.openrce.org/blog/view/1436/IDA_v5.4_demo</link><description>written by hexrays.</description><pubDate>Fri, 17 Apr 2009 21:01:55 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/197409/9189963400</guid><author>hexrays &lt;email-suppressed@example.com&gt;</author><source url="http://www.openrce.org/rss/feeds/blogs">OpenRCE: Blogs</source><ng:postId>9189963400</ng:postId><ng:feedId>197409</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>London + viz stuff..</title><link>http://feedproxy.google.com/~r/blaagg/~3/YVcsI8t4LZQ/</link><description>&lt;div class="mceTemp"&gt;
&lt;dl id="attachment_111" class="wp-caption alignleft" style="width: 310px;"&gt;
&lt;dt class="wp-caption-dt"&gt;&lt;a href="http://blaagg.tadkom.net/wp-content/uploads/2009/04/multimodal.png"&gt;&lt;img class="size-medium wp-image-111" title="Multimodal" src="http://blaagg.tadkom.net/wp-content/uploads/2009/04/multimodal-300x251.png" alt="Multimodal" width="300" height="251" /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;p&gt;Just came back from London, had a fun few days enjoying the low GBP value.. Weather was really nice too, relaxed in Hyde park under a (semi)-blue sky and 21C.&lt;/p&gt;
&lt;p&gt;Now it&amp;#8217;s back to school and work, currently doing some multimodal visualization. Here&amp;#8217;s an example I&amp;#8217;m working on, combining CT, MRI and PET of a monkey. Showing a slab of volume rendered CT (bones) and PET (brain activity) on top of a MRI slice..&lt;/p&gt;
&lt;img src="http://feeds2.feedburner.com/~r/blaagg/~4/YVcsI8t4LZQ" height="1" width="1"/&gt;</description><pubDate>Fri, 17 Apr 2009 20:27:00 GMT</pubDate><guid isPermaLink="false">http://blaagg.tadkom.net/?p=112</guid><comments>http://blaagg.tadkom.net/teknologi/london-viz-stuff/#comments</comments><author>Stian</author><source url="http://blaagg.tadkom.net/feed/">Blågg</source><ng:postId>9181854505</ng:postId><ng:feedId>712555</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Episode #100: Learning the Template Pattern</title><link>http://feedproxy.google.com/~r/Dimecastsnet--InformAndEducateIn10MinutesOrLess/~3/rhylB4_LUtQ/100</link><description>&lt;b&gt;Presented By:&lt;/b&gt; &lt;a href='http://www.dimecasts.net/Casts/CastFeedDetails/100'&gt;Codebetter.com Network&lt;/a&gt;&lt;br&gt;&lt;b&gt;Author:&lt;/b&gt; Derik Whittaker&lt;br&gt;&lt;br&gt;In this episode we take a how you can use the Template Design Pattern in your applications.&lt;br&gt;&lt;br&gt;The Template Design 

Pattern is perhaps one of the most widely used and useful design pattern. It is used to set up the outline or skeleton of an algorithm, 

leaving the details to specific implementations later. This way, subclasses can override parts of the algorithm without changing its 

overall structure.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href='http://www.dimecasts.net/Content/WatchFeedEpisode/100'&gt;Watch Here&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.dimecasts.net/Casts/CastFeedDetails/100'&gt;View Details Here&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;a href='http://www.dotnetkicks.com/submit/?url=http://www.dimecasts.net/Casts/CastDetails/100&amp;title=Learning the Template Pattern&amp;description=Learning the Template Pattern'&gt;&lt;img alt='Submit this story to DotNetKicks' style='border-style: none' src='http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.dimecasts.net/Casts/CastDetails/100'/&gt;&lt;/a&gt; &lt;script type='text/javascript'&gt;var dzone_url = 'http://www.dimecasts.net/Casts/CastDetails/100';&lt;/script&gt;&lt;script type='text/javascript'&gt;var dzone_title = 'Learning the Template Pattern';&lt;/script&gt;&lt;script type='text/javascript'&gt;var dzone_blurb = 'Learning the Template Pattern';&lt;/script&gt;&lt;script type='text/javascript'&gt;var dzone_style = '2';&lt;/script&gt;&lt;script language='javascript' src='http://widgets.dzone.com/widgets/zoneit.js'&gt;&lt;/script&gt; &lt;script type='text/javascript'&gt;digg_url = 'http://www.dimecasts.net/Casts/CastDetails/100';digg_title = 'Learning the Template Pattern';digg_bodytext = 'Learning the Template Pattern';digg_media = 'video';digg_topic = 'microsoft';digg_skin = 'compact';digg_window = 'new';&lt;/script&gt;&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://theloungenet.com/feeds/redirect/DOTNETRSS/DIMECASTS/C10559FBF479A6B849D7026B6BB6EA17F79431E9"&gt;&lt;img src="http://theloungenet.com/feeds/img/DOTNETRSS/DIMECASTS/C10559FBF479A6B849D7026B6BB6EA17F79431E9"&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 09 Apr 2009 07:00:00 GMT</pubDate><guid isPermaLink="false">http://www.dimecasts.net/Casts/CastFeedDetails/100</guid><author>Derik Whittaker</author><source url="http://feeds2.feedburner.com/Dimecastsnet--InformAndEducateIn10MinutesOrLess">Dimecasts.Net -- Inform &amp; Educate in ~10 minutes or less</source><ng:postId>9047654409</ng:postId><ng:feedId>4326758</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Get Your Shoes Off the Floor with a DIY Floating Shoe Rack [DIY]</title><link>http://feeds.gawker.com/~r/lifehacker/full/~3/MjCtuT7IOYI/get-your-shoes-off-the-floor-with-a-diy-floating-shoe-rack</link><description>&lt;p&gt;&lt;img src="http://cache.gawker.com/assets/images/lifehacker/2009/04/2009-04-03_215155.png" height="300" width="300"&gt;If you're looking for a sleek and modern way to keep your shoes organized, a floating shoe rack is a rather novel way display and store your footwear at the same time. &lt;/p&gt; &lt;p&gt;Instructables user Nachimir was rather fond of a set of floating shoe racks he spotted, but they cost $75 each. Far more than he wanted to spend, he made a DIY alternative using little more than an Ikea shelf and some screws. The total cost for his DIY version was a mere $12. His version is an improvement over a previous &lt;a href="http://lifehacker.com/software/weekend-project/make-a-floating-shoe-rack-274003.php"&gt;DIY floating shoe rack&lt;/a&gt; tutorial we shared with you, as the hanging hardware is completely hidden away in this version. Have a thrify DIY knock-off of your own? Share it in the comments below. &lt;div&gt;&lt;a href="http://www.instructables.com/id/Ikea-Hack-STRIPA-Shoe-Rack/?ALLSTEPS"&gt;Ikea Hack: STRIPA Shoe Rack&lt;/a&gt; [Instructables]&lt;/div&gt; &lt;/p&gt; &lt;br style="clear:both"&gt;
&lt;br style="clear:both"&gt;
&lt;a href="http://www.pheedo.com/click.phdo?s=b503ea6a653b0856c9d4005a47ad8988&amp;amp;p=1"&gt;&lt;img alt="" style="border:0" border="0" src="http://www.pheedo.com/img.phdo?s=b503ea6a653b0856c9d4005a47ad8988&amp;amp;p=1"&gt;&lt;/a&gt;&lt;div&gt;
&lt;a href="http://feeds.gawker.com/~ff/lifehacker/full?a=MjCtuT7IOYI:HNgWskEFBMo:H0mrP-F8Qgo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/lifehacker/full?d=H0mrP-F8Qgo" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.gawker.com/~ff/lifehacker/full?a=MjCtuT7IOYI:HNgWskEFBMo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/lifehacker/full?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.gawker.com/~ff/lifehacker/full?a=MjCtuT7IOYI:HNgWskEFBMo:D7DqB2pKExk"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/lifehacker/full?i=MjCtuT7IOYI:HNgWskEFBMo:D7DqB2pKExk" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.gawker.com/~ff/lifehacker/full?a=MjCtuT7IOYI:HNgWskEFBMo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/lifehacker/full?i=MjCtuT7IOYI:HNgWskEFBMo:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/lifehacker/full/~4/MjCtuT7IOYI" height="1" width="1"&gt;</description><pubDate>Sat, 04 Apr 2009 19:00:00 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/1800dc72282bf6e9</guid><author>Jason Fitzpatrick</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>7502232149</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Intel Aims for 2 Second Boot Time with Moblin Linux Platform</title><link>http://www.osnews.com/story/21286/Intel_Aims_for_2_Second_Boot_Time_with_Moblin_Linux_Platform</link><description>At the Linux Collaboration Summit in San Francisco, Intel Open Source Technology Center director Imhad Sousou discussed the company's plans for the next major version of its Linux-based open source Moblin platform. The aim of Moblin, Sousou says, is to improve the quality of the Linux user experience on Atom-based devices. For Intel, this is a broad mandate that reaches deep into the platform and will require improvements at many different layers of the stack. One especially important aspect of Intel's platform improvement agenda is to reduce overall startup time.</description><pubDate>Thu, 09 Apr 2009 16:12:34 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/21286/Intel_Aims_for_2_Second_Boot_Time_with_Moblin_Linux_Platform</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>9047147386</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Multi-User Jingle</title><link>http://dgh.livejournal.com/12711.html</link><description /><pubDate>Sat, 04 Apr 2009 08:57:09 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/-1/7494985453</guid><source url="http://services.newsgator.com/urlclippedposts.aspx">URL clipped post</source><ng:postId>7494985453</ng:postId><ng:feedId>-1</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>"Lancing the f***ing boil": how digital killed Big Music</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/Tna7nVYTBCI/lancing-the-fing-boil-inside-the-major-labels-slump.ars</link><description>&lt;a href="http://arstechnica.com/media/reviews/2009/03/lancing-the-fing-boil-inside-the-major-labels-slump.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/appetite-thumb-230x130-3799-f.jpg" alt="companion photo for &amp;quot;Lancing the f***ing boil&amp;quot;: how digital killed Big Music" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Despite popular perception, even those at the top of music business have a sense of humor, something captured repeatedly in Steve Knopper's new book, &lt;em&gt;Appetite for Self-Destruction: The Spectacular Crash of the Record Industry in the Digital Age&lt;/em&gt;. In Knopper's telling, the decline of the major labels isn't just about technology or peer-to-peer programs&amp;#8212;it's about personalities, and his book is stuffed with stories of music execs in action.&lt;/p&gt; 
    
       
         &lt;a href="http://arstechnica.com/media/reviews/2009/03/lancing-the-fing-boil-inside-the-major-labels-slump.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/JuzI9FuGFIkGypzVaxN7luznT_E/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/JuzI9FuGFIkGypzVaxN7luznT_E/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=Tna7nVYTBCI:iNXKlw8z9mY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=Tna7nVYTBCI:iNXKlw8z9mY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=Tna7nVYTBCI:iNXKlw8z9mY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=Tna7nVYTBCI:iNXKlw8z9mY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=Tna7nVYTBCI:iNXKlw8z9mY:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=Tna7nVYTBCI:iNXKlw8z9mY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/Tna7nVYTBCI" height="1" width="1"/&gt;</description><pubDate>Wed, 25 Mar 2009 04:53:51 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/media/reviews/2009/03/lancing-the-fing-boil-inside-the-major-labels-slump.ars</guid><author>nate@arstechnica.com (Nate Anderson)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>7401466917</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Canadian artists' new/old plan: $5 to share music legally</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/-ENFbqCUOyI/canadian-songwriters-plan-5-to-share-music-legally.ars</link><description>&lt;a href="http://arstechnica.com/tech-policy/news/2009/03/canadian-songwriters-plan-5-to-share-music-legally.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/SAC-logo-thumb-230x130-3776-f.jpg" alt="companion photo for Canadian artists' new/old plan: $5 to share music legally" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;Back in 2007, the Songwriters Association of Canada &lt;a href="http://arstechnica.com/old/content/2007/12/canadian-songwriters-propose-monetizing-p2p-in-canada.ars"&gt;floated a proposal for a monthly Internet music levy&lt;/a&gt;&amp;#8212;pay CAN$5 and swap all the music you want. The plan attracted criticism from every side, but SAC is now back with a &lt;a href="http://www.musicfilesharing.ca/"&gt;revised version of the plan&lt;/a&gt; that addresses the concerns. While the idea might be risky, SAC members argue that it's the only viable way to make sure that artists, songwriters, and rightsholders get paid for the huge amount of illegal file-sharing that takes place.&lt;/p&gt;

&lt;p&gt;One of the big concerns with SAC's initial plan was its compulsory nature. Not only would all Canadian consumers with an Internet connection pay the fee, but all musicians and rightsholders would have their music included in the plan whether they liked it or not. While this has the great virtue of making it simple to know whether any particular tune would be legal to share (answer: it would!), it also created problems with Canada's existing international copyright obligations.&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/tech-policy/news/2009/03/canadian-songwriters-plan-5-to-share-music-legally.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/vm8U_ntUlaGtjZq2hJ0qd33RLYA/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/vm8U_ntUlaGtjZq2hJ0qd33RLYA/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-ENFbqCUOyI:OUSH_wJ06QE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=-ENFbqCUOyI:OUSH_wJ06QE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-ENFbqCUOyI:OUSH_wJ06QE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=-ENFbqCUOyI:OUSH_wJ06QE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-ENFbqCUOyI:OUSH_wJ06QE:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=-ENFbqCUOyI:OUSH_wJ06QE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/-ENFbqCUOyI" height="1" width="1"/&gt;</description><pubDate>Wed, 25 Mar 2009 03:32:02 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/tech-policy/news/2009/03/canadian-songwriters-plan-5-to-share-music-legally.ars</guid><author>nate@arstechnica.com (Nate Anderson)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>7401466438</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>This is your brain on deep brain stimulation</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/t4Um9v8Jbf8/your-brain-on-deep-brain-stimulation.ars</link><description>&lt;a href="http://arstechnica.com/science/news/2009/03/your-brain-on-deep-brain-stimulation.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/human-brain-thumb-230x130-3790-f.jpg" alt="companion photo for This is your brain on deep brain stimulation" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;
Deep brain stimulation is one of those little-advertised, last-resort treatments. After therapy has failed, drugs have failed, and, (if it happens to be appropriate) electric shock therapy has failed, a doctor may recommend deep brain stimulation. Typically, deep brain stimulation is reserved for severe cases of Parkinson's disease, serious depression, and a&amp;nbsp;handful&amp;nbsp;of other psychological disorders. But no one really knows how or why it works.
&lt;/p&gt;
&lt;p&gt;
To perform deep brain stimulation, electrodes are implanted deep into the brain, located at the region where electrical signals pass among different neurons. Some researchers believe that the electrodes act to suppress neuronal activity, while other believe it activates neurons. These two groups generally spend a certain amount of time glaring at each other during academic conferences while trying to come up with a way to test their ideas. Now a team from Stanford has discovered a way to make the measurements, and it turns out that deep brain stimulation &lt;a href="http://dx.doi.org/10.1126/science.1167093"&gt;seems to activate&lt;/a&gt; particular sets of neurons.
&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/science/news/2009/03/your-brain-on-deep-brain-stimulation.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/Hu8EE7V2pqDjQhG_krgME02GCRg/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/Hu8EE7V2pqDjQhG_krgME02GCRg/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=t4Um9v8Jbf8:YF8n1SF_fmQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=t4Um9v8Jbf8:YF8n1SF_fmQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=t4Um9v8Jbf8:YF8n1SF_fmQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=t4Um9v8Jbf8:YF8n1SF_fmQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=t4Um9v8Jbf8:YF8n1SF_fmQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=t4Um9v8Jbf8:YF8n1SF_fmQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/t4Um9v8Jbf8" height="1" width="1"/&gt;</description><pubDate>Wed, 25 Mar 2009 13:43:22 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/science/news/2009/03/your-brain-on-deep-brain-stimulation.ars</guid><author>editors@arstechnica.com (Chris Lee)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>7401467175</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Nuclear power? Yes please!</title><link>http://feeds.arstechnica.com:80/~r/arstechnica/index/~3/PeR4pUKi_84/nuclear-power-yes-please.ars</link><description>&lt;a href="http://arstechnica.com/science/news/2009/03/nuclear-power-yes-please.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/nukes-thumb-230x130-3506-f.jpg" alt="companion photo for Nuclear power? Yes please!" /&gt;&lt;/a&gt;
      
    
    &lt;!--StartFragment--&gt;

&lt;p"&gt;Nuclear power is safe, affordable, and the waste problems
are much more manageable than the public realizes. That was the take-home message
from this year's American Association for the Advancement of Science meeting in Chicago, where a group of experts from the US
and EU participated in a session called "Keeping the Lights On: The
Revival of Nuclear Energy for Our Future." &lt;p&gt;&lt;/p&gt;

&lt;p&gt;As you might have gathered from some of our &lt;a href="http://www.google.com/search?hl=en&amp;amp;safe=off&amp;amp;&amp;amp;rls=en-us&amp;amp;q=site%3Aarstechnica.com+AAAS"&gt;prior AAAS
coverage&lt;/a&gt;, climate change was a pretty central theme in many of the sessions and, although nuclear power won't be able to fulfill all our energy demands in a
post-carbon world, it's hard to avoid thinking that the world will need
to make full use of nuclear energy.&lt;/p&gt;

&lt;!--EndFragment--&gt;


&lt;/p"&gt;
    
       
         &lt;a href="http://arstechnica.com/science/news/2009/03/nuclear-power-yes-please.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/EY-SCG82Yt6DhsCnbmm56Vm4z_I/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/EY-SCG82Yt6DhsCnbmm56Vm4z_I/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com:80/~ff/arstechnica/index?a=PeR4pUKi_84:hTCeB2ZoTrU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=PeR4pUKi_84:hTCeB2ZoTrU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com:80/~ff/arstechnica/index?a=PeR4pUKi_84:hTCeB2ZoTrU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=PeR4pUKi_84:hTCeB2ZoTrU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com:80/~ff/arstechnica/index?a=PeR4pUKi_84:hTCeB2ZoTrU:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com:80/~ff/arstechnica/index?a=PeR4pUKi_84:hTCeB2ZoTrU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/PeR4pUKi_84" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Mar 2009 01:58:17 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/science/news/2009/03/nuclear-power-yes-please.ars</guid><author>jonathan@arstechnica.com (Jonathan M. Gitlin)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>7341352623</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Mono and Qt</title><link>http://tirania.org/blog/archive/2009/Mar-16.html</link><description>
	&lt;p&gt;The KDE folks have created some
	brilliant &lt;a href="http://www.qtsoftware.com/Qt"&gt;bindings&lt;/a&gt;
	for Mono and .NET
	called &lt;a href="http://techbase.kde.org/Development/Languages/Qyoto"&gt;Qyoto&lt;/a&gt;.

	&lt;p&gt;But there is nothing like a polished application to really
	test the bindings.   This
	week &lt;a href="http://eric.extremeboredom.net/"&gt;Eric
	Butler&lt;/a&gt; &lt;a href="http://eric.extremeboredom.net/2009/03/15/336"&gt;announced
	Synapse&lt;/a&gt;: an advanced Instant Messaging platform.

	&lt;p&gt;This is the first large application built with
	Qt/Qyoto/Mono and it is a beautiful application:

	&lt;center&gt;
	&lt;img src="http://primates.ximian.com/~miguel/pictures/synapse-promo2.png"&gt;
	&lt;/center&gt;

	&lt;p&gt;I had a chance to see Synapse live a couple of weeks ago in
	Seattle when we met Eric for dinner.    Eric has written a
	very polished application.   This is what love does to
	software.

	&lt;p&gt;Congratulations to Eric for the release of his app, to the
	Qymono crowd for creating these polished applications and
	Nokia/Trolltech for releasing Qt under the LGPL license.

	&lt;p&gt;Developers interested in doing Qyoto development with
	MonoDevelop can take advantage of
	the &lt;a href="http://github.com/FireRabbit/qyotodevelop/tree/master"&gt;QyotoDevelop&lt;/a&gt;
	add-in that Eric created as well.  This add-in generates code
	from the Qt Designers UI files
	(&lt;a href="http://orion.extremeboredom.net/~eric/DropBox/qyotodevelop1.png"&gt;click
	for a screenshot&lt;/a&gt;).
</description><pubDate>Tue, 17 Mar 2009 03:16:00 GMT</pubDate><guid isPermaLink="false">http://tirania.org/blog/archive/2009/Mar-16.html</guid><author>miguel@gnome.org (Miguel de Icaza)</author><source url="http://tirania.org/blog/miguel.rss2">Miguel de Icaza</source><ng:postId>7320367318</ng:postId><ng:feedId>429</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Feed aggregators</title><link>http://feedproxy.google.com/~r/simplicidade/notes/~3/1TeAsAKDkHI/feed_aggregator.html</link><description>
&lt;p&gt;I'm a bit sick of hearing applications call themselves "feed aggregators" when they simple show me a chronological sequence of unrelated articles.&lt;/p&gt;

&lt;p&gt;Sure, I guess that 4 or 5 years ago that was enough and worthy of the word, but in between I jumped from 20 or 30 to 354 feeds (I usually prune to 250 each 6 months).&lt;/p&gt;

&lt;p&gt;I think its time to move up the goal post: you cannot call yourself a aggregator without actually doing it - finding relations between articles and presenting them in useful ways.&lt;/p&gt;

&lt;p&gt;Let me give you some examples.&lt;/p&gt;

&lt;p&gt;You follow feeds A, B and C. If article X from feed A is referenced by article Y in B and Z in C, at the very least I should have a "See also" section while seeing X on my feed reader. A link back inside the feed reader, from Y and Z back to X wouldn't also be out of the question.&lt;/p&gt;

&lt;p&gt;And it makes sense to place Y and Z right next to X. I would first read X, and then the next one would be Y and Z in some order (a graph-theory-lover would expect that all articles in your feed reader should be read in a breadth-first order, actually.)&lt;/p&gt;

&lt;p&gt;Also, feed reader companies seem interested on getting from you your activity stream. Such valued commodity is taken from you (with your consent in most cases) without giving nothing in return. They don't allow me to say "I like this article" so that I can influence a Baysean classification system. Sure, because I do expect the feed reader to suggest to me what are the articles I will like the most after some time.&lt;/p&gt;

&lt;p&gt;This are just some ideas. I bet you'll be start to seeing them of them in the future, but with a magical new name. Marketing people like to create new names for features that should be part of the natural evolution of products.&lt;/p&gt;

&lt;p&gt;In the meantime, if you have a feed reader that runs on Mac OS X, and that I can use on several Macs, please leave a comment.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=1TeAsAKDkHI:wOX79xhw-V0:QAbEOQDFbZY"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?i=1TeAsAKDkHI:wOX79xhw-V0:QAbEOQDFbZY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=1TeAsAKDkHI:wOX79xhw-V0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds2.feedburner.com/~ff/simplicidade/notes?a=1TeAsAKDkHI:wOX79xhw-V0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/simplicidade/notes?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/simplicidade/notes/~4/1TeAsAKDkHI" height="1" width="1"/&gt;</description><pubDate>Sat, 14 Mar 2009 12:38:45 GMT</pubDate><guid isPermaLink="false">944@http://www.simplicidade.org/notes/</guid><author>melo@simplicidade.org</author><source url="http://feeds.feedburner.com/simplicidade/notes">Notes</source><ng:postId>7302191417</ng:postId><ng:feedId>419448</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Very simple and cheap Guitar/Bass distortion pedal</title><link>http://www.instructables.com/id/Very_simple_and_cheap_GuitarBass_distortion_pedal/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FRI/VR4N/FS8RCBJX/FRIVR4NFS8RCBJX.SMALL.jpg" align="left" hspace="10"&gt;Here, I will teach you how to make a very simple 1 transistor low power guitar pedal. (I designed the circuit diagram and PCB). This circuit can be ran off old 9v batteries that still have a charge above 1.5v meaning you won't have to throw them out!&lt;br/&gt;
&lt;br/&gt;
Find the parts!&lt;br/&gt;
&lt;br/&gt;
Firstly, to make the pedal you ...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/pyrohaz/"&gt;pyrohaz&lt;/a&gt;</description><pubDate>Fri, 13 Mar 2009 20:29:20 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/7296435693</guid><author>pyrohaz</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>7296435693</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to use 555 timers</title><link>http://www.instructables.com/id/How_to_use_555_timers/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FNW/4Q24/FS8O1KJ7/FNW4Q24FS8O1KJ7.SMALL.jpg" align="left" hspace="10"&gt;Simple 555 timer curcuit. very basic. flash an led on and off.&lt;br/&gt;
&lt;br/&gt;
video added soon!&lt;br/&gt;
&lt;br/&gt;
Get Parts&lt;br/&gt;
&lt;br/&gt;
you will need:&lt;br/&gt;
&lt;br/&gt;
- 1x ne/se 555 timer IC chip.&lt;br/&gt;
- 1x solderless breadboard&lt;br/&gt;
- 1x source of 8 or more volts (i had 18)&lt;br/&gt;
- 1x 5V voltage regulator (if you dont have one you can use a 6v lantern battery.&lt;br/&gt;
- 2x 0.5k...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/andrew101/"&gt;andrew101&lt;/a&gt;</description><pubDate>Sun, 15 Mar 2009 23:25:07 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/7312285363</guid><author>andrew101</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>7312285363</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Crafting a Tiny Mach-O Executable</title><link>http://www.osxbook.com/blog/2009/03/15/crafting-a-tiny-mach-o-executable/</link><description>The other day I came across this web page in which the author describes his experiment to create a tiny ELF executable that will run on Linux. The result: a 45-byte ELF executable that executes and returns a value. The executable is functionally equivalent to the one generated from compiling the following C program.


  [...]</description><pubDate>Mon, 16 Mar 2009 00:34:43 GMT</pubDate><guid isPermaLink="false">http://www.osxbook.com/blog/?p=452</guid><author>amit</author><source url="http://www.osxbook.com/blog/feed/atom/">Mac OS X Internals: The Blog</source><ng:postId>7313338999</ng:postId><ng:feedId>481380</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Robert McQueen: Top acts</title><link>http://robot101.net/2009/03/13/top-acts/</link><description>&lt;p&gt;I&amp;#8217;ve been very impressed several times in the past few months when I&amp;#8217;ve discovered awesome new &lt;tt&gt;top&lt;/tt&gt;-like utilities. I&amp;#8217;m probably being slow on the uptake and everyone else but me knows about these, but in case its not just me thats been stuck in the &amp;#8217;70s:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;a href="http://htop.sourceforge.net/"&gt;&lt;tt&gt;htop&lt;/tt&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;A much-needed refresh of oldschool &lt;tt&gt;top&lt;/tt&gt;, this still works on your beloved console but gives you visual bar-graphs of CPU, RAM and swap, lets you scroll through the processes and deliver signals/renicing without having to copy the PID off the moving target. Its like the future!&lt;/dd&gt;
&lt;dt&gt;&lt;a href="http://www.ex-parrot.com/~pdw/iftop/"&gt;&lt;tt&gt;iftop&lt;/tt&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;One of those things I use so often now I have no idea how I even survived without it. Why is this server lagging, who&amp;#8217;s hogging the wireless/DSL, which VM is chewing all of the upstream bandwidth? &lt;tt&gt;iftop&lt;/tt&gt; shows you at a glance how much traffic is being used by which host pairs on a given interface, and you can toggle port numbers on and off with simple key-presses. Absolutely indispensable.&lt;/dd&gt;
&lt;dt&gt;&lt;a href="http://guichaz.free.fr/iotop/"&gt;&lt;tt&gt;iotop&lt;/tt&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Does this box feel slow to anyone else? Is it swapping, or is it the database server chewing all the IO? Why does my drive keep seeking? It&amp;#8217;s amazing&amp;#8230; top for IO bandwidth usage!&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;A passing mention is deserved for &lt;a href="http://www.webta.org/projects/apachetop/"&gt;&lt;tt&gt;apachetop&lt;/tt&gt;&lt;/a&gt; too, which is pretty neat, but when a server is being hammered it&amp;#8217;s not something I found too hard to get a feel for just by tailing the log for a while, so it&amp;#8217;s not been as life-changing as the others. Maybe that just means my servers don&amp;#8217;t see enough traffic.&lt;/p&gt;</description><pubDate>Fri, 13 Mar 2009 22:45:06 GMT</pubDate><guid isPermaLink="false">http://robot101.net/?p=104</guid><source url="http://www.planet-im.com/rss20.xml">Planet IM</source><ng:postId>7297423594</ng:postId><ng:feedId>39771</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Doing Geolocation with XMPP @ FOSDEM 2009</title><link>http://blog.xmpp.org/?p=333</link><description>&lt;p&gt;Simon Tennant, CEO of Buddycloud, gave a talk at FOSDEM 2009 on Geolocation with XMPP. Buddycloud is an application for your mobile phone that lets your friends know what you are doing and where you are. &lt;a href="http://www.buddycloud.com" target="_blank"&gt;You can find out more about Buddycloud here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div id="attachment_334" class="wp-caption aligncenter" style="width: 432px"&gt;&lt;a rel="attachment wp-att-334" href="http://blog.xmpp.org/?attachment_id=334"&gt;&lt;img class="size-full wp-image-334" title="buddycloud" src="http://blog.xmpp.org/wp-content/uploads/2009/03/buddycloud.jpg" alt="Simon Tennant @ FOSDEM 2009" width="422" height="317" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;Simon Tennant @ FOSDEM 2009&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a rel="attachment wp-att-335" href="http://blog.xmpp.org/?attachment_id=335"&gt;Simon&amp;#8217;s presentation is available in PDF format here&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Mon, 16 Mar 2009 09:49:46 GMT</pubDate><guid isPermaLink="false">http://blog.xmpp.org/?p=333</guid><comments>http://blog.xmpp.org/?p=333#comments</comments><author>willsheward</author><source url="http://blog.xmpp.org/?feed=rss2">Extended Conversation</source><ng:postId>7315693409</ng:postId><ng:feedId>1201572</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Loop quantum gravity: getting closer to reality</title><link>http://feeds.arstechnica.com/~r/arstechnica/index/~3/qJ9X4nLWp6U/loop-quantum-gravity-getting-closer-to-reality.ars</link><description>&lt;a href="http://arstechnica.com/science/news/2009/03/loop-quantum-gravity-getting-closer-to-reality.ars"&gt;&lt;img vspace="4" hspace="4" border="0" align="right" src="http://static.arstechnica.com/assets/2009/03/train_track-thumb-230x130-2822-f.png" alt="companion photo for Loop quantum gravity: getting closer to reality" /&gt;&lt;/a&gt;
      
    
    &lt;p&gt;
Quantum mechanics and general relativity are fundamentally incompatible for reasons that relate to views of the world that simply cannot be reconciled. In general relativity, space and time are regarded as continuous objects, while quantum mechanics requires that, at some level, space and time be discrete. Now, although we know that quantum mechanics will have to be modified to include gravity, which will allow it to incorporate the behaviors ascribed to general relativity, it should be noted that general relativity needs to be replaced for other reasons as well. For example, the continuous nature of space allows black holes to collapse to point-like objects. Likewise, using just general relativity, the universe began with an infinitely dense point. Physicists don't like infinity, and we tend to object to theories that distill down to it.
&lt;/p&gt;
&lt;p&gt;
Among the many contenders for combining gravity and quantum mechanics is loop quantum gravity. As with all proposals of this sort, this one has its detractors. One of the most serious failings of the theory is that it was thought that it might not be possible to perform what are called gauge transformations using it. This would have been a significant problem, because gauge transformations are fundamental to quantum mechanics and it would be unlikely that loop quantum gravity would be able to encompass all of quantum mechanics without them&amp;#8212;a major failing for a theory aiming to replace the standard model. A &lt;a href="http://dx.doi.org/10.1103/PhysRevLett.102.091301"&gt;recent publication&lt;/a&gt;, by scientists at the University of Rome, shows that gauge transformations generally do work in loop quantum gravity.
&lt;/p&gt;
    
       
         &lt;a href="http://arstechnica.com/science/news/2009/03/loop-quantum-gravity-getting-closer-to-reality.ars"&gt;Click here to read the rest of this article&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/xYRXVb0TJI6sm_AGCPmLWSwsVKI/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/xYRXVb0TJI6sm_AGCPmLWSwsVKI/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=qJ9X4nLWp6U:tejar--0zY8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=qJ9X4nLWp6U:tejar--0zY8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=qJ9X4nLWp6U:tejar--0zY8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?i=qJ9X4nLWp6U:tejar--0zY8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=qJ9X4nLWp6U:tejar--0zY8:qj6IDK7rITs"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.arstechnica.com/~ff/arstechnica/index?a=qJ9X4nLWp6U:tejar--0zY8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds2.feedburner.com/~ff/arstechnica/index?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds2.feedburner.com/~r/arstechnica/index/~4/qJ9X4nLWp6U" height="1" width="1"/&gt;</description><pubDate>Fri, 06 Mar 2009 22:52:38 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/science/news/2009/03/loop-quantum-gravity-getting-closer-to-reality.ars</guid><author>editors@arstechnica.com (Chris Lee)</author><source url="http://feeds.arstechnica.com/arstechnica/index/">Ars Technica</source><ng:postId>7238137986</ng:postId><ng:feedId>1221206</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Wave Laptop Stand (Making 3D Shapes in Ilustrator)</title><link>http://www.instructables.com/id/Wave_Laptop_Stand_Making_3D_Shapes_in_Ilustrator/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F18/EJJS/FRXWGIMN/F18EJJSFRXWGIMN.SMALL.jpg" align="left" hspace="10"&gt;I wanted a nicer laptop stand. I wanted to to make something with a beautiful, organic form. And I work at Instructables, so I have a laser cutter.&lt;br/&gt;
&lt;br/&gt;
[UPDATE: I'm curious to see if anyone would be interested in purchasing this stand. Send me an email at wavestand@feedwink.com and make me an offer.]&lt;br/&gt;
&lt;br/&gt;
...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/nagutron/"&gt;nagutron&lt;/a&gt;</description><pubDate>Sat, 07 Mar 2009 01:57:55 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/7239972778</guid><author>nagutron</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>7239972778</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>The power of ICommand</title><link>http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx</link><description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;b&gt;“ICommand&lt;/b&gt; contains methods to execute commands. A command can be executed many times, and the parameter values can vary. This interface is mandatory on commands.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The native support for the command pattern in WPF is great! It allows us to create very decoupled applications and in some instances even remove the need for a code-behind file completely.&lt;/p&gt;
&lt;p&gt;WPF implement RoutedCommands &amp;amp; RoutedUICommands… Both of these are great for most scenarios but it still ties you to the visual tree. To completely decouple yourself from the visual tree, we need to explorer some custom implementations of the ICommand interface…&lt;/p&gt;
&lt;p&gt;To test these great implementations, I created a application with a VERY basic “ViewModel”&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/CustomerViewModel.JPG" alt=""&gt; &lt;/p&gt;
&lt;p&gt;This CustomerViewModel has 2 properties (Name &amp;amp; Surname). It also exposes a ICommand called Clean. If a View calls the Clean command, the name and surname should be set to string.empty! I know this is a overly simplified example but it shows how a View can communicate with the ViewModel in a completely decoupled way&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marlongrech.wordpress.com/"&gt;Marlon Grech&lt;/a&gt; - &lt;a href="http://marlongrech.wordpress.com/2008/11/26/avoiding-commandbinding-in-the-xaml-code-behind-files/"&gt;SimpleCommand&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Marlon created a excellent implementation called SimpleCommand. This truly lives up to its name… here is a example of how I would implement the Clean command using his implementation &lt;/p&gt;&lt;pre&gt;Clean = &lt;span style="color:blue"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af"&gt;SimpleCommand&lt;/span&gt;()
{
    CanExecuteDelegate = x =&amp;gt; Name != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty || Surname != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty,
    ExecuteDelegate = x =&amp;gt; Name = Surname = &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty
};&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://joshsmithonwpf.wordpress.com/"&gt;Josh Smith&lt;/a&gt; – &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;RelayCommand&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“RelayCommand allows you to inject the command&amp;#39;s logic via delegates passed into its constructor. This approach allows for terse, concise command implementation in ViewModel classes. RelayCommand is a simplified variation of the DelegateCommand found in the &lt;/em&gt;&lt;em&gt;.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Josh also has a similar implementation &lt;/p&gt;&lt;pre&gt;Clean = &lt;span style="color:blue"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af"&gt;RelayCommand&lt;/span&gt;(
    x =&amp;gt; Name = Surname = &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty,
    x =&amp;gt; Name != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty || Surname != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty
        ); &lt;/pre&gt;
&lt;p&gt;&lt;a href="http://compositewpf.codeplex.com/"&gt;PRISM team&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/en-us/library/cc707894.aspx"&gt;DelegateCommand&amp;lt;T&amp;gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The &lt;strong&gt;DelegateComm&lt;/strong&gt;&lt;strong&gt;a&lt;/strong&gt;&lt;strong&gt;n&lt;/strong&gt;&lt;strong&gt;d&lt;/strong&gt; allows delegating the commanding logic instead of requiring a handler in the code behind. It uses a delegate as the method of invoking a target handling method.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;pre&gt;Clean = &lt;span style="color:blue"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af"&gt;DelegateCommand&lt;/span&gt;&amp;lt;&lt;span style="color:blue"&gt;object&lt;/span&gt;&amp;gt;(
    x =&amp;gt; Name = Surname = &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty,
    x =&amp;gt; Name != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty || Surname != &lt;span style="color:blue"&gt;string&lt;/span&gt;.Empty
        );&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;What I like about the PRISM team’s implementation is that it supports generics. It did however look like the DelegateCommand&amp;lt;T&amp;gt; did not fire its CanExecuteChanged event. From both Marlon &amp;amp; Josh’s implementations it looks thy are suppose to call CommandManager.RequerySuggested… but I am not sure (It might also be the IActiveAware stuff)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;All three these implementations have two thing in common… Thy make it extremely easy to decouple your View and you ViewModel and thy encapsulate the command logic very cleanly!&lt;/p&gt;
&lt;p&gt;If you found this article useful, please &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnet.org.za%2frudi%2farchive%2f2009%2f03%2f05%2fthe-power-of-icommand.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnet.org.za%2frudi%2farchive%2f2009%2f03%2f05%2fthe-power-of-icommand.aspx" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Must read articles about commands&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;PATTERNS: WPF Apps With The Model-View-ViewModel Design Pattern&lt;/a&gt; by Josh Smith&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc785480.aspx"&gt;ADVANCED WPF: Understanding Routed Events and Commands In WPF&lt;/a&gt; by Brian Noyes&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Frameworks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/cc707890"&gt;Microsoft Composite Application Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wekempf.spaces.live.com/"&gt;Bill Kempf&lt;/a&gt; - &lt;a href="http://www.codeplex.com/wpfonyx"&gt;Onyx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx"&gt;Rob Eisenberg&lt;/a&gt; - &lt;a href="http://www.codeplex.com/caliburn"&gt;Caliburn&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;History&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dancre"&gt;Dan Crevier&lt;/a&gt; - &lt;a href="http://blogs.msdn.com/dancre/archive/2006/09/15/756095.aspx"&gt;CommandModel&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;;subject=The+power+of+ICommand" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href="http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;;title=The+power+of+ICommand" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href="http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;;phase=2" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href="http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;title=The+power+of+ICommand" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href="http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;;title=The+power+of+ICommand" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx&amp;amp;;title=The+power+of+ICommand&amp;amp;;top=1" title="Post http://dotnet.org.za/rudi/archive/2009/03/05/the-power-of-icommand.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=962377" width="1" height="1"&gt;</description><pubDate>Thu, 05 Mar 2009 13:08:00 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/981fe1e0b36c7df8</guid><author>rudi</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>7234687967</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Homemade Annoy-a-thing (Annoy-a-tron)</title><link>http://www.instructables.com/id/Homemade_Annoy_a_thing_Annoy_a_tron/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F1H/NK25/FRTXG894/F1HNK25FRTXG894.SMALL.jpg" align="left" hspace="10"&gt;Thinkgeek.com sells a thing called an annoy-a-tron. Its basically a device that, when activated, beeps at a varied interval. While this instructable does not create an exact replica of think geek's annoy-a-tron, if you've got the materials and the know-how, you can make quite a few and deploy an ent...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/let_it_out_org/"&gt;let_it_out_org&lt;/a&gt;</description><pubDate>Thu, 05 Mar 2009 17:56:24 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/7227576649</guid><author>let_it_out_org</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>7227576649</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to Make Anything (Using Acrylic and Machine Screws)</title><link>http://www.instructables.com/id/How_to_Make_Anything_Using_Acrylic_and_Machine_Sc/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F5Q/NZO9/FRIQ7FDO/F5QNZO9FRIQ7FDO.SMALL.jpg" align="left" hspace="10"&gt;Well maybe not anything, but what follows is an Instructable about how we at oomlout.com build everything we produce.&lt;br/&gt;
&lt;br/&gt;
It is a technique we call Interlocking T-Bolt Construction. It consists of a T-cutout in one piece of acrylic (or any 3 mm stock) and a receptacle in another piece. These pieces can...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Stuart.Mcfarlan/"&gt;Stuart.Mcfarlan&lt;/a&gt;</description><pubDate>Mon, 23 Feb 2009 17:28:00 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/7140597972</guid><author>Stuart.Mcfarlan</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>7140597972</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Video Demo of OpenCL Functionality on Multi-Core CPUs</title><link>http://www.osnews.com/story/20906/Video_Demo_of_OpenCL_Functionality_on_Multi-Core_CPUs</link><description>"The first public demonstration of OpenCL functionality was given by AMD at Siggraph Asia 2008. OpenCL is the new vendor-independent standard designed to extract high performance parallel computing out of GPUs, DSPs and multicore CPUs. Basically the idea is that you can write your core computational code in OpenCL and voila! - your code scales to whatever processors are available. OpenCL will greatly improve speed and responsiveness for a wide spectrum of applications from entertainment to scientific and 3D visualization."</description><pubDate>Tue, 03 Feb 2009 23:13:57 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/20906/Video_Demo_of_OpenCL_Functionality_on_Multi-Core_CPUs</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>6988597606</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Boyfriend</title><link>http://xkcd.com/539/</link><description>&lt;img src="http://imgs.xkcd.com/comics/boyfriend.png" title="... okay, but because you said that, we're breaking up." alt="... okay, but because you said that, we're breaking up." /&gt;</description><pubDate>Wed, 04 Feb 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/539/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>6991076462</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>OpenCL</title><link>http://zrusin.blogspot.com/2009/02/opencl.html</link><description>I missed you so much. Yes, you. No, not you. You. I couldn't blog for a while and I ask you (no, not you) what's the point of living if one can't blog? Sure, there's the world outside of computers, but it's a scary place filled with people that, god forbid, might try interacting with you. Who needs that? It turns out that I do. I've spent the last week in Portland on the OpenCL working group meeting which was a part of the Khronos F2F.&lt;br /&gt;&lt;br /&gt;For those who don't know (oh, you poor souls) OpenCL is what could be described as "the shit". That's the official spelling but substituting the word "the" for "da" is considered perfectly legal. Longer description includes the expansion of the term OpenCL to "Open Computing Language" with an accompanying &lt;a href="http://en.wikipedia.org/wiki/OpenCL"&gt;wikipedia entry&lt;/a&gt;. OpenCL has all the ingredients, including the word "Open" right in the name, to make it one of the most important technologies of the coming years.&lt;br /&gt;&lt;br /&gt;OpenCL allows us to tap into the tremendous power of modern GPUs. Not only that but also one can use OpenCL with accelerators (like the physics chips or Cell SPU's) and CPUs. On top of that hardware OpenCL provides both task-based and data-based parallelism making it a fascinating options for those who want to accelerate their code. For example if you have a canvas (&lt;a href="http://doc.trolltech.com/4.5/graphicsview.html"&gt;Qt graphicsview&lt;/a&gt;) and you spend a lot of time doing collision detection, or if you have image manipulation application (&lt;a href="http://en.wikipedia.org/wiki/Krita"&gt;Krita&lt;/a&gt;) and you spend a lot of time in effects and general image manipulation, or if you have a scientific chemistry application with an equation solver (&lt;a href="http://en.wikipedia.org/wiki/Kalzium"&gt;Kalzium&lt;/a&gt;) and want to make it all faster, or if you have wonky hair and like to dance polka... OK, the last one is a little a fuzzy but you get the point.&lt;br /&gt;&lt;br /&gt;Make no mistake, OpenCL is little bit more complicated than  just "write your algorithm in C". Albeit well hidden, the graphics pipeline is still at the forefront of the design, so there are some limitations (remember that for a number of really good and few inconvenient reasons GPUs do their own memory management so you can not just move data structures between main and graphics memory). It's one of the reasons that you won't see a GCC based OpenCL implementation any time soon. OpenCL requires run time execution, it allows sharing of buffers with OpenGL (e.g. OpenCL image data type can be constructed from GL textures or renderbuffers) and it forces code generation to a number of different targets (GPUs, CPUs, accelerators). All those things need to be integrated. For sharing of buffers between OpenGL and OpenCL the two APIs need to go through some kind of a common framework - be it a real library or some utility code that exposes addresses and their meaning to both OpenGL and OpenCL implementations.&lt;br /&gt;&lt;br /&gt;Fortunately we already have that layer. Gallium3D maps perfectly to the buffer and command management in OpenCL. Which shouldn't be surprising given that they both care about the graphics pipeline. So all we need is a new state tracker with some compiler framework integrated to parse and code generate from the OpenCL C language. LLVM is the obvious choice here because unlike GCC, LLVM has libraries that we can use for both (to be more specific it's Clang and LLVM). So yes, we started on an OpenCL state tracker, but of course we are far, far away from actual conformance. Being part of a large company means that we have to go through extensive legal reviews before releasing something in the open so right now we're patiently waiting.&lt;br /&gt;My hope is that once the state tracker is public the work will continue at a lot faster pace. I'd love to see our implementation pass conformance with at least one GPU driver by summer (which is /hard/ but definitely not impossible).</description><pubDate>Sun, 01 Feb 2009 22:45:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27901662.post-4326311775576832099</guid><author>Zack (noreply@blogger.com)</author><source url="http://zrusin.blogspot.com/atom.xml">Zack Rusin</source><ng:postId>6971164054</ng:postId><ng:feedId>683650</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Record Your Core Animation Animation</title><link>http://www.cimgf.com/2009/02/03/record-your-core-animation-animation/</link><description>&lt;p&gt;Every once in a while I find a way to combine multiple technologies that, while they don&amp;#8217;t produce anything terribly useful, are very interesting when combined. In this post I will be taking a look at combining Core Animation and QuickTime. As you may or may not be aware, you can draw in a graphics context while your Core Animation animation is running and add each image created to a QTMovie object from QTKit. This enables you to create a QuickTime movie of your Core Animation animation. Here&amp;#8217;s how.&lt;br /&gt;
&lt;span id="more-437"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The basic process flow goes like this. Clicking the &amp;#8216;Capture&amp;#8217; button on the user interface calls an IBAction called &lt;em&gt;-saveAnimation&lt;/em&gt;. It prompts the user to select an output file for the movie. When the user has selected the file, the animations are created and added to the layer. Next we create a timer that is going to call a function that will grab the current frame and place it into the QTMovie object using &lt;em&gt;-addImage&lt;/em&gt; at a specified interval. We set our AppDelegate to also be the delegate for the animation group so that when the animation completes we get notified and can then write our QTMovie object data to disk.&lt;/p&gt;
&lt;h2&gt;Use An Interesting Animation&lt;/h2&gt;
&lt;p&gt;First you are going to need an animation that is worth recording. Of course any old animation will do, but we&amp;#8217;ll keep it interesting by adding multiple animations to a single layer. I have created four different keyframe animations that we will add to an animation group. The keypaths are &amp;#8220;backgroundColor&amp;#8221;, &amp;#8220;borderWidth&amp;#8221;, &amp;#8220;position&amp;#8221;, and &amp;#8220;bounds&amp;#8221;. Check the sample code to see how these animations are constructed. &lt;/p&gt;
&lt;p&gt;We set the duration for all of the animations to five seconds. We also need to make sure that we set the duration for the group itself, otherwise it will override the five second duration we set for the animations themselves and run in the default 0.25 seconds. The code below shows how the animations are added to the layer.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc" style="font-family:monospace;"&gt;&lt;span style="color: #002200;"&gt;-&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;void&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;loadAnimations;
&lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
  CAAnimationGroup &lt;span style="color: #002200;"&gt;*&lt;/span&gt;group &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;CAAnimationGroup animation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;group setAnimations&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSArray&lt;/span&gt; arrayWithObjects&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self backgroundColorAnimation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;,
                          &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self borderWidthAnimation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;,
                          &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self positionAnimation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;,
                          &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self boundsAnimation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #a61390;"&gt;nil&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;group setValue&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;mainGroup&amp;quot;&lt;/span&gt; forKey&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;group setDuration&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #2400d9;"&gt;5.0&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;group setAutoreverses&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;YES&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;group setDelegate&lt;span style="color: #002200;"&gt;:&lt;/span&gt;self&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;layer addAnimation&lt;span style="color: #002200;"&gt;:&lt;/span&gt;group forKey&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;group&amp;quot;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;  
&lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice that we have used KVC here to set a name for the animation group. We will use this as a tag later to make sure the animation that triggers our &lt;em&gt;-animationDidStop:finished&lt;/em&gt; animation delegate is the correct one. More on that later. &lt;/p&gt;
&lt;h2&gt;Get Our Movie Ready&lt;/h2&gt;
&lt;p&gt;Prior to loading the animations, we prompt the user to select a file to write the movie file to. After loading the animations, we start our timer.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc" style="font-family:monospace;"&gt;&lt;span style="color: #002200;"&gt;-&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;IBAction&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;saveAnimation&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;id&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;sender;
&lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #400080;"&gt;NSSavePanel&lt;/span&gt; &lt;span style="color: #002200;"&gt;*&lt;/span&gt;savePanel;
&amp;nbsp;
  savePanel &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSSavePanel&lt;/span&gt; savePanel&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;savePanel setExtensionHidden&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;YES&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;savePanel setCanSelectHiddenExtension&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;NO&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;savePanel setTreatsFilePackagesAsDirectories&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;NO&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #a61390;"&gt;if&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;savePanel runModal&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #002200;"&gt;==&lt;/span&gt; NSOKButton &lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;
  &lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
    movie &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;QTMovie alloc&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; initToWritableFile&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;savePanel filename&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; error&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;nil&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;    
  &lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self loadAnimations&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  timer &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSTimer&lt;/span&gt; scheduledTimerWithTimeInterval&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #2400d9;"&gt;1.0&lt;/span&gt;&lt;span style="color: #002200;"&gt;/&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;NSTimeInterval&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #2400d9;"&gt;10.0&lt;/span&gt;
                                           target&lt;span style="color: #002200;"&gt;:&lt;/span&gt;self
                                         selector&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;@selector&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;updateTime&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;
                                         userInfo&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;NULL&lt;/span&gt;
                                          repeats&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;YES&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;    
&amp;nbsp;
&lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Our &lt;em&gt;-updateTime&lt;/em&gt; selector will get called every 1/10th of a second and will grab the current frame to save it to the QTMoive object. Here is the &lt;em&gt;-updateTime&lt;/em&gt; code.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc" style="font-family:monospace;"&gt;&lt;span style="color: #002200;"&gt;-&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;void&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;updateTime&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSTimer&lt;/span&gt;&lt;span style="color: #002200;"&gt;*&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;theTimer;
&lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #400080;"&gt;NSBitmapImageRep&lt;/span&gt; &lt;span style="color: #002200;"&gt;*&lt;/span&gt;image &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;self getCurrentFrame&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  QTTime &lt;span style="color: #a61390;"&gt;time&lt;/span&gt; &lt;span style="color: #002200;"&gt;=&lt;/span&gt; QTMakeTime&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #2400d9;"&gt;1&lt;/span&gt;, &lt;span style="color: #2400d9;"&gt;10&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span style="color: #400080;"&gt;NSDictionary&lt;/span&gt; &lt;span style="color: #002200;"&gt;*&lt;/span&gt;attrs &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSDictionary&lt;/span&gt; dictionaryWithObject&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;png &amp;quot;&lt;/span&gt; forKey&lt;span style="color: #002200;"&gt;:&lt;/span&gt;QTAddImageCodecType&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #400080;"&gt;NSImage&lt;/span&gt; &lt;span style="color: #002200;"&gt;*&lt;/span&gt;img &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSImage&lt;/span&gt; alloc&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; initWithData&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;image TIFFRepresentation&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;movie addImage&lt;span style="color: #002200;"&gt;:&lt;/span&gt;img forDuration&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #a61390;"&gt;time&lt;/span&gt; withAttributes&lt;span style="color: #002200;"&gt;:&lt;/span&gt;attrs&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;image release&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Obtaining the Current Frame&lt;/h2&gt;
&lt;p&gt;The code to obtain the current frame is somewhat lengthy, but the concepts are pretty simple. We need to create a graphics context that we can draw into and then draw into it using the presentationLayer of the contenView&amp;#8217;s root layer. If you&amp;#8217;re not familiar, the presentationLayer provides the current state of the animated fields while &amp;#8220;in-flight&amp;#8221;. &lt;/p&gt;
&lt;p&gt;Core Animation doesn&amp;#8217;t provide any callbacks for when a frame is ready to be displayed which is why we are using a timer. This means that we may be capturing more frames than we need to, so getting the right frame rate takes a bit of trial and error, which I have to confess I wasn&amp;#8217;t able to get nailed down completely. I&amp;#8217;m still working on it and will update here when I get that part figured out. Meanwhile, here is the code for &lt;em&gt;-getCurrentFrame&lt;/em&gt;&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc" style="font-family:monospace;"&gt;&lt;span style="color: #002200;"&gt;-&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSBitmapImageRep&lt;/span&gt;&lt;span style="color: #002200;"&gt;*&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;getCurrentFrame;
&lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
  CGContextRef    context &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #a61390;"&gt;NULL&lt;/span&gt;;
  CGColorSpaceRef colorSpace;
  &lt;span style="color: #a61390;"&gt;int&lt;/span&gt; bitmapByteCount;
  &lt;span style="color: #a61390;"&gt;int&lt;/span&gt; bitmapBytesPerRow;
&amp;nbsp;
  &lt;span style="color: #a61390;"&gt;int&lt;/span&gt; pixelsHigh &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;int&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;window contentView&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; layer&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; bounds&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;.size.height;
  &lt;span style="color: #a61390;"&gt;int&lt;/span&gt; pixelsWide &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;int&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;window contentView&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; layer&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; bounds&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;.size.width;
&amp;nbsp;
  bitmapBytesPerRow   &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;pixelsWide &lt;span style="color: #002200;"&gt;*&lt;/span&gt; &lt;span style="color: #2400d9;"&gt;4&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
  bitmapByteCount     &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;bitmapBytesPerRow &lt;span style="color: #002200;"&gt;*&lt;/span&gt; pixelsHigh&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  colorSpace &lt;span style="color: #002200;"&gt;=&lt;/span&gt; CGColorSpaceCreateWithName&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;kCGColorSpaceGenericRGB&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  context &lt;span style="color: #002200;"&gt;=&lt;/span&gt; CGBitmapContextCreate &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;NULL&lt;/span&gt;,
                                   pixelsWide,
                                   pixelsHigh,
                                   &lt;span style="color: #2400d9;"&gt;8&lt;/span&gt;,
                                   bitmapBytesPerRow,
                                   colorSpace,
                                   kCGImageAlphaPremultipliedLast&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span style="color: #a61390;"&gt;if&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;context&lt;span style="color: #002200;"&gt;==&lt;/span&gt; &lt;span style="color: #a61390;"&gt;NULL&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;
  &lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
    NSLog&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;Failed to create context.&amp;quot;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #a61390;"&gt;return&lt;/span&gt; &lt;span style="color: #a61390;"&gt;nil&lt;/span&gt;;
  &lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  CGColorSpaceRelease&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt; colorSpace &lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;window contentView&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; layer&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; presentationLayer&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; renderInContext&lt;span style="color: #002200;"&gt;:&lt;/span&gt;context&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
  CGImageRef img &lt;span style="color: #002200;"&gt;=&lt;/span&gt; CGBitmapContextCreateImage&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;context&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span style="color: #400080;"&gt;NSBitmapImageRep&lt;/span&gt; &lt;span style="color: #002200;"&gt;*&lt;/span&gt;bitmap &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #400080;"&gt;NSBitmapImageRep&lt;/span&gt; alloc&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; initWithCGImage&lt;span style="color: #002200;"&gt;:&lt;/span&gt;img&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  CFRelease&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;img&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #a61390;"&gt;return&lt;/span&gt; bitmap;
&amp;nbsp;
&lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice that we are calling &lt;em&gt;-renderInContext&lt;/em&gt; on the presentationLayer of the window&amp;#8217;s contentView&amp;#8217;s root layer. If we were only to render our animated layer, we wouldn&amp;#8217;t be able to see the animation as it will only render the containing rectangle of the animating layer.&lt;/p&gt;
&lt;h2&gt;Finishing Up&lt;/h2&gt;
&lt;p&gt;Finally we need to write the movie data out to disk. The QTMovie object provides a single call to do so, but we need a way to know when the animation has finished so we can make this call. When we created our animation group, we set its delegate to our AppDelegate which will cause the delegate method &lt;em&gt;-animationDidStop:finished&lt;/em&gt; to get called. Remember that setting the delegate for each of the individual animations gets ignored when you are using an animation group. We implement the &lt;em&gt;-animationDidStop:finished&lt;/em&gt; delegate as shown below.&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="objc objc" style="font-family:monospace;"&gt;&lt;span style="color: #002200;"&gt;-&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;void&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;animationDidStop&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;CAAnimation &lt;span style="color: #002200;"&gt;*&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;theAnimation finished&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #a61390;"&gt;BOOL&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;flag;
&lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
  NSLog&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;Animation stopped: %@&amp;quot;&lt;/span&gt;, theAnimation&lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  &lt;span style="color: #a61390;"&gt;id&lt;/span&gt; name &lt;span style="color: #002200;"&gt;=&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;theAnimation valueForKey&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
  &lt;span style="color: #a61390;"&gt;if&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt; name &lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #a61390;"&gt;if&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#40;&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;name isEqualToString&lt;span style="color: #002200;"&gt;:&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;@&lt;/span&gt;&lt;span style="color: #bf1d1a;"&gt;&amp;quot;mainGroup&amp;quot;&lt;/span&gt;&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #002200;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #002200;"&gt;&amp;#123;&lt;/span&gt;
      &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;movie updateMovieFile&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
      &lt;span style="color: #002200;"&gt;&amp;#91;&lt;/span&gt;timer invalidate&lt;span style="color: #002200;"&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #002200;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first thing we do is check the animation tag we set when creating the animation group. This really isn&amp;#8217;t necessary in this code example since there is only one animation that is going to use it, but this code shows you how to differentiate if you were to use multiple animations or groups and wanted to know when each of them finished animating.&lt;/p&gt;
&lt;p&gt;The call to &lt;em&gt;-updateMovieFile&lt;/em&gt; writes the data to disk and we now have a QuickTime movie that will play our animation. Open the resulting file in QuickTime or just invoke QuickLook to see the result.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Maybe you can think of a use for this kind of thing. I haven&amp;#8217;t yet&amp;#8211;other than for writing a blog post of course. Shoot me your thoughts and comments in the comments section. Until next time.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.cimgf.com/wp-content/uploads/2009/02/caanimationcapture.zip'&gt;CA Animation Capture Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/CocoaIsMyGirlfriend?a=CuKvRg"&gt;&lt;img src="http://feeds.feedburner.com/~a/CocoaIsMyGirlfriend?i=CuKvRg" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 03 Feb 2009 17:38:37 GMT</pubDate><guid isPermaLink="false">http://www.cimgf.com/?p=437</guid><comments>http://www.cimgf.com/2009/02/03/record-your-core-animation-animation/#comments</comments><author>Matt Long</author><source url="http://www.cimgf.com/feed/">Cocoa Is My Girlfriend</source><ng:postId>6981473194</ng:postId><ng:feedId>2288204</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to land a plane!</title><link>http://www.instructables.com/id/How_to_land_a_plane_6/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FU5/ZOHD/FQJZO7VF/FU5ZOHDFQJZO7VF.SMALL.jpg" align="left" hspace="10"&gt;There has never been a time when both pilots are out or dead but just in case I think you should know to the land the plane and become the big hero. In this I will teach you how to land a Boeing 767. Just remember not to panic and to keep it cool.&lt;br/&gt;
&lt;br/&gt;
Take a seat&lt;br/&gt;
&lt;br/&gt;
Take the left seat in the cock pit. In...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/andrewdpham3/"&gt;andrewdpham3&lt;/a&gt;</description><pubDate>Mon, 02 Feb 2009 05:45:11 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6972257567</guid><author>andrewdpham3</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6972257567</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Domain-Specific Languages for Composable Editor Plugins</title><link>http://journal.boblycat.org/node/3283</link><description>&lt;p&gt;&lt;a href="http://www.lclnet.nl/"&gt;Lennart Kats&lt;/a&gt;, &lt;a href="http://swerl.tudelft.nl/bin/view/EelcoVisser"&gt;Eelco Visser&lt;/a&gt; and myself just got a paper accepted to &lt;a href="http://ldta.info/"&gt;LDTA'09&lt;/a&gt;. The paper is about declarative languages for describing programming editors. The main part of it is Lennart's work,&amp;nbsp; but it's running on top of the &lt;a href="http://www.spoofax.org"&gt;Spoofax&lt;/a&gt; transformation infrastructure. The idea is simple: You don't want to fight with Java, complicated APIs and complicated XML when you implement an &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt;-based editor for your DSL. Instead, you describe your language's grammar with&lt;a href="http://www.syntax-definition.org"&gt; SDF&lt;/a&gt;, provide some auxiliary information using our declarative editor languages, and &lt;a href="http://strategoxt.org/Stratego/Spoofax-IMP"&gt;Spoofax/IMP&lt;/a&gt; does the rest by generating the editor engine for you.&lt;/p&gt;
&lt;p&gt;The abstract explains it in the usual academic style:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Modern IDEs increase developer productivity by incorporating many different kinds of editor services. These can be purely syntactic, such as syntax highlighting, code folding, and an outline for navigation; or they can be based on the language semantics, such as in-line type error reporting and resolving identifier declarations. Building all these services from scratch requires both the extensive knowledge of the sometimes complicated and highly interdependent APIs and extension mechanisms of an IDE framework, and an in-depth understanding of the structure and semantics of the targeted language.&lt;/p&gt;
&lt;p&gt;This paper describes Spoofax/IMP, a meta-tooling suite that provides high-level domain-specific languages for describing editor services, relieving editor developers from much of the&amp;nbsp; framework-specific programming. Editor services are defined as composable modules of rules coupled to a modular SDF grammar. The composability provided by the SGLR parser and the declaratively defined services allows embedded languages and language extensions to be easily formulated as additional rules extending an existing language definition. The service definitions are used to generate Eclipse editor plugins.&lt;/p&gt;
&lt;p&gt;We discuss two examples: an editor plugin for WebDSL, a domain-specific language for web applications, and the embedding of WebDSL in Stratego, used for expressing the semantic rules of WebDSL.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Once I get bibtex-tools running on 64bit again, I'll link to the bib and pdf.&lt;/p&gt;
</description><pubDate>Sun, 01 Feb 2009 18:41:11 GMT</pubDate><guid isPermaLink="false">3283 at http://journal.boblycat.org</guid><comments>http://journal.boblycat.org/node/3283#comments</comments><author>karltk</author><source url="http://journal.boblycat.org/karltk/index.rdf">karltk's neck of the woods</source><ng:postId>6969843407</ng:postId><ng:feedId>712558</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How To Completely Disassemble a MAC Mouse - Clean/Repair/Mod</title><link>http://www.instructables.com/id/How_To_Completely_Disassemble_a_MAC_Mouse_Clean/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F8R/33X5/FQCTM0L0/F8R33X5FQCTM0L0.SMALL.jpg" align="left" hspace="10"&gt;Situation:&lt;br/&gt;
Your MAC mouse scroll ball is not scrolling correctly, whether it be down as in my case or up or around in general. &lt;br/&gt;
&lt;br/&gt;
Action (Multiple Choice):&lt;br/&gt;
A) Buy a new mouse.&lt;br/&gt;
B) Clean the little bugger.&lt;br/&gt;
C) Only use the track-pad (Laptop only option)&lt;br/&gt;
D) Slam the mouse around and hope to dislodge the ...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/hemlocke/"&gt;hemlocke&lt;/a&gt;</description><pubDate>Sun, 25 Jan 2009 13:06:02 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6909166181</guid><author>hemlocke</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6909166181</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Laser Beam Alarm System with Rechargeable Battery for Laser</title><link>http://www.instructables.com/id/Laser_Beam_Alarm_System_with_Rechargeable_Battery_/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FEW/PHOB/FPWWRIF9/FEWPHOBFPWWRIF9.SMALL.jpg" align="left" hspace="10"&gt;Hi Everybody... I'm Revhead, and this is my first instructable so please feel free to give me advise and point out areas in which to improve.&lt;br/&gt;
The inspiration for this project came from Kipkay who posted a similar version (PROTECT YOUR HOME WITH LASER BEAMS) After looking at the comments from his ins...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/revhead/"&gt;revhead&lt;/a&gt;</description><pubDate>Fri, 23 Jan 2009 09:29:58 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6893967637</guid><author>revhead</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6893967637</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>My Top Ten Most Useful Breadboard Tips and Tricks</title><link>http://www.instructables.com/id/My_Top_Ten_Most_Useful_Breadboard_Tips_and_Tricks/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FUE/B3J4/FQ6EFCZ5/FUEB3J4FQ6EFCZ5.SMALL.jpg" align="left" hspace="10"&gt;There's 6 inches of snow on the ground, and you're cooped up in the house. You have momentarily lost your motivation to work on your GPS-guided metal-cutting laser. There haven't been any new projects on your favorite site which have piqued your interest. What to do with yourself? &lt;br/&gt;
&lt;br/&gt;
Well, how bout p...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/klee27x/"&gt;klee27x&lt;/a&gt;</description><pubDate>Fri, 23 Jan 2009 19:24:58 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6897131313</guid><author>klee27x</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6897131313</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Is this list a correct understanding of Microsoft's current application deployment options?</title><link>http://stackoverflow.com/questions/461186/is-this-list-a-correct-understanding-of-microsofts-current-application-deploymen</link><description>&lt;p&gt;I'm trying to get my head around the many application deployment options which Microsoft currently offers. &lt;/p&gt;

&lt;p&gt;Doing a little research turned up dozens of confusing terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"WPF App"&lt;/li&gt;
&lt;li&gt;"ClickOnce App"&lt;/li&gt;
&lt;li&gt;"WPF ClickOnce App"&lt;/li&gt;
&lt;li&gt;"MSI App"&lt;/li&gt;
&lt;li&gt;"XBAP App"&lt;/li&gt;
&lt;li&gt;"XBAP App deployed with ClickOnce"&lt;/li&gt;
&lt;li&gt;"Installed ClickOnce App"&lt;/li&gt;
&lt;li&gt;"WPF Web App"&lt;/li&gt;
&lt;li&gt;"ASP.NET Web App"&lt;/li&gt;
&lt;li&gt;"ASP.NET MVC Web App"&lt;/li&gt;
&lt;li&gt;"Silverlight App"&lt;/li&gt;
&lt;li&gt;"Full WPF App"&lt;/li&gt;
&lt;li&gt;"ClickOnce with sync framework support"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I cleaned up my findings into seven separate approaches below. Would appreciate feedback:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;"WPF App deployed with MSI" (allows lots of installation options)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MSI runtime required on target computer&lt;/li&gt;
&lt;li&gt;wizard with options&lt;/li&gt;
&lt;li&gt;can specify per-user or per-machine&lt;/li&gt;
&lt;li&gt;can modify files and registry on target computer, limited only by access permission set by administrator&lt;/li&gt;
&lt;li&gt;can place shortcut on desktop&lt;/li&gt;
&lt;li&gt;replacing system files, etc. makes it easy to get into DLL hell on the target computer&lt;/li&gt;
&lt;li&gt;updating is a big negative: detecting available updates requires additional tools / custom programming, not built in&lt;/li&gt;
&lt;li&gt;user does not have to be online to use application&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"WPF App deployed with ClickOnce": (good if you want automatic update but runs in sandbox)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;requires two clicks (click hyperlink, click yes), no user input&lt;/li&gt;
&lt;li&gt;only for current user, no per-machine installations&lt;/li&gt;
&lt;li&gt;no shortcuts on desktop&lt;/li&gt;
&lt;li&gt;appears in program list like normal applications&lt;/li&gt;
&lt;li&gt;applications files are always copied to ../My Documents/My Applications&lt;/li&gt;
&lt;li&gt;a shortcut to your application will be put in Start menu / your company name&lt;/li&gt;
&lt;li&gt;cannot modify the target computer, isolated from operating system&lt;/li&gt;
&lt;li&gt;automatically detects and updates a newer version&lt;/li&gt;
&lt;li&gt;published simply by putting them on a webserver (where clients detect and get them)&lt;/li&gt;
&lt;li&gt;requires .NET 2.0 or later&lt;/li&gt;
&lt;li&gt;comparable to Java Web Start&lt;/li&gt;
&lt;li&gt;solves four problems: (1) easy deployment, (2) easy updating, (3) low-impact on target computer, (4) no need for administrator permissions.&lt;/li&gt;
&lt;li&gt;considered "low impact"&lt;/li&gt;
&lt;li&gt;if two users have the same ClickOnce applciation installed on the same machine, they will not break each other&lt;/li&gt;
&lt;li&gt;employs CAS for security&lt;/li&gt;
&lt;li&gt;user does not have to be online to use application&lt;/li&gt;
&lt;li&gt;standalone ClickOnce apps do not work on Firefox and Mac with Firefox now since it needs the .NET runtime&lt;/li&gt;
&lt;li&gt;restricted to single-window apps since they run in the browser&lt;/li&gt;
&lt;li&gt;building a ClickOnce manifest is much easier than Silverlight etc, since the IDE will do almost all of it for you; you just have to host the files somewhere (could be a web URL; could be a network UNC).&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"XBAP App": xcopy deployment of .xbap file, IE and Firefox display it instantly like a web page&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the real goal of the XBAP model is to create a WPF equivalent to the tradiational HTML-and-JavaScript website (or Flash applet)&lt;/li&gt;
&lt;li&gt;the target computer simply runs the application without installation over the web in their web browser (IE or Firefox)&lt;/li&gt;
&lt;li&gt;They're good for Intranet applications where you want really easy deployment, the complete .NET Framework (as opposed to Silverlight) and a browser's navigational model.&lt;/li&gt;
&lt;li&gt;99% WPF features (as opposed to Silverlight's subset of WPF features)&lt;/li&gt;
&lt;li&gt;CAN be automatically deployed via ClickOnce as well but XCOPY is more common&lt;/li&gt;
&lt;li&gt;YourApp.xbap is really a ClickOnce deployment manifest&lt;/li&gt;
&lt;li&gt;run in sandbox&lt;/li&gt;
&lt;li&gt;user must be online to use application&lt;/li&gt;
&lt;li&gt;these must be "page-based" applications as opposed to "windows-based" applications&lt;/li&gt;
&lt;li&gt;"An XBAP appears to run inside the brwoser simply because it displays all its content in the browser window. This is differnt from teh model used by ActiveX controls (and Silverlight), which are loaded inside the browser process."&lt;/li&gt;
&lt;li&gt;XBAPs offere a "prompt-free" experience, as long as .NET 3.5 is installed, it just shows up in the browser like a web page.s&lt;/li&gt;
&lt;li&gt;XBAPs are not allowed to use WinForm controls via Interop&lt;/li&gt;
&lt;li&gt;not allow to use windows drag and drop&lt;/li&gt;
&lt;li&gt;most advanced WCF features are NOT allowed and XBAP can't communicate with any server other than the one where the XBAP is hosted&lt;/li&gt;
&lt;li&gt;"if your application requires full trust, you should consider building a stand-alone WPF app and deploying it using ClickOnce" (&lt;a href="http://tanguay.info/web/index.php?pg=books&amp;amp;id=1" rel="nofollow"&gt;Pro WPF in C# 2008&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;trick: you can embed multiple xbap applications into multiple iframes on one HTML page.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Silverlight App": runs in client's browser and uses downloaded 4MB subset of .NET framework, i.e. no 3D)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cross browser (applications can be used by Opera and Safari as well)&lt;/li&gt;
&lt;li&gt;updating application is as easy as with ClickOnce or XBAP&lt;/li&gt;
&lt;li&gt;single window apps&lt;/li&gt;
&lt;li&gt;application is in the sandbox of course&lt;/li&gt;
&lt;li&gt;async only&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"ASP.NET MVC with JQuery/AJAX": a new development platform equal to development in WPF in terms of RAD and TDD &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this approach is worth considering along with the WPF/Silverlight approaches&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"ASP.NET App": classic web application with ViewState, etc. probably will be used less and less as ASP.NET MVC gains acceptance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"WinForm App": classic windows application, will be used less and less as WPF gains acceptance&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I would particularly appreciate feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how resuable are controls (e.g. if we develop in Silverlight, can we reuse our code/controls in XBAP?)&lt;/li&gt;
&lt;li&gt;what is the best approach to clients which are sometimes offline, sometimes online AND need access to WCF (probably clickOnce apps I would think)&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 20 Jan 2009 12:54:30 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/b549299914b40f61</guid><author>Edward Tanguay</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>6874507014</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Windows 7 kernel structures</title><link>https://www.openrce.org/blog/view/1341/Windows_7_kernel_structures</link><description>written by omeg.</description><pubDate>Mon, 19 Jan 2009 12:05:40 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/197409/6863654828</guid><author>omeg &lt;email-suppressed@example.com&gt;</author><source url="http://www.openrce.org/rss/feeds/blogs">OpenRCE: Blogs</source><ng:postId>6863654828</ng:postId><ng:feedId>197409</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>XBinary: Extended Binary Format Support for Mac OS X</title><link>http://www.osxbook.com/blog/2009/01/20/xbinary-extended-binary-format-support-for-mac-os-x/</link><description>XBinary is software that lets you add kernel-level support for executing arbitrary binary formats on Mac OS X. To read more about it and to download it, visit the XBinary page.
</description><pubDate>Wed, 21 Jan 2009 06:17:51 GMT</pubDate><guid isPermaLink="false">http://www.osxbook.com/blog/?p=377</guid><comments>http://www.osxbook.com/blog/2009/01/20/xbinary-extended-binary-format-support-for-mac-os-x/#comments</comments><author>amit</author><source url="http://www.osxbook.com/blog/feed/">Mac OS X Internals: The Blog</source><ng:postId>6878296781</ng:postId><ng:feedId>462118</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>The Ultimate Collection Of Free Vector Packs</title><link>http://www.smashingmagazine.com/2009/01/16/the-ultimate-collection-of-free-vector-packs/</link><description>
&lt;p&gt;&lt;em&gt;By Steven Snell&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Designers love freebies that make life easier and help them create higher-quality work. Free vectors are useful, free vector packs even more so. Fortunately, there are plenty of talented graphic designers who are willing to give away their work (or samples of it) to benefit the rest of us. In this post, we feature &lt;strong&gt;60 of the best and most useful free vector packs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Many of the vectors featured here would be useful for &lt;strong&gt;particular styles&lt;/strong&gt; of design and &lt;strong&gt;specific types of websites&lt;/strong&gt;. Take a few moments to browse through them, and you may find something that’s perfect for a current or upcoming project. Before you use any of the freebies, be sure to check the license designated by the creator to stay within the stated guidelines.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/freebie-abstract-blobs-bursts/"&gt;Abstract Blobs and Bursts&lt;/a&gt;&lt;br&gt;
A pack of 10 vectors for creating abstract effects.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/freebie-abstract-blobs-bursts/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/abstract.jpg" alt="Abstract Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-wavy-vector-ribbon-graphics"&gt;Wavy Vector Ribbons&lt;/a&gt;&lt;br&gt;
A pack of 7 trendy vectors of wavy lines.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-wavy-vector-ribbon-graphics"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/ribbons.jpg" alt="Wavy Ribbon Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vectors-trendy-circles"&gt;Trendy Circles&lt;/a&gt;&lt;br&gt;
Another trendy collection, this one containing six variations.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vectors-trendy-circles"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/circles.jpg" alt="Trendy Circles" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-1-circles/"&gt;Circles&lt;/a&gt;&lt;br&gt;
Different types and combinations of circles are in this pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-1-circles/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/circles2.jpg" alt="Circles" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Wierd+Bubbles+Vector+Pack"&gt;Weird Bubbles&lt;/a&gt;&lt;br&gt;
If other circles don’t meet your needs, ten vectors are included in this pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Wierd+Bubbles+Vector+Pack"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/bubbles.jpg" alt="Weird Bubbles" width="475" height="250"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-8-modern-arrows/"&gt;Modern Arrows&lt;/a&gt;&lt;br&gt;
An easy way to add a trendy style to your designs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-8-modern-arrows/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/arrows.jpg" alt="Arrow Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/670-spiral-vectors"&gt;Spiral Vectors&lt;/a&gt;&lt;br&gt;
A very useful set of different types of spirals.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/670-spiral-vectors"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/spirals.jpg" alt="Spiral Vectors" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/343-20-Vector-Lines-Swirls-and-Patterns"&gt;Vector Lines, Swirls and Patterns&lt;/a&gt;&lt;br&gt;
This vector pack includes 20 different lines and swirls.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/343-20-Vector-Lines-Swirls-and-Patterns"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/lines.jpg" alt="Lines and Swirls" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.teestrict.com/2008/11/26/vector-pack-set-1-character/"&gt;Character Vector Pack&lt;/a&gt;&lt;br&gt;
T-shirt blog Teestrict offers a pack of cartoon characters.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.teestrict.com/2008/11/26/vector-pack-set-1-character/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/characters.jpg" alt="Charcter Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/free-vector-pack-1.html"&gt;Free Vector Pack One from Designious&lt;/a&gt;&lt;br&gt;
Includes 20 vectors from some of the company’s premium vector packs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/free-vector-pack-1.html"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/designious1.jpg" alt="Free Vector Pack from Designious" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/free-vector-pack-2.html"&gt;Free Vector Pack Two from Designious&lt;/a&gt;&lt;br&gt;
Includes another 20 vectors from Designious’ premium vector packs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/free-vector-pack-2.html"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/designious2.jpg" alt="Designiou Vector Pack 2" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/vintage-mega-pack-5-vector-samples.html"&gt;Vintage Mega Pack 5 Samples&lt;/a&gt;&lt;br&gt;
A few select samples from Designious’ premium Vintage Mega Pack 5.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.designious.com/catalog/vintage-mega-pack-5-vector-samples.html"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/vintage5.jpg" alt="Vintage Mega Pack 5 Samples" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-night-lights/"&gt;Night Lights&lt;/a&gt;&lt;br&gt;
A set of four out-of-focus vectors from Go Media.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-night-lights/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/lights.jpg" alt="Night Lights" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vector-pack-safari-and-zoo-animals"&gt;Safari and Zoo Animals&lt;/a&gt;&lt;br&gt;
SpoonGraphics offers this collection of 20+ vectors of land mammals and aquatic life.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vector-pack-safari-and-zoo-animals"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/animals.jpg" alt="Animal Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-jimiyo-animals/"&gt;Animals&lt;/a&gt;&lt;br&gt;
A set of 17 vectors of various animals being distributed at GoMediaZine.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-jimiyo-animals/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/animals2.jpg" alt="Animal Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tariqelamine.deviantart.com/art/Dinosaurs-Vector-Pack-83363366"&gt;Dinosaurs Vector Pack&lt;/a&gt;&lt;br&gt;
A big set of lots of different dinosaurs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tariqelamine.deviantart.com/art/Dinosaurs-Vector-Pack-83363366"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/dino.jpg" alt="Dinosaurs" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/bb-free-vectors-birds-in-flight/"&gt;Birds in Flight&lt;/a&gt;&lt;br&gt;
A pack of 12 bird vectors from Bittbox.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/bb-free-vectors-birds-in-flight/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/birds.jpg" alt="Birds in Flight" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/silhouettes-bird-vectors/"&gt;Bird Vectors&lt;/a&gt;&lt;br&gt;
A high-quality sample pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/silhouettes-bird-vectors/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/birds2.jpg" alt="Bird Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/8-free-cute-and-simple-twitter-bird-vector-graphics"&gt;Simple and Cute Twitter Bird Vector Graphics&lt;/a&gt;&lt;br&gt;
These 8 vectors could be useful for bloggers who display Twitter updates.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/8-free-cute-and-simple-twitter-bird-vector-graphics"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/twitter.jpg" alt="Twitter Bird Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-illustrated-vector-sneaker-graphics"&gt;Illustrated Vector Sneaker Graphics&lt;/a&gt;&lt;br&gt;
A collection of 3 hand-drawn vectors from SpoonGraphics.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-illustrated-vector-sneaker-graphics"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/sneakers.jpg" alt="Sneaker Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-hand-drawn-decorative-elements/"&gt;Hand-Drawn Decorative Ornaments&lt;/a&gt;&lt;br&gt;
Bittbox provides this decorative vector pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-hand-drawn-decorative-elements/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/deco1.jpg" alt="Decorative Ornaments" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-hand-drawn-decorative-ornaments-ii/"&gt;Hand-Drawn Decorative Ornaments II&lt;/a&gt;&lt;br&gt;
A second set from Bittbox.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-hand-drawn-decorative-ornaments-ii/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/deco2.jpg" alt="Decorative Ornaments 2" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jlwdesign.com/2007/free-illustrator-symbols-swirly-curls-ornaments/"&gt;Vector Garden Symbol Set&lt;/a&gt;&lt;br&gt;
This set includes 19 high-quality swirly vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jlwdesign.com/2007/free-illustrator-symbols-swirly-curls-ornaments/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/curls.jpg" alt="Swirly Curls" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-flowers/"&gt;Flowers&lt;/a&gt;&lt;br&gt;
Bittbox also provides this pack of flower vectors&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/free-vectors-flowers/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/flowers.jpg" alt="Flower Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-7-flowers/"&gt;Flowers&lt;/a&gt;&lt;br&gt;
More vector flowers with a good deal of variety.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-7-flowers/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/flowers2.jpg" alt="Flower Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-6-foliage/"&gt;Foliage&lt;/a&gt;&lt;br&gt;
The first foliage vector set from Bittbox.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-6-foliage/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/foliage.jpg" alt="Foliage Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-12-foliage-ii/"&gt;Foliage Part 2&lt;/a&gt;&lt;br&gt;
The second foliage set from Bittbox.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/foliage2.jpg" alt="Foliage Part Two" width="475" height="350"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=63"&gt;Tree Silhouettes&lt;/a&gt;&lt;br&gt;
Several different types of trees are included in this pack from Digital Artist Toolbox.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=63"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/trees.jpg" alt="Tree Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/ecology-vector/"&gt;Ecology Vectors&lt;/a&gt;&lt;br&gt;
A big pack of nice leaves.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/ecology-vector/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/ecology.jpg" alt="Ecology Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/flowers-plants-vectors/"&gt;Flowers and Plants&lt;/a&gt;&lt;br&gt;
More than 30 different flower and plant vectors are included.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/nature/flowers-plants-vectors/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/flowers3.jpg" alt="Flowers and Plants" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-dotty-women-vector-graphics"&gt;Dotty Women Vector Graphics&lt;/a&gt;&lt;br&gt;
This pack includes 4 vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-dotty-women-vector-graphics"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/women.jpg" alt="Dotty Women" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-11-watercolors/"&gt;Watercolors&lt;/a&gt;&lt;br&gt;
A big set of watercolor vectors that provide an alternative to using brushes for similar effects.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-11-watercolors/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/watercolor.jpg" alt="Watercolor Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-fingerprints/"&gt;Fingerprints&lt;/a&gt;&lt;br&gt;
A set of 11 vectors from Go Media of fingertips, palm prints and streaks.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gomediazine.com/freebies/vector-freebie-fingerprints/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/fingers.jpg" alt="Fingerprint Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vibr8bros.com/freebies/free-vector-pack-20-poppy-color-stickers"&gt;Poppy Color Stickers&lt;/a&gt;&lt;br&gt;
Twenty vectors (in 10 different colors) of Web 2.0-style stickers.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vibr8bros.com/freebies/free-vector-pack-20-poppy-color-stickers"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/vibr8.jpg" alt="Poppy Color Stickers" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vibr8bros.com/freebies/free-vector-pack-embroidery-badges"&gt;Embroidery Badges&lt;/a&gt;&lt;br&gt;
A variety of different badges are available in this pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vibr8bros.com/freebies/free-vector-pack-embroidery-badges"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/vibr82.jpg" alt="Embroidery Badges" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jlwdesign.com/2007/33-speech-bubbles/"&gt;Speech Bubbles&lt;/a&gt;&lt;br&gt;
A set of 33 vector speech bubbles.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jlwdesign.com/2007/33-speech-bubbles/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/speech.jpg" alt="Speech Bubble Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://123freevectors.com/objects/066_objects"&gt;Office Objects&lt;/a&gt;&lt;br&gt;
A quality set of vectors from random objects around the office.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://123freevectors.com/objects/066_objects"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/office.jpg" alt="Office Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://123freevectors.com/objects/064_objects"&gt;Technology Vectors&lt;/a&gt;&lt;br&gt;
This set includes monitors, a mouse, headphones, a cell phone and more.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://123freevectors.com/objects/064_objects"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/tech.jpg" alt="Tech Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nimpscher.deviantart.com/art/Tower-Vector-Pack-71211002"&gt;Tower Vector Pack&lt;/a&gt;&lt;br&gt;
This is a pack of silhouettes of famous towers around the world.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nimpscher.deviantart.com/art/Tower-Vector-Pack-71211002"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/towers.jpg" alt="Towers" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-13-stars/"&gt;Vector Stars&lt;/a&gt;&lt;br&gt;
Several different styles of star vectors are included in this pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bittbox.com/freebies/random-free-vectors-part-13-stars/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/stars.jpg" alt="Vector Stars" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/vector-illustration/power-tool-10-pack/"&gt;Power Tool Pack&lt;/a&gt;&lt;br&gt;
A set of 10 vector power tools.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/vector-illustration/power-tool-10-pack/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/power.jpg" alt="Power Tools" width="475" height="250"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/vector-notes-set/"&gt;Vector Notes&lt;/a&gt;&lt;br&gt;
A nice collection of hand-written post-it notes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/vector-notes-set/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/notes.jpg" alt="Notes" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/wood-signs-vector-set/"&gt;Wood Signs&lt;/a&gt;&lt;br&gt;
This pack includes several different types of wood sign vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/wood-signs-vector-set/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/wood.jpg" alt="Wood Signs" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Vector+Sport+Set"&gt;Sport Set&lt;/a&gt;&lt;br&gt;
A collection of equipment and balls from different sports.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Vector+Sport+Set"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/sports.jpg" alt="Sports Pack" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/348-Winter-Sports"&gt;Winter Sports Vectors&lt;/a&gt;&lt;br&gt;
Snowboards, snowboarders and skiers are included in this pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/348-Winter-Sports"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/winter.jpg" alt="Winter Sports" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Skaters+Vector+Pack"&gt;Skaters Vector Pack&lt;/a&gt;&lt;br&gt;
A great set for grungy skater designs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Skaters+Vector+Pack"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/skater.jpg" alt="Skater Vectors" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/751-Surf-Vector-Silhouettes"&gt;Surf Vector Silhouettes&lt;/a&gt;&lt;br&gt;
A pack of various silhouettes of surfers.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/751-Surf-Vector-Silhouettes"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/surf.jpg" alt="Surf Silhouettes" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/vector-resources-part-6-live-music"&gt;Live Music&lt;/a&gt;&lt;br&gt;
A nice collection of musicians performing on stage.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/vector-resources-part-6-live-music"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/music.jpg" alt="Live Music Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/188-The-Rap-Attack-Vector-Pack"&gt;Rap Attack Vector Pack&lt;/a&gt;&lt;br&gt;
This is a big set of rap and hip-hop influenced vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.vecteezy.com/vf/188-The-Rap-Attack-Vector-Pack"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/rap.jpg" alt="Rap Attack" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://coolvectors.com/free-vector/Sexy-Girls-Vectors.html"&gt;Sexy Girls Vectors&lt;/a&gt;&lt;br&gt;
A pack of female silhouettes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://coolvectors.com/free-vector/Sexy-Girls-Vectors.html"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/girls.jpg" alt="Sexy Girls" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/vector-illustration/vector-skull-set/"&gt;Vector Skull Set&lt;/a&gt;&lt;br&gt;
A big set of 18 vector skulls.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/vector-illustration/vector-skull-set/"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/skulls.jpg" alt="Vector Skulls" width="475" height="275"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vector-resources-part-3-urban-collection"&gt;Urban Collection&lt;/a&gt;&lt;br&gt;
A large pack of various vectors for urban-influenced design.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blog.spoongraphics.co.uk/freebies/free-vector-resources-part-3-urban-collection"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/urban.jpg" alt="Urban Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=26"&gt;Transportation Silhouettes&lt;/a&gt;&lt;br&gt;
Every type of transportation, from bike to horse to car, is included in this vector pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=26"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/trans.jpg" alt="Transportation Vectors" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tariqelamine.deviantart.com/art/Aircrafts-Vector-Pack-83568926"&gt;Aircrafts Vector Pack&lt;/a&gt;&lt;br&gt;
A big pack of vector planes from different eras.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tariqelamine.deviantart.com/art/Aircrafts-Vector-Pack-83568926"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/planes.jpg" alt="Aircraft Vectors" width="475" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=11"&gt;Road Signs and Traffic Light&lt;/a&gt;&lt;br&gt;
Various signs are a part of this colorful vector pack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://digital-artist-toolbox.com/?p=11"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/signs.jpg" alt="Signs" width="475" height="350"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Grunge+Photo+Frames"&gt;Grunge Photo Frames&lt;/a&gt;&lt;br&gt;
Easily add a grunge element to your designs with these frames.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Grunge+Photo+Frames"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/frames.jpg" alt="Grunge Frames" width="475" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Vector+Grunge+Elements"&gt;Vector Grunge Elements&lt;/a&gt;&lt;br&gt;
Another pack for creating grungy designs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Vector+Grunge+Elements"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/grunge.jpg" alt="Grunge Elements" width="475" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Ink+Scribbles+And+Scatches"&gt;Ink Scribbles and Scratches&lt;/a&gt;&lt;br&gt;
This pack includes a few different scribbles to use in your own work.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/Ink+Scribbles+And+Scatches"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/ink.jpg" alt="Ink Scribbles" width="475" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/70s+Vector"&gt;’70s Vector Pack&lt;/a&gt;&lt;br&gt;
An assortment of ’70s-style vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.freevectors.net/details/70s+Vector"&gt;&lt;img src="http://88.198.60.17/images/free-vector-packs/70s.jpg" alt="70s vectors" width="475" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/vector-ornaments-graphics/"&gt;Vector Ornaments&lt;/a&gt;&lt;br&gt;
This is a big pack (over 40) of various ornamental vectors.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://qvectors.com/misc-vectors/vector-ornaments-graphics/"&gt;&lt;img src="http://78.46.108.98/images/free-vector-packs/ornaments.jpg" alt="Vector Ornaments" width="475" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Other Sources of Free Vectors&lt;/h3&gt;
&lt;p&gt;Although this post focuses on vector packs, you can find individual vector files (as well as some packs) at the following websites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.vectorstock.com/free-vectors"&gt;Vector Stock &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://qvectors.com/"&gt;Qvectors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vecteezy.com/"&gt;Vecteezy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.freevectors.net/"&gt;FreeVectors.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://coolvectors.com/"&gt;CoolVectors.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://vector4free.com/"&gt;Vector4Free.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vectorportal.com/"&gt;VectorPortal.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vectorjungle.com/"&gt;VectorJungle.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;About the Author:&lt;/h4&gt;
&lt;p&gt;Steven Snell is a Web designer and freelance blogger who can be found on his own blogs: &lt;a href="http://vandelaydesign.com/blog/"&gt;Vandelay Website Design&lt;/a&gt; and &lt;a href="http://designm.ag"&gt;DesignM.ag&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/SmashingMagazine?a=DYOXlX"&gt;&lt;img src="http://feeds.feedburner.com/~a/SmashingMagazine?i=DYOXlX" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=IhFMJ7.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=IhFMJ7.p" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=EU2b0D.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=EU2b0D.p" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=1wWRsk.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=1wWRsk.p" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=1gGRd1.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=1gGRd1.p" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=VQyR9d.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=VQyR9d.P" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=ezGAOw.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=ezGAOw.P" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SmashingMagazine?a=Efjc5q.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/SmashingMagazine?i=Efjc5q.P" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;</description><pubDate>Sat, 17 Jan 2009 03:37:24 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/4263faf62a7103d6</guid><author>Steven Snell</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>6850979386</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Personal Growth Series: The Alexander Technique</title><link>http://www.youtube.com/watch?v=bzwDRW7-vuc</link><description>Google Tech Talks
October 14, 2008

ABSTRACT

Personal Growth Series: The Alexander Technique.

Speaker: John Baron</description><pubDate>Tue, 13 Jan 2009 18:13:02 GMT</pubDate><guid isPermaLink="false">http://gdata.youtube.com/feeds/api/videos/bzwDRW7-vuc</guid><author>googletechtalks</author><source url="http://gdata.youtube.com/feeds/api/users/googletechtalks/uploads?orderby=updated">Uploads by googletechtalks</source><ng:postId>6825028424</ng:postId><ng:feedId>2674753</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Differential Synchronization</title><link>http://www.youtube.com/watch?v=S2Hp_1jqpY8</link><description>Google Tech Talks
January 8, 2009

ABSTRACT

Keeping two or more copies of the same document synchronized with each other in real-time is a complex challenge. This talk describes an algorithm which is robust, convergent, and efficient. Differential synchronization is the algorithm powering MobWrite.


Speaker: Neil Fraser
Neil is the developer of MobWrite, a real-time collaborative web-based editor.</description><pubDate>Sat, 10 Jan 2009 18:07:09 GMT</pubDate><guid isPermaLink="false">http://gdata.youtube.com/feeds/api/videos/S2Hp_1jqpY8</guid><author>googletechtalks</author><source url="http://gdata.youtube.com/feeds/api/users/googletechtalks/uploads?orderby=updated">Uploads by googletechtalks</source><ng:postId>6800294884</ng:postId><ng:feedId>2674753</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>The Sky is Falling!</title><link>http://feeds.feedburner.com/~r/oreilly/radar/atom/~3/507554418/the-sky-is-falling-still-worki.html</link><description>
&lt;p&gt;&lt;span class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;a href="http://radar.oreilly.com/telephonephono.jpg"&gt;&lt;img alt="telephonephono.jpg" src="http://radar.oreilly.com/telephonephono.jpg" width="650" height="375" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;It's been a busy week for the "death of newspapers" camp. We've had Michael Hirschorn's &lt;a href="http://www.theatlantic.com/doc/200901/new-york-times"&gt;Atlantic Monthly&lt;/a&gt; piece forecasting the demise of The New York Times by May, Jack Shafer weighs in at &lt;a href="http://www.slate.com/id/2207912"&gt;Slate&lt;/a&gt;, James Surowiecki in &lt;a href="http://tinyurl.com/62jv23"&gt;The New Yorker&lt;/a&gt;, &lt;a href="http://tinyurl.com/9xlmn5"&gt;Clay Shirky&lt;/a&gt; raises some very interesting points, and today Fred Wilson joins the chorus with &lt;a href="http://www.avc.com/a_vc/2009/01/my-focus-group.html"&gt;My Focus Group of One&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
A simple Google search for terms like "death of newspapers" or "end of print" will yield millions of results. Some media websites and blogs have "death watch" sections of their sites, ready to ring the bell and announce a new heavyweight champion. Yet we&amp;#8217;ve been doing this since the early 1800s--dishing condemnations of past technologies and rushing to announce the incarnation of the next big thing.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Let's travel back to a brisk morning on March 22nd, 1876. New Yorkers picked up their morning newspapers (yes, print) to discover news of a new form of communication currently being demonstrated in Boston and New York, a novel device that was destined to change the way humans interacted.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
On page 4 of The New York Times, the article begins by describing this new device, currently being called the "Telephone," and the exploring the possibilities &lt;em&gt;"The Telephone could afford humanity."&lt;/em&gt; The writer quickly jumps into a description of the device, which &lt;em&gt;"...somewhat resembles a Morse instrument...with an ear-trumpet and a curious collection of miscellaneous machinery."&lt;/em&gt; As the article continues, we are offered a variety of potential uses for this &lt;em&gt;"instrument&lt;/em&gt;," including the possibility of listening to music or hearing the &lt;em&gt;"cooing voice of a female lecturer,"&lt;/em&gt; but as we read on, the writer makes the not-so-obvious point about what people will say about this new technology: &lt;em&gt;"The universal use of the telephone will, of course, be viewed with disapprobation by the sound-producing part of the community, just as the introduction of labor-saving machines was met by the hostility of the laboring classes." &lt;/em&gt;  We are warned that &lt;em&gt;"no man will leave his own study"&lt;/em&gt; or &lt;em&gt;"will care to go to Fourteenth street and to spend the evening in a hot and crowded building. In like manner, many persons will prefer to hear lectures and sermons in the comfort and privacy of their own rooms, rather than go to the church or the lecture-room."&lt;/em&gt; As these warnings continue, we are told that &lt;em&gt;"&lt;strong&gt;...the telephone, by bringing music and ministries into every home, will empty the concert-halls and the churches&lt;/strong&gt;."&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Pretty dramatic. No?&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
A little over a year later, on November 7, 1877, on page 4 of The New York Times sits an article entitled "The Phonograph," which opens with a very familiar vision: &lt;em&gt;"The telephone was justly regarded as an ingenious invention when it was first brought before the public, but it &lt;strong&gt;is destined to be entirely eclipsed by the new invention&lt;/strong&gt; of the phonograph. The former transmitted sound. The latter bottles it up for future use....With the aid of the phonograph, sermons can be stored away in the cellar, to be brought out years hence with their tones unimpaired by age."&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The writer makes a noble attempt to explain the technology behind the this new invention, and then goes on to state the obvious, again: &lt;em&gt;"It is evident that this invention will lead to important changes in our social customs. The lecturer will no longer require his audience to meet him in a public hall, but will sell his lectures in quart bottles, at fifty cents each."&lt;/em&gt; The writer continues, with the claim that &lt;em&gt;"...there is good reason to believe that if the phonograph proves to be what its inventor claims that, both book-making and reading will fall into disuse. &lt;strong&gt;Why should we print a speech when it can be bottled&lt;/strong&gt;, and why would [the next generation] learn to read when some skillful elocutionist merely repeats a novel aloud in the presence of a phonograph. Instead of libraries filled with combustible books, we shall have vast storehouses of bottled authors."&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Accusations of people "never leaving their house again" or books and the written word "ceasing to exist" didn't start with the telephone or the phonograph. These assumptions come with each new invention or technology. Printing presses, telephones, telegraphs, phonographs, radios, moving images--are all born into a world where their antiquated predecessors are soon-to-be deceased forms of information delivery. They are the new, and the old will have no place in this novel world. That is, until the next thing comes along.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The way we tell stories and consume content inevitably changes with the birth of these new technologies. The voice of the predecessor doesn't instantly die when a new form of communication arrives, it begins to morph and adapt to the changing climate, or as the current pundits aptly predict, it won't survive. But take a 10,000 foot view--we're just in the infancy of this wonderful melded form of journalism and media, where each form of broadcast borrows from the other as a method of storytelling. We're not going to wake up tomorrow to find out that newspapers no longer exist. Yes, in the long run, a large contingent won't survive, and the ones that do will tell stories very differently than they do today, carving out a new, ever-changing narrative. But this evolutionary process is going to take time. History tells us so.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/oreilly/radar/atom?a=VyBbcv.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/oreilly/radar/atom?i=VyBbcv.p" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/oreilly/radar/atom?a=lEQ3ik.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/oreilly/radar/atom?i=lEQ3ik.P" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/oreilly/radar/atom?a=JiRKYz.p"&gt;&lt;img src="http://feeds.feedburner.com/~f/oreilly/radar/atom?i=JiRKYz.p" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/oreilly/radar/atom?a=XuZ8LV.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/oreilly/radar/atom?i=XuZ8LV.P" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/oreilly/radar/atom/~4/507554418" height="1" width="1"/&gt;</description><pubDate>Fri, 09 Jan 2009 22:00:46 GMT</pubDate><guid isPermaLink="false">tag:radar.oreilly.com,2009://57.34915</guid><author>Nick Bilton</author><source url="http://feeds.feedburner.com/oreilly/radar/atom">O'Reilly Radar - Insight, analysis, and research about emerging technologies.</source><ng:postId>6792641352</ng:postId><ng:feedId>139887</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How To SMS Over Google Talk</title><link>http://adiumx.com/blog/2009/01/how-to-sms-over-google-talk/</link><description>&lt;p&gt;The question has come up a few times, so it might be helpful to explain. From your Google Talk account, send a message to &lt;code&gt;+1XXXYYYZZZZ@sms.talk.google.com&lt;/code&gt; (US-only at the moment), or add it to your contact list. Voila!&lt;/p&gt;
&lt;p&gt;This was pointed out in &lt;a href="http://trac.adiumx.com/ticket/11488"&gt;ticket #11488&lt;/a&gt; in our &lt;a href="http://trac.adiumx.com"&gt;Trac system&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Fri, 09 Jan 2009 17:45:43 GMT</pubDate><guid isPermaLink="false">http://adiumx.com/blog/?p=560</guid><comments>http://adiumx.com/blog/2009/01/how-to-sms-over-google-talk/#comments</comments><author>Zac West</author><source url="http://adium.im/blog/feed/">Adium Blog</source><ng:postId>6791012775</ng:postId><ng:feedId>160241</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Windows 7</title><link>http://xkcd.com/528/</link><description>&lt;img src="http://imgs.xkcd.com/comics/windows_7.png" title="Diclaimer: I have not actually tried the beta yet.  I hear it's quite pleasant and hardly Hitler-y at all." alt="Diclaimer: I have not actually tried the beta yet.  I hear it's quite pleasant and hardly Hitler-y at all." /&gt;</description><pubDate>Fri, 09 Jan 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">http://xkcd.com/528/</guid><source url="http://xkcd.com/rss.xml">xkcd.com</source><ng:postId>6786897570</ng:postId><ng:feedId>796392</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>How to Mod your Equalizer T-Shirt with Headphone port</title><link>http://www.instructables.com/id/How_to_Mod_your_Equalizer_T_Shirt_with_Headphone_p/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FHZ/6WNZ/FPLXZ1P4/FHZ6WNZFPLXZ1P4.SMALL.gif" align="left" hspace="10"&gt;Those T-Shirts with Equalisers on them are absolutely amazing, but the microphones tend to be underpowered, and there's no way to connect your iPod to them. This mod solves both of those problems for a few dollars - it allows you to use either:&lt;br/&gt;
1. The built-in low powered mic&lt;br/&gt;
2. A lapel mic (one att...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/mikeyberman/"&gt;mikeyberman&lt;/a&gt;</description><pubDate>Thu, 08 Jan 2009 09:27:34 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6783141990</guid><author>mikeyberman</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6783141990</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>DC to DC Boost Converter</title><link>http://www.instructables.com/id/DC_to_DC_Boost_Converter_1/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F8L/1U0X/FPIOM42Z/F8L1U0XFPIOM42Z.SMALL.jpg" align="left" hspace="10"&gt;Learn how to build an efficient boost converter to provide high voltage from a lower voltage (&amp;gt;5V) for several applications, most prominently to charge capacitors. The boost converter described here utilizes the Astable operation of the NE555 ( a timer Integrated Circuit), an IGBT, a Diode, and a...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/rwilsford07/"&gt;rwilsford07&lt;/a&gt;</description><pubDate>Fri, 09 Jan 2009 02:09:08 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6782776623</guid><author>rwilsford07</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6782776623</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Review: EFI-X</title><link>http://www.osnews.com/story/20725/Review_EFI-X</link><description>MacInTouch reviews the EFI-X kit, a pre-assembled computer equipped with the EFI-X module which allows you to boot Mac OS X on a non-Apple machine without having to resort to hacks. They conclude: "The EFI-X kit offers the ability to run Mac OS X Leopard without hacks, to run Windows without special Boot Camp drivers, and to run nearly any other personal computer operating system from Linux to Solaris to OpenVMS! It's not quite the seamless experience of Apple's Mac computers, but it comes darn close. Its quad-core 3.82-GHz Core 2 Quad, combined with a fast Nvidia 8800 GT video card and 10,000-RPM Western Digital Velociraptor hard drive, leaves even today's quad-core Mac Pro in the dust. For anyone but scientific and engineering users, the EFI-X kit offers even more real-world performance than Apple's high-end, eight-core Mac Pro costing over twice as much."</description><pubDate>Mon, 05 Jan 2009 18:34:56 GMT</pubDate><guid isPermaLink="false">http://www.osnews.com/story/20725/Review_EFI-X</guid><source url="http://www.osnews.com/files/recent.rdf">OSNews</source><ng:postId>6758673384</ng:postId><ng:feedId>4589</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>NVIDIA unveils Ion platform bundling Atom CPU with 9400 GPU</title><link>http://arstechnica.com/journals/hardware.ars/2008/12/29/nvidia-unveils-ion-platform-bundling-atom-cpu-with-9400-gpu</link><description>&lt;p&gt;NVIDIA brings graphics prowess to the netbook/nettop realm.&lt;/p&gt;&lt;p&gt;&lt;a href="http://arstechnica.com/journals/hardware.ars/2008/12/29/nvidia-unveils-ion-platform-bundling-atom-cpu-with-9400-gpu"&gt;Read More...&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 30 Dec 2008 00:00:00 GMT</pubDate><guid isPermaLink="false">http://arstechnica.com/journals/hardware.ars/2008/12/29/nvidia-unveils-ion-platform-bundling-atom-cpu-with-9400-gpu</guid><author>nobody@dev.null (shane mcglaun)</author><source url="http://feeds.arstechnica.com/arstechnica/hardware/">Ars Technica - Chipster</source><ng:postId>6716093042</ng:postId><ng:feedId>1284429</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>A Keyboard Shortcut for Archiving Mail Using Mail.app and Google Mail</title><link>http://feedproxy.google.com/~r/dmiessler/~3/sOLf2Mz6eEk/a-keyboard-shortcut-for-archiving-mail-using-mailapp-and-google-mail</link><description>&lt;p&gt;I use OS X&amp;#8217;s Mail.app to interact with my Google Domain Mail account (IMAP over SSL). Here&amp;#8217;s a cool little shortcut that sends the message I&amp;#8217;m on to the &amp;#8220;Archive&amp;#8221; directory within my Google Mail directory/tag infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;span class="command"&gt;⌥⌘T&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m becoming increasingly happy whenever I can avoid using the mouse. ::&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/z5RKW9s2r-FAdMRGlGSUW5OQ780/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/z5RKW9s2r-FAdMRGlGSUW5OQ780/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feedproxy.google.com/~r/dmiessler/~4/sOLf2Mz6eEk" height="1" width="1"/&gt;</description><pubDate>Sat, 03 Jan 2009 05:20:56 GMT</pubDate><guid isPermaLink="false">http://dmiessler.com/blog/a-keyboard-shortcut-for-archiving-mail-using-mailapp-and-google-mail</guid><comments>http://dmiessler.com/blog/a-keyboard-shortcut-for-archiving-mail-using-mailapp-and-google-mail#comments</comments><author>Daniel Miessler</author><source url="http://feeds.feedburner.com/dmiessler">danielmiessler.com</source><ng:postId>6742628942</ng:postId><ng:feedId>723124</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Hitchens, Dawkins, Harris and Dennet on Atheism</title><link>http://feedproxy.google.com/~r/dmiessler/~3/-42B-5Tvs34/hitchens-dawkins-harris-and-dennet-on-atheism</link><description>&lt;p&gt;This is an outstanding video series where all four notable authors sit down and discuss the state of the debate with the world on the topic of secularism and atheism. It&amp;#8217;s much more than a simple re-hashing of all the basic arguments; they explore quite a bit of territory&amp;#8211;much of which is both surprising and thought-provoking.&lt;/p&gt;

&lt;p&gt;Many have the opinion that the face of atheism is rudeness and arrogance. This video series is an opportunity for people to see another side of things. I highly recommend this to anyone who refuses to fully embrace atheism because they don&amp;#8217;t want to be associated with the &amp;#8220;negativity&amp;#8221; in the scene.&lt;/p&gt;

&lt;p&gt;Part 1: (an intro)&lt;/p&gt;

&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MuyUz2XLp1E&amp;#038;hl=en&amp;#038;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/MuyUz2XLp1E&amp;#038;hl=en&amp;#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Part 2: (starts with Sam Harris talking about legitimate spiritual experiences)&lt;/p&gt;

&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8PhmUyFUFyk&amp;#038;hl=en&amp;#038;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8PhmUyFUFyk&amp;#038;hl=en&amp;#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;a href="http://www.youtube.com/results?search_query=The+Four+Horsemen%3A+Dawkins%2C+Dennett%2C+Harris%2C+Hitchens&amp;amp;search_type=&amp;amp;aq=f" title="YouTube - The Four Horsemen: Dawkins, Dennett, Harris, Hitchens"&gt;here&lt;/a&gt; for the rest.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/results?search_query=The+Four+Horsemen%3A+Dawkins%2C+Dennett%2C+Harris%2C+Hitchens&amp;amp;search_type=&amp;amp;aq=f" title="YouTube - The Four Horsemen: Dawkins, Dennett, Harris, Hitchens"&gt;[ The Four Horsemen of Atheism | youtube.com ]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/QCAk8_1zdDWILxU14W7Mc_K3-sM/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/QCAk8_1zdDWILxU14W7Mc_K3-sM/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feedproxy.google.com/~r/dmiessler/~4/-42B-5Tvs34" height="1" width="1"/&gt;</description><pubDate>Sun, 04 Jan 2009 02:36:24 GMT</pubDate><guid isPermaLink="false">http://dmiessler.com/blog/hitchens-dawkins-harris-and-dennet-on-atheism</guid><comments>http://dmiessler.com/blog/hitchens-dawkins-harris-and-dennet-on-atheism#comments</comments><author>Daniel Miessler</author><source url="http://feeds.feedburner.com/dmiessler">danielmiessler.com</source><ng:postId>6747871927</ng:postId><ng:feedId>723124</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Internt overvåkingssenter i WPF</title><link>http://blog.kjempekjekt.com/2008/12/31/internt-overvakingssenter-i-wpf/</link><description>&lt;p&gt;Jeg har satt igang et sideprosjekt på jobben. &lt;strong&gt;Contiki Center&lt;/strong&gt; er et slags overvåkingssenter, en slags kiosk-applikasjoner, som skal stå et sted hvor den er synlig for alle på kontoret og vise status for ulike ting. Her kan man se status på vår nattlige build fra CruiseControl.NET, status fra continous integration serveren (TeamCity), support status, sprint burndown for alle utviklingsteam m.m.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="ContikiCenter1o.png" src="http://blog.kjempekjekt.com/wp-content/uploads/2008/12/ContikiCenter1o.png"&gt;&lt;/p&gt;
&lt;p&gt;Skjermdumpen over viser et WPF shell i full screen mode med noen dynamisk lastede moduler. Foreløpig lite matnyttig, men rammeverket er på plass.&lt;/p&gt;
&lt;p&gt;Jeg kunne gjort dette mye enklere, men har valgt å bruke dette behovet til å lære best practices rundt Windows Presentation Foundation. Så jeg baserer hele løsningen min på &lt;a href="http://www.codeplex.com/CompositeWPF"&gt;&lt;strong&gt;Prism&lt;/strong&gt;&lt;/a&gt;, som er &lt;em&gt;patterns &amp;amp; practices&lt;/em&gt;-teamets referanseapplikasjon for å bygge “composite applications” i WPF og Silverlight. Dette tilsvarer den gode, gamle CAB’en (Composite Application Block) for WinForms.&lt;/p&gt;
&lt;p&gt;Jeg har også funnet en feiende flott graf-kontroll for Silverlight og WPF som er open source, nemlig &lt;a href="http://www.visifire.com/"&gt;Visifire&lt;/a&gt;. Anbefales!&lt;/p&gt;
&lt;p&gt;Nå forbereder jeg meg på å ta et dypdukk ned i de ulike mønstrene (patterns) som anbefales for presentasjonslaget. Det er noe som kalles &lt;strong&gt;M-V-VM&lt;/strong&gt; som alle snakker om for tiden: &lt;strong&gt;Model-View-ViewModel&lt;/strong&gt;. Prism refererer ikke til dette, men snakker om Model-View-Presenter, Presentation Model og Supervising Controller. Så nå må jeg lese litt, og få alt dette til å henge sammen.
&lt;/p&gt;</description><pubDate>Wed, 31 Dec 2008 01:00:33 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/5c82efe0a0702885</guid><author>Torbjørn</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>6730486433</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>[slideshow] Balance-BOT</title><link>http://www.instructables.com/id/Balance_BOT_1/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F5A/R107/FOHU3DOF/F5AR107FOHU3DOF.SMALL.jpg" align="left" hspace="10"&gt;Make an amazing 2-wheeler balancing robot in less than 2 hours.&lt;br/&gt;
&lt;br/&gt;
I based my robot on vahid_you2004's instructable (Balancing Robot).&lt;br/&gt;
But decided to show you some pictures and video's i took of my robot...If you want to make it and need a more detailed description of how to make it check out the Bala...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/daniel2008/"&gt;daniel2008&lt;/a&gt;</description><pubDate>Tue, 16 Dec 2008 20:03:11 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6628343313</guid><author>daniel2008</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6628343313</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>[video] Jay's 2008 Computerized Christmas Light Show (Wizards in Winter)</title><link>http://www.instructables.com/id/Jays_2008_Computerized_Christmas_Light_Show_Wiza/</link><description>&lt;img src="http://www.instructables.com/files/deriv/F8G/DSQ9/FOHU3MP8/F8GDSQ9FOHU3MP8.SMALL.jpg" align="left" hspace="10"&gt;Over 30,000 lights synchronized to Christmas music. I handmade all of the arches you see as well as the 20 foot mega tree and stars on the roof. Viewers can listen to the show either from the speakers in my yard or through 99.9 FM in the cars.&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/jayslights/"&gt;jayslights&lt;/a&gt;</description><pubDate>Wed, 17 Dec 2008 14:23:20 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6632176518</guid><author>jayslights</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6632176518</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Popup Facebook Picture</title><link>http://www.instructables.com/id/Popup_Facebook_Picture/</link><description>&lt;img src="http://www.instructables.com/files/deriv/FPU/N5GZ/FOVX0R9X/FPUN5GZFOVX0R9X.SMALL.jpg" align="left" hspace="10"&gt;This how to make your Facebook Profile Picture look like it's transparent, or popping out of the page! You even do what I did, and make it look like it's behind the page.&lt;br/&gt;
&lt;br/&gt;
What you need&lt;br/&gt;
&lt;br/&gt;
Here's what you need to make your pop-up picture!&lt;br/&gt;
&lt;br/&gt;
A Camera, or a picture that you want to use.&lt;br/&gt;
Photoshop, or the...&lt;br/&gt;
&lt;br/&gt;By: &lt;a href="http://www.instructables.com/member/Super+Cameraman/"&gt;Super Cameraman&lt;/a&gt;</description><pubDate>Sat, 20 Dec 2008 05:24:55 GMT</pubDate><guid isPermaLink="false">tag:newsgator.com,2006:Feed.aspx/1372280/6653671871</guid><author>Super Cameraman</author><source url="http://www.instructables.com/tag/type:id/category:tech/rss.xml">Instructables: exploring - tech</source><ng:postId>6653671871</ng:postId><ng:feedId>1372280</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>simplejson 2.0.6</title><link>http://bob.pythonmac.org/archives/2008/12/19/simplejson-206/</link><description>
&lt;div class="document"&gt;
&lt;!-- -*- mode: rst -*- --&gt;
&lt;p&gt;&lt;a class="reference" href="http://undefined.org/python/#simplejson"&gt;simplejson&lt;/a&gt; (&lt;a class="reference" href="http://simplejson.googlecode.com/svn/tags/simplejson-2.0.6/docs/index.html"&gt;documentation&lt;/a&gt;) is a simple, fast, complete, correct and extensible &lt;a class="reference" href="http://json.org/"&gt;JSON&lt;/a&gt; (&lt;a class="reference" href="http://www.ietf.org/rfc/rfc4627.txt"&gt;RFC 4627&lt;/a&gt;) encoder/decoder for Python 2.4+.  It is pure Python code with no dependencies, but features an optional C extension for speed-ups.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://undefined.org/python/#simplejson"&gt;simplejson&lt;/a&gt; 2.0.6 is a minor bug-fix update:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Windows build fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><pubDate>Fri, 19 Dec 2008 23:13:55 GMT</pubDate><guid isPermaLink="false">http://bob.pythonmac.org/?p=256</guid><comments>http://bob.pythonmac.org/archives/2008/12/19/simplejson-206/#comments</comments><author>bob</author><source url="http://bob.pythonmac.org/feed/">from __future__ import *</source><ng:postId>6654195771</ng:postId><ng:feedId>376142</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Removing the .SVC Extension from WCF REST URLs</title><link>http://feedproxy.google.com/~r/RickStrahl/~3/HMTWLOEDAUc/570695.aspx</link><description>&lt;p&gt;I’ve been getting a lot of questions in the last few months regarding the URLs that WCF REST uses. WCF REST – new in .NET 3.5 – provides a pure Web based Binding (webHttpBinding specifically) that allows for creating REST based URLs that return non SOAP Http results in Xml, JSON, RSS, Atom or raw binary formats. One of the nice things that you can do with WCF REST endpoints is that you can specify a UriTemplate that allows you to customize the way the URL looks when accessing the endpoint.&lt;/p&gt;  &lt;p&gt;For example I might have a method endpoint defined like this:&lt;/p&gt;  &lt;pre&gt;[&lt;span style="color:#2b91af"&gt;OperationContract&lt;/span&gt;]
[&lt;span style="color:#2b91af"&gt;WebInvoke&lt;/span&gt;(
    Method = &lt;span style="color:#a31515"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;,
    ResponseFormat = &lt;span style="color:#2b91af"&gt;WebMessageFormat&lt;/span&gt;.Xml,
    BodyStyle = &lt;span style="color:#2b91af"&gt;WebMessageBodyStyle&lt;/span&gt;.Bare,
    &lt;strong&gt;UriTemplate=&lt;span style="color:#a31515"&gt;&amp;quot;Quotes/{symbol}&amp;quot;&lt;/span&gt;)  
&lt;/strong&gt;]          
&lt;span style="color:#2b91af"&gt;StockQuote &lt;/span&gt;GetStockQuote(&lt;span style="color:blue"&gt;string &lt;/span&gt;symbol);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Normally a WCF endpoint is accessed through the .SVC file plus a path that specifies the method name plus any parameters specified on the query string (or in POST data). Without the URI template to load a stock would look like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;http://localhost/wcfAjax/RestStockService.svc/GetStockQuote?symbol=MSFT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using the UriTemplate the URL becomes a little nice and more readable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;http://localhost/wcfAjax/RestStockService.svc/Quotes/MSFT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Note that once you apply a UriTemplate the method/parameter syntax no longer works – only a single endpoint URL maps to the specific endpoint.&lt;/p&gt;

&lt;p&gt;Url formatting is of course mostly semantics – the latter URL is easier to parse by a human consumer having more of the feel of a breadcrumb that leads you down the path. You can also create your own ‘rules’ for this so if you also wanted to return that same data in a different format like Json (where the original returned XML) you might want to set up a second endpoint that does this and looks like this:&lt;/p&gt;

&lt;pre&gt;[&lt;span style="color:#2b91af"&gt;OperationContract&lt;/span&gt;]
[&lt;span style="color:#2b91af"&gt;WebInvoke&lt;/span&gt;(
    Method = &lt;span style="color:#a31515"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;,
    ResponseFormat = &lt;span style="color:#2b91af"&gt;WebMessageFormat&lt;/span&gt;.Json,
    BodyStyle = &lt;span style="color:#2b91af"&gt;WebMessageBodyStyle&lt;/span&gt;.Wrapped,
    &lt;strong&gt;UriTemplate = &lt;span style="color:#a31515"&gt;&amp;quot;Quotes/{symbol}/json&amp;quot;&lt;/span&gt;)&lt;/strong&gt;
]        
&lt;span style="color:#2b91af"&gt;StockQuote &lt;/span&gt;GetStockQuoteJson(&lt;span style="color:blue"&gt;string &lt;/span&gt;Symbol);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;and can be called like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;http://localhost/wcfAjax/RestStockService.svc/Quotes/MSFT/json&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WCF REST allows for some welcome URL flexibility which is a nice feature when dealing with REST based endpoints.&lt;/p&gt;

&lt;p&gt;One important limitation with UriTemplate to keep in mind that parameter mapping ( inside of {} ) only works with string parameters, so even simple type mapping like int, bool, or dates don’t work with them.&lt;/p&gt;

&lt;h3&gt;Getting rid of the pesky .SVC Extension&lt;/h3&gt;

&lt;p&gt;One of the first questions I usually get when I talk about the WCF REST features usually is: How do I get rid of the .SVC extension in those URLs? Back to semantics, eh? If you look at the URLs above you notice that each of the URLs references the .SVC file including its .SVC extension. The UriTemplate defined on the WCF endpoint method specifies the a path that follows the .svc file, so whatever template you set up it is appended to the main service URL which ends in the .Svc file.&lt;/p&gt;

&lt;p&gt;Here are two approaches you can use to remove the .svc extension and both of them work through Url Redirection at the server level.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In IIS 7 You can use the &lt;a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/"&gt;IIS 7 Url Rewrite Module&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;In prior versions you use IIS Wildcard Mapping and an HttpModule &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;strong&gt;IIS 7 Rewrite Module&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;A couple of months ago Microsoft released the IIS 7 Rewrite module which allows you to easily and declaratively define Url Rewrite rules in your Web.config file. The module provides RegEx based replace syntax and is ideal for fixing up .SVC urls. What’s nice is that it also includes a nice UI for the IIS 7 Management console so that you can visually see all rewrite rules installed and even experiment and test them out.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.west-wind.com/Weblog/images/200801/WindowsLiveWriter/Removingthe.SVCExtensionfromWCFRESTURLs_9DE5/IisRewrite_2.png"&gt;&lt;img style="display:inline" title="IisRewrite" border="0" alt="IisRewrite" src="http://www.west-wind.com/Weblog/images/200801/WindowsLiveWriter/Removingthe.SVCExtensionfromWCFRESTURLs_9DE5/IisRewrite_thumb.png" width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get a URL like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;http://localhost/wcfAjax/Rest/RestStockService/Quotes/MSFT/json&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use the following rule definition:&lt;/p&gt;

&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml &lt;/span&gt;&lt;span style="color:red"&gt;version&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;encoding&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;UTF-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;?&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;configuration&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;rewrite&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;rules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;rule &lt;/span&gt;&lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;RestStockService&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;stopProcessing&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;&amp;gt;
&lt;strong&gt;              &amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#a31515"&gt;match &lt;/span&gt;&lt;span style="color:red"&gt;url&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;^rest/reststockservice/(.*)$&lt;/span&gt;&amp;quot;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:blue"&gt;/&amp;gt;
              &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;action &lt;/span&gt;&lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;Rewrite&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;url&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;rest/reststockservice.svc/{R:1}&lt;/span&gt;&amp;quot; &lt;/strong&gt;&lt;span style="color:blue"&gt;&lt;strong&gt;/&amp;gt;
&lt;/strong&gt;            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;rule&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;rules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;rewrite&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;  
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;configuration&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You use RegEx expressions to match the service Url without the .svc extension. The RegEx expression is based on virtual directory as its base path – it’s important that you consider any subdirectory paths in the URL. As you can see my service lives in a Rest folder underneath the virtual directory root and that’s reflected in the match expression for the URL searched for. Note the RegEx group after the service name – an explicit group is used to capture the entire extra path of the URL so it can be used in the rewrite operation. You can reference any of the group matches as {R:1} for the first group match ( {R:0} is the entire match).&lt;/p&gt;

&lt;p&gt;This is a pretty painless way to do URL routing that’s easy to modify declaratively and store in a configuration file.&lt;/p&gt;

&lt;p&gt;You can download the IIS RewriteModule here:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1691" href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1691"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1691&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d highly recommend this module even if you’re not using it for WCF REST Urls. It’s been really useful to me in setting many URL rewriting tasks that I previously used custom modules for. &lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Custom Http Module&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The IIS Rewrite module only work in IIS 7 only unfortunately so if you’re running IIS 6/5 or you need more sophisticated URL routing than RegEx expressions can provide you can create a custom module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IIS 5/6 requires Wildcard Mapping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re not running IIS 7 in order for this to work you need to &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/04/tip-trick-integrating-asp-net-security-with-classic-asp-and-non-asp-net-urls.aspx"&gt;enable Wildcard Script Mapping and map the wild card map to ASP.NET&lt;/a&gt;. Wildcard script mapping sets up all URLs to be routed through the ASP.NET pipeline so every resource – static or otherwise - is fired through ASP.NET so you can run HttpModules against them. This allows even extensionless Urls to (like &lt;strong&gt;http://localhost/wcfAjax/Rest/RestStockService/Quotes/MSFT/json&lt;/strong&gt; ) fire through your ASP code and hit your modules. &lt;/p&gt;

&lt;p&gt;Once you have requests firing into the ASP.NET pipeline you can then set up an HttpModule that reroutes requests. The following is a somewhat generic .svc rerouting mechanism where you can just specify a part fragment that is treated as a service.&lt;/p&gt;

&lt;pre&gt;&lt;span style="color:gray"&gt;/// &amp;lt;summary&amp;gt;
/// &lt;/span&gt;&lt;span style="color:green"&gt;Redirect module that allows specifying a set of .svc urls
&lt;/span&gt;&lt;span style="color:gray"&gt;/// &lt;/span&gt;&lt;span style="color:green"&gt;by stripping the svc extension off and accessing without it.
&lt;/span&gt;&lt;span style="color:gray"&gt;/// 
/// &lt;/span&gt;&lt;span style="color:green"&gt;To use add any non-svc path segments (ie. service.svc should be service)
&lt;/span&gt;&lt;span style="color:gray"&gt;/// &lt;/span&gt;&lt;span style="color:green"&gt;to the ServiceMap below.
&lt;/span&gt;&lt;span style="color:gray"&gt;/// 
/// &lt;/span&gt;&lt;span style="color:green"&gt;Note that any path that uses one of these service map entries needs to 
&lt;/span&gt;&lt;span style="color:gray"&gt;/// &lt;/span&gt;&lt;span style="color:green"&gt;end with a trailing backslash.
&lt;/span&gt;&lt;span style="color:gray"&gt;/// &amp;lt;/summary&amp;gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;public class  &lt;/span&gt;&lt;span style="color:#2b91af"&gt;ServiceRedirector &lt;/span&gt;: &lt;span style="color:#2b91af"&gt;IHttpModule
&lt;/span&gt;{

    &lt;span style="color:blue"&gt;static &lt;/span&gt;&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&amp;gt; ServiceMap = &lt;span style="color:blue"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&amp;gt; 
        {
              &lt;span style="color:#a31515"&gt;&amp;quot;reststockservice&amp;quot;&lt;/span&gt;, 
              &lt;span style="color:#a31515"&gt;&amp;quot;ajaxservice&amp;quot;&lt;/span&gt;,  
              &lt;span style="color:#a31515"&gt;&amp;quot;jsonstockservice&amp;quot;
        &lt;/span&gt;};        

    &lt;span style="color:blue"&gt;public void &lt;/span&gt;Dispose()
    { 
    
    }

    &lt;span style="color:blue"&gt;public void &lt;/span&gt;Init(&lt;span style="color:#2b91af"&gt;HttpApplication &lt;/span&gt;app)
    {       
        app.BeginRequest += &lt;span style="color:blue"&gt;delegate
        &lt;/span&gt;{
            &lt;span style="color:#2b91af"&gt;HttpContext &lt;/span&gt;ctx = &lt;span style="color:#2b91af"&gt;HttpContext&lt;/span&gt;.Current;
            &lt;span style="color:blue"&gt;string &lt;/span&gt;path = ctx.Request.AppRelativeCurrentExecutionFilePath.ToLower();

            &lt;span style="color:blue"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue"&gt;string &lt;/span&gt;mapPath &lt;span style="color:blue"&gt;in &lt;/span&gt;ServiceMap)
            {
                &lt;span style="color:blue"&gt;if &lt;/span&gt;(path.Contains(&lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+ mapPath + &lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;) || path.EndsWith( &lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+ mapPath) )
                {
                    &lt;span style="color:blue"&gt;string &lt;/span&gt;newPath = path.Replace(&lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+ mapPath + &lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;/&amp;quot; &lt;/span&gt;+ mapPath + &lt;span style="color:#a31515"&gt;&amp;quot;.svc/&amp;quot;&lt;/span&gt;);
                    ctx.RewritePath(newPath, &lt;span style="color:blue"&gt;null&lt;/span&gt;, ctx.Request.QueryString.ToString(), &lt;span style="color:blue"&gt;false&lt;/span&gt;);
                    &lt;span style="color:blue"&gt;return&lt;/span&gt;;
                }
            }
        };
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The idea is that you provide a list of Urls (statically in this case but you could easily modify this to load the list dynamically either from config settings or some external source) that are to be routed as simple strings. In short the names of the URL that you want routed without the SVC extension. This code still assumes you want to route to the same name as the SVC file (ie. /reststockservice/ becomes /reststockservice.svc/).&lt;/p&gt;

&lt;p&gt;Other than that the code just runs through list and and tries to match it to the current URL. If found it replace the match by adding the .svc extension to it and off it goes.&lt;/p&gt;

&lt;p&gt;To hook up the module you’ll need to add it to your web.config:&lt;/p&gt;

&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515"&gt;xml &lt;/span&gt;&lt;span style="color:red"&gt;version&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;encoding&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;UTF-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;configuration&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.web&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;httpModules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add &lt;/span&gt;&lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;ServiceRedirector&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;WcfAjax.ServiceRedirector&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;httpModules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.web&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="color:blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;validation &lt;/span&gt;&lt;span style="color:red"&gt;validateIntegratedModeConfiguration&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;false&lt;/span&gt;&amp;quot; &lt;span style="color:blue"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;modules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
    &lt;/span&gt;&lt;span style="color:blue"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add &lt;/span&gt;&lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;ServiceRedirector&lt;/span&gt;&amp;quot; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;WcfAjax.ServiceRedirector&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;modules&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;
    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;configuration&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The &amp;lt;system.web&amp;gt; section is for IIS 5/6, &amp;lt;system.webServer&amp;gt; for IIS 7. The module’s code is a pretty simplistic approach that uses simple string replacement to expand non-.SVC Urls to .SVC urls, but it should give you enough of an idea on how to create something more flexible should you need it. This approach works both in IIS 5/6 with the wildcard script mapping or in IIS 7 where no mapping is required as all requests already fire through the ASP.NET pipeline.&lt;/p&gt;

&lt;p&gt;While it’d by nice if WCF had a  native mechanism for removing the .SVC extension from URLs, you can see that’s it’s pretty straightforward to do so either with the IIS 7 Rewrite Module or by creating a small custom module.&lt;/p&gt;

&lt;h3&gt;Does it really matter?&lt;/h3&gt;

&lt;p&gt;I’m not sure if changing a Url by removing an extension is really providing any benefits, perceived or otherwise. To me this is semantics. Sure a Url without the .svc looks nicer, but who cares? For the most part COMPUTERS not people access those Urls and computers have no sense of esthetics &amp;lt;s&amp;gt; at least last time I checked. And if it’s an API, it’s still only a developer who looks at it once and surely a developer can determine the difference between a URL with or without an extension buried in the extra path. &lt;/p&gt;

&lt;p&gt;However, as I mentioned at the outset of this post – a lot of people actually seem to care quite vehemently about the Url format, because it’s easily one of the most frequent requests I have heard since I started writing/speaking about WCF. Hence this post.&lt;/p&gt;

&lt;p&gt;So, what’s it to you? Does the URL matter and if so why?&lt;/p&gt;&lt;div&gt;Posted in &lt;b&gt;&lt;a href="http://www.west-wind.com/Weblog/ShowPosts.aspx?Category=ASP.NET"&gt;ASP.NET&lt;/a&gt;  &lt;a href="http://www.west-wind.com/Weblog/ShowPosts.aspx?Category=AJAX"&gt;AJAX&lt;/a&gt;  &lt;a href="http://www.west-wind.com/Weblog/ShowPosts.aspx?Category=WCF"&gt;WCF&lt;/a&gt;  &lt;/b&gt;&lt;/div&gt;
&lt;div style="margin-top:5px"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f570695.aspx&amp;amp;title=Removing+the+.SVC+Extension+from+WCF+REST+URLs"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f570695.aspx" border="0" alt="kick it on DotNetKicks.com"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.west-wind.com/Weblog/wwBanner.ashx?a=c&amp;amp;id=e47b9595&amp;amp;t=633651580245810000"&gt;&lt;img src="http://www.west-wind.com/banners/wwstore_small.gif" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/biaRSeaz4fpj-Rbng-sCTAy67x0/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/biaRSeaz4fpj-Rbng-sCTAy67x0/i" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;
&lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=wbZylAC1"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?d=41" border="0"&gt;&lt;/a&gt; &lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=nzDb98MI"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?i=nzDb98MI" border="0"&gt;&lt;/a&gt; &lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=kbEcUJex"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?d=43" border="0"&gt;&lt;/a&gt; &lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=EauggkK1"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?i=EauggkK1" border="0"&gt;&lt;/a&gt; &lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=nNrIYDO1"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?d=52" border="0"&gt;&lt;/a&gt; &lt;a href="http://feedproxy.google.com/~f/RickStrahl?a=dVjfVQx1"&gt;&lt;img src="http://feedproxy.google.com/~f/RickStrahl?i=dVjfVQx1" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feedproxy.google.com/~r/RickStrahl/~4/HMTWLOEDAUc" height="1" width="1"&gt;</description><pubDate>Tue, 16 Dec 2008 00:27:02 GMT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/fc45d13ef1047ffb</guid><author>Rick Strahl</author><source url="http://www.google.com/reader/public/atom/user/06616001652454822035/state/com.google/broadcast">Jonas Folles&amp;#248;'s shared items in Google Reader</source><ng:postId>6623021554</ng:postId><ng:feedId>1646107</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>Xcode, IPhone, Cocoa Touch 101</title><link>http://grande.cc/?p=41</link><description>&lt;p&gt;Well, you got yourself a Macintosh, an iPhone and  you&amp;#8217;ve registered yourself as an Apple developer,  what to do now ?&lt;/p&gt;
&lt;p&gt;The biggest hurdle for me when starting developing for the iPhone was the Interface Builder, i could not connect my interfaces to my controllers, so I thought I could give you a brief introduction on how to set it up.&lt;/p&gt;
&lt;p&gt;Lets make a simple calculator, start with firing up XCode, and create a new project, select iPhone application and select the View Based Application, click choose and give it some name;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Create Project" src="http://grande.cc/images//CreateProject-20081214-120547.png" alt="" width="599" height="443" /&gt;&lt;/p&gt;
&lt;p&gt;Then you will be presented with the default XCode view, you can see that XCode has created some files for us to get started, there are mainly three files we need to mention, you have the &lt;strong&gt;ViewController.h&lt;/strong&gt; and &lt;strong&gt;ViewController.m&lt;/strong&gt; files which are the, you guessed it, viewcontroller, the .h file is the headerfile and the .m file is the  implementation. The next file we will take a look at is the &lt;strong&gt;ViewController.xib&lt;/strong&gt; file which is the interface we shall use for our calculator, double click it and it will open in Interface Builder, it will look something like this;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Interface Builder" src="http://grande.cc/images//IB-20081214-121116.png" alt="" width="637" height="423" /&gt;&lt;/p&gt;
&lt;p&gt;Open up the &lt;strong&gt;Inputs &amp;amp; Values&lt;/strong&gt; folder in the library window and drag the &lt;strong&gt;Round Rect Button&lt;/strong&gt; and drag it onto the &lt;strong&gt;View&lt;/strong&gt;, you&amp;#8217;ve created a button! You can use the inspector to give it a text and change its parameters, drag some more buttons  and a &lt;strong&gt;Label&lt;/strong&gt; over to create a simple calculator UI, mine looked like this;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Calculator" src="http://grande.cc/images//View-20081214-121832.png" alt="" width="320" height="502" /&gt;&lt;/p&gt;
&lt;p&gt;Save the file and return to XCode, and double click the &lt;strong&gt;[YourProjectName]ViewController.h&lt;/strong&gt; file, it should contain something like this;&lt;/p&gt;
&lt;pre&gt;#import 

@interface BlogProsjektViewController : UIViewController {

}

@end&lt;/pre&gt;
&lt;p&gt;Start with adding some actions, an action is defined on this form;&lt;/p&gt;
&lt;pre&gt;- (IBAction) btnOne:(id) sender;&lt;/pre&gt;
&lt;p&gt;Add one for each button, your headerfile should contain this now;&lt;/p&gt;
&lt;pre&gt;#import 

@interface BlogProsjektViewController : UIViewController {

}
- (IBAction) btnOne:(id) sender;
- (IBAction) btnTwo:(id) sender;
- (IBAction) btnThree:(id) sender;
- (IBAction) btnFour:(id) sender;
- (IBAction) btnFive:(id) sender;
- (IBAction) btnSix:(id) sender;
- (IBAction) btnSeven:(id) sender;
- (IBAction) btnEight:(id) sender;
- (IBAction) btnNine:(id) sender;
- (IBAction) btnDiv:(id) sender;
- (IBAction) btnMul:(id) sender;
- (IBAction) btnAdd:(id) sender;
- (IBAction) btnSub:(id) sender;
- (IBAction) btnClear:(id) sender;
@end&lt;/pre&gt;
&lt;p&gt;Hit &lt;strong&gt;Command+b&lt;/strong&gt; to build it, you will get some warnings, but do not worry about those, then you can hit &lt;strong&gt;Build and Go&lt;/strong&gt;(Command+Enter) to see the app in the simulator;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Simulator" src="http://grande.cc/images//iPhone_Simulator-20081214-122825.png" alt="" width="318" height="604" /&gt;&lt;/p&gt;
&lt;p&gt;But our buttons does not do anything when we press them, lets do something about it!&lt;br /&gt;
Go back to the interface builder again  and press &lt;strong&gt;Command+2&lt;/strong&gt; to bring up the connections inspector, and select a button, then drag from the &lt;strong&gt;Touch Up Insid&lt;/strong&gt;&lt;strong&gt;e&lt;/strong&gt; event to the &lt;strong&gt;File&amp;#8217;s Owner&lt;/strong&gt; object in the &lt;strong&gt;Document&lt;/strong&gt; window and select the appropriate action;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Interface Builder" src="http://grande.cc/images//Interface_Builder-20081214-123914.png" alt="" width="388" height="414" /&gt;&lt;/p&gt;
&lt;p&gt;Do this for all the buttons, click save and return to XCode, now when we press a button, the respective functions in the ViewController will be run, but we need a connection for our display, now in the header file, add some &lt;strong&gt;IBOutlets&lt;/strong&gt; for your display;&lt;br /&gt;
It should look like this;&lt;/p&gt;
&lt;pre&gt;#import 

@interface BlogProsjektViewController : UIViewController {
IBOutlet UILabel *mydisplay;
}
@property(nonatomic,retain) IBOutlet UILabel *mydisplay;
- (IBAction) btnOne:(id) sender;
- (IBAction) btnTwo:(id) sender;
- (IBAction) btnThree:(id) sender;
- (IBAction) btnFour:(id) sender;
- (IBAction) btnFive:(id) sender;
- (IBAction) btnSix:(id) sender;
- (IBAction) btnSeven:(id) sender;
- (IBAction) btnEight:(id) sender;
- (IBAction) btnNine:(id) sender;
- (IBAction) btnDiv:(id) sender;
- (IBAction) btnMul:(id) sender;
- (IBAction) btnAdd:(id) sender;
- (IBAction) btnSub:(id) sender;
- (IBAction) btnClear:(id) sender;
@end&lt;/pre&gt;
&lt;p&gt;Now save the file and switch back to interface builder, and select the label, press &lt;strong&gt;Command+2&lt;/strong&gt; and drag from the &lt;strong&gt;New Referencing Outle&lt;/strong&gt;t to the &lt;strong&gt;File&amp;#8217;s Owner&lt;/strong&gt; object and select mydisplay in the popup and hit save.&lt;br /&gt;
&lt;img class="alignnone" title="Interface Builder" src="http://grande.cc/images//Interface_Builder-20081214-125559.png" alt="" width="390" height="413" /&gt;&lt;/p&gt;
&lt;p&gt;Now hit save, and switch back to XCode, we&amp;#8217;re pretty much done with interface builder now, so you could infact close it, but if you want to tweak your UI you could just leave it open.&lt;br /&gt;
Now open your &lt;strong&gt;[YourProjectName]ViewController.m&lt;/strong&gt;, and for each action in the header file you want to make a function similar to this;&lt;/p&gt;
&lt;pre&gt;- (IBAction) btnOne:(id) sender{
}&lt;/pre&gt;
&lt;p&gt;Hit save and build it, it should compile just fine. Now, in the top of the file, right under the&lt;/p&gt;
&lt;pre&gt;@implementation&lt;/pre&gt;
&lt;p&gt;statement, add;&lt;/p&gt;
&lt;pre&gt;@synthesize mydisplay;&lt;/pre&gt;
&lt;p&gt;and build, now it should compile without any warnings.&lt;br /&gt;
What this does is take the property defined in the header file into the scope of the implementation file.&lt;/p&gt;
&lt;p&gt;Go to the &lt;strong&gt;btnOne&lt;/strong&gt; function and add this to it;&lt;/p&gt;
&lt;pre&gt;- (IBAction) btnOne:(id) sender{
	NSString *testtext = @"Button one pressed";
	mydisplay.text = testtext;
}&lt;/pre&gt;
&lt;p&gt;Now when we press button one the text in the display should change, hit &lt;strong&gt;Command+Enter&lt;/strong&gt; and check it out;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="Simulator" src="http://grande.cc/images//iPhone_Simulator-20081214-131010.png" alt="" width="321" height="604" /&gt;&lt;/p&gt;
&lt;p&gt;Now, lets implement the logic, i have to state that this implementation will be very simple, it accepts two numbers with a operation between it, so lets define a variable for the two numbers,&lt;/p&gt;
&lt;pre&gt;float one;&lt;/pre&gt;
&lt;p&gt;,&lt;/p&gt;
&lt;pre&gt;float two;&lt;/pre&gt;
&lt;p&gt;and a integer for the operation&lt;/p&gt;
&lt;pre&gt;int operation;&lt;/pre&gt;
&lt;p&gt;So the calculator should work like this;&lt;/p&gt;
&lt;p&gt;1. Enter a number&lt;br /&gt;
2. Enter an operation&lt;br /&gt;
3. Enter a second number&lt;br /&gt;
4. Get result&lt;/p&gt;
&lt;p&gt;So lets define a function called,&lt;/p&gt;
&lt;pre&gt;addOperand&lt;/pre&gt;
&lt;p&gt;, it should look like this;&lt;/p&gt;
&lt;pre&gt;-(void) addOperand:(float)op{
	if(operand == -1){
		one = op;
	}
	else{
		two = op;
	}
}&lt;/pre&gt;
&lt;p&gt;You must allso not forget to add it to the header file;&lt;/p&gt;
&lt;pre&gt;-(void) addOperand:(float)op;&lt;/pre&gt;
&lt;p&gt;And for each of the number-button-events add this;&lt;/p&gt;
&lt;pre&gt;[self addOperand:1.0f];&lt;/pre&gt;
&lt;p&gt;And dont forget to change the number according to which button you are working with, now we can set the two operands, but when the second operand is added we need to calculate and display the result, so lets add a function for that, lets call it sumResults;&lt;/p&gt;
&lt;pre&gt;-(void) sumResults:(int)op{
		float result;
	if(operand == -1){
		//do nothing
	}
	else if(op == 1){//plus
		result = one + two;
	}
	else if(op == 2){//minus
		result = one - two;
	}
	else if(op == 3){//multiply
		result = one * two;
	}
	else if(op == 4){//divide
		if(two != 0){
			result = one / two;
		}
	}
	NSString *output = [[NSString alloc] initWithFormat:@"=%f",result];
	mydisplay.text = output;
}&lt;/pre&gt;
&lt;p&gt;Now in the add operand we need to call it whenever the second operand is added;&lt;/p&gt;
&lt;pre&gt;-(void) addOperand:(float)op{
	if(operand == -1){
		one = op;
	}
	else{
		two = op;
		[self sumResults:operand];
	}
}&lt;/pre&gt;
&lt;p&gt;Now lets just quickly define the operand buttons and the clear button,&lt;br /&gt;
as we can see from the sum results function, the operand buttons sets the operand to 1,2,3 and 4 for , add, sub,mul and div.&lt;/p&gt;
&lt;pre&gt;- (IBAction) btnAdd:(id) sender{
	operand = 1;
}
- (IBAction) btnSub:(id) sender{
	operand = 2;
}
- (IBAction) btnDiv:(id) sender{
	operand = 4;
}
- (IBAction) btnMul:(id) sender{
	operand = 3;
}&lt;/pre&gt;
&lt;p&gt;The clear function should clear out the numbers and the operator and the display;&lt;/p&gt;
&lt;pre&gt;- (IBAction) btnClear:(id) sender{
	operand = -1;
	one = 0.0f;
	two = 0.0f;
	mydisplay.text = @"";
}&lt;/pre&gt;
&lt;p&gt;Now hit &lt;strong&gt;Build and Go&lt;/strong&gt; and test it out, it should compile just fine.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone" title="The result!" src="http://grande.cc/images//iPhone_Simulator-20081214-133533.png" alt="" width="320" height="604" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;There you go, a simple calculator, you can try to expand it with fancy features, but the main lesson to be learned here is how to connect your UI to your logic!&lt;/p&gt;
&lt;p&gt;Leave a comment if you have any questions!&lt;/p&gt;
&lt;p&gt;PS! You can pick up the project files here: &lt;a href="http://grande.cc/BlogProsjekt.zip"&gt;http://grande.cc/BlogProsjekt.zip&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Sun, 14 Dec 2008 12:49:22 GMT</pubDate><guid isPermaLink="false">http://grande.cc/?p=41</guid><comments>http://grande.cc/?p=41#comments</comments><author>alex</author><source url="http://grande.cc/?feed=rss2">Aleksander</source><ng:postId>6619644707</ng:postId><ng:feedId>3896628</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item><item><title>&amp;quot;The Clean Code Talks  -- Inheritance, Polymorphism, &amp;amp; Testing&amp;quot;</title><link>http://www.youtube.com/watch?v=4F72VULWFvc</link><description>Google Tech Talks
November 20, 2008

ABSTRACT

Is your code full of if statements? Switch statements? Do you have the same switch statement in various places? When you make changes do you find yourself making the same change to the same if/switch in several places? Did you ever forget one?

This talk will discuss approaches to using Object Oriented techniques to remove many of those conditionals. The result is cleaner, tighter, better designed code that's easier to test, understand and maintain.

Speaker: Misko Hevery</description><pubDate>Fri, 05 Dec 2008 01:07:08 GMT</pubDate><guid isPermaLink="false">http://gdata.youtube.com/feeds/api/videos/4F72VULWFvc</guid><author>googletechtalks</author><source url="http://gdata.youtube.com/feeds/api/users/googletechtalks/uploads?orderby=updated">Uploads by googletechtalks</source><ng:postId>6544913604</ng:postId><ng:feedId>2674753</ng:feedId><ng:folderId>0</ng:folderId><ng:folder ng:id="0" ng:flagState="0" ng:annotation="" /></item></channel></rss>
