<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>BlackInkBottle's Ink</title><link>http://community.sgdotnet.org/blogs/blackinkbottles_ink/default.aspx</link><description>My silent war in search of the software and the systems that work.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 (Build: 30912.2823)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blackinkbottle" /><feedburner:info uri="blackinkbottle" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Microsoft's Search Strategy</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/DQ8fzVfK6zU/microsoft-s-search-strategy.aspx</link><pubDate>Sat, 11 Apr 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:224221</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=224221</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/04/11/microsoft-s-search-strategy.aspx#comments</comments><description>&lt;p&gt;This is the experiment. Randomly-selected participants are asked to score the quality of results from various search engines (the below details may contain some speculation).&lt;/p&gt;
&lt;p&gt;One group (A) are presented with results from different search engines but not told which search engine has generated the respective results. Results from Microsoft and Google are presented.&lt;br /&gt;Another group (B, or perhaps the same group at different time?) are told the results (which actually are generated from search engine X, or Microsoft) are by Google.&lt;/p&gt;
&lt;p&gt;This is &amp;quot;blind&amp;quot; experiment. Group A is considered to the control group of Group B (I think so). The result is interesting: for Group A, there is no noticeable difference observed for perceived quality of search result between Microsoft&amp;#39;s and Google&amp;#39;s; for Group B, the perceived quality of search result becomes greater by simply knowing they are from Google. (Story and some commentary is &lt;a href="http://blogs.wsj.com/digits/2009/04/08/microsoft-faces-branding-problem-in-effort-to-top-google/"&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It is this result that leads Microsoft to believe the branding is the root of the problem (rather than the search quality). In coming June Microsoft is said to launch its&amp;nbsp;rebranding&amp;nbsp;campaign&amp;nbsp;(for search) and the latest version of the search engine. The campaign is estimated to cost&amp;nbsp;$100million.&lt;/p&gt;
&lt;p&gt;Let us pause for a while.&lt;/p&gt;
&lt;p&gt;No doubt, Microsoft perhaps has some misstep in branding its various recent products (eg Live Messenger,&amp;nbsp;Live Search, www.live.com, Live Meeting, Live Search Maps, Windows Live ID, Office Live, Office Live Workspace, XBox Live and the list goes on), as written &lt;a href="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/05/05/Microsoft-Yahoo-Merger-Talked-Again_2C00_-Google-Opens-SEA-HQ-in-Singapore-.aspx"&gt;here&lt;/a&gt;&amp;nbsp;in 2007 May, &amp;quot;maybe Microsoft should really think hard on its branding strategy, Live is a boring word, a confusing world&amp;quot;. &lt;/p&gt;
&lt;p&gt;So branding is indeed overdue. However some possible names rumored on the Internet (including those codenames disclosed) are not so engaging:&lt;/p&gt;
&lt;p&gt;Kumo (codename)&lt;br /&gt;Kiev&amp;nbsp;&amp;nbsp;(codename)&lt;br /&gt;Bing&lt;br /&gt;Hook&lt;/p&gt;
&lt;p&gt;I will think of a lot of question marks (???) if any of them makes into the final champion. That might just create more trouble and confusion. Indeed it is difficult to incept a lasting brand. Many&amp;nbsp;succeeded, Youtube, Facebook; but a lot more became derailed. However, Microsoft need make sure she can afford the failures one after another.&lt;/p&gt;
&lt;p&gt;Second and more importantly, is the branding the root cause?&amp;nbsp;If the Group A tells no difference, why would people make a willing switch (if not given any other external force?)&amp;nbsp;It is difficult to break consumers&amp;#39; habit or preference of search engine (many tried and failed miserably), especially if the new comer does not produce any significant advantage and the old one does not make apparent fault.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the end, or a &amp;quot;iPod&amp;quot; is created when the others lack the branding (unlikely for search), or the proflieration and lock-in of inferior products (Microsoft has already done a few times, but not again, unlikely for search), or reaching a higher level or creating a new battle space. So there is no option but the third.&lt;/p&gt;
&lt;p&gt;Disclaimer: Btw, I am long on MSFT at the time of writing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=224221" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/DQ8fzVfK6zU" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/TechnologyBusiness/default.aspx">TechnologyBusiness</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/Temp/default.aspx">Temp</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/04/11/microsoft-s-search-strategy.aspx</feedburner:origLink></item><item><title>我喜欢这样的天气</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/OslWvznEkT8/224218.aspx</link><pubDate>Tue, 31 Mar 2009 16:05:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:224218</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=224218</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/04/01/224218.aspx#comments</comments><description>&lt;p&gt;&lt;span style="border-collapse:separate;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-family:&amp;#39;lucida grande&amp;#39;;color:#000000;"&gt;
&lt;div style="padding:0px 0px 10px;clear:none;line-height:14px;"&gt;&lt;span&gt;&amp;quot;我喜欢这样的天气，不是烈日盛夏，就是严冬酷寒，不是&lt;/span&gt;&lt;span style="padding:0px;display:block;float:left;margin-left:-10px;" class="word_break"&gt;&lt;/span&gt;倾盆大雨，就是风雪交加。&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;激烈对峙,强烈对比是他电影的一大特色.镜头的色彩,光&lt;/span&gt;&lt;span style="padding:0px;display:block;float:left;margin-left:-10px;" class="word_break"&gt;&lt;/span&gt;&lt;span&gt;影,场景构图, 人物构图无不为电影的气氛服务。&amp;quot;我在拍摄中习惯由手绘&lt;/span&gt;&lt;span style="padding:0px;display:block;float:left;margin-left:-10px;" class="word_break"&gt;&lt;/span&gt;&lt;span&gt;分镜开始.这个使脑海中的影像具体起来，手绘分镜应不断&lt;/span&gt;&lt;span style="padding:0px;display:block;float:left;margin-left:-10px;" class="word_break"&gt;&lt;/span&gt;&lt;span&gt;地做出修改，因为电影是有生命的&amp;quot;. 这个生命,我想,就是要把&amp;quot;人性的每一面都投射出来,最&lt;/span&gt;&lt;span style="padding:0px;display:block;float:left;margin-left:-10px;" class="word_break"&gt;&lt;/span&gt;难以用逻辑解释的部分&amp;quot;.&lt;/div&gt;
&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=224218" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/OslWvznEkT8" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/Films/default.aspx">Films</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/04/01/224218.aspx</feedburner:origLink></item><item><title>Once upon a time in America, once again</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/KwecsqVlgm8/once-upon-a-time-in-america-once-again.aspx</link><pubDate>Sat, 28 Mar 2009 07:03:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:224217</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=224217</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/03/28/once-upon-a-time-in-america-once-again.aspx#comments</comments><description>&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse:separate;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:14px;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-family:&amp;#39;lucida grande&amp;#39;;color:#000000;"&gt;I guess a poem about passage of time is better appreciated with more passage of time (230 minutes runtime)... I watched it numerical times and I found it short each time I watched it again :) Friendship, love, gain, loss, trust, betrayal. Even the musical score is stamped with lingering whisper of time. The title in Chinese is beautiful too: 美国往事, isn&amp;#39;t it.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=224217" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/KwecsqVlgm8" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/Films/default.aspx">Films</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2009/03/28/once-upon-a-time-in-america-once-again.aspx</feedburner:origLink></item><item><title>Refactoring of Thinking</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/itJEM8Duj1M/refactoring-of-thinking.aspx</link><pubDate>Sun, 23 Nov 2008 16:46:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:223923</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=223923</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/11/24/refactoring-of-thinking.aspx#comments</comments><description>&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;I have been quiet, rather, I have immersed myself in a lot of reading recently (most of them&amp;nbsp;belong to&amp;nbsp;very random subjects). &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;There is one related to software, &amp;ldquo;&lt;a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;Pragmatic Thinking &amp;amp; Learning &amp;ndash; Refactor Your Wetware&lt;/a&gt;&amp;rdquo; by Andy Hunt&amp;nbsp;(recommended by my colleague ty). It is a nice book, I would recommend it to anyone (particular software developer) who is interested in learning the limitation of our thinking. With the awareness of the limitations, you may improve the important thinking and learning skills, which would naturally lead to productivity and active and efficient discovery of unknown unknown.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Things can work, but not as good as if your thinking had been better. Learning can be fruitful, but not as effective as if we spend time tuning the skill of learning.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;The book has a strong dialect towards &amp;quot;software&amp;quot; in general. At the same time it takes many references or pointers from various other fields (healthcare, cognitive science, behavioral psychology, education theory, investment thoery etc) to give different perspectives and combine the ideas from those disparate fields.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;It discusses the importance of context, the growth pattern from novice to expert (Dreyfus model: novice, advanced beginner, competent, proficient and expert), the balance (or interplay) between logical (L-mode) and creative (R-mode), the (good or bad) habitual tendency of human mind (cognitive biases, generational affinity, personality tendencies). Given the above backdrop, Andy Hunt prescribed (in the convention of the &amp;ldquo;Pragmatic Series&amp;rdquo;) numerical ways and techniques to improve thinking and learning skills (learn deliberately, SMART, SQ3R, learn by teaching, gain experience, embrace error, manage focus, etc)&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;I like the discussion on context and the repeated assertion that context is the king. This is particularly relevant for the world of software development (from solution artchitecture, to feature design, to library design, to design of data structure and algorithms). Software traditionally emphasizes &amp;quot;encapsulation&amp;rdquo;. That is to allow nothing but different level of abstractions, or context. &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Taking an extended analogy, if every problem (low level or high level) is designated as a context, we essentially perform &amp;ldquo;context switch&amp;rdquo; within our brain. Our brain is similar to an OS. The OS should spend more time in crunching the context itself (solving the actual problem); rather in switching the context (the switching latency has to be measured in terms of retrieving and reloading of the entire working memory). When the context is fully loaded, we will decompose the problem into &amp;ldquo;system calls&amp;rdquo; which could be handled by the OS.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Therefore, important metrics of the OS are&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Latency of context switching (also discussed in &lt;a href="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/03/29/Thoughts-on-Recruitement-and-Interviewing-of-Technical-Role.aspx"&gt;this &lt;/a&gt;part article)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Clarity and maturity of &amp;ldquo;system calls&amp;rdquo; (organized experience)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Stability and reliability of OS (bugs in thinking or even in experience?)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;This OS is not open sourced, neither could be virtualized, it belongs to your and me, ourselves. However, it does allow to insert breakpoint for some verification, and allow to perform a core dump for introspection. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;After all, there is only one rule, there is no substitute for thinking, and there is no substitute for improving our thinking.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=223923" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/itJEM8Duj1M" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/11/24/refactoring-of-thinking.aspx</feedburner:origLink></item><item><title>Reflexivity suggests</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/uK5s8XWQod8/reflexivity-suggests.aspx</link><pubDate>Sat, 01 Nov 2008 17:20:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:224216</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=224216</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/11/02/reflexivity-suggests.aspx#comments</comments><description>&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse:separate;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:14px;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-family:&amp;#39;lucida grande&amp;#39;;color:#000000;"&gt;Reflexivity suggests feedback loop between &amp;quot;cognitive function&amp;quot; (analogy: sensor) and &amp;quot;manipulative function&amp;quot; (analogy: control). However, in social science or in financial market, the &amp;quot;cognitive function&amp;quot; is flawed due to the imperfect knowledge of participants. As the sensor is not reliable, any attempt for the &amp;quot;manipulative function&amp;quot; to form a negative feedback loop relying on rational expectations (such that market reaches equilibrium postulated by economic theory) will not produce reliable control, not to mention that the control is formed collectively but totally uncoordinated. We may end up with a positive feedback loop, when that happens and when it sustains, we have crisis towards the end of an instable system.&lt;br /&gt;&lt;br /&gt;2008.11.02, reading of The New Paradigm for Financial Markets&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=224216" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/uK5s8XWQod8" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/11/02/reflexivity-suggests.aspx</feedburner:origLink></item><item><title>When the ideology falls</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/a37_2WoTlHI/when-the-ideology-falls.aspx</link><pubDate>Sat, 25 Oct 2008 10:16:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:224215</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=224215</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/10/25/when-the-ideology-falls.aspx#comments</comments><description>&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse:separate;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:14px;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-family:&amp;#39;lucida grande&amp;#39;;color:#000000;"&gt;When the ideology falls, it crashes. &amp;quot;I made a mistake in presuming that the self-interests of organizations, specifically banks and others, were such as that they were best capable of protecting their own shareholders and their equity in the firms...&amp;quot; (Greenspan, Oct 24 2008) The ideology of free-market capitalism is questioned (or rather sadly, trialed), but who is to question the &amp;quot;greed&amp;quot; of all the contributors? 利令智昏, again.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=224215" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/a37_2WoTlHI" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/10/25/when-the-ideology-falls.aspx</feedburner:origLink></item><item><title>Google's utility computing</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/DWQfCIpAeXQ/Google_2700_s-utility-computing.aspx</link><pubDate>Wed, 28 May 2008 15:02:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:218598</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=218598</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/05/28/Google_2700_s-utility-computing.aspx#comments</comments><description>&lt;p&gt;Utility computing, even now still at their&amp;nbsp;first&amp;nbsp;few steps (of thousand miles, such as &lt;a href="http://sgdotnet.org/blogs/blackinkbottles_ink/default.aspx"&gt;Amazon&amp;#39;s&lt;/a&gt;), looks to&amp;nbsp;be one destructive force of the future.&lt;/p&gt;
&lt;p&gt;Google has made available their utility computing infrastructure too:&amp;nbsp;Google App Engine &lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html"&gt;http://code.google.com/appengine/docs/whatisgoogleappengine.html&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=218598" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/DWQfCIpAeXQ" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/TechnologyBusiness/default.aspx">TechnologyBusiness</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/05/28/Google_2700_s-utility-computing.aspx</feedburner:origLink></item><item><title>Kopi Syntax</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/ZQinWx-nSY8/Kopi-Syntax.aspx</link><pubDate>Thu, 08 May 2008 02:24:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:201538</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=201538</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/05/08/Kopi-Syntax.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;&amp;quot;Kopi is the next generation multi-purpose service-oriented universal programming langage for rapidly developing software in shortest possible time at cost of fractions of otherwise man-light-year efforts.&amp;quot; &lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_uv3pco3FPjM/R_T-PJAeZiI/AAAAAAAAAaE/vPhr8Ej4qJM/s1600-h/Kopi.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5185048607079687714" style="display:block;margin:0px auto 10px;cursor:hand;text-align:center;" src="http://bp0.blogger.com/_uv3pco3FPjM/R_T-PJAeZiI/AAAAAAAAAaE/vPhr8Ej4qJM/s320/Kopi.png" border="0" alt="" width="133" height="192" /&gt;&lt;/a&gt; Oh...?! Well, in fact Kopi is just to help me and (hopefully) you order Kopi in Kopi shops (Kopi is the blended coffee in Singapore). &lt;br /&gt;&lt;br /&gt;The first paragraph is also a &amp;quot;typical&amp;quot; sentence you can find in many bid documents. I am involved in writing one at this moment. Deadline rings yet my colleagues and I find ourselves from time to time doing anything else but working on the docs (sounds familiar?!)&lt;br /&gt;&lt;br /&gt;The below resulted from an after-lunch session when the inspirations of writing are &amp;quot;at valleys&amp;quot;: we managed to work out the syntax for ordering Kopi on the whiteboard. &lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;O (Hokkien)&lt;/td&gt;&lt;td&gt;Gao (Hokkien)&lt;/td&gt;&lt;td&gt;Siew3 Tai(Cantonese)&lt;/td&gt;&lt;td&gt;Geh Teng(Hokkien)&lt;/td&gt;&lt;td&gt;C (English)&lt;/td&gt;&lt;td&gt;Kosong(Malay)&lt;/td&gt;&lt;td&gt;Peng(Hokkien)&lt;/td&gt;&lt;td&gt;Halia(Malay) &lt;/td&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Water&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Less&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Coffee&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;More&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Condense Milk&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Evaporated Milk&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sugar&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Less&lt;/td&gt;&lt;td&gt;More&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ice&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ginger&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;Credit also goes to oc and at. &lt;br /&gt;&lt;br /&gt;The rule of thumb is that you can combine any column from the header, as long as there are no two columns having conflicting row entries. &lt;br /&gt;&lt;br /&gt;eg Kopi O Gao Siew Tai is coffee black (no milk), thicker (less water, more coffee) and less sugar! &lt;br /&gt;eg Kopi Siew Tai Kosong means &amp;quot;syntax error&amp;quot;!&lt;/p&gt;&lt;p&gt;[Post started on Apr 03, published on May 08, upon return of business trip]&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=201538" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/ZQinWx-nSY8" height="1" width="1"/&gt;</description><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/05/08/Kopi-Syntax.aspx</feedburner:origLink></item><item><title>Thoughts on Recruitment and Interviewing of Technical Role</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/XmpoNIGPdKY/Thoughts-on-Recruitement-and-Interviewing-of-Technical-Role.aspx</link><pubDate>Sat, 29 Mar 2008 05:57:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:199649</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=199649</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/03/29/Thoughts-on-Recruitement-and-Interviewing-of-Technical-Role.aspx#comments</comments><description>&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Recruitment is an extremely important (if not decisive) factor to the success of a project. This is very true for software project too and some even go to the extend to say that the success or otherwise of a project is determined on the first day the project recruits its full team. The significance could be partially attributed to the unique nature of software related work. I always believe that working with software requires the meticulousness, being analytical towards details and disciplines from the spirit of engineering, yet it also allows the freedom to create without fear of criticism and allows you to give lasting impressions to your audience (ie your user or another software). It is this nature and its implied demanding that makes the recruitment more difficult.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;This suggests that a good candidate must possess both traits, analytical problem-solving skill in engineering and capacity to originate creativity and develop useful/practical design. A good candidate has a balanced ratio of mix and intuitiveness of each. Whether there is an magic ratio number is not as important but there must be minimum of each component to allow appreciation of both worlds at the same time - indeed they complement each other. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Interviewing candidates is a very complicated and dynamic process and requires more than just casual thought to make it right. Screening of technical talent for software project requires looking at both hard technical skills (fluency in tools of trade and technologies) and soft technical skills (capability to decompose problem and design). In the case if the role has to lead the project, it requires also the aptitude to communicate effectively to different kinds of people (team members, management, existing customers, prospective customers, marketing/sales forces): technical communication skills.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;It is usually easier to determine the level of hard technical skill, by asking the type of black/white technical questions surrounding the topic (programming language, algorithm, technologies). Ideally we should reasonably trust what the candidate tells us on his/her resume or during the interview, but it is typical that the resume is inflated or the candidates tells they are better or more experienced than they actually are due to the incentive of selling. Questions of such could filter out those no hires. You can find better candidate if they respond faster than the average (fluency), or even better one if they can provide additional oversight or consideration of exceptional cases (experience). Again, what is important here is not the final answer, rather the chain of thought which reveals how much the knowledge or best practices has been burned and hard wired into their thinking and those have become just too intuitive to allow pause for retrieval (retrieval has long latency if they only just try to recall from the preparation before the interview). Only by gaining such fluency, the bottleneck of expressing any design ideas could be eliminated and one could concentrate on the actual design work rather than spend time in translating the ideas into physical bytes.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;It is much more difficult to determine the level of soft technical skill or the actual skill of designing software. Design is partially scientific in terms of capability of composing the big picture with bits and pieces, but also is largely a reflection of personal styles and values. Design is about trade-off and people decides trade-off, consciously or unconsciously based on their personal beliefs. It could also relate to self-knowledge, how we think we appear to others, how we think others evaluate that appearance probably against some benchmark. That results in shame or pride we feel and we may inevitably align with that benchmark. That could explain why frequently the latest technology, the paper design in the patterns book, the best practices from the industry white paper become the output to align with rather than the input to the thought process of software design. Finding the perfect candidate is certainly very ideal situation and luck usually plays an important factor too. It is also true that the maturity could be developed but the potential is the key. That said, measuring the competence of designing software or the future potential has to go through some metrics. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;One metric is to see how a candidate possess an intuitive capability to handle multiple levels of abstraction (from design of software/system, to design of sequence interaction, to design of class in separating of concerns, to design of eg longest common subsequence algorithm, and down to eg pointer arithmetic) at the same time. He/she should be able to switch among those different levels of details very very quickly. Any loss in chain of thought (remember, we are talking about the thought, not the answer) probably means that some people do not get it or just can&amp;#39;t do it; any slowdown in chain of thought is an indication for lack of fluency.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Another metric is how good understanding the candidate has about &amp;quot;trade-off&amp;quot;. This could be partly revealed in their attitudes towards architecture. Many people talk about architecture without truly appreciating its significance. In fact most of the time it is because there is common belief or tendency to consider architecture or software architect more prestige than the final implementation or those who implements (software engineers, programmers, coders). The exact thinking that the latter, who designs an implementation is not doing the creative design work of the same magnitude, reveals the lack of experience in designing software, not to mention the design of architecture. It is just at a different abstraction level. In my opinion, I always prefer someone who is humble, down-to-earth in talking about software architecture and has mastered the tools of trade for conveying and communicating the idea of designs. They are usually those who along the bumpy roads, learned and started to appreciate the series of &amp;quot;trade-off&amp;quot; in designing software.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;The final aspect to watch is the technical communication skill. This is important for every team member but is extremely important for whoever need to lead the team or act as the interface to the outside world. The candidate must be able to explain things well and with passion. During the interview, there should be no drifting in explanations or avoidance of hard questions. If ever provoked (if you have chance for such a question), the candidate should not stand on the fence; but also on the other hand never never argue for the sake of arguing. How the candidate can provide a convincing middle ground to close the topic reveals the capacity of influencing others.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Talking about technical recruitment cannot avoid the topic of career path. Many people has disbelief in the technical career and they cannot be blamed. &amp;quot;Managerial career is the only option&amp;quot; - this is in fact quite common belief in Singapore, also in Asia. This belief is an indicator of several opinions of (possible) facts: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- people consider managerial position more prestige than technical position&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- society tends to reward managerial position more materially than technical position eg there might be simply perceived gap in pay cheques&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- success tends to be attributed to managerial position and failure frequently attributed to technical position&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- managerial positions are cycled faster (promoted) than technical positions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- managerial positions suffer from soft stress and technical positions suffer from hard stress&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- incompetent management could be tolerated at times; technical decisions could be sacrificed when required (remember NASA Challenger)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- managerial positions are profit center and technical positions are cost center&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- etc etc&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;This belief also acts as self-fulfilling prophecy. Pay/rewards drives more supply, the abundance of supply (for manager career) and lack of consistent high standard would lead to more incompetent management - but again they could be tolerated - this only enforces the belief. Given the respective reward/risk ratio, it is not difficult to see the statistical distribution of choices. The above is the collective value of the society, it is hard to change. To attract technical talent, the employer has to do the action. There is only one way to stand out among the crowd - to build and enhance the company culture of valuing &amp;quot;value generation&amp;quot;, and separate the wheat from the chaff.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Sometimes there is also misconception that management is just easy and all about watching over the shoulders, which sounds like the &amp;quot;reward&amp;quot; for completing the rat race in the junior roles. Wrong! That happens in many industries and in many fields, a reality of the life. But the motive being completing the rat race just sounds dubious for the devotion of contribution. Taking up managerial role is definitely a natural extension of responsibility: a soldier who does not want to become a general is not a good soldier but a solider who just wants to become a general so could no longer fight the war is definitely not a good soldier.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Another caveat I would like to bring up is, good candidates are hard to come by, luck plays its part too. But do not limit your hire/no hire selection only to the current batch of potential candidates you may have at hand. It&amp;#39;s sometimes tempting to lowering the standard if other attributes of the candidate are likable (genuinely good people are many but good people does not mean they are suitable for the given role), or if there is pressing needs from the project. Give you time to search harder, if the role is important to the project and if the project is important to you. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;I am advocating elitism? No. Some are lucky and born with talent, most are not and have to earn/nurture it with hard working. What I said is that I do not advocate equal outcome, I advocate equal opportunity that everyone can be or become one talent.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=199649" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/XmpoNIGPdKY" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareTeam/default.aspx">SoftwareTeam</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2008/03/29/Thoughts-on-Recruitement-and-Interviewing-of-Technical-Role.aspx</feedburner:origLink></item><item><title>Another mind map on Integration Topology (Message Broker, Message Bus etc)</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/xMX1QKuRG8w/Another-mind-map-on-Integration-Topology-_2800_Message-Broker_2C00_-Message-Bus-etc_2900_.aspx</link><pubDate>Wed, 03 Oct 2007 02:23:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:150930</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=150930</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/10/03/Another-mind-map-on-Integration-Topology-_2800_Message-Broker_2C00_-Message-Bus-etc_2900_.aspx#comments</comments><description>&lt;p&gt;The&amp;nbsp;&lt;a href="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/10/03/A-MindMap-for-Windows-Communication-Foundation.aspx"&gt;earlier post&lt;/a&gt; of mind map focused on WCF. The below is more on integration topology, with&amp;nbsp;more contents covering Java related technologies.&lt;/p&gt;&lt;p&gt;Integration Topologies &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Message Broker (Hub-and-Spoke) &lt;ul&gt;&lt;li&gt;Technology Stacks &lt;ul&gt;&lt;li&gt;Client Library Implementation &lt;/li&gt;&lt;li&gt;Communication Protocol &lt;/li&gt;&lt;li&gt;Broken Implementation &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;ActiveMQ &lt;ul&gt;&lt;li&gt;Communication Protocol &lt;ul&gt;&lt;li&gt;OpenWirev1 &lt;/li&gt;&lt;li&gt;OpenWirev2 &lt;/li&gt;&lt;li&gt;STOMP &lt;/li&gt;&lt;li&gt;REST &lt;/li&gt;&lt;li&gt;WS-Notification &lt;ul&gt;&lt;li&gt;ServiceMix &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;XMPP &lt;ul&gt;&lt;li&gt;Jabber &lt;/li&gt;&lt;li&gt;Client Lib - Spark &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;AMQP (incubation) &lt;/li&gt;&lt;li&gt;RSS, Atom &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Container &lt;ul&gt;&lt;li&gt;Axis Support &lt;/li&gt;&lt;li&gt;Geronimo &lt;/li&gt;&lt;li&gt;J2EE &lt;/li&gt;&lt;li&gt;JBoss Integration &lt;/li&gt;&lt;li&gt;JCA Container &lt;/li&gt;&lt;li&gt;JNDI Support &lt;/li&gt;&lt;li&gt;Resource Adapter &lt;/li&gt;&lt;li&gt;Spring Support &lt;/li&gt;&lt;li&gt;Sun JNDI &lt;/li&gt;&lt;li&gt;Tomcat &lt;/li&gt;&lt;li&gt;WebLogic Integration &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Client Lib &lt;ul&gt;&lt;li&gt;ActiveMQ C++ Clients &lt;/li&gt;&lt;li&gt;Ajax &lt;/li&gt;&lt;li&gt;C Integration &lt;/li&gt;&lt;li&gt;CMS &lt;/li&gt;&lt;li&gt;NMS &lt;/li&gt;&lt;li&gt;Perl &lt;/li&gt;&lt;li&gt;PHP &lt;/li&gt;&lt;li&gt;Pike &lt;/li&gt;&lt;li&gt;Python &lt;/li&gt;&lt;li&gt;Ruby &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Coding &lt;ul&gt;&lt;li&gt;ConnectionFactory &lt;ul&gt;&lt;li&gt;Connection &lt;ul&gt;&lt;li&gt;Session &lt;ul&gt;&lt;li&gt;Destination &amp;lt;= createTopic &lt;/li&gt;&lt;li&gt;Destination &amp;lt;= createQueue &lt;/li&gt;&lt;li&gt;MessageProducer &amp;lt;= createProducer &lt;ul&gt;&lt;li&gt;setDeliveryMode &lt;/li&gt;&lt;li&gt;send(Message) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;IMessage &amp;lt;= createMessage &lt;/li&gt;&lt;li&gt;MessageConsumer &amp;lt;= createConsumer &lt;ul&gt;&lt;li&gt;setMessageListener &lt;ul&gt;&lt;li&gt;OnMessage(Message) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Message Bus &lt;ul&gt;&lt;li&gt;ServiceMix &lt;ul&gt;&lt;li&gt;More details... &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;JBI &lt;ul&gt;&lt;li&gt;a pluggable architecture for a container &amp;nbsp;that hosts service producer &amp;nbsp;and consumer components &lt;/li&gt;&lt;li&gt;Services connect to the container &lt;br /&gt;via binding components (BC) &lt;/li&gt;&lt;li&gt;or hosted inside the container &lt;br /&gt;as part of a service engine (SE) &lt;/li&gt;&lt;li&gt;Message Delivery &lt;ul&gt;&lt;li&gt;NMR Normalized Message Router &lt;/li&gt;&lt;li&gt;MEP Message Exchange Patterns &lt;ul&gt;&lt;li&gt;In Only &lt;ul&gt;&lt;li&gt;&lt;p&gt;A standard one-way messaging exchange where the consumer sends a message to the provider that provides only a status response &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Robust In Only &lt;ul&gt;&lt;li&gt;&lt;p&gt;This pattern is for reliable one-way message exchanges. The consumer initiates with a message to which the provider responds with status. If the response is a status, the exchange is complete, but if the response is a fault, the consumer must respond with a status. &amp;nbsp; &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;In Out &lt;ul&gt;&lt;li&gt;&lt;p&gt;A standard two-way message exchange where the consumer initiates with a message, the provider responds with a message or fault and the consumer responds with a status. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;In Optional-Out &lt;ul&gt;&lt;li&gt;A standard two-way message exchange where the providers response is optional. &amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Lifecycle &lt;ul&gt;&lt;li&gt;JMX &lt;ul&gt;&lt;li&gt;installation, deployment, monitoring and lifecycle concerns amongst BCs and SEs &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;More Info on JBI... &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;JBI is an architecture for integration systems specifying plug-in components that interoperate by exchanging messages, rather than by interacting directly. This decoupling increases flexibility because each component needs to know how to interact with the JBI bus only and not with n number of other components. JBI components provide services, consume services, or sometimes both. There are two types of components: Service Engines (SE) and Binding Components (BC). The SEs provide business logic and transformation services. The BCs provide connectivity for applications that are external to the JBI. The separation of business and processing logic from communication logic makes the implementation of components much less complex. &lt;br /&gt;&lt;br /&gt;The mediated message exchange between components is provided by the Normalized Message Router (NMR). The NMR routes normalized messages between service providers and consumers. A normalized message consists of two parts: the message content (payload) and the message metadata. The message metadata contains information such as security information, that can affect the processing of the message as it routes through the JBI. Messages flowing into the JBI, via binding components, are translated into a normalized (neutral) format, then routed to their destination. Prior to final delivery the normalized message is translated into the appropriate format for the recipient. A message can be routed through several JBI components depending on what processing is needed. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Enterprise Service Bus &lt;ul&gt;&lt;li&gt;&lt;p&gt;Implementation Camp &lt;/p&gt;&lt;ul&gt;&lt;li&gt;multiple protocol &lt;/li&gt;&lt;li&gt;purely on SOAP/HTTP &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Marketing Attributes &lt;/p&gt;&lt;ul&gt;&lt;li&gt;distributed processing &lt;/li&gt;&lt;li&gt;intelligence routing &lt;ul&gt;&lt;li&gt;visibility - into messages for content-based routing &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;security &lt;/li&gt;&lt;li&gt;dynamic data transformation &lt;/li&gt;&lt;li&gt;business process orchestration &lt;/li&gt;&lt;li&gt;reliability &lt;/li&gt;&lt;li&gt;transactionality &lt;/li&gt;&lt;li&gt;Event Driven Architecture &lt;ul&gt;&lt;li&gt;&lt;p&gt;This is an asynchronous operation as the recipient applications &lt;br /&gt;may receive or pick-up their messages at a later time, whereas &lt;br /&gt;the SOA messaging model is typically synchronous in nature. &lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;quality of service (QoS) features &lt;ul&gt;&lt;li&gt;message persistence &lt;/li&gt;&lt;li&gt;guaranteed delivery &lt;/li&gt;&lt;li&gt;failure handling &lt;/li&gt;&lt;li&gt;transaction support &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;comparison &lt;ul&gt;&lt;li&gt;EDA &lt;ul&gt;&lt;li&gt;decoupled, scalability and reliabilty required for high transaction production environments &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SOA &lt;ul&gt;&lt;li&gt;synchronous request/response communication (usually) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Infrastructure Characteristic &lt;/p&gt;&lt;ul&gt;&lt;li&gt;distributed - to remove geographical constraints &lt;/li&gt;&lt;li&gt;message-based - to promote loose coupling &lt;/li&gt;&lt;li&gt;open standards-based - to preserve investment and encourage partipicipation &lt;/li&gt;&lt;li&gt;reliable - to meet the requirements of mission-critical business operations &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Design Requirement &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Standard Based &lt;ul&gt;&lt;li&gt;No product API lock in &lt;ul&gt;&lt;li&gt;JIB &lt;/li&gt;&lt;li&gt;POJO &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Flexible &lt;ul&gt;&lt;li&gt;Deployment &lt;ul&gt;&lt;li&gt;standalone &lt;/li&gt;&lt;li&gt;embedded in an application component &lt;/li&gt;&lt;li&gt;as part of the services supported by an application server &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Component Reuse &lt;/li&gt;&lt;li&gt;Scripting Language &lt;/li&gt;&lt;li&gt;Embedded Rule Engine &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Reliability &lt;ul&gt;&lt;li&gt;network outages &lt;/li&gt;&lt;li&gt;system failure &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Breadth of Connectivity &lt;ul&gt;&lt;li&gt;two-way reliable web service &lt;/li&gt;&lt;li&gt;MoM (Message Oriented Middleware) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Enterprise Need &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Disparate Application &lt;/li&gt;&lt;li&gt;Disparate Platform &lt;/li&gt;&lt;li&gt;Disparate &amp;nbsp;Business Process &lt;/li&gt;&lt;li&gt;Non compatible data format &lt;/li&gt;&lt;li&gt;Non compatible communication protocol &lt;/li&gt;&lt;li&gt;Need: Enterprise Integration &lt;ul&gt;&lt;li&gt;Past Solutions &lt;ul&gt;&lt;li&gt;Enterprise Application Integration &lt;/li&gt;&lt;li&gt;Service Oriented Architecture &lt;/li&gt;&lt;li&gt;Web Services (already a past ???)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Evaluation of Past Solutions &lt;ul&gt;&lt;li&gt;Vendor Solution &lt;ul&gt;&lt;li&gt;high cost, lock in &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Custom Solution &lt;ul&gt;&lt;li&gt;high maintenance, host cost &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The ESB addresses the disadvantages of existing solutions by &lt;br /&gt;creating a standard infrastructure for integration. &lt;br /&gt;Point-to-point solutions, where each of n components requires n-1 &lt;br /&gt;interfaces for full communication, are replaced by a bus solution &lt;br /&gt;where each component requires a single interface to the bus for &lt;br /&gt;global communication &lt;/p&gt;&lt;p&gt;Debate: is it relevant? &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;http://blogs.msdn.com/mohammadakif/archive/2007/01/23/microsoft-s-enterprise-services-bus-esb-strategy-part-4-4.aspx &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Microsoft&amp;#39;s ESB Offering &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Application Platform &lt;ul&gt;&lt;li&gt;WIndows Server &lt;/li&gt;&lt;li&gt;.NET Framework 3.0 &lt;/li&gt;&lt;li&gt;Core: BizTalk Server &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Advertised Features &lt;ul&gt;&lt;li&gt;Industry Leading Web Services Support &lt;/li&gt;&lt;li&gt;Intelligent Routing &lt;/li&gt;&lt;li&gt;Message Transformation &lt;/li&gt;&lt;li&gt;Itinerary Processing &lt;/li&gt;&lt;li&gt;Legacy and LOB Application Adaptation &lt;/li&gt;&lt;li&gt;Service Orchestration &lt;/li&gt;&lt;li&gt;Metadata Lookup &lt;/li&gt;&lt;li&gt;Exception Management &lt;/li&gt;&lt;li&gt;Distributed Deployment &lt;/li&gt;&lt;li&gt;Centralized Management &lt;/li&gt;&lt;li&gt;Business Rule Engine &lt;/li&gt;&lt;li&gt;Business Activity Monitoring &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Web Service &lt;ul&gt;&lt;li&gt;POJO (Plain Old Java Object) Exposed as Web Service &lt;ul&gt;&lt;li&gt;Spring Based &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Axis2 &lt;ul&gt;&lt;li&gt;Transport Receiver - transport related processing &lt;/li&gt;&lt;li&gt;Dispatching - find service and operation &lt;ul&gt;&lt;li&gt;AddressingBasedDispatcher &lt;/li&gt;&lt;li&gt;RequestURIBasedDispatcher &lt;/li&gt;&lt;li&gt;SOAPActionBasedDispatcher &lt;/li&gt;&lt;li&gt;SOAPMessageBodyBasedDispatcher &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Message Receiver - last handler of the chain &lt;/li&gt;&lt;li&gt;Configuration &lt;ul&gt;&lt;li&gt;ServiceGroup &lt;ul&gt;&lt;li&gt;Service &lt;ul&gt;&lt;li&gt;Operation &lt;ul&gt;&lt;li&gt;Message &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Service Scope &lt;ul&gt;&lt;li&gt;Request Scope &lt;/li&gt;&lt;li&gt;SOAP Session Scope &lt;ul&gt;&lt;li&gt;Service Group Id &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Transport Session Scope &lt;ul&gt;&lt;li&gt;Cookie &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Application Scope &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Data shared among services &lt;/li&gt;&lt;li&gt;Session maintained using context &lt;ul&gt;&lt;li&gt;Login &lt;/li&gt;&lt;li&gt;Logout &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;JAX-WS Java API for XML Web Services &lt;/li&gt;&lt;li&gt;JAXB Java Architecture for XML Binding &lt;/li&gt;&lt;li&gt;Microsoft WSE, also WCF &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Publish/Subscribe &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Of course, this is collected facts or believed facts.&amp;nbsp;There is no&amp;nbsp;judgement or recommendation. You have to do your own research, hands on verification before believing. As usual : )&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=150930" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/xMX1QKuRG8w" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/10/03/Another-mind-map-on-Integration-Topology-_2800_Message-Broker_2C00_-Message-Bus-etc_2900_.aspx</feedburner:origLink></item><item><title>A mind map for Windows Communication Foundation</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/DLCTvjLwW8Y/A-MindMap-for-Windows-Communication-Foundation.aspx</link><pubDate>Wed, 03 Oct 2007 01:50:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:150920</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=150920</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/10/03/A-MindMap-for-Windows-Communication-Foundation.aspx#comments</comments><description>&lt;p&gt;I spent some time in space walking various communication technologies for comparisons. They aren&amp;#39;t really new, not so &amp;quot;on the center of the cutting edge&amp;quot; (I know&amp;nbsp;you have seen this phrase!)&lt;/p&gt;&lt;p&gt;The below is generated from &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;FreeMind&lt;/a&gt;. By the way, FreeMind is a&amp;nbsp;terrific tool for brainstorming or knowledge consolidation, or even sales demonstration. I would love to see any &lt;em&gt;Flickred&lt;/em&gt; mind map sharing site, or perhaps in future Google Docs? &lt;/p&gt;&lt;p&gt;Hope the below is useful for situation requiring at-a-glance or quick recall.&lt;br /&gt;&lt;br /&gt;WCF &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Endpoint (ABC) &lt;ul&gt;&lt;li&gt;Address &lt;/li&gt;&lt;li&gt;Binding &lt;ul&gt;&lt;li&gt;Transport Protocol &lt;ul&gt;&lt;li&gt;HTTP &lt;/li&gt;&lt;li&gt;TCP &lt;/li&gt;&lt;li&gt;Named Pipe &lt;/li&gt;&lt;li&gt;MSMQ &lt;/li&gt;&lt;li&gt;P2P &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Message Encoding &lt;ul&gt;&lt;li&gt;SOAP, Text &lt;/li&gt;&lt;li&gt;Binary &lt;/li&gt;&lt;li&gt;MTOM (Message Transport Optimization Mechanism) - optimised for large binary payload &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Communication Pattern &lt;ul&gt;&lt;li&gt;Datagram (fire and forget) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Reliability &lt;ul&gt;&lt;li&gt;Reliable Messaging &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Security &lt;ul&gt;&lt;li&gt;Transport Level &lt;/li&gt;&lt;li&gt;Message Level &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Transaction Propagation &lt;ul&gt;&lt;li&gt;Atomic Transactions &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Interoperability &lt;ul&gt;&lt;li&gt;WS-* &lt;/li&gt;&lt;li&gt;raw MSMQ message &lt;/li&gt;&lt;li&gt;basic Web Service &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Contract &lt;ul&gt;&lt;li&gt;Data Contract &lt;/li&gt;&lt;li&gt;Message Contract &lt;/li&gt;&lt;li&gt;Fault Contract &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Comm Layer &lt;ul&gt;&lt;li&gt;Intra-Process &lt;/li&gt;&lt;li&gt;Inter-Process, same machine &lt;/li&gt;&lt;li&gt;Inter-Process, across wire &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Hosting &lt;ul&gt;&lt;li&gt;IIS &lt;ul&gt;&lt;li&gt;HTTP transport only &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Self Hosting &lt;ul&gt;&lt;li&gt;ServiceHost(typeof(ABCService), uriBaseAddress) (per transport protocol) &lt;ul&gt;&lt;li&gt;ServiceHost.Open &lt;/li&gt;&lt;li&gt;Service.Close &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;a physical process to host it &lt;ul&gt;&lt;li&gt;process boundary &lt;/li&gt;&lt;li&gt;machine boundary &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Communication over Wire illustrated &lt;ul&gt;&lt;li&gt;Client &lt;ul&gt;&lt;li&gt;Proxy &lt;ul&gt;&lt;li&gt;Channel(s) pipe &lt;br /&gt;from client -&amp;gt; service pre-processing &lt;br /&gt;from service -&amp;gt; client post-processing &lt;ul&gt;&lt;li&gt;Transport Channel &lt;ul&gt;&lt;li&gt;... Wire ... &lt;ul&gt;&lt;li&gt;Transport Channel &lt;ul&gt;&lt;li&gt;Channel(s) pipe &lt;br /&gt;from client -&amp;gt; service pre-processing &lt;br /&gt;from service -&amp;gt; client post-processing &lt;ul&gt;&lt;li&gt;Dispatcher &lt;ul&gt;&lt;li&gt;Business Endpoint &lt;ul&gt;&lt;li&gt;User Code &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Message pre-decoding post-encoding &lt;ul&gt;&lt;li&gt;bindary &lt;/li&gt;&lt;li&gt;text &lt;/li&gt;&lt;li&gt;MTOM &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;set security context &lt;/li&gt;&lt;li&gt;propagate client transaction &lt;/li&gt;&lt;li&gt;manage reliable session &lt;/li&gt;&lt;li&gt;pre-decryption post-encryption &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Message encoding pre-encoding post-decoding &lt;ul&gt;&lt;li&gt;bindary &lt;/li&gt;&lt;li&gt;text &lt;/li&gt;&lt;li&gt;MTOM &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;set security context &lt;/li&gt;&lt;li&gt;propagate client transaction &lt;/li&gt;&lt;li&gt;manage reliable session &lt;/li&gt;&lt;li&gt;pre-encryption post-encryption &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Scenario &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Intermediary Router &lt;/li&gt;&lt;li&gt;Federation &lt;/li&gt;&lt;li&gt;List-based Publish Subscribe &lt;/li&gt;&lt;li&gt;Trusted Facade Service &lt;/li&gt;&lt;li&gt;Discovery &lt;/li&gt;&lt;li&gt;Peer Channel Custom Peer Resolver &lt;/li&gt;&lt;li&gt;REST and POX (Plain Old Xml) &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=150920" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/DLCTvjLwW8Y" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/10/03/A-MindMap-for-Windows-Communication-Foundation.aspx</feedburner:origLink></item><item><title>Readings and Questions on Software Architecture and Software Architect</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/Dt2rzIEIo3Y/Impedance-Mismatch-of-Software-Architecture.aspx</link><pubDate>Tue, 21 Aug 2007 15:53:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:141213</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=141213</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/08/21/Impedance-Mismatch-of-Software-Architecture.aspx#comments</comments><description>&lt;p&gt;Should software architecture be owned and how to measure the output? What are responsiblities and liabilities of software architect?&lt;/p&gt;
&lt;p&gt;I really like some articles from&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/skyscrapr/default.aspx"&gt;Skyscrapr&lt;/a&gt;&amp;nbsp;because it provides in my opinion a good amount of quality, proper&amp;nbsp;and down-to-earth (humble and not too much space walking) education material to what software architecture (responsibility and output) should be and what an architect (owner) should be concerned with.&lt;/p&gt;
&lt;p&gt;In any sizeable and sustainabale&amp;nbsp;human endeavour, it is impossible to imagine a teamforce without proper, formalized roles and responsibilities and also ownership of output. Yet, that could happen and happened for software. Software architecture is a grey area in many enterprise projects, software architect is&amp;nbsp;a grey role that is so ambigously defined that whether he should code or not may become debate of years without clear answers.&lt;/p&gt;
&lt;p&gt;In the article, &lt;a href="http://msdn2.microsoft.com/en-us/skyscrapr/bb401007.aspx"&gt;What is an Architect&lt;/a&gt; brings the question upfront to the table and proposes the common terms the industry should agree upon: Solutions Architect, Infrastructure Architect, Enterprsie Architect. That is great clarifications - the reminding of roles and responsibilties would ensure the consistency and measurable of output!&lt;/p&gt;
&lt;p&gt;The question is part of the original blog article from &lt;a href="http://msdn2.microsoft.com/en-us/skyscrapr/bb426891.aspx"&gt;Software Architecture: Past, Present and Future&lt;/a&gt;&amp;nbsp;which outlines the evolving of &lt;strong&gt;&lt;em&gt;need&lt;/em&gt;&lt;/strong&gt; of software architecture and software architect.&lt;br /&gt;&lt;br /&gt;There are some other good articles, such as &lt;a href="http://msdn2.microsoft.com/en-us/architecture/bb508954.aspx"&gt;Mentoring: A Natural Element of Architectural Leadership&lt;/a&gt;.&amp;nbsp;We also have&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/architecture/bb508955.aspx"&gt;Are We Engineers or Craftspeople?&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I always consider raising the right question is much more important than finding the correct answer. I would also applaude the sections of &amp;quot;&lt;strong&gt;Critical-Thinking Questions&lt;/strong&gt;&amp;quot; in some of the articles (eg,&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/architecture/bb508955.aspx"&gt;Are We Engineers or Craftspeople?&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/architecture/bb508953.aspx"&gt;The Role of Architecture in Business Analysis&lt;/a&gt;): they are so refreshing!&amp;nbsp;The huge amount of articles and resources avaiable today, and avaiablility of&amp;nbsp;google wikipedia at finger tips frequently &lt;em&gt;mis&lt;/em&gt;lead our mind into vicious cycles of instance-noodle trap - articles are read and forgotten, such sections reminded the need of asking the right questions and &lt;strong&gt;thinking out&lt;/strong&gt; (not reading out or google out) answers. Great! I will re-read starred articles another 2-weeks then&amp;nbsp;4-weeks to ensure I still retain what I am enlightened with.&lt;/p&gt;
&lt;p&gt;In the end, all the above cannot escape the center piece &amp;quot;communication and communication&amp;quot;: architecture is a design output to communicate after all, to influence the decision, to justify the argument, to navigate through all the different waters. When we convinced others, we built the skyscrapr!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=141213" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/Dt2rzIEIo3Y" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/08/21/Impedance-Mismatch-of-Software-Architecture.aspx</feedburner:origLink></item><item><title>Value of C++, Or Do I Live in Denial?</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/n3lu671sl6Q/C_2B002B002C00_-Or-Do-I-Live-in-Denial_3F00_.aspx</link><pubDate>Sun, 22 Jul 2007 13:10:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:134979</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=134979</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/07/22/C_2B002B002C00_-Or-Do-I-Live-in-Denial_3F00_.aspx#comments</comments><description>&lt;p&gt;I chatted with a friend yesterday&amp;nbsp;(who worked mostly on C#/PHP and even Ruby/Rail for web applications) about the value of C++ language, well, you can probably imagine the content of the discussion and there would be some debate.&lt;br /&gt;&lt;br /&gt;I recalled another discussion with my colleague sb sometime at the beginning of this year, I retrieved the correspondence, re-read it again and think that my belief is still valid.&lt;/p&gt;
&lt;p&gt;That discussion originated from two articles on technical interviews with Bjarne Stroustrup, available at the &lt;a href="http://www.technologyreview.com/Infotech/17831/page1/"&gt;first part&lt;/a&gt; and the &lt;a href="http://www.technologyreview.com/Infotech/17868/page1/"&gt;second part&lt;/a&gt;. Bjarne gave two interviews to Technology Review (published by the MIT) where he talks about what&amp;#39;s good and bad with C++ and software development at large. (by the way, these two are very good articles, even some of the comments.) &lt;/p&gt;
&lt;p&gt;&lt;i&gt;==&amp;nbsp;Start of Discussion&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Me: &lt;br /&gt;Certainly people in the industry or in the academic are all comtemplating this.&lt;br /&gt;&lt;br /&gt;It is tempting to declare something is perfect and this is seldomly true. I prefer to compare software development to composing music or painting: there is one way of conveying things and it is bound to have some other different means. Music and paint are aesthetic outputs. Architectures, designs, maintabilities of software development are all such aesthetic goals, as if you searching for listening to &amp;quot;good&amp;quot; music, or viewing the &amp;quot;grasping&amp;quot; paint - although they all relative to the ears and the eyes. &lt;br /&gt;&lt;br /&gt;But software development requires one more thing than the &amp;quot;ways&amp;quot; to express those aesthetic styles we all search so hard. It requires correctness - nothing comes before it, every other thing is secondary. &lt;br /&gt;&lt;br /&gt;Also from the above interview, &amp;quot;The purpose of a programming language is to help build good systems, where &amp;quot;good&amp;quot; can be defined in many ways. My brief definition is, correct, maintainable, and adequately fast.&amp;quot; I cannot agree more. &amp;quot;fast enough&amp;quot; is aesthetic goal too at first, though sometimes it is defined as part of correctness for eg real-time systems. Correctness is the one and the foremost something the software is created for either economical or scientific reasons. &lt;br /&gt;&lt;br /&gt;Saying this does not say that correctness would overshadow the value of architectures, designs, maintabilities, responsiveness etc. Surprising, when striving to achieve the correctness which definitely requires more careful thinking, a system, by chance or as a consequence, that amount of thorough thinking naturally may lead to other good outputs in architecture, design, or maintability. &lt;br /&gt;&lt;br /&gt;I would say &amp;quot;correct systems are more likely to be maitainabale, and more likely to be beautifull too when looking into the architecture or design&amp;quot;&lt;br /&gt;&lt;br /&gt;So much of my mumbling...of course, there is yet another &amp;quot;Bjarne Stroustrup Interview&amp;quot; &lt;br /&gt;&lt;a href="http://www.erenkrantz.com/Humor/FakeIEEEStroustrupInterview.shtml" target="_blank"&gt;http://www.erenkrantz.com/Humor/FakeIEEEStroustrupInterview.shtml&lt;/a&gt; - well, you got what I mean. *)&lt;br /&gt;&lt;br /&gt;His reply:&lt;br /&gt;&lt;i&gt;Haha this is very funny.&lt;br /&gt;&lt;br /&gt;Seriously, I think it&amp;#39;s good to consider the software as a piece of art, as if one was looking at the bunch of equation written by Einstein and saying &amp;quot;waaa it&amp;#39;s beautiful...&amp;quot;. It is indeed. &lt;br /&gt;&lt;br /&gt;But, personally I think we are nowhere close to that yet. I think the metaphor with the architect was perfect: he has the freedom to design masterpieces, but yet, to do that, he has to use a set of perfectly well-know and well-defined tools. He knows that to achieve task A, he needs to go through task B, using tool C and D. Or just like the physician. I would like things to be that simple in computer science. But we haven&amp;#39;t yet reached that state.&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;My reply:&lt;br /&gt;Yes. My thinking is along the same line. I emphasize correctness at the most important thing to consider. By itself correctness is not strictly an &amp;quot;aesthetic&amp;quot; goal (indirectly yes), and I think it comes before any other goals more related to aesthetic aspects such as architectures, designs, maintabilities, responsiveness etc. Somehow the industry leaves the impression that architecture is the foremost important - I disagree to an certain extend. &lt;br /&gt;&lt;br /&gt;What software development differs from painting and composing music is the correctness - its mathematical spirit. Correctness is a complex task - but it is a &amp;quot;simple&amp;quot; goal to achieve, and &amp;quot;could&amp;quot; be done &amp;quot;simply&amp;quot; in more &amp;quot;systematic&amp;quot; way, with more &amp;quot;objective&amp;quot; evaluation. The striving for correctness could be thought of equivalence to countless amount of pratice effort required by a good physician, musician and painter to be fluent. The aesthetic outputs such as architecuture etc are merely the natural extension of searching for correctness, when the knowledge becomes wisdom.&lt;/p&gt;
&lt;p&gt;His reply:&lt;br /&gt;&lt;i&gt;The thing is with C++, so many people have no notion of that &amp;quot;correctness&amp;quot;. They attempt to write C++ without knowing how it should actually look like. They&amp;#39;ve never read the STL, never read Boost library, and think &amp;quot;oh it&amp;#39;s like C&amp;quot;, but it&amp;#39;s so different. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;The freedom given in this language allows you to define any problem in mathematical terms. There is a certain way of doing it, using a certain syntax. People should not try to write C++ when they don&amp;#39;t know what it should look like. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;The fact that it was compatible with C brought the idea widely accepted that anything can be written in C++ like C. This is doing more bad than good to C++. Anyway given the wide range of specific high level programing languages available nowaday, I think C++ will finally be found only in the area where it is really good at: complexity/performance of data processing applications.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;== End of Discussion&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Coming back to C++ language itself, I I cannot agree more with the opinion from one author&amp;nbsp;called JF, saying (titled: C++ Design Philosophy, comments to the first part of the interview)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I think it is hugely important to go back and read exactly just what the design philosophy behind C++ was (and still is). Most of the writting (especially those against C++) seems&amp;nbsp; to be demands for more features(eg garbage collection, pointer management, threading support etc). But when you carefully review the thinking behind C++ (as I have done -by the way I have developed applications in Fortran/C/C++:numerial/graphics analysis and realtime telco apps and there is no other language that could have done the job-maybe at the time.)&amp;nbsp; BS and the standard&amp;#39;s committee are keenly aware of all these &amp;#39;shortcomings&amp;#39;(if you want to call it that) of the language . A fundamental aspect of C++ is that it should support multi-paradigm programming -that in itself is a tall demand. But more improtantly, C++ should allow you to be as close to the machine as possible but &amp;#39;no closer&amp;#39; while retaining &amp;#39;expressivity&amp;#39;. In the end, there is no substitute for attention to detail and that is the programmer&amp;#39;s job. If the machine is kind enough to give you memory when you needed it (and don&amp;#39;t force you to give it back) then just make sure you return the favour. I believe we do and will need a language that allows you to do what you want. Incrementally though, features are being added to C++ to resolve exactly some of these issues. Practically, there is no reason to use old fashion/native arrays over vectors. It is my believe that some day threading support and memory management will be part of standard C++ once an efficient implemetation is found.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;I would point anyone who is now still interested in C++ to the above two articles, read more about C++ and its philosophies. Maybe only do it only for historical interests (because I have to admit, not many current jobs require you to write C++), the efforts of stepping into un-comfort zone would pay off. When you force yourself to do something that you don&amp;rsquo;t understand and don&amp;#39;t see immeidate pragamtic applicability, the initial results are always messy - but that experience is always original, extends your horizon and gives you a lot more visibility into the complication of the software world. For starting in C++, I would always recommend by starting directly in STL (eg some of my old posts in this forum &lt;a href="http://community.sgdotnet.org/forums/permalink/5018/5061/ShowThread.aspx#5061"&gt;here&lt;/a&gt;, &lt;a href="http://community.sgdotnet.org/forums/permalink/5018/5498/ShowThread.aspx#5498"&gt;here&lt;/a&gt;, &lt;a href="http://community.sgdotnet.org/forums/permalink/5018/8059/ShowThread.aspx#8059"&gt;here&lt;/a&gt;, &lt;a href="http://community.sgdotnet.org/forums/permalink/5018/8143/ShowThread.aspx#8143"&gt;here&lt;/a&gt;, and &lt;a href="http://community.sgdotnet.org/forums/permalink/5018/9692/ShowThread.aspx#9692"&gt;here&lt;/a&gt;, forgive sometimes my nugging).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=134979" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/n3lu671sl6Q" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareProgramming/default.aspx">SoftwareProgramming</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/07/22/C_2B002B002C00_-Or-Do-I-Live-in-Denial_3F00_.aspx</feedburner:origLink></item><item><title>Google Desktop for Linux Desktop</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/gLSLxhGS66g/Google-Desktop-for-Linux-Desktop.aspx</link><pubDate>Thu, 05 Jul 2007 04:17:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:131191</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=131191</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/07/05/Google-Desktop-for-Linux-Desktop.aspx#comments</comments><description>&lt;p&gt;Nearly &lt;a href="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2004/10/15/Google-Desktop-Search.aspx"&gt;3 years after&lt;/a&gt; Google Desktop&amp;nbsp;making a debut&amp;nbsp;on Windows, it&amp;#39;s time for its presence on Linux Desktop. It&amp;#39;s available at &lt;a href="http://desktop.google.com/linux/"&gt;http://desktop.google.com/linux/&lt;/a&gt;, requiring glibc 2.3.2+, gtk+ 2.2.0+.&lt;/p&gt;&lt;p&gt;Some brief look is also available &lt;a href="http://www.desktoplinux.com/news/NS8313017510.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=131191" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/gLSLxhGS66g" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/Tools/default.aspx">Tools</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/07/05/Google-Desktop-for-Linux-Desktop.aspx</feedburner:origLink></item><item><title>Henri-Georges Clouzot, Picasso, Painting and Software</title><link>http://feedproxy.google.com/~r/blackinkbottle/~3/Rv_t89h0Kdg/Henri_2D00_Georges-Clouzot_2C00_-Picasso_2C00_-Painting-and-Software.aspx</link><pubDate>Sat, 30 Jun 2007 09:49:00 GMT</pubDate><guid isPermaLink="false">9f588fb1-4571-42db-9419-e7c908124e96:129372</guid><dc:creator>blackinkbottle</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://community.sgdotnet.org/blogs/blackinkbottles_ink/rsscomments.aspx?PostID=129372</wfw:commentRss><comments>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/06/30/Henri_2D00_Georges-Clouzot_2C00_-Picasso_2C00_-Painting-and-Software.aspx#comments</comments><description>&lt;p&gt;There is nothing more refreshing than to watch an interesting&amp;nbsp;film that combines the art of film, the art of suspence and&amp;nbsp;the art of painting together. I was drawn to the exhibition from &lt;a href="http://www.stpi.com.sg/"&gt;Singapore Tyler Print Institute&lt;/a&gt;, on &amp;quot;&lt;a href="http://www.stpi.com.sg/images/eventimg/picasso/May_event.jpg"&gt;Pablo Picasso: The Vollard Suite (1930 - 1937)&lt;/a&gt;&amp;quot;, firstly because of Henri-Georges Clouzot. His two other &amp;quot;&lt;a href="http://www.imdb.com/title/tt0046911/"&gt;Les Diaboliques (1955)&lt;/a&gt;&amp;quot; and &amp;quot;&lt;a href="http://www.imdb.com/title/tt0046268/"&gt;Wages of Fear / Le Salaire de la peur (1953)&lt;/a&gt;&amp;quot; had left me with lasting impressions and I was eager to see how he saw the Mystery of Picasso (&lt;a href="http://www.imdb.com/title/tt0049531/"&gt;Le Mystere Picasso (1956&lt;/a&gt;)).&lt;/p&gt;
&lt;p&gt;Clouzot&amp;#39;s intention&amp;nbsp;is convincing:&amp;nbsp;if we could see the entire process of painting in temporary dimension, we might be able to peek a glance into the mind of this great artist. The film set was extremely simple, Picasso sat on one side of&amp;nbsp;his canvas which had a special transparency characteristic&amp;nbsp;that could absorb and let ink&amp;nbsp;bleed&amp;nbsp;to the other side where&amp;nbsp;the film camera&amp;nbsp;was placed, capturing every single stroke or brush, color and layer that&amp;nbsp;was applied, the painting (although effectively being a mirror paint) became alive!&lt;/p&gt;
&lt;p&gt;There are about 10-20 pieces of different paintings that&amp;nbsp;are played back from empty canvas to completion. Nearly for every artwork, the beginnging is just seemly arbitrary strokes, but subsequent some pattern emerges gradually, becomes clearer, then&amp;nbsp;sometimes gets dissolved, transformed and morphed into&amp;nbsp;something else - the changes are the mirror&amp;nbsp;of the creative process - and this is also exactly the art of suspence of&amp;nbsp;film is all about too. There is hardly any hesitation of where to put the next stroke, where to recoincile initially unrelated pieces.&amp;nbsp;During the climax of the beach scene (as every suspence film should have), the canvas has experienced transformation of countless times, it is almost about several tens of layers of painting in one, as Picassso effortlessly moved his brush to show off, a canvas, empty or otherwise full of arbitrary color and layers, to him&amp;nbsp;is&amp;nbsp;just the same, as he mutters &amp;quot;its ruined, I have ruined the painting and yet at the same time, it is improving&amp;quot;, I suddenly understand&amp;nbsp;that &amp;quot;the most rebellious is the definitive interpretation&amp;quot;.&lt;/p&gt;
&lt;p&gt;About software. I relate the seemly arbitrary stroke to &lt;strong&gt;realization&lt;/strong&gt; of software design; I relate repeated changes and scene transformation to &lt;strong&gt;refactoring&lt;/strong&gt;. You can always change your mind&amp;nbsp;during the latter, but make sure the &lt;strong&gt;mental&lt;/strong&gt; design is already well shaped in your mind. To achieve that, you can hardly rely on the &lt;strong&gt;paper&lt;/strong&gt; design&amp;nbsp;in the patterns book, in the industry white paper, from the best practices, from the software factory: they should merely be the input to your thought process, rather than to be the output to align with.&lt;/p&gt;
&lt;p&gt;Whether&amp;nbsp;software programming is an art or a science has been debated for decades: I don&amp;#39;t know the aswer either. But I strongly feel it is a gifted area that shares the best part of both worlds, it requires the &lt;strong&gt;metriculousness&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;analytical towards details&lt;/strong&gt; and &lt;strong&gt;disciplines&lt;/strong&gt; from the spirit of engineering, yet it possesses the &lt;strong&gt;freedom&lt;/strong&gt; to create &lt;strong&gt;without fear of criticism&lt;/strong&gt; and allows you to give lasting impressions to your audience (ie your user).&amp;nbsp;Don&amp;#39;t they say (Knuth): &amp;quot;let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.&amp;quot; I see this shares the most resembling trait with painting and composing music.&lt;/p&gt;
&lt;p&gt;Go and watch the exhibition if you can, it lasts till 7 July, check out the details at &lt;a href="http://www.stpi.com.sg/"&gt;Singapore Tyler Print Institute&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.sgdotnet.org/aggbug.aspx?PostID=129372" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/blackinkbottle/~4/Rv_t89h0Kdg" height="1" width="1"/&gt;</description><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/SoftwareDesigns/default.aspx">SoftwareDesigns</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/Films/default.aspx">Films</category><category domain="http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/tags/ReRead/default.aspx">ReRead</category><feedburner:origLink>http://community.sgdotnet.org/blogs/blackinkbottles_ink/archive/2007/06/30/Henri_2D00_Georges-Clouzot_2C00_-Picasso_2C00_-Painting-and-Software.aspx</feedburner:origLink></item></channel></rss>
