<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUENQ3c8fyp7ImA9WxBSFEw.&quot;"><id>tag:blogger.com,1999:blog-21920524</id><updated>2009-12-21T11:41:32.977-05:00</updated><title>Fighting the machine</title><subtitle type="html">One man's battle to keep his sanity in the technology world. The Good, the bad and the downright horrible.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://karell.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://karell.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>246</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/FightingTheMachine" /><feedburner:emailServiceId>FightingTheMachine</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CkcEQ3Y_fSp7ImA9WxNWGUg.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-7023598903595417306</id><published>2009-10-19T07:00:00.000-04:00</published><updated>2009-10-19T07:00:02.845-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-19T07:00:02.845-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="CCR" /><title>Introduction to CCR Concurrency and Coordination Runtime</title><content type="html">&lt;p&gt;In an effort to understand the basics behind &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; and see if I could play with the technology I created a console application with the following goals in mind:&lt;/p&gt;  &lt;p&gt;Be able to queue up a “logger” type of request where a worker thread could take care of handling the processing of those requests.&lt;/p&gt;  &lt;p&gt;In reality, I’m not doing much more than simply passing a string to a static class that uses &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; and its multithreading system to dump the output to the console. Nevertheless, the process is quite interesting and could be applied to a multitude of scenarios.&lt;/p&gt;  &lt;p&gt;Observe the following Console/Program.cs file:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Ccr.Core;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10; i++)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                ConsoleLogger.Log(i.ToString());&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Done queuing&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            ConsoleLogger.StopLogger();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;No black magic here, the code is very readable. We create a loop (line 14) which takes care of requesting to our ConsoleLogger class to log 0-10 (line 15) and finally output “Done queuing” (line 17). In a real world we would expect 0-10 to be spit out and then see “Done queuing” but this is not what happens in this case, “Done queuing” appears first only to then see 0-10 each on its own line. Such is the magic of multithreading.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Let’s observe the source code for the Class/ConsoleLogger.cs&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Ccr.Core;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ConsoleLogger&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="rem"&gt;//Create Dispatcher&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; Dispatcher _logDispatcher = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dispatcher(1,&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            ThreadPriority.Normal, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;LogPool&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="rem"&gt;//Create Dispatch Queue&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DispatcherQueue _logDispatcherQueue;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="rem"&gt;//Message Port&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; Port&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; _logPort = &lt;span class="kwrd"&gt;new&lt;/span&gt; Port&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="rem"&gt;//Fields&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; _ready;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Init()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            _logDispatcherQueue = &lt;span class="kwrd"&gt;new&lt;/span&gt; DispatcherQueue(&lt;span class="str"&gt;&amp;quot;LogDispatcherQueue&amp;quot;&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                _logDispatcher);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            Arbiter.Activate(_logDispatcherQueue, Arbiter.Receive(&lt;span class="kwrd"&gt;true&lt;/span&gt;, _logPort,&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                WriteMessage));&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            _ready = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; messageString)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            Console.WriteLine(messageString);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Log(&lt;span class="kwrd"&gt;string&lt;/span&gt; messageString)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!_ready)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                Init();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            _logPort.Post(messageString);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;span class="rem"&gt;//Any thread tasks still running?&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; PendingJobs&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            get&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; (_logDispatcher.PendingTaskCount &amp;gt; 0 ||&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;                _logPort.ItemCount &amp;gt; 0) ? &lt;span class="kwrd"&gt;true&lt;/span&gt; : &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;        &lt;span class="rem"&gt;//Since we are not using background threading we need to add this method to&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;        &lt;span class="rem"&gt;//dispose the DQ for application end&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; StopLogger()&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (PendingJobs) { Thread.Sleep(100); }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;            _ready = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            _logDispatcherQueue.Dispose();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Note the declaration of (line 13) the dispatcher that will be used to dispatch requests to the &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; engine. Also observe the declaration of the dispatcher queue (line 17) and the message port (line 20).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Line 25 lists the Init code of our class that will set up the whole &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; settings so that the class uses multithreading internally to display our messages.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Line 35 demonstrates the actual method that performs the work, notice that the parameter accepted by this method is the exact same parameter as the one set up for the port on line 20. Therefore, you can assume that when you call the port the underlying engine will pass on this request to this method and simply pass the parameter along.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Line 40 shows the method that is used to actually insert some data in the port (queue) which will then be processed by the engine to be relayed to the worker method (line 35).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Line 48 shows an internal function that will allow us to stop the logger which will check if all the processing has completed for our class. We don’t want to exit the ConsoleApplication before all the work has been done. It also handles calling the Init method if the &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; engine has not be yet set up in this class.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finally, line 59 defines the final method that is used to wait for all processing to be completed. We will check every second (pausing the thread for proper threading etiquette) and recheck until the &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; engine no longer has any messages to process and finally dispose of the Dispatcher Queue.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The code is not flawless but it properly illustrates the use of the &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; engine and its most basic capacities.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For more information on &lt;a href="http://en.wikipedia.org/wiki/Concurrency_and_Coordination_Runtime" target="_blank"&gt;CCR&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Decentralized_Software_Services" target="_blank"&gt;DSS&lt;/a&gt; check out the &lt;a href="http://www.microsoft.com/ccrdss/" target="_blank"&gt;Microsoft page&lt;/a&gt; dedicated to this new and exciting technology.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-7023598903595417306?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/st_NEXqIiyXjPdqZJgAUk4uZ-y0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/st_NEXqIiyXjPdqZJgAUk4uZ-y0/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/st_NEXqIiyXjPdqZJgAUk4uZ-y0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/st_NEXqIiyXjPdqZJgAUk4uZ-y0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/VwY2dMxRrVQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/7023598903595417306/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=7023598903595417306" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7023598903595417306?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7023598903595417306?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/VwY2dMxRrVQ/introduction-to-ccr-concurrency-and.html" title="Introduction to CCR Concurrency and Coordination Runtime" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/10/introduction-to-ccr-concurrency-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAFRHs5eip7ImA9WxNWGEU.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-2433662196971619897</id><published>2009-10-18T12:51:00.001-04:00</published><updated>2009-10-18T12:51:55.522-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T12:51:55.522-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Error" /><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="IIS" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 2003" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>maxStringContentLength attribute of the readerQuotas element which defaults to 8196</title><content type="html">&lt;p&gt;Almost every time that you search for this error you will find a fix similar to the following:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;bindings&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;Binding&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name="myBindingName"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security mode="None" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;readerQuotas&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxDepth="32"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxStringContentLength="8196"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxArrayLength="16384"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxBytesPerRead="4096"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxNameTableCharCount="16384"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/Binding&amp;gt;&lt;br&gt;&amp;lt;/bindings&amp;gt;&lt;br&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Where [Binding] in the xml structure above is the type of binding that you are using: wshttp, netmsmq, etc&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;What most of these posts will not explicitly tell you is that these settings should not only be changed on the CLIENT app but also in the HOST as well.&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;By default, when you create a WCF Service Host you don’t have to create the bindings as it will properly function with the defaults. The trick here that I found is to simply create a custom binding on the host side, properly set the maxStringContentLength to a value that will allow your host to process messages and the problem will be solved. Don’t forget to set the client bindings to sufficient values as well.&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Personally, I think that this error is questionable but I can think of some DOS reasons why the setting should remain. I guess it’s something that you need to consider especially if you plan on receiving some huge data calls from the open public.&lt;/pre&gt;&lt;/code&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-2433662196971619897?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mpMV-GqHoz3ZO2vY4S1NdTknGVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mpMV-GqHoz3ZO2vY4S1NdTknGVg/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/mpMV-GqHoz3ZO2vY4S1NdTknGVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mpMV-GqHoz3ZO2vY4S1NdTknGVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/pOjP4W_aSBw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/2433662196971619897/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=2433662196971619897" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2433662196971619897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2433662196971619897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/pOjP4W_aSBw/maxstringcontentlength-attribute-of.html" title="maxStringContentLength attribute of the readerQuotas element which defaults to 8196" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/10/maxstringcontentlength-attribute-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BRXg5fip7ImA9WxNXFko.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-6620325095179568133</id><published>2009-10-04T13:51:00.001-04:00</published><updated>2009-10-04T13:55:54.626-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T13:55:54.626-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Thought" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Why use the Enterprise Library Unity Application Block</title><content type="html">&lt;p&gt;Many times, I read tutorials on the internet where people (with great intentions) will share code on how to use new technology to make your life as a developer easier.&lt;/p&gt;  &lt;p&gt;The good intention is there, and it reminds me a bit of being back in programming school where they would show you code and basically say: this is how you say “hello world”&lt;/p&gt;  &lt;p&gt;The problem with this approach is while it teaches the student how to have a good understand of how to do certain things it does not necessarily show you WHY you should do one thing over another.&lt;/p&gt;  &lt;p&gt;I have this problem in my head, a problem with the &lt;a href="http://www.pnpguidance.net/Category/Unity.aspx" target="_blank"&gt;Unity Application Block&lt;/a&gt; in the &lt;a href="http://www.codeplex.com/entlib" target="_blank"&gt;Enterprise Library&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There are plenty of great tutorials on how to use Unity but I have yet to see one that explains good patterns on WHEN and WHY you should use it. When is it appropriate? What is an example of a real life situation where it could solve a problem. It’s almost like everyone explains how to drive a car but no one actually says that you could go in the taxi or delivery business. Once I know how to drive, I’ll ask myself: ok – great – now what? What do I do with this and when do I use it. Sometimes, it will be obvious and sometimes it won’t be. And it will be obvious to varying degrees based on some individuals as well. Other folks, while they need – won’t get it.&lt;/p&gt;  &lt;p&gt;I’m going to mix a few different things here so that we can look at a real-life situation that Unity can help you with.&lt;/p&gt;  &lt;p&gt;Before I start, please give this site a visit: &lt;a title="http://www.pnpguidance.net/Category/Unity.aspx" href="http://www.pnpguidance.net/Category/Unity.aspx"&gt;http://www.pnpguidance.net/Category/Unity.aspx&lt;/a&gt; – I would not be able to explain anything about Unity without &lt;a href="http://www.davidhayden.com/" target="_blank"&gt;David Hayden&lt;/a&gt;’s excellent help.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://oreilly.com/" target="_blank"&gt;O’Reilly&lt;/a&gt; published an excellent book called “Head First Design Patterns” (see link in references), if you don’t know what I mean by my next couple of terms – this is a great book to check out to learn their details.&lt;/p&gt;  &lt;p&gt;Let’s not talk about Unity for a few paragraphs and talk about the &lt;a href="http://en.wikipedia.org/wiki/Strategy_pattern" target="_blank"&gt;Strategy Pattern&lt;/a&gt;. The basics of the strategy pattern is that you should delegate class behavior to a more specialized class that implements this behavior.&lt;/p&gt;  &lt;p&gt;If you can’t pick up on the key advantage of this, it means that you can actually make classes/objects that don’t implement a fixed behavior and actually set this behavior at runtime.&lt;/p&gt;  &lt;p&gt;When you design a class that implements that Strategy Pattern, you should actually create properties to store these behavior objects so that your class can invoke the methods/properties of those classes in it’s own methods/properties.&lt;/p&gt;  &lt;p&gt;So instead of having the following:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminatorSarah : RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// find Sarah&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminatorJohn : RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// find John&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You could instead have the following:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITargetFinder&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; ITargetFinder _targetAcquisition;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; RobotTerminator(ITargetFinder targetAcquisition)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition = targetAcquisition;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition.FindTarget();&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;Do you notice the difference? First off, I’m no longer using inheritance. Why would I want to do that and repeat the code all the time? I am simplifying the RobotTerminator class and this way, I can make new target acquisition objects instead that will find my targets and allow John and Sarah’s nemesis to deal with them. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;The principal advantage is that I don’t need to recompile all of my robots before I send them back in time with new targets and missions all the time. While&amp;#160; I will agree that the example below is over-simplified, it illustrates the point well. You don’t want to have to open up the Drone’s heads all the time to give them new mission parameters, especially not upload/recompile their Operating System (imagine having to stitch their heads all the time). In the old way, I would have to inherit the base abstract class into a new one and write code there. This makes for very inefficient machines (no wonder they rarely get their targets in the movies, too much custom programming and not enough testing).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With the new method, I can send custom behavior “on the fly” during runtime and have the O/S simply execute that behavior instead.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ok, I think that we get the point of the Strategy Pattern and why it’s useful, now let’s raise the bar once again.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Enter the Unity framework, let’s take a look at the following code:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITargetFinder&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; ITargetFinder _targetAcquisition;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; RobotTerminator(ITargetFinder targetAcquisition)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition = targetAcquisition;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition.FindTarget();&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Our new code is much better, but there is still some level of strictness around it. Wouldn’t be great if we could simply alter the behavior of our machine not only at runtime but also through configuration? Right now, we have to pass an ITargetFinder interface (so we have to build a real object that implements this interface and send it over as a parameter). But we would have to write at least some code so that we could configure behavior at runtime for our machine. We don’t have to turn it off but we still have some degree of code to write in order to tell the system to alter the behavior.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Take a look at the following:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITargetFinder&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TargetFinderFactory&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; ITargetFinder GetTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;// get target through configuration&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; ITargetFinder _targetAcquisition;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ITargetFinder targetAcquisition&lt;br /&gt;        {&lt;br /&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition; }&lt;br /&gt;            set { &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; RobotTerminator()&lt;br /&gt;            : &lt;span class="kwrd"&gt;this&lt;/span&gt;(TargetFinderFactory.GetTarget())&lt;br /&gt;        { }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; RobotTerminator(ITargetFinder targetFinder)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition = targetFinder;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition.FindTarget();&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is a bit more interesting. We now have a factory that will crank out targets like muffins, when our Robot comes online it will automatically get an assignment through the factory. The behavior can also be changed during runtime by simply changing the target finder of the object. We can even go as far as specifying a target immediately or having the default read the configuration file. Much better indeed.&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is much better, but Unity can make it even better, let’s take a look at it:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITargetFinder&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;abstract&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RobotTerminator&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; ITargetFinder _targetAcquisition;&lt;br /&gt;&lt;br /&gt;        [&lt;font color="#0000ff"&gt;Dependency&lt;/font&gt;]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ITargetFinder targetAcquisition&lt;br /&gt;        {&lt;br /&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition; }&lt;br /&gt;            set { &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindTarget()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;._targetAcquisition.FindTarget();&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Where are our constructors? Why are they gone? And where is our target factory? Our machines are going to be standing idle if they have no targets to find.&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And what is that [&lt;font color="#0000ff"&gt;Dependency&lt;/font&gt;] attribute?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;[&lt;font color="#0000ff"&gt;Dependency&lt;/font&gt;] is an attribute that tells Unity that the property is a Dependency and needs Unity to initialize/assign it for us. For reference purposes, check out the following code:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;IUnityContainer container = &lt;span class="kwrd"&gt;new&lt;/span&gt; UnityContainer();&lt;br /&gt;            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection(&lt;span class="str"&gt;&amp;quot;unity&amp;quot;&lt;/span&gt;);&lt;br /&gt;            section.Containers[&lt;span class="str"&gt;&amp;quot;targetOne&amp;quot;&lt;/span&gt;].Configure(container);&lt;br /&gt;&lt;br /&gt;            RobotTerminator newRobot = container.Resolve&amp;lt;RobotTerminator&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What does it do? Well, the first section basically tells Unity to load a configuration file that will explain to it which types to load depending on the configuration file. The last line of code essentially instantiates our class into an object and tells Unity to look for any Dependencies (that is what the [&lt;font color="#0000ff"&gt;Dependency&lt;/font&gt;] attribute is for) and will essentially invoke the Setter method of the property and pass it a concrete object.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We have greatly remove some code from our RobotTerminator class and consequently also removed responsibilities. Which is turn is a good practice because it makes the class simpler to understand. We moved the responsibility of finding targets to Unity and depending if we choose configuration files or not (which is our decision, the designer/programmer) Unity will in the end use the settings that we create and Hand out objects when necessary to the objects that will use them. The great thing is that we have done all of this while making our code much easier to maintain and potentially remove quite a bit of issues as well. With the option of moving out the decision of passing which objects (removed our factory) we have also further decoupled our system and now have a degree of coupling that is as far as can be. Loose coupling is good, it basically means that you have less shackles to maintain – shackles, as you may imagine are as bad in real life as in code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Unity can also help you not only with Properties (our example was specific to the Strategy Pattern and Unity) but can also help you create Object factories that can return objects that are controlled (or orchestrated, if I can use the term) through configuration files.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Do you remember program output? How come computers can send output to files, printers or screens evenly? Well Unity can help you achieve this level of flexibility without going insane trying to figure out the plumbing to implement all of this.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Resources:&lt;/p&gt;&lt;br /&gt;&lt;iframe style="width: 120px; height: 240px" marginheight="0" src="http://rcm-ca.amazon.ca/e/cm?t=fightthemachi-20&amp;amp;o=15&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=0596007124&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-6620325095179568133?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TMym4uhChjqQYCABYo_lgTaL1hw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TMym4uhChjqQYCABYo_lgTaL1hw/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/TMym4uhChjqQYCABYo_lgTaL1hw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TMym4uhChjqQYCABYo_lgTaL1hw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/ba3f9mKdyEk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/6620325095179568133/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=6620325095179568133" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6620325095179568133?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6620325095179568133?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/ba3f9mKdyEk/enterprise-library-unity-application.html" title="Why use the Enterprise Library Unity Application Block" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/10/enterprise-library-unity-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcAQX09cCp7ImA9WxNXEkw.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-7460892713629327072</id><published>2009-09-29T04:14:00.000-04:00</published><updated>2009-09-29T04:14:00.368-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-29T04:14:00.368-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Video" /><title>Downloading YouTube videos to your Zune</title><content type="html">&lt;p&gt;What you will need:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.any-video-converter.com/products/for_video_free/" target="_blank"&gt;Any Video Converter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Zune Sync Software (included with Zune)&lt;/p&gt;  &lt;p&gt;The trick is so simple, I was dying of laughter when I figured it out:&lt;/p&gt;  &lt;p&gt;First off, download “Any Video Converter” from the link above.&lt;/p&gt;  &lt;p&gt;Second, once installed, fire up the “Any Video Converter” software, go to EDIT –&amp;gt; OPTIONS and set the OUTPUT folder (on top) to one of the folders that the Zune software monitors for video files.&lt;/p&gt;  &lt;p&gt;Third, set the format in “Any Video Converter” to either WMV or MP4 – make sure that you set the proper resolution (320x240) frame rate (auto) and audio bitrate (128+).&lt;/p&gt;  &lt;p&gt;Fourth, open up YouTube, go to a list of videos and simply drag and drop the URL into “Any Video Converter”.&lt;/p&gt;  &lt;p&gt;Finally, click “CONVERT” and watch the software download the YouTube videos, convert them and drop them into the Zune-monitored folder for videos. The Zune sync software will then pick up those videos and sync them to your Zune – if you are in MP4 or WMV mode it may not even have to do any conversion (depending on your settings).&lt;/p&gt;  &lt;p&gt;Congratulations, you now have YouTube videos to go.&lt;/p&gt;  &lt;p&gt;Unfortunately, if like you you think that some sort of RSS feed would be perfect – well – you are going to have to continue to wait. Even if most computers today can play many file formats it seems like the Zune Sync software isn’t quite there yet.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-7460892713629327072?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TaOSHid8rhhKtWZqT4H6acqdrFE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TaOSHid8rhhKtWZqT4H6acqdrFE/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/TaOSHid8rhhKtWZqT4H6acqdrFE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TaOSHid8rhhKtWZqT4H6acqdrFE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/albnCUG5EKI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/7460892713629327072/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=7460892713629327072" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7460892713629327072?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7460892713629327072?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/albnCUG5EKI/downloading-youtube-videos-to-your-zune.html" title="Downloading YouTube videos to your Zune" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/09/downloading-youtube-videos-to-your-zune.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUEQXo9eCp7ImA9WxNSEUs.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-1511200260607288501</id><published>2009-08-24T22:10:00.000-04:00</published><updated>2009-08-24T22:10:00.460-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-24T22:10:00.460-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Audio Book" /><title>No Podcasts This Morning</title><content type="html">&lt;p&gt;I love podcasts, I especially love audio novels told by authors. I have my favorite authors (oddly, I can cite more authors on the web than I can actually cite authors that I read in the past) but I won’t list them here. The purpose of this post is not to try to sell who I think are the best.&lt;/p&gt;  &lt;p&gt;What I would like to say this morning is that, unfortunately, nothing new came out this morning. Sometimes, life gets in the way of podcast authors (they do this for free, therefore, after the day job, eating, family and walking the dog – it comes last in the list) and I didn’t get any new content.&lt;/p&gt;  &lt;p&gt;Which brings me to a point: Those guys invest a lot of effort and time to provide free content, I love what they do and I love what they deliver.&lt;/p&gt;  &lt;p&gt;Now if there was only a way that I could support a few of these guys, perhaps clicking on their ad links?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-1511200260607288501?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yXp6UsqmgbERsRsyLA3bsWBm7zs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXp6UsqmgbERsRsyLA3bsWBm7zs/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/yXp6UsqmgbERsRsyLA3bsWBm7zs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXp6UsqmgbERsRsyLA3bsWBm7zs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/d8DxF6ylMPE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/1511200260607288501/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=1511200260607288501" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1511200260607288501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1511200260607288501?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/d8DxF6ylMPE/no-podcasts-this-morning.html" title="No Podcasts This Morning" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/08/no-podcasts-this-morning.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUANSX48eip7ImA9WxNTGE0.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-7680048715057141752</id><published>2009-08-20T17:29:00.001-04:00</published><updated>2009-08-20T17:29:58.072-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-20T17:29:58.072-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Funny" /><title>The Ultimate Car Mod – On a Budget</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_mWpm9WEyBsA/So3ARkRjiVI/AAAAAAAAAKg/U7ByIZujkxk/s1600-h/IMAGE_317%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMAGE_317" border="0" alt="IMAGE_317" src="http://lh4.ggpht.com/_mWpm9WEyBsA/So3AUyzfNwI/AAAAAAAAAKk/D5wrSN4WUTg/IMAGE_317_thumb%5B2%5D.jpg?imgmax=800" width="472" height="360" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yes, that is a house air vent as a front scoop&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-7680048715057141752?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X14jyJBm1Vev-ewLk8ocAJxJ7T0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X14jyJBm1Vev-ewLk8ocAJxJ7T0/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/X14jyJBm1Vev-ewLk8ocAJxJ7T0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X14jyJBm1Vev-ewLk8ocAJxJ7T0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/9JkVJCe0U-o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/7680048715057141752/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=7680048715057141752" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7680048715057141752?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7680048715057141752?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/9JkVJCe0U-o/ultimate-car-mod-on-budget.html" title="The Ultimate Car Mod – On a Budget" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/08/ultimate-car-mod-on-budget.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08NSH46eCp7ImA9WxJaFU0.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-6145933612552019992</id><published>2009-08-04T13:24:00.001-04:00</published><updated>2009-08-05T16:58:19.010-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-05T16:58:19.010-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>BugTracker WebEvent Provider for ASP.NET</title><content type="html">&lt;p&gt;&lt;a href="http://ifdefined.com/bugtrackernet.html" target="_blank"&gt;BugTracker.NET&lt;/a&gt; is an excellent piece of software which can be found &lt;a href="http://ifdefined.com/bugtrackernet.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The description on the BugTracker.NET site is:&lt;/p&gt;  &lt;p&gt;BugTracker.NET is a free, open-source, web-based &lt;a href="http://ifdefined.com/blog/post/2007/10/Links-to-other-comparisons-of-issue-trackers.aspx"&gt;bug tracker&lt;/a&gt; or customer support &lt;a href="http://ifdefined.com/blog/post/2007/10/Links-to-other-comparisons-of-issue-trackers.aspx"&gt;issue tracker&lt;/a&gt; written using &lt;a href="http://www.microsoft.com/net/"&gt;ASP.NET&lt;/a&gt;, C#, and Microsoft SQL Server (or its free cousin, &lt;a href="http://msdn.microsoft.com/vstudio/express/sql/"&gt;SQL Server Express&lt;/a&gt;). It is in daily use by thousands of development and customer support teams around the world.&lt;/p&gt;  &lt;p&gt;For those that are looking for a flexible open source helpdesk system, I highly recommend it.&lt;/p&gt;  &lt;p&gt;Our need here is that we have several customer web applications running in our hosting infrastructure and we started to receive reports of errors with either incomplete descriptions or without any description at all.&lt;/p&gt;  &lt;p&gt;The best solution found here is to use a component from ASP.NET called HealthMonitoring.&lt;/p&gt;  &lt;p&gt;The principle is simple, publish events and tracking from the application to a destination. The destination can be just about anything: File, SQL Table, E-Mail, etc. Since this is built on top of the provider model – it is very easy to customize and extend.&lt;/p&gt;  &lt;p&gt;Now to the point of this post, we have created a BugTracker WebEvent Provider for ASP.NET (2.0 or above) that can be configured to log events to BugTracker itself.&lt;/p&gt;  &lt;p&gt;If you use the following configuration in the &amp;lt;system.web/&amp;gt; section of your ASP.NET app:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;healthMonitoring&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&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;BugTrackerWebEventProvider&lt;/span&gt;&amp;quot;&lt;br /&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;BugTrackerWebEventProvider.BugTrackerWebEventProvider&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;bufferMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Notification&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;buffer&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: red"&gt;Username&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;username&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;Password&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password&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;&lt;a href="http://url_to_bugtracker/insert_bug.aspx"&gt;http://url_to_bugtracker/insert_bug.aspx&lt;/a&gt;?&lt;/span&gt;&amp;quot;  &lt;span style="color: red"&gt;ProjectID&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;bugtracker project id&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;providers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&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;br /&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;LogAllEvents&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;eventName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;All Errors&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;provider&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BugTrackerWebEventProvider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;br /&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;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;healthMonitoring&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;You will be effectively logging “Errors” as new requests/bugs to BugTracker.NET – it is important to understand however that while this is very nice to fill up the database you must be ready to deal with the load and use BugTracker effectively to link and deal with the issues that are created. Our systems have several thousands of users, you can imagine how a client can panic if 50 users all hit a section that triggers a semi-handled exception that happens to be logged in the system regardless.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I have included a demo application below to demonstrate how to set up the provide within the web.config so that you can easily make it fit within your development/production projects.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Personally, I would use this provider mostly in a “client UAT/QA” phase or in production – I don’t recommend it in development.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-304fe7b3217df898.skydrive.live.com/embedrowdetail.aspx/Public/BugTrackerWebEventProviderExampleWebSite.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And here is the same provider, in release build&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-304fe7b3217df898.skydrive.live.com/embedrowdetail.aspx/Public/BugTrackerWebeventProviderRelease.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-6145933612552019992?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MusRkMpXs9jhi8d4fvTPWCD5ZLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MusRkMpXs9jhi8d4fvTPWCD5ZLo/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/MusRkMpXs9jhi8d4fvTPWCD5ZLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MusRkMpXs9jhi8d4fvTPWCD5ZLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/ZC5VdWsOaHg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/6145933612552019992/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=6145933612552019992" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6145933612552019992?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6145933612552019992?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/ZC5VdWsOaHg/bugtracker-webevent-provider-for-aspnet.html" title="BugTracker WebEvent Provider for ASP.NET" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/08/bugtracker-webevent-provider-for-aspnet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8CQ307fSp7ImA9WxJbFU8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-1218061054456295994</id><published>2009-07-25T08:27:00.001-04:00</published><updated>2009-07-25T08:27:42.305-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-25T08:27:42.305-04:00</app:edited><title>ZEN M – Clean Up and Format</title><content type="html">&lt;p&gt;I just spent about 1 hour trying to get my son’s “freezing” ZEN M to cooperate and just reset since he placed one MP3 on it.&lt;/p&gt;  &lt;p&gt;I finally found these instructions for a firmware update, I had to follow these since I couldn’t even reset the device. Unless you are reloading the firmware because of a failed upgrade, I don’t think that you will have to perform the “Reload Firmware” step of step 6 but I would advise doing a “Clean Up” and “Format All” instead and then follow it up with a Reboot.&lt;/p&gt;  &lt;p&gt;Let me know by way of some feedback if it works, I did all four and then reloaded the firmware a second time because this particular Zen was really bad.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If your player fails to restart after the firmware upgrade: &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Turn off your player. &lt;/li&gt;      &lt;li&gt;Disconnect your player from your computer. &lt;/li&gt;      &lt;li&gt;Press and hold the &lt;strong&gt;Play/Pause&lt;/strong&gt; button. Continue to hold the button while you perform steps 4 and 5. If you accidentally release the button, start the procedure again.&amp;#160; &lt;/li&gt;      &lt;li&gt;Gently push a straightened paper clip into the &lt;strong&gt;Reset&lt;/strong&gt; hole. &lt;/li&gt;      &lt;li&gt;Slide the &lt;strong&gt;On/Off&lt;/strong&gt; switch towards the &lt;strong&gt;USB port&lt;/strong&gt; and hold until the display lights up. The &lt;strong&gt;Recovery Mode&lt;/strong&gt; screen appears with four options: &lt;strong&gt;Clean Up, Format All, Reload Firmware, and Reboot.&lt;/strong&gt;&lt;/li&gt;      &lt;li&gt;Select &lt;strong&gt;Reload Firmware&lt;/strong&gt;, followed by &lt;strong&gt;Yes&lt;/strong&gt;. &lt;/li&gt;      &lt;li&gt;Connect your player to your computer. &lt;/li&gt;      &lt;li&gt;Double-click the downloaded file and follow the instructions on the screen.&lt;/li&gt;   &lt;/ol&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://support.creative.com/Products/ProductDetails.aspx?catID=213&amp;amp;CatName=MP3+Players&amp;amp;subCatID=214&amp;amp;subCatName=ZEN&amp;amp;prodID=16999&amp;amp;prodName=ZEN"&gt;Creative Worldwide Support &amp;gt; ZEN&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-1218061054456295994?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QBAakECVlghkJEqhRbR68H_gq1g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QBAakECVlghkJEqhRbR68H_gq1g/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/QBAakECVlghkJEqhRbR68H_gq1g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QBAakECVlghkJEqhRbR68H_gq1g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/GH0jV_74dmI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/1218061054456295994/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=1218061054456295994" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1218061054456295994?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1218061054456295994?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/GH0jV_74dmI/zen-m-clean-up-and-format.html" title="ZEN M – Clean Up and Format" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/07/zen-m-clean-up-and-format.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ASH8_eyp7ImA9WxJXEUk.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-8168876920898928047</id><published>2009-06-04T16:38:00.001-04:00</published><updated>2009-06-04T16:39:09.143-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T16:39:09.143-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IIS" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 2003" /><title>WebResource.axd and axd extensions 404 SiteMinder – Post 2</title><content type="html">&lt;p&gt;In my &lt;a href="http://karell.blogspot.com/2007/11/webresourceaxd-404-siteminder.html" target="_blank"&gt;original post&lt;/a&gt; I explained in some details what was happening under the hood. Given the time since the original post, a few people have commented and offered alternatives to the problem.&lt;/p&gt;  &lt;p&gt;Another method to go around this problem is to uncheck the “Verify that file exists” checkbox on the Application Extension Mapping for the ISAPI6WebAgent.dll&lt;/p&gt;  &lt;p&gt;References: &lt;a href="http://karell.blogspot.com/2007/11/webresourceaxd-404-siteminder.html?showComment=1225378920000#c7790355118502575423" target="_blank"&gt;Gregory’s comment&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Happy programming, I went to this technique myself.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-8168876920898928047?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6zGETD7iXEP3HeH8kyH0nD5fddw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6zGETD7iXEP3HeH8kyH0nD5fddw/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/6zGETD7iXEP3HeH8kyH0nD5fddw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6zGETD7iXEP3HeH8kyH0nD5fddw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/eavcsGoSiwQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/8168876920898928047/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=8168876920898928047" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/8168876920898928047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/8168876920898928047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/eavcsGoSiwQ/webresourceaxd-404-siteminder-post-2.html" title="WebResource.axd and axd extensions 404 SiteMinder – Post 2" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/06/webresourceaxd-404-siteminder-post-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEBSX87fyp7ImA9WxJQFU8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-3798042559002557709</id><published>2009-05-28T13:00:00.000-04:00</published><updated>2009-05-28T11:14:18.107-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T11:14:18.107-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Picture" /><category scheme="http://www.blogger.com/atom/ns#" term="Funny" /><title>Car home repair kit take 2</title><content type="html">&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_mWpm9WEyBsA/Sh6l6xyXf_I/AAAAAAAAAKY/SthazxLm9iQ/s1600-h/IMAGE_229-739467.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5340888637323575282" border="0" alt="" src="http://3.bp.blogspot.com/_mWpm9WEyBsA/Sh6l6xyXf_I/AAAAAAAAAKY/SthazxLm9iQ/s320/IMAGE_229-739467.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;Karell Ste-Marie&lt;br /&gt;CIO BrainBank Inc&lt;br /&gt;Sent from my wireless device&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-3798042559002557709?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QFs0_kxF5ukQcQXOK7AJA0deQzs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QFs0_kxF5ukQcQXOK7AJA0deQzs/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/QFs0_kxF5ukQcQXOK7AJA0deQzs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QFs0_kxF5ukQcQXOK7AJA0deQzs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/Qiw5NY1U438" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/3798042559002557709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=3798042559002557709" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/3798042559002557709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/3798042559002557709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/Qiw5NY1U438/car-home-repair-kit-take-2.html" title="Car home repair kit take 2" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_mWpm9WEyBsA/Sh6l6xyXf_I/AAAAAAAAAKY/SthazxLm9iQ/s72-c/IMAGE_229-739467.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/05/car-home-repair-kit-take-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEAQHg5eip7ImA9WxJQFU8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-4003839602351206582</id><published>2009-05-28T11:00:00.000-04:00</published><updated>2009-05-28T11:14:01.622-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T11:14:01.622-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Picture" /><category scheme="http://www.blogger.com/atom/ns#" term="Funny" /><title>Car Home Repair Kit</title><content type="html">&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_mWpm9WEyBsA/Sh6jbxzuXHI/AAAAAAAAAKQ/njvlI0i1EqI/s1600-h/IMAGE_~4-703564.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5340885905730067570" border="0" alt="" src="http://2.bp.blogspot.com/_mWpm9WEyBsA/Sh6jbxzuXHI/AAAAAAAAAKQ/njvlI0i1EqI/s320/IMAGE_~4-703564.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-4003839602351206582?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zEjFQTj0_lkSlPXBcYUa0wsJx3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zEjFQTj0_lkSlPXBcYUa0wsJx3g/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/zEjFQTj0_lkSlPXBcYUa0wsJx3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zEjFQTj0_lkSlPXBcYUa0wsJx3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/1M45o2FThlg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/4003839602351206582/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=4003839602351206582" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4003839602351206582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4003839602351206582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/1M45o2FThlg/car-home-repair-kit.html" title="Car Home Repair Kit" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_mWpm9WEyBsA/Sh6jbxzuXHI/AAAAAAAAAKQ/njvlI0i1EqI/s72-c/IMAGE_~4-703564.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/05/car-home-repair-kit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYFRHgzcCp7ImA9WxJTGU4.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-4201184390610526088</id><published>2009-04-28T13:01:00.001-04:00</published><updated>2009-04-28T13:01:55.688-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T13:01:55.688-04:00</app:edited><title>I hope someone at Microsoft gets this message</title><content type="html">&lt;p&gt;Hello Microsoft person,&lt;/p&gt;  &lt;p&gt;If you go here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/events/webcasts/ondemand.mspx" href="http://www.microsoft.com/events/webcasts/ondemand.mspx"&gt;http://www.microsoft.com/events/webcasts/ondemand.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will end up in a list of all technical webcasts that Microsoft hosts, the list is quite nice and quite extensive. I actually want to thank you for this list and the information provided in each of these webcasts.&lt;/p&gt;  &lt;p&gt;Now for my request:&lt;/p&gt;  &lt;p&gt;I own a ZUNE…&lt;/p&gt;  &lt;p&gt;Would it be at all possible that I could simply subscribe to the RSS feed using my Zune and get these webcasts to play on it?&lt;/p&gt;  &lt;p&gt;I find the whole – subscribe – download – sync – manual process very long and tedious, especially when the company that makes the Zune and the website (and the webcasts) are all the same.&lt;/p&gt;  &lt;p&gt;Thanks,&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-4201184390610526088?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JEVSCcq8wKX1Yo_xdt9RVNTESYw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JEVSCcq8wKX1Yo_xdt9RVNTESYw/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/JEVSCcq8wKX1Yo_xdt9RVNTESYw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JEVSCcq8wKX1Yo_xdt9RVNTESYw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/cUKRs2lrP2Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/4201184390610526088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=4201184390610526088" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4201184390610526088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4201184390610526088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/cUKRs2lrP2Q/i-hope-someone-at-microsoft-gets-this.html" title="I hope someone at Microsoft gets this message" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/04/i-hope-someone-at-microsoft-gets-this.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUEQH4-cCp7ImA9WxVXEks.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-9024477117148344491</id><published>2009-02-10T07:00:00.001-05:00</published><updated>2009-02-10T07:00:01.058-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T07:00:01.058-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile" /><title>Some of my Agile Programming Links</title><content type="html">&lt;a style="color: blue;" href="http://www.leadingagile.com/2009/01/some-thoughts-on-project-velocity.html" target="_blank"&gt;Leading &lt;b&gt;Agile&lt;/b&gt;: Some Thoughts on Project Velocity&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; &lt;span style="color:#666666;"&gt;By Mike Cottmeyer &lt;/span&gt;&lt;br /&gt;Ask not what your &lt;b&gt;agile&lt;/b&gt; project can do for you... ask what you can do for your &lt;b&gt;agile&lt;/b&gt; project. Here are a few thoughts on what managers and teams can keep in mind to keep velocity a reliable indicator of project performance... and maybe &lt;b&gt;...&lt;/b&gt;&lt;br /&gt;&lt;span style="color:green;"&gt; &lt;a style="color: green;" href="http://www.leadingagile.com/" title="http://www.leadingagile.com/" target="_blank"&gt; Leading Agile - http://www.leadingagile.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="color: blue;" href="http://www.betterprojects.net/2009/01/object-oriented-requirements-and.html" target="_blank"&gt;Better Projects: Object oriented requirements and iterative &lt;b&gt;...&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; &lt;span style="color:#666666;"&gt;By Craig Brown &lt;/span&gt;&lt;br /&gt;Object oriented requirements and iterative &lt;b&gt;development&lt;/b&gt;. If you are articulating your requirements in a way that is able to be delivered in multiple iterations you are probably trying to deliver a series of releases with valuable and useable features to your clients. &lt;b&gt;....&lt;/b&gt; Can &lt;b&gt;Agile&lt;/b&gt; (Scrum and XP) work for large projects? Business &lt;b&gt;Model&lt;/b&gt; Innovation · Strategy and business · Technical vs. non-technical PM redux · Continous improvement for project professionals? &lt;b&gt;...&lt;/b&gt;&lt;br /&gt;&lt;span style="color:green;"&gt; &lt;a style="color: green;" href="http://www.betterprojects.net/" title="http://www.betterprojects.net/" target="_blank"&gt; Better Projects - http://www.betterprojects.net/&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-9024477117148344491?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7j0TgKgJY3GiR-0Wqog-LAWemgo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7j0TgKgJY3GiR-0Wqog-LAWemgo/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/7j0TgKgJY3GiR-0Wqog-LAWemgo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7j0TgKgJY3GiR-0Wqog-LAWemgo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/hu5mYF79sQU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/9024477117148344491/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=9024477117148344491" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/9024477117148344491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/9024477117148344491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/hu5mYF79sQU/some-of-my-agile-programming-links_10.html" title="Some of my Agile Programming Links" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/02/some-of-my-agile-programming-links_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcEQXY5eyp7ImA9WxVQFUo.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-8351233829480377075</id><published>2009-02-02T07:00:00.000-05:00</published><updated>2009-02-02T07:00:00.823-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T07:00:00.823-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile" /><title>Some of my Agile Programming Links</title><content type="html">&lt;p&gt;&lt;a href="http://agilesoftwaredevelopment.com/leanprinciples"&gt;Seven Principles of Lean Software &lt;b&gt;Development&lt;/b&gt; | &lt;b&gt;Agile&lt;/b&gt; Software &lt;b&gt;...&lt;/b&gt;&lt;/a&gt;    &lt;br /&gt;Lean Software &lt;b&gt;Development&lt;/b&gt; subsequently gave birth to &lt;b&gt;Agile&lt;/b&gt; Software &lt;b&gt;Development&lt;/b&gt; methods and its main branches like Scrum or Crystal Clear. For many people who know the subject &lt;b&gt;Agile&lt;/b&gt; is just another word for Lean or &lt;b&gt;...&lt;/b&gt;    &lt;br /&gt;&lt;a href="http://agilesoftwaredevelopment.com/"&gt;Agile Software Development - Comments - http://agilesoftwaredevelopment.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/2009/02/0902McMahon.html"&gt;STSC CrossTalk - Defense Acquisition Performance: Could Some &lt;b&gt;...&lt;/b&gt;&lt;/a&gt;    &lt;br /&gt;The problems with the Waterfall &lt;b&gt;Model&lt;/b&gt; and the challenges involved with evolutionary acquisition of defense systems have been well-chronicled. This article describes how &lt;b&gt;Agile&lt;/b&gt; techniques can be applied to address these challenges under today &amp;#8217;s defense &lt;b&gt;...&lt;/b&gt; Many &lt;b&gt;Agile development&lt;/b&gt; estimation techniques out-of-the-box don&amp;#8217;t scale well to large projects because they focus primarily on a bottom-up estimation approach, which is insufficient for large complex efforts [4]. &lt;b&gt;...&lt;/b&gt;    &lt;br /&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/"&gt;CrossTalk, The Journal of Defense... - http://www.stsc.hill.af.mil/crosstalk/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-8351233829480377075?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IPZTCNx1DsLZ_sablHKsJ55AbJk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPZTCNx1DsLZ_sablHKsJ55AbJk/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/IPZTCNx1DsLZ_sablHKsJ55AbJk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPZTCNx1DsLZ_sablHKsJ55AbJk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/LF-0pu9OoAA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/8351233829480377075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=8351233829480377075" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/8351233829480377075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/8351233829480377075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/LF-0pu9OoAA/some-of-my-agile-programming-links.html" title="Some of my Agile Programming Links" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/02/some-of-my-agile-programming-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcEQHwzeCp7ImA9WxVQEUk.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-6433854093604015080</id><published>2009-01-28T07:00:00.000-05:00</published><updated>2009-01-28T07:00:01.280-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-28T07:00:01.280-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>Some of my Links - Wednesday Jan 28 2009</title><content type="html">&lt;p&gt;&lt;a href="http://indiandotnet.wordpress.com/2009/01/26/serialization-de-serialization-try-it/"&gt;Serialization &amp;amp; De-serialization try it &amp;#171; Asp.net &amp;amp; &lt;b&gt;Sql server&lt;/b&gt; fundas&lt;/a&gt;     &lt;br /&gt;Asp.net &amp;amp; &lt;b&gt;Sql server&lt;/b&gt; fundas &lt;b&gt;...&lt;/b&gt; Category Cloud. ajax Asp.net JQery LINQ Serialization Silverlight &lt;b&gt;Sql server&lt;/b&gt; Uncategorized XML. Top Clicks. None. Top Posts. &lt;b&gt;Microsoft&lt;/b&gt; visual studio latest version 2010 &lt;b&gt;...&lt;/b&gt;     &lt;br /&gt;&lt;a href="http://indiandotnet.wordpress.com/"&gt;Asp.net &amp;amp; Sql server fundas - http://indiandotnet.wordpress.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imfreeware.com/sqlfactory-lite-free-P13492.html"&gt;SQLFactory Lite(Free) 4.8 Free Download - SQLFactory is an IDE for &lt;b&gt;...&lt;/b&gt;&lt;/a&gt;    &lt;br /&gt;Free Download SQLFactory Lite(Free). SQLFactory is an IDE for &lt;b&gt;Microsoft SQL Server&lt;/b&gt; &amp;amp; MSDE.    &lt;br /&gt;&lt;a href="http://www.imfreeware.com/"&gt;imFreeware.com - http://www.imfreeware.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://conceptdev.blogspot.com/2009/01/calculating-distance-in-c-with.html"&gt;ConceptDev (Craig Dunn's blog): Calculating distance in C# (with &lt;b&gt;...&lt;/b&gt;&lt;/a&gt;    &lt;br /&gt;By Craig Dunn    &lt;br /&gt;which is true -- however with the release of &lt;b&gt;SQL Server&lt;/b&gt; 2008 &lt;b&gt;Microsoft&lt;/b&gt; has made available the redistributable &lt;b&gt;Microsoft&lt;/b&gt;.SqlServer.Types assembly that contains the SqlGeography and SqlGeometry types. Within &lt;b&gt;SQL Server&lt;/b&gt; 2008 this enables &lt;b&gt;...&lt;/b&gt;    &lt;br /&gt;&lt;a href="http://conceptdev.blogspot.com/"&gt;ConceptDev (Craig Dunn's blog) - http://conceptdev.blogspot.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.jtbworld.com/2009/01/sql-server-2008-free-e-book.html"&gt;JTB World Blog: &lt;b&gt;SQL Server&lt;/b&gt; 2008 Free E-Book&lt;/a&gt;    &lt;br /&gt;&lt;b&gt;SQL Server&lt;/b&gt; 2008 Free E-Book &amp;#183; Twitter trial &amp;#183; AutoCAD Bonus Packs not for the verticals&amp;#8230;yet &amp;#183; Revit database integration &amp;#183; Carol Bartz essay from 1997 &amp;#183; What Windows says about DWG &amp;#183; Vista time &amp;#183; Saving Easter Island &lt;b&gt;...&lt;/b&gt;    &lt;br /&gt;&lt;a href="http://blog.jtbworld.com/"&gt;JTB World Blog - http://blog.jtbworld.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-6433854093604015080?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XVsKHT8V6fYACU4WB-NV-WGLYVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XVsKHT8V6fYACU4WB-NV-WGLYVw/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/XVsKHT8V6fYACU4WB-NV-WGLYVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XVsKHT8V6fYACU4WB-NV-WGLYVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/-rQ7xCt1uek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/6433854093604015080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=6433854093604015080" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6433854093604015080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/6433854093604015080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/-rQ7xCt1uek/some-of-my-links-wednesday-jan-28-2009.html" title="Some of my Links - Wednesday Jan 28 2009" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/some-of-my-links-wednesday-jan-28-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8EQXg-cSp7ImA9WxVQEEw.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-828643210684408589</id><published>2009-01-26T18:00:00.000-05:00</published><updated>2009-01-26T18:00:00.659-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T18:00:00.659-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Making Money" /><category scheme="http://www.blogger.com/atom/ns#" term="Automated" /><title>Another Content Trick - Partial Success</title><content type="html">&lt;p&gt;It would seem that this trick 1/2 works. I'll provide more details down the road. It's still semi-manual but I can do some planning.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-828643210684408589?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W2AAhMswPmxHjdIV3KaQGTUcODs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W2AAhMswPmxHjdIV3KaQGTUcODs/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/W2AAhMswPmxHjdIV3KaQGTUcODs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W2AAhMswPmxHjdIV3KaQGTUcODs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/rhc32HuBwZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/828643210684408589/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=828643210684408589" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/828643210684408589?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/828643210684408589?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/rhc32HuBwZ0/another-content-trick-partial-success.html" title="Another Content Trick - Partial Success" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/another-content-trick-partial-success.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMEQXk-fyp7ImA9WxVRF0Q.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-2104331991441327109</id><published>2009-01-24T07:00:00.000-05:00</published><updated>2009-01-24T07:00:00.757-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-24T07:00:00.757-05:00</app:edited><title>Blog Monetization Strategies E-book</title><content type="html">&lt;a title="View Blog Monetization Strategies E-book on Scribd" href="http://www.scribd.com/doc/2180236/Blog-Monetization-Strategies-Ebook" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Blog Monetization Strategies E-book&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_721842819643514" name="doc_721842819643514" 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=2180236&amp;access_key=key-2dwpvu6fsw45ok2yajfc&amp;page=1&amp;version=1&amp;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=2180236&amp;access_key=key-2dwpvu6fsw45ok2yajfc&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_721842819643514_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;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/eBooks/Business?style=text-decoration%3A+underline%3B"&gt;Business&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/online" style="text-decoration: underline;"&gt;online&lt;/a&gt;              &lt;a href="http://www.scribd.com/tag/money" style="text-decoration: underline;"&gt;money&lt;/a&gt;       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-2104331991441327109?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VjxH1wh21VoMSqTJ8eXsLZurpW0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjxH1wh21VoMSqTJ8eXsLZurpW0/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/VjxH1wh21VoMSqTJ8eXsLZurpW0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjxH1wh21VoMSqTJ8eXsLZurpW0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/wnZ5OGnJavA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/2104331991441327109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=2104331991441327109" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2104331991441327109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2104331991441327109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/wnZ5OGnJavA/blog-monetization-strategies-e-book.html" title="Blog Monetization Strategies E-book" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/blog-monetization-strategies-e-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQXw8fSp7ImA9WxVRF0w.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-2063908002558721115</id><published>2009-01-23T07:00:00.000-05:00</published><updated>2009-01-23T07:00:00.275-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-23T07:00:00.275-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Making Money" /><category scheme="http://www.blogger.com/atom/ns#" term="Automated" /><title>Another Content Trick</title><content type="html">&lt;p&gt;In my never-ending quest to find a way to provide content for my blog while trying to get as many people to view it in order to generate AdSense revenue. I have found yet another possibility which I will not set up and test.&lt;/p&gt;  &lt;p&gt;If this method is successful, I will then decide if I keep it for myself or if I begin to sell it to the general public.&lt;/p&gt;  &lt;p&gt;We shall see, is this the one?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-2063908002558721115?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pVM4_rPpLR1OAQoMzIasHxn4yFE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pVM4_rPpLR1OAQoMzIasHxn4yFE/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/pVM4_rPpLR1OAQoMzIasHxn4yFE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pVM4_rPpLR1OAQoMzIasHxn4yFE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/DWup_ssfPAk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/2063908002558721115/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=2063908002558721115" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2063908002558721115?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2063908002558721115?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/DWup_ssfPAk/another-content-trick.html" title="Another Content Trick" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/another-content-trick.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EEQXY_fCp7ImA9WxVRFk8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-769538024770247213</id><published>2009-01-22T07:00:00.000-05:00</published><updated>2009-01-22T07:00:00.844-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-22T07:00:00.844-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile" /><title>Agile Development Model</title><content type="html">&lt;div class="gmail_quote"&gt;&lt;div&gt;&lt;div style="font-family:sans-serif"&gt;&lt;p&gt;&lt;/p&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom:1em"&gt;&lt;a style="color:blue" href="http://blog.focustesting.com/post.aspx?id=07b2c1ba-ba75-4fa8-8000-cc76cc918be9" target="_blank"&gt;Differences between Scrum &lt;b&gt;model&lt;/b&gt; and eXtreme Programming&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; &lt;span style="color:#666666;"&gt;By F-Log Admin &lt;/span&gt;&lt;br /&gt;SCRUM &lt;b&gt;model&lt;/b&gt; is an &lt;b&gt;agile development model&lt;/b&gt; that emphasizes more on project management and talks about regular meeting which status updates and goals accomplished and targets planned for the next business day. A scrum &lt;b&gt;model&lt;/b&gt; is goal based &lt;b&gt;...&lt;/b&gt;&lt;br /&gt; &lt;span style="color:green;"&gt; &lt;a style="color:green" href="http://blog.focustesting.com/" title="http://blog.focustesting.com/" target="_blank"&gt; FOCUS Testing - Blog - http://blog.focustesting.com/&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-bottom:1em"&gt; &lt;a style="color:blue" href="http://agilesoftwaredevelopment.com/blog/janusz-gorycki/dont-use-scrum" target="_blank"&gt; Don't Use Scrum | &lt;b&gt;Agile&lt;/b&gt; Software &lt;b&gt;Development&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; Right now, &lt;b&gt;agile&lt;/b&gt; methodologies have just become mainstream, having relegated the previous &lt;b&gt;models&lt;/b&gt; to the status of the 'flat earth' theories. Which is precisely the moment when they are doomed to start breaking in more and more &lt;b&gt;...&lt;/b&gt;&lt;br /&gt; &lt;span style="color:green;"&gt; &lt;a style="color:green" href="http://agilesoftwaredevelopment.com/" title="http://agilesoftwaredevelopment.com/" target="_blank"&gt; Agile Software Development - Comments - http://agilesoftwaredevelopment.com/&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-bottom:1em"&gt; &lt;a style="color:blue" href="http://www.embeddedstar.com/weblog/2009/01/18/seven-habits/" target="_blank"&gt; Seven Ways to Become a Highly Effective Developer ~ Embedded Star&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; They recharge their batteries by taking great vacations and by having outside hobbies and activities. Here are a few of our favorite &lt;b&gt;development&lt;/b&gt; books:. &lt;b&gt;Agile&lt;/b&gt; Project Management with Scrum (Microsoft Professional) &lt;b&gt;...&lt;/b&gt;&lt;br /&gt; &lt;span style="color:green;"&gt; &lt;a style="color:green" href="http://www.embeddedstar.com/weblog/" title="http://www.embeddedstar.com/weblog/" target="_blank"&gt; Embedded Star - http://www.embeddedstar.com/weblog/&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-bottom:1em"&gt; &lt;a style="color:blue" href="http://fromapitosolution.blogspot.com/2009/01/peer-reviews-in-software-development.html" target="_blank"&gt; Java, ERP, Software Architecture: Peer Reviews In Software &lt;b&gt;Development&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; &lt;span style="color:#666666;"&gt;By Ibrahim Levent &lt;/span&gt;&lt;br /&gt;We have accepted most suitable practices of the software &lt;b&gt;development&lt;/b&gt; and project management (ERP implementation) methodologies for our team. (i.e. XP, &lt;b&gt;Agile&lt;/b&gt;, RUP, ASAP and Software Factories). Disclaimer: The opinions expressed here &lt;b&gt;...&lt;/b&gt;&lt;br /&gt; &lt;span style="color:green;"&gt; &lt;a style="color:green" href="http://fromapitosolution.blogspot.com/" title="http://fromapitosolution.blogspot.com/" target="_blank"&gt; Java, ERP, Software Architecture - http://fromapitosolution.blogspot.com/&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-bottom:1em"&gt; &lt;a style="color:blue" href="http://bradfordcross.blogspot.com/2009/01/buddha-and-popper-processless-process.html" target="_blank"&gt; On the Gnarl Side: Buddha and Popper: The Processless Process&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt; &lt;span style="color:#666666;"&gt;By Bradford.N.Cross &lt;/span&gt;&lt;br /&gt;&lt;b&gt;Agile&lt;/b&gt; software &lt;b&gt;development&lt;/b&gt; processes seem to bring about an especially heated debate among self-proclaimed adherents of waterfall, &lt;b&gt;agile&lt;/b&gt;, anti-&lt;b&gt;agile&lt;/b&gt;, lean, and "who needs process." In the &lt;b&gt;agile&lt;/b&gt; world, there has been a recent boom in &lt;b&gt;...&lt;/b&gt;&lt;br /&gt; &lt;span style="color:green;"&gt; &lt;a style="color:green" href="http://bradfordcross.blogspot.com/" title="http://bradfordcross.blogspot.com/" target="_blank"&gt; On the Gnarl Side - http://bradfordcross.blogspot.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-769538024770247213?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Fl08sm9ZYbAt485OmTk2XvMDHc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Fl08sm9ZYbAt485OmTk2XvMDHc/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/7Fl08sm9ZYbAt485OmTk2XvMDHc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Fl08sm9ZYbAt485OmTk2XvMDHc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/RXzkO77YARE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/769538024770247213/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=769538024770247213" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/769538024770247213?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/769538024770247213?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/RXzkO77YARE/agile-development-model.html" title="Agile Development Model" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/agile-development-model.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UEQH45cCp7ImA9WxVRFU4.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-1660975743776996536</id><published>2009-01-21T07:00:00.000-05:00</published><updated>2009-01-21T07:00:01.028-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-21T07:00:01.028-05:00</app:edited><title>Working With ClickBank 2008 Version</title><content type="html">&lt;a title="View Working With ClickBank 2008 Version on Scribd" href="http://www.scribd.com/doc/10324408/Working-With-ClickBank-2008-Version" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Working With ClickBank 2008 Version&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_307376002587777" name="doc_307376002587777" 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=10324408&amp;access_key=key-1cqg6xggk4q1xhoyyyxu&amp;page=1&amp;version=1&amp;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=10324408&amp;access_key=key-1cqg6xggk4q1xhoyyyxu&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_307376002587777_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;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/HowTo-Guides-DIY/?style=text-decoration%3A+underline%3B"&gt;How-To Guides &amp; DIY&lt;/a&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-1660975743776996536?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l5AAIYeSIPns0V8M8tKMAvWBMS8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l5AAIYeSIPns0V8M8tKMAvWBMS8/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/l5AAIYeSIPns0V8M8tKMAvWBMS8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l5AAIYeSIPns0V8M8tKMAvWBMS8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/P_JQIyB15bA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/1660975743776996536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=1660975743776996536" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1660975743776996536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/1660975743776996536?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/P_JQIyB15bA/working-with-clickbank-2008-version.html" title="Working With ClickBank 2008 Version" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/working-with-clickbank-2008-version.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEEQXY8fyp7ImA9WxVREUQ.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-2329419642982198443</id><published>2009-01-17T07:00:00.000-05:00</published><updated>2009-01-17T07:00:00.877-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-17T07:00:00.877-05:00</app:edited><title>MS SQL Server 2005 - Overview of Features</title><content type="html">&lt;a title="View MS SQL Server 2005 on Scribd" href="http://www.scribd.com/doc/2580339/MS-SQL-Server-2005" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;MS SQL Server 2005&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_9536190839639" name="doc_9536190839639" 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=2580339&amp;access_key=key-11cjx4m02967a9241td6&amp;page=1&amp;version=1&amp;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=2580339&amp;access_key=key-11cjx4m02967a9241td6&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_9536190839639_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;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:                &lt;a href="http://www.scribd.com/tag/2005" style="text-decoration: underline;"&gt;2005&lt;/a&gt;              &lt;a href="http://www.scribd.com/tag/overview" style="text-decoration: underline;"&gt;overview&lt;/a&gt;       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-2329419642982198443?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jHT3Dz8nVAwTcTJojiZVCcDeJ4c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jHT3Dz8nVAwTcTJojiZVCcDeJ4c/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/jHT3Dz8nVAwTcTJojiZVCcDeJ4c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jHT3Dz8nVAwTcTJojiZVCcDeJ4c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/NSoroSGbH5Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/2329419642982198443/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=2329419642982198443" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2329419642982198443?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/2329419642982198443?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/NSoroSGbH5Y/ms-sql-server-2005-overview-of-features.html" title="MS SQL Server 2005 - Overview of Features" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/ms-sql-server-2005-overview-of-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8EQHw4eSp7ImA9WxVREE8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-4391787049860908043</id><published>2009-01-15T07:00:00.000-05:00</published><updated>2009-01-15T07:00:01.231-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-15T07:00:01.231-05:00</app:edited><title>Web 2.0 Ideas For Educators</title><content type="html">&lt;a title="View 100 Web 2.0 Ideas for Educators on Scribd" href="http://www.scribd.com/doc/3273/100-Web-20-Ideas-for-Educators" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;100 Web 2.0 Ideas for Educators&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_94820715016471" name="doc_94820715016471" 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=3273&amp;amp;access_key=94e7chjjt1cqw&amp;amp;page=1&amp;amp;version=1&amp;amp;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=3273&amp;amp;access_key=94e7chjjt1cqw&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_94820715016471_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;div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"&gt;    &lt;a href="http://www.scribd.com/upload" style="text-decoration: underline;"&gt;Publish at Scribd&lt;/a&gt; or &lt;a href="http://www.scribd.com/browse" style="text-decoration: underline;"&gt;explore&lt;/a&gt; others:            &lt;a href="http://www.scribd.com/browse/Academic-Work/?style=text-decoration%3A+underline%3B"&gt;Academic Work&lt;/a&gt;              &lt;a href="http://www.scribd.com/browse/eBooks/Education?style=text-decoration%3A+underline%3B"&gt;Education&lt;/a&gt;                  &lt;a href="http://www.scribd.com/tag/Technology-Web-20" style="text-decoration: underline;"&gt;Technology-Web-20&lt;/a&gt;       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-4391787049860908043?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LcQeWQnNPv3xAhtqL-x4vvK1QXo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcQeWQnNPv3xAhtqL-x4vvK1QXo/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/LcQeWQnNPv3xAhtqL-x4vvK1QXo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LcQeWQnNPv3xAhtqL-x4vvK1QXo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/-f9kygaalhU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/4391787049860908043/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=4391787049860908043" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4391787049860908043?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/4391787049860908043?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/-f9kygaalhU/web-20-ideas-for-educators.html" title="Web 2.0 Ideas For Educators" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/web-20-ideas-for-educators.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIAQng8eyp7ImA9WxVSFE8.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-9221178218380948252</id><published>2009-01-08T07:00:00.000-05:00</published><updated>2009-01-08T09:55:43.673-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T09:55:43.673-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Review" /><title>My Newest Phone - HTC Touch Diamond</title><content type="html">&lt;p&gt;My newest phone is the HTC Touch Diamond, I've been using it for the last 10 days and now have a pretty solid idea of how it works.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.htc.com/www/product/touchdiamond/overview.html"&gt;http://www.htc.com/www/product/touchdiamond/overview.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First off the phone looks slick, and for the most parts it performs quite well. The sound quality is average, the interface is very good (if sometimes a bit sluggish) and the features are perfectly adapted for me. I use an exchange server at work and I was able to get it to sync on the 2nd try (my last attempt with a windows phone was random success after attempt #8).&lt;/p&gt;  &lt;p&gt;The phone is very versatile and is what I would expect from a windows mobile phone. Packed with programs and features and very easy to learn. No nonsense when it comes to using MP3s as rings (some phones have a problem with that, go figure) and it also opens up the possibility for me to write apps for it.&lt;/p&gt;  &lt;p&gt;My biggest down with the phone itself is the battery. If you leave everything running on the phone (Data, Phone, WiFi) then a fully charged battery will usually die within 12-16 hours, sometimes even less. You have to very carefully tweak and monitor what the phone does which becomes a bit of a manual process. Make sure that the camera application isn't running in the background (biggest battery hog) and that WiFi isn't running when you aren't using it.&lt;/p&gt;  &lt;p&gt;Otherwise, it's a very nice phone full of possibilities.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-9221178218380948252?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5xqY25FET2fNstYGhdeW7K0cM0U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5xqY25FET2fNstYGhdeW7K0cM0U/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/5xqY25FET2fNstYGhdeW7K0cM0U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5xqY25FET2fNstYGhdeW7K0cM0U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/Czw5rDtio6M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/9221178218380948252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=9221178218380948252" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/9221178218380948252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/9221178218380948252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/Czw5rDtio6M/my-newest-phone-htc-touch-diamond.html" title="My Newest Phone - HTC Touch Diamond" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/my-newest-phone-htc-touch-diamond.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UEQH44cCp7ImA9WxVTGEw.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-7492772530658732293</id><published>2009-01-01T07:00:00.000-05:00</published><updated>2009-01-01T07:00:01.038-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-01T07:00:01.038-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Thought" /><category scheme="http://www.blogger.com/atom/ns#" term="Home" /><title>The Evolution Of Control - How Computers Are Slowly Taking Away Your Freedom And Privacy</title><content type="html">&lt;p&gt;I remember in the early days of VCRs, I could actually (but never would, because that is illegal) connect two VCRs together in order to copy a commercial onto my own tape so that I could keep it without purchasing it.&lt;/p&gt;  &lt;p&gt;While I understand that copying movies is not cool, robs someone of their hard-earned money and illegal. I'm making the point that you used to be able to do that if you really wanted to.&lt;/p&gt;  &lt;p&gt;Today, things are very different:&lt;/p&gt;  &lt;p&gt;Try inserting a DVD in your computer and try to copy it, watch as the software itself will let you know that you can't do that. Or it won't even show you the option, that's the polite way of letting you know that you can't do that.&lt;/p&gt;  &lt;p&gt;You can't even connect two modern VCRs together and copy a movie - won't happen.&lt;/p&gt;  &lt;p&gt;Now, let's step into the realm of the legal and reasonable: According to the law, you are entitled (here in Canada) to copy commercial content for personal purposes. In other words, if I wanted to, I'm legally entitled to copy a DVD onto my computer so that I can watch it from my hard drive. I can also copy a DVD onto another DVD and use the copy (the backup) and give that one to my kids so that they don't wreck the original.&lt;/p&gt;  &lt;p&gt;But the computer doesn't make that distinction. It controls my rights to the point where it's not letting me do something that I should be able to.&lt;/p&gt;  &lt;p&gt;Here's another example: Did you know that automobiles today have a black box inside of them that records information such as acceleration, speed and brakes? You can get into a car accident and an expert can go into your car and then use this black box to determine how fast you were going, when you hit the brakes, etc. Your car can become a witness against you in court should the situation warrant it. The law enforcement agencies, can now use your own property against you.&lt;/p&gt;  &lt;p&gt;Let's go a little bit deeper: did you know that if you leave your front door unlocked then a police officer can walk into your home? The door is unlocked, they are not committing a crime by simply walking in and checking out the place because this could be probable cause. Also, it shows that you aren't specifically denying access to your home. That last sentence is key...&lt;/p&gt;  &lt;p&gt;Laws are ancient, they don't evolve as quickly as technology. Which means that your wireless network falls under the same legal umbrella as your home. If you WiFi network is not encrypted and/or accessible without a password/key then anyone can legally tap into it for any purpose (your front door is unlocked) and if your computer(s) on the network are also unprotected, they can also legally search your computer files, from outside the house, without your knowledge.&lt;/p&gt;  &lt;p&gt;Technology is a great thing, but it's out of control&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-7492772530658732293?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5VD9RY74SYlmzMEVj9DbwYcDsAM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5VD9RY74SYlmzMEVj9DbwYcDsAM/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/5VD9RY74SYlmzMEVj9DbwYcDsAM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5VD9RY74SYlmzMEVj9DbwYcDsAM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/7Ahb8AdVm5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/7492772530658732293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=7492772530658732293" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7492772530658732293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/7492772530658732293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/7Ahb8AdVm5k/evolution-of-control-how-computers-are.html" title="The Evolution Of Control - How Computers Are Slowly Taking Away Your Freedom And Privacy" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://karell.blogspot.com/2009/01/evolution-of-control-how-computers-are.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMEQXY6fip7ImA9WxVTEk0.&quot;"><id>tag:blogger.com,1999:blog-21920524.post-5631542800065145932</id><published>2008-12-25T07:00:00.000-05:00</published><updated>2008-12-25T07:00:00.816-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-25T07:00:00.816-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Video" /><title>Converting from FLV to a Rockchip AVI Format</title><content type="html">&lt;p&gt;I recently got myself an MP4 player from China, the unit is fair enough but I kept having problem converting FLV to it's own little AVI format. Quite a nuisance as I had to do multiple passes (one to AVI, then it's AVI through the supplied software).&lt;/p&gt;  &lt;p&gt;Here is a picture of the device that I got from a China-based eBay reseller:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_mWpm9WEyBsA/SVJLE34UXUI/AAAAAAAAAJg/pf3Dlyofs7A/s1600-h/DSCN3276%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="175" alt="" src="http://lh6.ggpht.com/_mWpm9WEyBsA/SVJLFcG6rsI/AAAAAAAAAJk/s9HaZKS7eaA/DSCN3276%5B1%5D_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finally, I got onto a forum and found a solution.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://skss.learnfree.eu/" target="_blank"&gt;viDrop&lt;/a&gt; is an excellent software that basically writes the conversion details for you and it's has presets for the Rockchip format. I recommend the Generic Rockship (medium) preset.&lt;/p&gt;  &lt;p&gt;The site is not in english, but if you scroll and keep looking right you will see VIDROP in bit red letters, clicking on it will trigger the .MSI download.&lt;/p&gt;  &lt;p&gt;For your convenience, here is the script that I use to convert from FLV to my Rockchip AVI format using mencoder:&lt;/p&gt;  &lt;p&gt;mencoder &amp;quot;c:\input.flv&amp;quot; -idx&amp;#160; -forceidx -ovc xvid -xvidencopts bitrate=300:me_quality=6:max_bframes=0:quant_type=h263:turbo:nochroma_me:notrellis:vhq=0 -vf-add scale=-2:240 -vf-add crop=320:240 -vf-add expand=320:240:-1:-1:1&amp;#160; -vf-add eq2=1.1:1:0:1.2::::&amp;#160; -ofps 22 -oac twolame -twolameopts br=112:mode=stereo -af volnorm=2:0.25 -af channels=2 -srate 44100 -o &amp;quot;c:\output.avi&amp;quot;&amp;#160;&amp;#160; -vf-add harddup -noodml -of avi&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21920524-5631542800065145932?l=karell.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2aYP4O2uy4UFnHEM5nxBcjw7GLA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2aYP4O2uy4UFnHEM5nxBcjw7GLA/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/2aYP4O2uy4UFnHEM5nxBcjw7GLA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2aYP4O2uy4UFnHEM5nxBcjw7GLA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FightingTheMachine/~4/T_g6h1MqSJ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://karell.blogspot.com/feeds/5631542800065145932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21920524&amp;postID=5631542800065145932" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/5631542800065145932?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21920524/posts/default/5631542800065145932?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/FightingTheMachine/~3/T_g6h1MqSJ0/converting-from-flv-to-rockchip-avi.html" title="Converting from FLV to a Rockchip AVI Format" /><author><name>Karell</name><uri>http://www.blogger.com/profile/17391663475287984045</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01556876301193668554" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://karell.blogspot.com/2008/12/converting-from-flv-to-rockchip-avi.html</feedburner:origLink></entry></feed>
