<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Artagnon&#039;s Presence</title>
	<atom:link href="http://artagnon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://artagnon.com</link>
	<description>Ramkumar Ramachandra &#124; Personal blog on computer science, technology, economics, and other random stuff</description>
	<lastBuildDate>Thu, 07 Jan 2010 12:41:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What drives Open Source?</title>
		<link>http://artagnon.com/2010/01/what-drives-open-source/</link>
		<comments>http://artagnon.com/2010/01/what-drives-open-source/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 20:00:07 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=352</guid>
		<description><![CDATA[This article is intended to be a continuation of Modern Thoughts on Open Source. Although this article is totally independent, I&#8217;ve used the idea of &#8220;open source as an infrastructure&#8221; heavily.
Everyone understands how Microsoft makes money, but very few understand why they&#8217;re getting a wonderful operating system like Ubuntu free of cost. I&#8217;ve tried to [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><span style="color: #888888;">This article is intended to be a continuation of <a href="http://artagnon.com/2010/01/modern-thoughts-on-open-source/">Modern Thoughts on Open Source</a>. Although this article is totally independent, I&#8217;ve used the idea of &#8220;open source as an infrastructure&#8221; heavily.</span></p>
<p>Everyone understands how Microsoft makes money, but very few understand why they&#8217;re getting a wonderful operating system like Ubuntu free of cost. I&#8217;ve tried to explain it here.</p>
<p>The problem with opensource software is simple. The &#8220;vegetable vendor&#8221; model that most closed-source software uses fails with opensource. Take the most popular and simplest example: RedHat. It essentially creates two operating systems from the same codebase: RHEL and Fedora. They sell support for RHEL to corporates, while giving away Fedora to the community, and sponsoring its development. Make no mistake: RHEL is opensource as well, but it has no community like Fedora does. RedHat decides what to go into RHEL, and they build it themselves. Anyone else is free to build it for themselves ofcourse, but they don&#8217;t support those builds [<a href="http://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux#Rebuilds">1</a>].</p>
<p>Why bother with Fedora at all? Simple. The first thing a RedHat service engineer does when he gets a complaint from a customer: attempt to replicate the bug on Fedora. If the bug&#8217;s fixed in Fedora, fixing it in RHEL is as simple as backporting the changes. If it isn&#8217;t, they&#8217;ll file a bug in Fedora. Depending on the situation, either they&#8217;ll get the bug fixed free-of-cost by the community, or will have to fix it themselves. In other words, they&#8217;re just getting code from the community free of cost by maintaining Fedora. Then why not give Fedora to the customers? Because bleeding-edge development takes place on it, and stuff often tends to break and get fixed at a later date [<a href="http://interviews.slashdot.org/article.pl?sid=06/08/17/177220">2</a>]: RedHat cannot control what gets committed to Fedora, but they will make sure that only mature features get into RHEL. This service model not only applies to complete distributions, but to individual software packages as well- PostgreSQL, MySQL, Django are just a few examples.</p>
<p>So finally, who writes Fedora? The Fedora Board consists of nine members: five of whom are RedHat employees and four of whom are community members [<a href="http://fedoraproject.org/wiki/Board#Members">3</a>]. A lot of mainstream opensource software has a similar distribution of paid/ community developers.</p>
<p>Another famous model is the dual-licensing model followed by MySQL AB (now acquired by Sun). They give away MySQL community edition for free, but their enterprise edition is proprietary [<a href="http://en.wikipedia.org/wiki/MySQL#Support_and_licensing">4</a>]. The advantage of having these two editions is similar to the one RedHat gains from having RHEL and Fedora. A similar approach is followed by OpenOffice.org: Their proprietary product that earns them revenue is called StarOffice. Advertising is yet another way: Google pays Mozilla for example.</p>
<p>So, the final question remains: apart from the corporates, who is this &#8220;community&#8221; that writes the code that end-users get free of cost? Most free software projects started out as &#8220;pet projects&#8221; with little monetary incentive. The Linux kernel was written by a student as a personal project, and several parts of the GNU operating system was written by Stallman in an attempt to create a free operating system- both were individuals who weren&#8217;t concentrating on revenue at that time. Things have changed a LOT since then. While there are still many tiny pet projects that are developed by a few people for little/ no monetary incentive, majority of the contribution to mainstream software such as Linux is from people with monetary incentive. The corporates these people work for benefit either directly or indirectly from that opensource project. Corporates that provide support for these opensource projects, that build their products on top of these opensource products, and those that simply use these products in their everyday work. Simple example: Google finds a bug in Chrome, and finds out that the underlying reason is WebKit. After fixing WebKit, getting that fix merged into upstream will benefit them, because they&#8217;re not the only people developing it. Same reason Google will contribute to SSH: They&#8217;re using it, and they&#8217;re not the only ones developing it.</p>
<p>Even non-monetary incentive doesn&#8217;t mean no incentive. Contributing to opensource is a great way to secure one&#8217;s future. All the work is out there in the public for everyone to see, and you don&#8217;t have to explain the work you did  behind the closed doors of a large corporation in flowery language. Code talks. Everything else is CV-noise.</p>
<p>The whole model is sustainable in my opinion. A large corporate uses several bits and pieces of opensource software to create a product. They create an opensource project to drive it, and appoint some developers to head the project. I&#8217;ve already discussed how they&#8217;ll make money to drive it. Students and other prospective employees start contributing to the project for no monetary incentive, with the intention of rising higher in the project&#8217;s hierarchy. They&#8217;re essentially making themselves employable by the company- once the company recognizes some brilliant developers, it starts paying them and giving them specific tasks. An additional bonus kicks in when other companies also become interested in the project and start paying more developers to develop it. There&#8217;s always some ratio of developers working for monetary benefit to those working their way up.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2010/01/what-drives-open-source/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Modern Thoughts on Open Source</title>
		<link>http://artagnon.com/2010/01/modern-thoughts-on-open-source/</link>
		<comments>http://artagnon.com/2010/01/modern-thoughts-on-open-source/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 06:23:18 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=343</guid>
		<description><![CDATA[Few people understand open source. Even fewer use this knowledge to their advantage. On one hand, there are free software fundamentalists with their utopian views, and on the other hand we have closed corporates who don&#8217;t possibly see how open source could work. Both miss the point. I&#8217;ve attempted to explain it using four questions [...]]]></description>
			<content:encoded><![CDATA[<p>Few people understand open source. Even fewer use this knowledge to their advantage. On one hand, there are free software fundamentalists with their utopian views, and on the other hand we have closed corporates who don&#8217;t possibly see how open source could work. Both miss the point. I&#8217;ve attempted to explain it using four questions to guide the article. Admittedly, a lot of what I&#8217;ve said here was explained to me by <a href="http://jace.zaiki.in/">Kiran Jonnalagadda</a> (aka jace, jackerhack).</p>
<ol>
<li>Why do RedHat, IBM, and Novell contribute so much to the Linux kernel? Is it because they care about the free software philosophy and are being charitable? To quote the Linux Foundation <a href="http://www.linuxfoundation.org/publications/whowriteslinux.pdf">August 2009 issue</a>, &#8220;Over 70% of all kernel development is demonstrably done by developers who are being paid for their work&#8221; and &#8220;None of these companies are supporting Linux development as an act of charity; in each case, these companies find that improving the kernel helps them to be more competitive in their markets&#8221;</li>
<li>Why does Google pump money into a competing against Firefox with an open source alternative, Chrome? To quote an excerpt from their <a href="http://googleblog.blogspot.com/2009/12/meaning-of-open.html">December 2009 blog post</a>, &#8220;Today&#8217;s open source goes far beyond the &#8220;patent pooling&#8221; of the early auto manufacturers, and has led to the development of the sophisticated software components — Linux, Apache, SSH, and others — upon which Google is built&#8221;</li>
<li>Why are several of Microsoft&#8217;s products losing market share? Why does Microsoft feel threatened by Linux? To quote Ballmer, &#8220;Linux is a cancer that attaches itself in an intellectual property sense to everything it touches&#8221;. Is it because the general public is convinced by the GNU philosophy to &#8220;share with thy neighbor&#8221;, or is it simply because of competition?</li>
<li>And finally, a slightly off-topic question to reinforce my point.  Why did Apple finally make the move to x86 even after their innumerable claims that PPC is better? Is it because PPC is inherently inferior to Intel&#8217;s x86, and nothing could have been done to save it?</li>
</ol>
<p>All this points to one thing: Open source is an infrastructure. Just like the roads in the city that automobile manufacturers are interested in, software companies want access to existing infrastructure to build their own products upon and make money, instead of having to re-invent the wheel everytime. It&#8217;s a win-win situation for all companies. Paying Microsoft to get Windows to support their products can be an expensive affair. So making an operating system a commodity is in everyone&#8217;s interests (well, except Microsoft&#8217;s). The web browser is another example of a commodity today. Everyone&#8217;s interested in a good, conformant, open platform on which to develop their web applications on.</p>
<p>There are commodities in other sectors too. Apple moved to x86 because it was the standard commodity to use. Too many companies pumped money into it resulting in its development, and mass manufacturing brought down costs. Apple understood this- one company pumping money into PPC cannot match the rest of the world pumping money into x86.</p>
<p>The day a product comes out, every other company tries to clone it and make the product a commodity. In the small time window between the product being niche and the product becoming a commodity, there is money to be made. Take Netscape&#8217;s example: Once they felt the pressure of the competing web browsers, they realized that keeping their browser closed and exclusively pumping money into it was pointless. So they opened it out, and started the Mozilla project. In other words, open sourcing a piece of software typically means that that piece of software can no longer make money as a traditional product anymore. Same reason Facebook open-sourced many of its components: It has everything to gain, nothing to lose. It&#8217;s already too big on the social networking front to worry about competition there.</p>
<p>Largely, there are two ways to make money off this infrastructure: sell the cars that use these roads most sensibly, or follow a &#8220;pure service&#8221; model. The problem with the pure service model is that only RedHat and a few other companies have been successful at it. The argument &#8220;I created it, so I can service it best&#8221; doesn&#8217;t hold anymore- too many people have technical expertise in open source software. So unless your service is the cheapest and the best, it&#8217;ll be killed off by other service providers.</p>
<p>Products don&#8217;t have to start off being closed and then open up when they stop making money. Companies are also interested in starting off free software projects. Google Chrome for example. They wanted to make this web browser a commodity, a commodity created by them. They&#8217;ll have a foot at the door when Chrome gains larger market share.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2010/01/modern-thoughts-on-open-source/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>My talks at #fossdotin</title>
		<link>http://artagnon.com/2009/12/my-talks-at-fossdotin/</link>
		<comments>http://artagnon.com/2009/12/my-talks-at-fossdotin/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 13:02:43 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[unladen swallow]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=333</guid>
		<description><![CDATA[I thought the &#8220;Haskell Internals&#8221; talk was probably too technical. I expected a lot of people to have some prior exposure to functional programming. Otherwise the Haskell code dump would have shocked them. @swaroopch told me that my &#8220;An Insight into CPython Compiler Design&#8221; (it&#8217;s called unladen-swallow.pdf here) was good, mainly because I made it [...]]]></description>
			<content:encoded><![CDATA[<p>I thought the &#8220;Haskell Internals&#8221; talk was probably too technical. I expected a lot of people to have some prior exposure to functional programming. Otherwise the Haskell code dump would have shocked them. <a href="http://twitter.com/swaroopch">@swaroopch</a> told me that my &#8220;An Insight into CPython Compiler Design&#8221; (it&#8217;s called unladen-swallow.pdf here) was good, mainly because I made it clear what I&#8217;m going to be talking about in the title. <a href="http://twitter.com/NOLFXceptMe">@NOLFXceptMe</a> told me that the talk was super-informal, like I was explaining to someone across the coffee table- exactly what I intended! It has a LOT of C code, but that didn&#8217;t scare people one bit. I could tell from the feedback session that many of them actually read the code, unlike the Haskell code from my previous talk. Anyway, lesson learnt. Here are the slides. You can get the sources and compile it for yourself with notes, or just see the BiBTeX references <a href="http://github.com/artagnon/foss.in">here</a>. Oh, and the comments section in the blog exists for a reason- I want feedback! I can&#8217;t improve without it.</p>
<div style="float: left; margin-right: 5px; overflow: visible;"><a style="color: #bc7134;"><img style="border: none;" src="http://posterous.com/images/filetypes/pdf.png" alt="http://artagnon.com/wp-content/uploads/haskell-internals.pdf" /></a></div>
<p><strong><a style="color: #bc7134;" href="http://artagnon.com/wp-content/uploads/haskell-internals.pdf">haskell-internals.pdf</a></strong> <span style="font-size: 10px; color: #424037;">(504 KB)</span> <br style="clear: both;" /></p>
<div style="float: left; margin-right: 5px; overflow: visible;"><a style="color: #bc7134;"><img style="border: none;" src="http://posterous.com/images/filetypes/pdf.png" alt="http://artagnon.com/wp-content/uploads/unladen-swallow.pdf" /></a></div>
<p><strong><a style="color: #bc7134;" href="http://artagnon.com/wp-content/uploads/unladen-swallow.pdf">unladen-swallow.pdf</a></strong> <span style="font-size: 10px; color: #424037;">(644 KB)</span> <br style="clear: both;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/12/my-talks-at-fossdotin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My FOSS.IN/2009 talk abstracts</title>
		<link>http://artagnon.com/2009/11/my-foss-in2009-talk-abstracts/</link>
		<comments>http://artagnon.com/2009/11/my-foss-in2009-talk-abstracts/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:19:16 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[foss.in]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[project euler]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=326</guid>
		<description><![CDATA[




A couple of my talks have been shortlisted, but the abstracts won&#8217;t be up on the site until a week before the conference. So here are the abstracts. I&#8217;ve just started preparing the talks, so feedback is appreciated.
An Insight into CPython Compiler Design
The objective of this talk is to give the audience an insight into compiler design, [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl id="attachment_327" class="wp-caption alignleft" style="width: 160px;">
<dt class="wp-caption-dt"><a href="http://artagnon.com/wp-content/uploads/foss.jpg"><img class="size-thumbnail wp-image-327" title="FOSS.IN" src="http://artagnon.com/wp-content/uploads/foss-150x150.jpg" alt="FOSS.IN/2009 Poster" width="150" height="150" /></a></dt>
</dl>
</div>
<p>A couple of my talks have been <a href="http://foss.in/news/foss-in2009-first-shortlist.html" target="_blank">shortlisted</a>, but the abstracts won&#8217;t be up on the site until a week before the conference. So here are the abstracts. I&#8217;ve just started preparing the talks, so feedback is appreciated.</p>
<p><strong>An Insight into CPython Compiler Design</strong></p>
<p><strong><span style="font-weight: normal; background-color: #ffffff;">The objective of this talk is to give the audience an insight into compiler design, specifically the design of the CPython compiler. The talk attempts to do this by taking apart the Unladen Swallow codebase.</span></strong></p>
<p><strong><span style="font-weight: normal; background-color: #ffffff;">Starting from a small hand-waving discussion using block diagrams, we will discuss compiler optimization techniques introduced by Unladen Swallow using revision control to playback changes. There is (and will be) no original research; only implementation of ideas from existing research papers.</span></strong></p>
<p>A significant portion of the talk will be dedicated to compiling Python bytecode to LLVM IR (in Python/llvm_compile.cc), and the eval loop (in Python/eval.cc). While there are thousands of possible optimizations, only those which yield significant benefits and are in line with CPython&#8217;s objectives will be discussed.</p>
<p>Intended audience: Programmers interested in understanding (and ultimately contributing to) compiler projects like Clojure, Unladen Swallow, GHC.</p>
<p><span style="background-color: #ffffff;">Prerequisites: Requires a basic understanding of language grammers and parsing [1], as well as elementary compiler design [2]. The talk will jump right into the codebase with little introductory material, so the audience is required to do a little background reading.</span></p>
<p>[1] Flip through the relevant parts of the Dragon Book<br />
[2] Scheme&#8217;s eval-apply loop from SICP should do fine</p>
<p><strong>Haskell Internals</strong></p>
<p><strong><span style="font-weight: normal; background-color: #ffffff;">The session will focus on writing clever code in non-monadic Haskell, by solving several problems modeled on problems in [<a style="color: #222222;" href="http://projecteuler.net" target="_blank">http://projecteuler.net</a>] and [<a style="color: #222222;" href="http://code.google.com/codejam/" target="_blank">code.google.com/codejam/</a>]. It will serve as an introduction to folds, maps, laziness, lexical closures, and other core features of functional programming in Haskell, while also attempt to give a small peek into the working of the Glasgow Haskell Compiler.</span></strong></p>
<p>Target audience: People interested in functional programming and people interested in scientific computing.</p>
<p>Prerequisites: Ideally none. But since  the session intends to have little introductory material, a quick read through some jargon will be necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/11/my-foss-in2009-talk-abstracts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>On Society</title>
		<link>http://artagnon.com/2009/10/on-society/</link>
		<comments>http://artagnon.com/2009/10/on-society/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 08:24:46 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[biology]]></category>
		<category><![CDATA[darwinism]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[morality]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=310</guid>
		<description><![CDATA[Darwinism dictates that any species will evolve in the direction that ensures its survival. The largest evolutionary change that led to humans was that of the human brain. Beyond this point, Darwinism can&#8217;t explain. Because if it could, humans would just be killing each other and ensuring survival of the fittest. The sick wouldn&#8217;t get [...]]]></description>
			<content:encoded><![CDATA[<p>Darwinism dictates that any species will evolve in the direction that ensures its survival. The largest evolutionary change that led to humans was that of the human brain. Beyond this point, Darwinism can&#8217;t explain. Because if it could, humans would just be killing each other and ensuring survival of the fittest. The sick wouldn&#8217;t get treated, people with weaker immune systems would die, ensuring that their genes don&#8217;t propagate.</p>
<p>Case study- humans went from forming small tribes that fend for themselves (and killing other tribes when necessary), to this complex socio-political structure we have today. In what direction has humanity as a whole moved? Certainly not ensuring longevity, otherwise we wouldn&#8217;t be developing nuclear warheads when people are dying of malaria in Uganda. No. It has moved in the direction that gives individuals more time to utilize their minds. Humans went from constantly worrying about the next meal as hunter-gatherers, to having a little more leisure time as farmers, to what they are today.</p>
<p>Humans live in complex societies today. Everyone doesn&#8217;t have to worry about what pesticides they should use to ensure the survival of the rice crop for their next meal. Individuals are different, and the purpose of society at large is to foster individual growth, while providing them convenient access to generations of human thought. <span style="background-color: #ffffff;">It&#8217;s a delicate system though. If the society allows too much individuality, many human minds will be engaged in crashing airplanes into the WTC, and taking other human life. At the same time, if it allows too little individual growth, the purpose of humanity at large will be lost, and the society will collapse. Initially, laws and social norms were conservative, and with time, they laws become more liberal to accept a larger diversity in individuals. I&#8217;m not sure this trade-off argument works: for a significantly lower number of terrorists, thinkers like Socrates had to be put to death. No. Without those laws/ social norms, Socrates would have probably spent more time worrying about being killed by terrorists, and less time thinking about politics. Society constantly revises laws; like the ones on abortion, capital punishment, and gay marriage. Humanity still has a long way to go, and much of the progress depends on fixing things like the morality of stem cell research, for example.</span></p>
<p>There are no inborn laws or morals in humans, as several religious texts seem to indicate. Morals are defined by society after several experiments. On the right to equality for example, one school of thought gains acceptance, and all the others die out. Right to equality then becomes fundamental to every society, societies start experimenting with other issues, and the process continues. Why not just get someone to write laws of the future (read: big religious book) and enforce them? Consider the thought experiment: Would humans in 30 BC have been able to accept the right to equality? No. Laws are just a reflection of human progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/10/on-society/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Demystifying Unladen Swallow</title>
		<link>http://artagnon.com/2009/10/demystifying-unladen-swallow/</link>
		<comments>http://artagnon.com/2009/10/demystifying-unladen-swallow/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:52:33 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[llvm]]></category>
		<category><![CDATA[unladen swallow]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=297</guid>
		<description><![CDATA[Unladen Swallow is &#8220;an optimization branch of CPython, intended to be fully compatible and significantly faster&#8221;. Interesting. In order to understand Unladen Swallow, we first needed to understand the CPython compiler. It&#8217;s  written in C and fairly easy to understand, very unlike the self-hosting complex beasts Steel Bank Common Lisp and Glasgow Haskell Compiler. The [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/unladen-swallow/" target="_blank">Unladen Swallow</a> is &#8220;an optimization branch of CPython, intended to be fully compatible and significantly faster&#8221;. Interesting. In order to understand Unladen Swallow, we first needed to understand the CPython compiler. It&#8217;s  written in C and fairly easy to understand, very unlike the self-hosting complex beasts Steel Bank Common Lisp and Glasgow Haskell Compiler. The design of the compiler is explained fully in <a href="http://www.python.org/dev/peps/pep-0339/" target="_blank">PEP 339</a>, and I&#8217;m just including a small warm-up discussion.</p>
<p>Start off at the top level: the evaluator (Python/cevel.c). It executes <a href="http://docs.python.org/library/dis.html" target="_blank">Python bytecode</a>. From the Python program you write to the Python bytecode that is produced, there are several stages with optimizations at every stage. It goes like this:<code><br />
</code></p>
<ol>
<li>Using the <a href="http://pages.cpsc.ucalgary.ca/~aycock/spark/" target="_blank">SPARK</a> parser generator, generate the Parse Tree from the Python code  (Parser/pgen.c)</li>
<li>Convert the Parse Tree into an <a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank">Abstract Syntax Tree</a> (Python/ast.c)</li>
<li>Transform the AST into a <a href="http://en.wikipedia.org/wiki/Control_flow_graph">Control Flow Graph</a>. Several compiler optimizations like removing unreachable code are implemented here (Python/compile.c)</li>
<li>Post-order <a href="http://en.wikipedia.org/wiki/Depth-first_search" target="_blank">DFS</a> the CFG and flatten it to emit the final Python bytecode. The bytecode is then subjected to various peephole optimizations (Python/compile.c)</li>
<li>Instead of having to go through this this long procedure everytime we want to run the same program, the Python bytecode produced is stored in a .pyc file.</li>
</ol>
<p>Enough warming up. The Unladen Swallow developers want to optimize CPython very smoothly, preferably without breaking any existing code. Their Project Plan is laid out on the <a href="http://code.google.com/p/unladen-swallow/wiki/ProjectPlan" target="_blank">Wiki page</a>; I&#8217;ll mainly discuss 2009Q2.</p>
<p>If they work at any stage higher than the Python bytecode, they&#8217;ll have to re-implement the fantastic peephole optimizations written by the community over the years. The plan is simple: instead of executing the high-level bytecode in the eval loop (which can be painfully slow), compile atleast some part of it into a lower representation that can be executed faster. Why not compile all of it to x86 assembly? Firstly, we&#8217;d lose the interactive shell, a very major part of Python. Secondly, we&#8217;d lose out on Python&#8217;s high portability, that arises because it&#8217;s not tied down to any single architecture&#8217;s assembly language (I even run Python on my phone using the PyS60 package). Thirdly, it&#8217;s terribly difficult to do, makes Python uglier and unmaintainable, and it&#8217;s utterly pointless- we&#8217;re trading off too much for execution speed.</p>
<p>Just-in-time (JIT) compilation is the solution. Compile the code only when needed. Then again, don&#8217;t compile everything; compile when the new execution time is less than the old execution time by an extent enough to justify the compile time. Otherwise, the <a href="http://en.wikipedia.org/wiki/Just-in-time_compilation#Startup_delay_and_optimizations" target="_blank">startup delay</a> will become unbearable and the interactive interpreter won&#8217;t really be interactive anymore. The perfect low-level platform independent representation to JIT to is <a href="http://llvm.org">LLVM</a> (Low-level virtual machine). So, the Unladen Swallow developers first wrote a compiler from Python bytecode to <a href="http://llvm.org/demo/index.cgi" target="_blank">LLVM IR</a> from scratch (Python/llvm_compile.cc). The LLVM IR (Intermediate Representation) looks a lot like assembly, except that it&#8217;s architecture-independent,  and can be subject to a nice set of optimizations. Then they modified the eval loop to execute LLVM IR, while keeping the existing Python bytecode evaluator (file renamed: Python/eval.cc).</p>
<p>Q3 and Q4 aren&#8217;t updated on the Wiki page, but it should be easy enough to find out the work in progress from the IRC channel, mailing list, and repository commits.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/10/demystifying-unladen-swallow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Designing an introductory computer science course: Part 1</title>
		<link>http://artagnon.com/2009/09/designing-an-introductory-computer-science-course-part-1/</link>
		<comments>http://artagnon.com/2009/09/designing-an-introductory-computer-science-course-part-1/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 11:09:30 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[common lisp]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=269</guid>
		<description><![CDATA[This course attempts to teach programming methodology from an engineering viewpoint, as well give an insight into theoretical computer science.
Guidelines:

Teach programming, and not the programming language. Discuss abstract ideas in class, and ask students to write implementations in a language of their choice. Avoid building language-specific patterns (for example, the double-for loop for generating prime [...]]]></description>
			<content:encoded><![CDATA[<p>This course attempts to teach programming methodology from an engineering viewpoint, as well give an insight into theoretical computer science.</p>
<p>Guidelines:</p>
<ol>
<li>Teach programming, and not the programming language. Discuss abstract ideas in class, and ask students to write implementations in a language of their choice. Avoid building language-specific patterns (for example, the double-for loop for generating prime numbers in C got stuck in my head). Discuss various different implementations AFTER the students have tried it themselves.</li>
<li>Discussions should span several programming paradigms. Initially, cast problem statements to strongly indicate a paradigm. For example &#8220;Go over numbers from 1 to 10 and print those that are even&#8221; versus &#8220;Define an even number and print even numbers &lt;= 10&#8243;. Later, let students figure it out themselves.</li>
<li>Develop a hacker mindset- give students incomplete solutions written by other students and ask them to complete it.</li>
<li>For routine assignments, prepare a huge problem set of ascending difficulty to randomly pick from, along the lines of Project Euler. Problems should cover algorithms, pure math, computational geometry, and dynamic programming.</li>
<li>Conduct collaborative programming sessions where students learn to implement from each other. No single instructor will be able to provide such a vast variety of implementations.</li>
<li>Prepare a reading list for software engineering, including articles on editing (introduction to specialized editors such as Vim and Emacs), debugging, versioning, testing, and profiling. It&#8217;s important to make students write large programs collaboratively in steps, so that they will be able to appreciate the importance of these tools.</li>
<li>Prepare another reading list for theoretical computer science. Also give students sneak peeks into the latest work in every field. The purpose of this exercise is to get students excited, so that they can work independently to eventually discover their research interests.</li>
<li>Finally, it all boils down to grading. If you&#8217;re going to ask students to evaluate things like (i++) + (++i) in the exam, it&#8217;s clear that you&#8217;re expecting students to know programming language intricacies, and not programming methodology.</li>
</ol>
<div style="padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;">
<div style="float: left; margin-right: 5px; overflow: visible;"><a style="color: #bc7134;" href="http://artagnon.com/wp-content/uploads/lecture1.pdf"><img style="border: none;" src="http://posterous.com/images/filetypes/pdf.png" alt="" /></a></div>
<p><strong><a style="color: #bc7134;" href="http://artagnon.com/wp-content/uploads/lecture1.pdf">lecture1.pdf</a></strong> <span style="font-size: 10px; color: #424037;">(130 KB)</span> <br style="clear: both;" /></div>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/09/designing-an-introductory-computer-science-course-part-1/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Curve fitting: A presentation</title>
		<link>http://artagnon.com/2009/08/curve-fitting-a-presentation/</link>
		<comments>http://artagnon.com/2009/08/curve-fitting-a-presentation/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 16:29:02 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://artagnon.com/2009/08/curve-fitting-a-presentation/</guid>
		<description><![CDATA[

curve-fitting.pdf (168 KB) 
I delivered a talk on curve fitting today in the physics department seminar room. This is the presentation I used. The objective of the talk was to familiarize everyone with the chi-square distribution and chi-square fitting without focusing too much on the implementation details. Since the complete audience didn&#8217;t have background knowledge [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;">
<div style="float: left; margin-right: 5px; overflow: visible;"><a style="color: #bc7134;" href=""><img style="border: none;" src="http://posterous.com/images/filetypes/pdf.png" alt="http://artagnon.com/wp-content/uploads/curve-fitting.pdf" /></a></div>
<p><strong><a style="color: #bc7134;" href="http://artagnon.com/wp-content/uploads/curve-fitting.pdf">curve-fitting.pdf</a></strong> <span style="font-size: 10px; color: #424037;">(168 KB)</span> <br style="clear: both;" /></div>
<p>I delivered a talk on curve fitting today in the physics department seminar room. This is the presentation I used. The objective of the talk was to familiarize everyone with the chi-square distribution and chi-square fitting without focusing too much on the implementation details. Since the complete audience didn&#8217;t have background knowledge of probability theory, I had to briefly touch up some concepts like Cumulative Distribution Function and Probability Density Function.</p>
<p>Overall, I think the talk came out alright, although it was apparent that some of my fundamentals were holed. It&#8217;s a miracle it even came out, considering that I was delivering it on a paracetamol-suppressed headache and fever.</p>
<p>Finally, LaTeX + Beamer is too awesome!</p>
<p>Edits: The zeroth central moment is one, not zero.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/08/curve-fitting-a-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why and how I switched from Vim to Emacs</title>
		<link>http://artagnon.com/2009/05/why-and-how-i-switched-from-vim-to-emacs/</link>
		<comments>http://artagnon.com/2009/05/why-and-how-i-switched-from-vim-to-emacs/#comments</comments>
		<pubDate>Mon, 18 May 2009 13:06:00 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=220</guid>
		<description><![CDATA[NOTE: I have no intentions of starting another editor war. Opinions expressed here are my own.
Over five years ago, I realized that using editors like nano and Gedit wouldn&#8217;t suffice. The need to learn a real editor arose as I wrote more and more code. By nature, I&#8217;m a minimalist. I hate clicky flashy bloated [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><span style="color: #888888;">NOTE: I have no intentions of starting another editor war. Opinions expressed here are my own.</span></p>
<p>Over five years ago, I realized that using editors like nano and Gedit wouldn&#8217;t suffice. The need to learn a real editor arose as I wrote more and more code. By nature, I&#8217;m a minimalist. I hate clicky flashy bloated things like GNOME, KDE, Compiz, Beryl etc. Emacs is large, graphical and consumes eons of memory compared to Vim. I had also just learnt touch typing and was eager to put that knowledge to use. Emacs didn&#8217;t appeal to me at all with its complex META and CONTROL keybindings and its complicated GUI. Vim, on the other hand was small, simple, ran off my terminal and had very simple keybindings. I took to Vim immediately and progressed to become very good at it. Vim uses muscle memory heavily- once you&#8217;re that good at Vim, you don&#8217;t have to conciosly edit anything; fingers move on their own and it feels like Vim is reading your thoughts. It&#8217;s the principle concept as touch typing. Which is what makes it so hard to switch. It struck me that there was something about Emacs worth learning over a year ago, but I was never really able to use it.</p>
<p>I wanted to do so much more with Vim when I realized that it was crippled. Everyone seemed to be talking about those features being present in Emacs. Consider a simple task- editing a file over the network. In the Vim world, I&#8217;d ssh into the remote machine and copy my ~/.vimrc and ~/.vim over, praying that the same version of Vim is present on the remote machine. Then using screen (see GNU screen) sessions, I could resume work. In the development front, I learnt that Vim had lots of features hardcoded for C/ C++, but not other languages. In Python, I had to use indentation-based folding to select codeblocks. I wished that Vim behaved more intelligently and do context-specific tasks. A :make in C or C++ is not the same as the :make in Python or :make in LaTeX. Vim didn&#8217;t understand this.</p>
<p>Writing and debugging were also separated- I couldn&#8217;t really debug anything from within Vim. This wasn&#8217;t critical until I ventured out to learn a Lisp. In Common Lisp, writing code and debugging it are so closely related that it was impossible to keep switching between applications to do it. Everyone recommended SLIME (Superior Lisp Interaction Mode for Emacs). I tried to switch retaining the keybindings using tricks like Viper mode for Emacs, but to be honest, nothing really worked out. Purists encouraged me to use Emacs as-it-is without these cheap tricks. I kept looking for Vim equivalents for several tasks and kept failing.</p>
<p>Few people understand the real difference between the two editors. They go on and on comparing the number of keystrokes required to do equivalent operations. I did the same for some time until it struck me- Vim is a dumb text editor, Emacs feels like some sort of intelligent organism. No real equivalents like the Vim &#8220;vawy&#8230;p&#8221; existed in Emacs- why? because Emacs is more intelligent in that. Vim doesn&#8217;t understand what a &#8220;function&#8221; or &#8220;codeblock&#8221; is. It simply understands characters and lines. Vim is a superb dumb text editor, but nothing more. Emacs, on the other hand, seems to understand what you write and assists you more intelligently. It doesn&#8217;t require the basic text editing functions that Vim has at all. I&#8217;ll give you an example. Recently, M-z or zap-to-char function was introduced into Emacs. Initially, I was very excited about it, because majority of my commands in Vim were dt, df. Now, I rarely use the command. There&#8217;s little doubt about it- In my Vim time, I could have beaten any Emacs expert at basic text editing. Vim does it faster. Emacs doesn&#8217;t even have many of those keybindings.</p>
<p>Then why? Because I came to realize that programmers do a lot more than just basic text editing. Vim and Emacs assist the programmer in different ways. Vim helps the programmer save time on basic text editing functions while deserting him when he wants to do his compiling or debugging or even interact with an external application. Emacs, on the other hand, seems to understand the code and helps the programmer operate on code entities, rather than characters and lines. SLIME is easily the best development environment I have seen. Emacs interactions with external applications nicely. Even documentation is readily available within Emacs.</p>
<p>What gives Emacs its so-called intelligence? A major part is contributed by it minor modes. When I open a certain file, some specific minor modes get activated and keybindings invoke context-specific functions. I loved the context-specific help. In latex-mode, I could preview the document I was writing with the same keybinding that I used to compile lines in elisp-mode. The same keybindings mean different (but comprehensible and expected) things in different minor modes.</p>
<p>As I started using it more and more, I understood the true nature of Emacs. Emacs is actually just an elisp environment bundled with several snippets of code written in elisp. Every keybinding invokes an elisp function (ok, some are so basic that the functions are compiled in C. But there are few immutable functions like this). This allows it to be infinitely extensible. Today, there are several brilliant elisp programs like emacs-w3m, emms, eterm, rcirc etc. which allow users to do email, chat, browse the internet and do a lot more, right from within emacs. SLIME is also just an elisp application. In Vim, everything&#8217;s written in C and keybindings are hardcoded, which is what makes it rigid.</p>
<p>At the end of the day, I have realized that average programmers can be equally productive on both Emacs and Vim. The question is simple- do you want your editor to assist you with basic text editing or higher tasks? And as programmers become better and better at what they do, I personally feel that they require assistance with higher tasks and not basic text editing.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/05/why-and-how-i-switched-from-vim-to-emacs/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Ripped to shreds</title>
		<link>http://artagnon.com/2009/04/ripped-to-shreds/</link>
		<comments>http://artagnon.com/2009/04/ripped-to-shreds/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 17:55:15 +0000</pubDate>
		<dc:creator>Ramkumar</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[patent]]></category>

		<guid isPermaLink="false">http://artagnon.com/?p=218</guid>
		<description><![CDATA[There was this badly written article on patents up on a mailing list, awaiting comments before being published.  Admitted, I can be very critical at times, but on this occasion, I actually went over the edge and ripped it apart line by line. Literally. Now, all it is is pure entertainment value.
Being a tech based [...]]]></description>
			<content:encoded><![CDATA[<p>There was this badly written article on patents up on a mailing list, awaiting comments before being published.  Admitted, I can be very critical at times, but on this occasion, I actually went over the edge and ripped it apart line by line. Literally. Now, all it is is pure entertainment value.</p>
<p>Being a tech based entrepreneur patent management is a crucial issue for the success of one&#8217;s start-up.<br />
&gt;&gt;&gt; Always hyphenate words when you can. It improves readability. &#8220;tech-based&#8221;<br />
&gt;&gt;&gt; Avoid usage such as &#8220;one&#8217;s xxx&#8221;. Who is being a tech-based entrepreneur? Who is the ONE?<br />
&gt;&gt;&gt; &#8220;Eats shoots and leaves&#8221; or &#8220;Eats, shoots and leaves&#8221;? There&#8217;s a comma missing in this sentence.</p>
<p>You have to make sure that if a company like IBM files a patent on your new software start-up, it&#8217;s not lost among the million patents floating in the sea.<br />
&gt;&gt;&gt; Who? Me? Am I the ONE?<br />
&gt;&gt;&gt; Ambiguous &#8220;it&#8221;. What? IBM or my new software startup or IBM&#8217;s patent?<br />
&gt;&gt;&gt; &#8220;the million patents floating in the sea&#8221; should be &#8220;among the millions of patents floating in the sea&#8221;</p>
<p>Patent attorneys cannot help you much if you have already committed mistakes initially due to lack of awareness.<br />
&gt;&gt;&gt; What? What mistakes? Lack of awareness? What should I have been aware of?</p>
<p>Before getting into depth of this issue, let us understand what patent means.<br />
&gt;&gt;&gt; Marvelous. You&#8217;ve started a paragraph with a sentence referring to &#8220;this issue&#8221;. What i this issue?<br />
&gt;&gt;&gt; &#8220;Let us understand&#8221;? Are you trying to have a conversation with me all of a sudden? First, you refer to me as the &#8220;one&#8221;, and then go on to say &#8220;you&#8221;. Finally &#8220;we&#8221;?</p>
<p>The appropriate government gives a set of exclusive and jurisdictional rights to the inventor like distribution, sale, use, export and these rights are collectively known as patent.<br />
&gt;&gt;&gt; In trying to explain to me what a patent is in the middle of your article, you have suddenly brought in some &#8220;appropriate government&#8221;.</p>
<p>For obtaining a patent, an invention must cover three basic criteria: Novelty, Non-obviousness and utility.<br />
&gt;&gt;&gt; &#8220;cover criteria&#8221;? More like &#8220;satisfy criteria&#8221; or &#8220;meet criteria&#8221;.</p>
<p>Many inventors publically disclose their invention before filing a patent and loose on the grounds of novelty.<br />
&gt;&gt;&gt; &#8220;loose&#8221;? Come on. This is a glaring mistake.</p>
<p>As a entrepreneur, one must know the level of disclosure to make in public before filing a patent, which parts of the invention are patentable and if it is been covered by any other prior art.<br />
&gt;&gt;&gt; Totally incoherent. I don&#8217;t understand a thing. Break it up. &#8220;As a entrepreneur, one must know<br />
1. The level of disclosure to make in public before filing a patent<br />
2. which parts of the invention are patentable<br />
3. if it is been covered by any other prior art&#8221;<br />
Putting all three into a coherent sentence requires considerable skill.</p>
<p>Knowledge and Intellectual property is the prime asset a start-up can have.<br />
&gt;&gt;&gt; A and B &#8220;is&#8221;? Are you confused between singular and plural?</p>
<p>Awareness and confidence of its protection are the skills which makes one a successful entrepreneur.<br />
&gt;&gt;&gt; &#8220;Confidence of its protection&#8221;? I&#8217;m left speechless.<br />
&gt;&gt;&gt; ONE.</p>
<p>One of the major challenges is to realize the value of this intellectual property, which is well depicted in Gordan V. Smith&#8217;s famous book &#8216;Intellectual Property: Licensing and Joint Venture Profit Strategies&#8217;.<br />
&gt;&gt;&gt; Major challenges of what? Of being an entrepreneur?</p>
<p>Intellectual property is actually a legal definition of ideas, inventions, artistic works and other commercially viable products created out of one&#8217;s own mental processes.<br />
&gt;&gt;&gt; Okay, I&#8217;m tired. After telling me about how IP is important to a startup, you&#8217;re finally getting around to giving me an atrocious definition of IP. &#8220;created out of one&#8217;s own mental processes&#8221; &#8212; WHAT!?</p>
<p>In the same sense that real estate titles and bills of sale establish ownership of tangible items, intellectual property is protected by such legal means as patents, copyrights, and trademark registrations.<br />
&gt;&gt;&gt; &#8220;protected by such legal means as&#8221; should be &#8220;protected by legal means such as&#8221;</p>
<p>The United States Patents and Trademarks Office (USPTO) receives over 5,000 patent applications each week and has granted over 100,000 patents annually since 1994.<br />
&gt;&gt;&gt; *sigh* &#8230; off we are again on the roller-coaster ride- yet another irrelevant tangent. Why doesn&#8217;t the article flow at all? Are the cut-outs of articles from different Wikipedia pages or something?<br />
&gt;&gt;&gt; &#8220;5,000 patent applications each week&#8221; should be &#8220;5,000 patent applications a week&#8221;. You&#8217;re not emphasizing on what it does every week, but on the number of patent applications it receives. My college fees isn&#8217;t 35,000 INR each semester. It&#8217;s 35,000 INR a semester.<br />
&gt;&gt;&gt; &#8220;and has granted over 100,000 patents annually since 1994&#8243; TENSE! The sentence should be corrected as &#8220;The United States Patents and Trademarks Office (USPTO) receives over 5,000 patent applications a week. The organization has granted over 100,000 patents annually since 1994.&#8221;</p>
<p>Since then patent application and issuance rates continue to increase exponentially.<br />
&gt;&gt;&gt; Since when?</p>
<p>This makes patent management a crucial criteria.<br />
&gt;&gt;&gt; Criteria for what?</p>
<p>The main goal of patent management is obtaining and maintaining patents. This process involves various technical, legal and business skills. Identifying, developing and assessing the technology involved in a given patent naturally requires some amount of technical knowledge. Legal expertise is often beneficial, but not necessary, to complete a patent application and maintain it. Finally, maximizing the profits of the patent is the responsibility of businesses. While numerous professionals are often involved in obtaining and maintaining<br />
patents, it is also possible for the individual inventor to do the work himself. Although, this is less likely a wise approach if the invention is complex and the potential profitability is high.<br />
&gt;&gt;&gt; Okay, I&#8217;m convinced that this paragraph has been cut out from a different article and interposed into this one, in some vague attempt to cite some examples.</p>
<p>Managing a portfolio of patents in your asset is very crucial and sturdy task to perform.<br />
&gt;&gt;&gt; &#8220;is very crucial and sturdy task to perform&#8221; should be &#8220;is a very crucial and sturdy task to perform&#8221;. &#8220;Crucial&#8221; and &#8220;sturdy&#8221; task? Can adjectives be more misplaced?</p>
<p>Best examples in patent management will be IBM generating revenue of US $ 1 billion from more than 30,000 live patents and University of California generating more than US $ 100 million from more than 3,000<br />
patents in the year 2007.<br />
&gt;&gt;&gt; &#8220;&#8230; will be IBM generating &#8230; in the year 2007&#8243;!? IBM will be generating revenue in the year 2007? The sentence is long and incoherent, much like most of the other long sentences in the article.</p>
<p>As rightly said by Jackie Hutter, IP &amp; Patent Business Strategist, &#8220;goal of building a solid patent portfolio is to make your business an attractive target for investment or acquisition by a larger company&#8221;.<br />
&gt;&gt;&gt; The first acceptable sentence in the article has to be a quote :P</p>
<p>Patent portfolio management includes an extensive study of patents, valuing the patents and strategies to generate revenue from patent selling and licensing.<br />
&gt;&gt;&gt; Always use Oxford commas to improve readability, especially when the sentence contains more than one &#8220;and&#8221; connector. &#8220;Apples, oranges, and bananas&#8221; as opposed to &#8220;Apples, oranges and bananas&#8221;</p>
<p>A recent study in the US shows that 60% of the individuals file patents in US, while corporate earn 99% of the revenue from it leaving individuals with only 1% of the pie.<br />
&gt;&gt;&gt; &#8220;the individuals&#8221;?<br />
&gt;&gt;&gt; You like the US so much as to mention in twice in the same sentence? Where else would the study be conducted on people in the US?<br />
&gt;&gt;&gt; The sentence can mean two things: 60% of individuals in the US file patents, which seems to be completely skewed to me. The other interpretation can be rephrased as &#8220;A recent study shows that of the 60% of individuals who file patents in US, corporates earn 99% of the revenue, leaving individuals with only 1% of the pie&#8221;. It&#8217;s unclear which corporates you&#8217;re talking about as well.</p>
<p>The situation is much worse in Asia because of lack of awareness in means to generate revenue from patents.<br />
&gt;&gt;&gt; Unnecessarily convoluted. &#8220;The situation is much worse in Asia, because people don&#8217;t know how to generate revenue from patents&#8221;</p>
<p>To end the note, one must always be aware about the extent of disclosure of his invention in public, constantly manage his patent portfolio and analyze the value hidden in this intangible asset and<br />
realize the wealth that can be generated from the same.<br />
&gt;&gt;&gt; What note?<br />
&gt;&gt;&gt; Are you trying to stuff the whole article into a single sentence? Because you should have realized that it&#8217;s not possible.</p>
<p>Knowing all about protecting one&#8217;s intellectual property makes him awake, aware and confident to run the business.<br />
&gt;&gt;&gt; &#8220;makes him awake&#8221;. No comments.</p>
<p>-&gt; Overall, an atrocious article. I&#8217;ve wasted my time even _trying_ to edit it.</p>
]]></content:encoded>
			<wfw:commentRss>http://artagnon.com/2009/04/ripped-to-shreds/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
