<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17256163</id><updated>2012-01-10T05:33:39.489-05:00</updated><category term='language'/><category term='web app'/><category term='clojure'/><title type='text'>Fall Leaves of Chirrapunji</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17256163.post-7073484885586645969</id><published>2009-12-11T15:43:00.001-05:00</published><updated>2010-04-29T05:30:47.723-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Analysing Clojure programming language - Why it comes so near, but not too near?</title><content type='html'>Clojure is a multi-paradigm language. It is mix of imperative, functional and object-oriented programming. The parser, compiler/interpreter and runtime uses the Java Virtual Machine. Let me not get into any more details. The Clojure site is the best reference.&lt;br /&gt;&lt;br /&gt;Functional programming finds its best implementation in the homoiconic language family. Clojure being a LISP (there is the LISP family and dialects like Scheme, Common Lisp, now Clojure) is homoiconic. The syntax in the LISP world is based on s-exprs; for the unitiated and haters it means the program looks like a big list of matching curly braces. Unlike Scheme, which strives towards minimalism, Clojure embraces expressionism. Traditional LISPs provide data structures as macros, functions or libraries. Clojure provides all this and in addition wraps them in syntactic sugar. I am biased towards Scheme's minimalism, but that is just me, and my fellow ivory tower academic hard-heads. This is not a shortcoming of Clojure. The goal of Clojure was to provide practical constructs for data structures and not just s-exprs.&lt;br /&gt;&lt;br /&gt;There are however, a couple of idiosyncracies in Clojure which are distracting. Some of them create the feeling that "there is something wrong". Similar to Trinity fearing Neo's deja-vu on seeing the cat. I believe that these idiosyncracies need to be ironed out, maybe even eliminated. That will make the language mature. More important, it will make Clojure accepted outside of its niche community.&lt;br /&gt;&lt;br /&gt;The attitude of the language and to a certain extent the language community is to be a better Java with functional forms. In this respect one will not appreciate Clojure for being a better LISP. Instead Clojure tries to be a better Java with LISP syntax. The documentation, the Clojure book (Programming Clojure) are never aimed towards a developer who wants to program. Instead it is addressed towards specifically Java developers, selling them the features of Clojure which is better when compared to Java (though the book says it can be used by experienced Python, Ruby, etc developers). Yes, this will help in attracting people who are Java cats who are searching for an ideal functional programming language. No, this will not make the language popular. If you look at Python or Ruby which also have Java based environments, the first class citizen is the language of Python or Ruby itself. Java is for performance and its large library. In Clojure it sometimes feels the other way around. Please note that I am not complaning about the language design here. I point at the attitude and the stance of the community. &lt;br /&gt;&lt;br /&gt;Owing to the above attitude, many of the language constructs exist so that one can do what Java cannot do. The language introduces constructs because it cannot be achieved in the Java VM. For e.g. tail calls cannot be optimized in the Java, so we have recur and trampoline constructs. Obviously us Java developers will buy into it. But functional developers will never buy into that. Any programming language should have its own identity. In Clojure this identity is lost, because practical implementation difficulties are put ahead of clean design.&lt;br /&gt;&lt;br /&gt;There is the PERL philosophy of "There are many ways to do it". And there is the Python philosophy of "There are many ways to do it, but there is one right idiom (pythonic)". Clojure is a mixed bag. There are many constructs - functions and macros - which achieve the same thing and you are encouraged to do; there you have the PERLish influence. However the functional programming principles of Clojure state that you should avoid direct recursion, or recur in place of sequence api; which is a pythonic attidute. Definitely the language community should have a stronger philosophy of their own.&lt;br /&gt;&lt;br /&gt;I have read elsewhere Rich Hickey's comments on SICP. He says &lt;br /&gt;&lt;blockquote&gt;And I don't think the core of Clojure is appreciably bigger than&lt;br /&gt;Scheme's. What do Schemers think?&lt;/blockquote&gt;A lot of Schemers (including me) will have to spend a lot of time evaluating Clojure before we come to that conclusion. If the Clojure community can re-arrange their thoughts, as well as make those thoughts explicit, maybe then Clojure will be appreciated as being minimalist. Until then someone looking at the language will come away with the feeling that it has a very large core. That will definitely drive people away. (BTW Rich the only reason I was able to understand Clojure is because I know Scheme. I think others will agree.)&lt;br /&gt;&lt;br /&gt;In summary if Clojure&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tries to break away from being a better Java&lt;/li&gt;&lt;li&gt;Establishes its own identity in the design of the language&lt;/li&gt;&lt;li&gt;Improves its documentation, so that it can talk to everyone and not just seasoned Java developers&lt;/li&gt;&lt;li&gt;Popularises the scaffold on which the language is designed - a small core, special forms, macros, the rich Clojure library, the Java interop and using Java libraries&lt;/li&gt;&lt;/ul&gt;it will definitely go mainstream. Not just Java developers looking for an alternate language, but Python/PERL/Ruby programmers, the newbies, and finally the enterprise developers/architects will give it a serious look, discover its merits and adopt it. I for one would surely be thrilled with this new LISP with the vast library of Java.&lt;br /&gt;&lt;br /&gt;Disclaimer: &lt;br /&gt;I am not a clojure developer. I am a programming language enthusiast and have learnt multiple languages with different programming paradigms; just for the fun of it. Programming languages which I know are Java, Python, Scheme, okie-dokie PERL, C# which for me is Java with a different library and idiom, C, C++ including the (in)famous STL, COBOL &amp;amp; FORTRAN purely because it was in my syllabus, Javascript both in its prototype and functional forms. I have tried to be unbiased; if it exists it might be due to my stronger background in Java, Python, Scheme.&lt;br /&gt;&lt;br /&gt;I have reserved my analysis to the language and the language "attitude". I might post more on the libraries, concurrency, macros etc once I trudge through them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17256163-7073484885586645969?l=kusimari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/7073484885586645969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kusimari.blogspot.com/2009/12/analysing-clojure-programming-language.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/7073484885586645969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/7073484885586645969'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/2009/12/analysing-clojure-programming-language.html' title='Analysing Clojure programming language - Why it comes so near, but not too near?'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17256163.post-1596949450906212736</id><published>2009-07-17T21:55:00.000-04:00</published><updated>2010-04-28T18:26:56.727-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Human language and machine language</title><content type='html'>I am reading &lt;a href="http://www.amazon.com/gp/product/0061336467/ref=s9_simz_gw_s0_p14_i1?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-2&amp;amp;pf_rd_r=1RH4N7BE9G81Q4Z9KNVT&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=470938631&amp;amp;pf_rd_i=507846"&gt;The language instinct&lt;/a&gt; from Steven Pinker. Some of the examples he has are very familiar to compiler construction.&lt;br /&gt;&lt;br /&gt;Shift/Reduce conflictis a conflict in LALR grammars (most programming languages) where in the parser has to decide between shifting a new token for a rule or reducing the rule. Quoting Stephen C. Johnson from the YACC &lt;a href="http://www.cs.utexas.edu/users/novak/yaccpaper.htm"&gt;paper&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;As an example of the power of disambiguating rules, consider a fragment from a programming language involving an ``if-then-else'' construction:&lt;br /&gt;&lt;pre style="color: #3333ff;"&gt;stat  :  IF  '('  cond  ')'  stat&lt;br /&gt;|  IF  '(' cond ')'  stat  ELSE  stat ;&lt;/pre&gt;&lt;br /&gt;These two rules form an ambiguous construction, since input of the form&lt;br /&gt;&lt;pre style="color: #3333ff;"&gt;IF  ( C1 )  IF  ( C2 )  S1 ELSE  S2&lt;/pre&gt;&lt;br /&gt;can be structured according to these rules in two ways:&lt;br /&gt;&lt;pre style="color: #3333ff;"&gt;IF  ( C1 )  {&lt;br /&gt;IF  ( C2 )  S1&lt;br /&gt;}&lt;br /&gt;ELSE S2&lt;/pre&gt;&lt;br /&gt;or&lt;br /&gt;&lt;pre style="color: #3333ff;"&gt;IF  ( C1 )  {&lt;br /&gt;IF  ( C2 )  S1&lt;br /&gt;ELSE  S2&lt;br /&gt;}&lt;/pre&gt;The second interpretation is the one given in most programming languages having this construct.&lt;/blockquote&gt;That is during a shift/reduce conflict, LALR parsers chose shift over reduce, implying that clauses are always associated with the innermost clause.&lt;br /&gt;&lt;br /&gt;On the human side of the equation, Steven Pinker talks about Chomsky's classic illustration of turning a declarative sentence into a question&lt;br /&gt;&lt;pre style="color: #000099;"&gt;A unicorn is in the garden&lt;br /&gt;-&amp;gt; Is a unicorn    in the garden?&lt;/pre&gt;&lt;br /&gt;This is done by taking the auxiliary "is" and moving it. However, this is not a simple move as illustrated in the below case&lt;br /&gt;&lt;pre style="color: #000099;"&gt;A unicorn that is eating a flower is in the garden&lt;br /&gt;-&amp;gt;    Is a unicorn that is eating a flower    in the garden?&lt;/pre&gt;&lt;br /&gt;Chomsky argues that our mental algorithm does not pick words by their linear positions, but does so by grouping it into phrases, implying that during a conflict the mind chooses entire units together.&lt;br /&gt;&lt;br /&gt;Does this mean that the designers of LALR were goaded by their mintal algorithm to chose shift instead of reduce? Or does this mean that language is an algorithm (albeit more powerful than any &lt;a href="http://en.wikipedia.org/wiki/Chomsky_hierarchy"&gt;parser&lt;/a&gt;) that is wired into our brain - and evolution chose shift over reduce because that is the easier one to implement?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17256163-1596949450906212736?l=kusimari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/1596949450906212736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kusimari.blogspot.com/2009/07/human-language-and-machine-language-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/1596949450906212736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/1596949450906212736'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/2009/07/human-language-and-machine-language-i.html' title='Human language and machine language'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17256163.post-3374824660916161269</id><published>2009-05-27T15:19:00.001-04:00</published><updated>2010-04-29T05:31:45.374-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web app'/><title type='text'>Wanted - a web design framework/pattern/library</title><content type='html'>These days I have been thinking of why there is no framework which helps me develop a web application in its “natural state of being”.&lt;br /&gt;&lt;br /&gt;Let me explain the natural state of being for a web application. First the browser is no more just a html display engine. Instead the browser has emerged to include user interaction (read javascript) and html display engine. No more is it taboo to have javascript in web applications. In fact web applications say good bye to anyone who has not turned on javascript. Even the html display features have upped the ante. No more table wrangling and poor UI design. The DOM has matured and CSS can do wonders. Grid based CSS frameworks have put web design on par (at least notionally) with print based design.&lt;br /&gt;&lt;br /&gt;What about web frameworks? Have they acknowledged the fact that html and javascript have matured. That, it is no more the forgotten child in the family of enterprise frameworks from Java and .NET or web oriented frameworks from LAMP, with P fulfilled by Python, PHP, Ruby! I would say yes and no. Yes, because many frameworks natively support and integrate with a javascript framework, or provide components based UI, etc. But mainly No, because all the action is in the rear (no pun intended). Html generation, UI interaction is all in the web application logic which is never executed by the browser but executed by the server. You might point out GWT and its ilk, but I have a mixed feeling about GWT. I like the concept and architecture of GWT. It is one of the rare breeds which acknowledge the power of the browser. However I don’t like the fact that everything is java.&lt;br /&gt;&lt;br /&gt;So what do I want from a new age web app framework? Here is my wish list&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Allow development of html in ahem html. Yes, no fancy wrappers frameworks. Plain html is good enough.&lt;/li&gt;&lt;li&gt; Allow layout definition, color and fonts in CSS. Web designers like CSS. There are javascript frameworks which do layout management, CSS, etc, but doing it is CSS's raison d’être , and does a good job.&lt;/li&gt;&lt;li&gt; Allow development of user interaction using javascript. User interaction includes  visual interaction like drag-drop, open-close, etc. It should also include functional user interaction (which we come to next). &lt;/li&gt;&lt;li&gt;Allow integration of functional user interaction with the server using javascript. I don’t want a component tree to be manipulated on the server. The UI is on the browser, let the browser take care of handing UI.&lt;/li&gt;&lt;li&gt;Allow development of the html, css and js as we saw in 1,2,3 in an easy to understand manner. Maybe go back to VB, Swing or even Small talk. Designing a UI and interaction for the web should be no different from designing it for a desktop application. I shudder at the thought of developing a tree table control using only server logic.&lt;/li&gt;&lt;li&gt; Allow development of business logic on the server using insert java, python, ruby, etc. No brainer. Javascript from the browser requests something from the server, and the server dispatches it.&lt;/li&gt;&lt;li&gt;Have features which can glue the disconnected html, js, css and backend server. For e.g. login state management, history, etc.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;One might think that my wish list is a manifestation of &lt;a href="http://en.wikipedia.org/wiki/Not_Invented_Here"&gt;NIH &lt;/a&gt;or even &lt;a href="http://www.joelonsoftware.com/items/2006/08/01.html"&gt;Can your language/framework do this&lt;/a&gt; syndrome. It is not. A web application is created by several thinking hats. First is the graphic designer hat where you do not care about the interaction or functionality. Second is the user interaction designer hat where your intent is to do both visual interaction and functional interaction. Third is the business logic designer hat where your intent is to  fulfill business requests in the form of an API. My wish list is to&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Let each hat use the language best suited for the purpose. Do not force a new language and framework unless it is a DSL.&lt;/li&gt;&lt;li&gt;Let simple things be simple and complex things possible.&lt;/li&gt;&lt;li&gt; A web applications’ UI is on the browser. So, let the VC (capital C) of MVC be on the browser and let Mc (a small C) be on the server.&lt;/li&gt;&lt;/ul&gt;Should we build a new framework or stack to support such kind of development? I don’t think so. There are tons of libraries. A nifty way to glue them is what we need. We need to do what Maven did to Ant build scripts (I know I will be flamed for that). Eliminate ctrl-c ctrl-v and introduce macro'ish way of doing things.&lt;br /&gt;&lt;br /&gt;Html and CSS do not need anything new. CSS frameworks are the new kids on the block, but I don’t know much about graphic design to comment on them.&lt;br /&gt;&lt;br /&gt;jQuery and other DOM manipulation libraries can provide the user interaction we want. Yes, DOM manipulation libraries have a lot more features; they can create the whole html, CSS etc. But like I said let html be done in html, CSS in CSS.&lt;br /&gt;&lt;br /&gt;Functionally user interaction is fulfilled by Ajax modules in DOM manipulation libraries.I feel that Ajax API do not have good semantics. For e.g. in relational theory and SQL, a SELECT does projection, FROM does joins and WHERE does selection (sic!). Something akin to that is needed in Ajax APIs (I hope I explained what I mean). Also, I don’t think you need to hide the fact that the server is remote. EJB did that for many years and then introduced local and remote interfaces. Programming to an interface and not an implementation is always better.&lt;br /&gt;&lt;br /&gt;Server frameworks are dime a dozen. A simple one which functions like an API sending only data in the form of json, xml, yaml, &lt;choose&gt; is more than sufficient. Almost all the frameworks qualify, but they need to be stripped of all the excess fat.&lt;br /&gt;&lt;br /&gt;The biggest job is creating a neat pattern which can glue all these different components, provide necessary and sufficient (i.e. orthogonal) helpers, provide a good set of defaults and extension points. I consider documentation to be as important as the framework. Documentation should teach usage of the framework and provide details on the design of the framework.&lt;br /&gt;&lt;br /&gt;I love programming. I hope that someone (or me) develops something which brings the same joy to web programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17256163-3374824660916161269?l=kusimari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/3374824660916161269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kusimari.blogspot.com/2009/05/wanted-web-design-frameworkpatternlibra.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/3374824660916161269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/3374824660916161269'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/2009/05/wanted-web-design-frameworkpatternlibra.html' title='Wanted - a web design framework/pattern/library'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17256163.post-114360873654977918</id><published>2006-03-29T00:02:00.000-05:00</published><updated>2010-04-28T18:27:36.846-04:00</updated><title type='text'>Taxonomy - Inversion of Control</title><content type='html'>&lt;span style="font-size: 100%;"&gt;&lt;strong face="verdana"&gt;&lt;span style="color: #000099; font-style: italic; font-weight: normal;"&gt;An extended abstract that I submitted for a worshop in my company (&lt;a href="http://www.infosys.com/"&gt;www.infosys.com&lt;/a&gt;)&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: verdana;"&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 100%;"&gt;&lt;strong&gt;&lt;b&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;Relevancy  ranking&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: black; font-size: 100%;"&gt;&lt;span style="color: black;"&gt; is a very important  part of any search engine. Web search engines rank data using factors like  natural language processing, popularity page ranks etc. Enterprise data  generally being structured or semi-structured benefits immensely by using  &lt;strong&gt;&lt;b&gt;taxonomy&lt;/b&gt;&lt;/strong&gt; categorization  for ranking.&lt;br /&gt;&lt;br /&gt;Traditionally  categorization of data under various taxonomies is done by using  &lt;strong&gt;&lt;b&gt;meta-data&lt;/b&gt;&lt;/strong&gt;. Data is  associated with meta-data during data creation, with some flexibility to change  the meta-data during the lifetime of the data. This approach has some  difficulties. Categorization of data has to be done by an elite group - elite in  the field of categorization &amp;amp; taxonomy as well as being subject matter  experts - like authors, editors and librarians. This process is costly and also  a bottleneck when the amount of data is huge and semi-structured. Sometimes the  pre-defined set of taxonomies might not be sufficient. Adding/editing taxonomies  either due to emergence of new kind of data or due to user feedback is fraught  with difficulties.&lt;br /&gt;&lt;br /&gt;One of the approaches  to the above issues is the application of &lt;strong&gt;&lt;b&gt;inversion of control&lt;/b&gt;&lt;/strong&gt; to  the above process. In the traditional process authors, librarians, editors i.e.  produces categorize data. An inversion of control is to let readers, reviewers,  users i.e. consumers categorize data by &lt;strong&gt;&lt;b&gt;tagging&lt;/b&gt;&lt;/strong&gt; taxonomy to the  data. As the number of consumers of data are generally more than the number of  producers this inversion will lead to better and relevant taxonomical  categorization, at minimal cost and with no apparent bottlenecks. Taxonomy tags  can be fluid enough to accomodate user preferences; this will ensure easy  addition and updation of taxonomies and categorization. Finally, human  intelligence being the best form of intelligence; this process will ensure that  the collective intelligence of the consumers of the data is put to the task of  taxonomy categorization - a very difficult task to achieve using natural  language processing and artificial intelligence  techniques.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div face="verdana"&gt;&lt;/div&gt;&lt;div face="verdana"&gt;&lt;/div&gt;&lt;div face="verdana"&gt;&lt;/div&gt;&lt;div face="verdana"&gt;&lt;/div&gt;&lt;div style="font-family: verdana;"&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black; font-size: 100%;"&gt;&lt;span style="color: black;"&gt;The above can be  achieved by following an approach similar to &lt;strong&gt;&lt;b&gt;social networking&lt;/b&gt;&lt;/strong&gt;  web-sites like Del.icio.us, flickr, reddit, slashdot etc. These sites let users  tag data and use these tags as a factor in relevancy ranking. Applying this  technique - an enterprise can build a taxonomy database. This database not only  stores the taxonomy, it also stores bi-directional mapping between taxonomy  &amp;amp; data. Search results use the taxonomy database as a factor in relevancy  ranking. Directory services uses the taxonomy database as a factor in browsing.  Everytime a relevant document is choosen in a search or a directory browse  result, the search engine provides the consumer a way to tag the data using  relevant taxonomies, either existing or new. This information is added to the  taxonomy database. During the lifetime of a document its taxonomical  categorization will mature with each view and tagging combination. This will  help in pushing the rank of the document up or down in a search result or  directory browse based on its tagged taxonomies. The whole process acts in an  endless loop.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: verdana;"&gt;&lt;/div&gt;&lt;div style="font-family: verdana;"&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black; font-size: 100%;"&gt;&lt;span style="color: black;"&gt;The pros/cons as well  as the cost/benefit of such an approach should be considered before  implementation. The authors feel that this inversion of control in the process  of taxonomy categorization will help enterprise search engines and prove to be  beneficial in the long run&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: verdana;"&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/17256163-114360873654977918?l=kusimari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/114360873654977918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kusimari.blogspot.com/2006/03/taxonomy-inversion-of-control-extended.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/114360873654977918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/114360873654977918'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/2006/03/taxonomy-inversion-of-control-extended.html' title='Taxonomy - Inversion of Control'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17256163.post-114312944342896643</id><published>2006-03-23T10:46:00.000-05:00</published><updated>2010-04-28T18:27:47.887-04:00</updated><title type='text'>Inversion of Control as I see it in AI</title><content type='html'>&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;&lt;br /&gt;Strong AI - The belief that a computational engine can show  intelligence. A stronger form of belief is that the human mind is also a computation  engine. Mathematically intelligence is equivalent to church-turning  machine!!!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;Weak AI - The belief that intelligence can be  studied by the aid of a computational engine. Computation can help in also  simulating intelligence. It does not believe in a computational engine showing  true/indepent intelligence. The most famous theorem being Godel's theorem.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;Traditional web search - People were trying to build  intelligence into the search engine. Search engine had bulky logic to rank  search results. This logic had to be AI.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;Google Search - Identified that search ranking cannot be solved only AI.  Instead of using AI for search ranking, they used social behaviour. Social measure of something being popular is based on how many people know about it.  Google used this for their PageRank algorithm. Of course a lot of AI concepts were used,  but not as the backbone. Inversion of Control!!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;Taxonomy - The earlier trend was to categorize information  using automation. Build natural language processing to categorize knowledge.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;&lt;br /&gt;Tags - The current trend used in categorizing  information. It does not use natural language processing, but uses social behaviour. You have a photo, you know about a web page - go ahead and tag it. Tags act like categories. Most of the people will use the same tags. Lo, you have your cateogory. Most popular  being Flickr, del.ic.ious, where you tag photos, links.&lt;br /&gt;Inversion of Control!!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" dir="ltr" style="color: black; font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span class="493542522-07032006"&gt;&lt;/span&gt;&lt;br /&gt;Music Player - All music players arrange music either by directory, artist or genre. What if I could tag songs based on my mood, my category? That would be great!!&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: verdana; font-size: 100%;"&gt;&lt;span style="color: black;"&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/17256163-114312944342896643?l=kusimari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kusimari.blogspot.com/feeds/114312944342896643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kusimari.blogspot.com/2006/03/inversion-of-control-as-i-see-it-in-ai.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/114312944342896643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17256163/posts/default/114312944342896643'/><link rel='alternate' type='text/html' href='http://kusimari.blogspot.com/2006/03/inversion-of-control-as-i-see-it-in-ai.html' title='Inversion of Control as I see it in AI'/><author><name>kusi</name><uri>http://www.blogger.com/profile/14598380451265276531</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
