<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>My Ruminations on Software</title>
	<atom:link href="http://lispmachine.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lispmachine.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 12 Nov 2009 10:56:01 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='lispmachine.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/18571c40883a523173a8d10ae8708cb0?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>My Ruminations on Software</title>
		<link>http://lispmachine.wordpress.com</link>
	</image>
			<item>
		<title>Importance of Big O notation</title>
		<link>http://lispmachine.wordpress.com/2009/09/02/importance-of-big-o-notation/</link>
		<comments>http://lispmachine.wordpress.com/2009/09/02/importance-of-big-o-notation/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 04:57:02 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[aho]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[bog O notation]]></category>
		<category><![CDATA[data structures]]></category>
		<category><![CDATA[hopcraft]]></category>
		<category><![CDATA[ullman]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=397</guid>
		<description><![CDATA[
From a longer time I used to think that Big O notation  O(n) ,  isn&#8217;t really much practical. I was reading section 1.4 of Data Structures and Algorithms by Aho, Hocraft and Ullman and  was unable to understand how big O notation was being discussed. I asked for help on comp.programming  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=397&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
From a longer time I used to think that Big O notation  <b>O(n) </b>,  isn&#8217;t really much practical. I was reading section 1.4 of <a href="http://www.amazon.com/Data-Structures-Algorithms-Alfred-Aho/dp/0201000237">Data Structures and Algorithms </a>by <em>Aho</em>, <em>Hocraft</em> and <em>Ullman</em> and  was unable to understand how big O notation was being discussed. I asked for help on <a href="http://groups.google.com/group/comp.programming/browse_thread/thread/d1c2c8211ce6f860#">comp.programming </a> and saw not many people agree with me. I hope this discussion will help you broaden your programming skills</p>
<p>Here is the relevant discussion. It is not the full discussion, it is filtered.  I have posted here only those replies the ones I trust. Any posts, that I don&#8217;t trust or I have no idea about whether to trust them or not, are not included:
</p>
<p align="justify">
<strong> Original Question by me:</strong></p>
<p><em>This is from &#8220;Data Structures and Algorithms&#8221; by Aho, Hopcraft and<br />
Ullman, Page 31, Example 1.4</p>
<p>Suppose T(0) = 1 and T(1) = 4, and in general T(n) = (n+1)^2 . Then we<br />
see that T(n) is O(n^2) .</p>
<p>I did not get the last line. If T(n) = (n+1)^2 , how it can be deduced<br />
that it is T(n) = O(n^2). n^2 is never equal to (n+1)^2</p>
<p>if this discussion of the authors is only theoretical. I mean if can<br />
understand Data Structures and Algorithms and write code without<br />
understanding this section, then please tell me, I will leave it as its f<br />
no use at a practical level. </em>
</p>
<p align="justify">
<strong>Replies:</strong></p>
<p> &gt; This is from &#8220;Data Structures and Algorithms&#8221; by Aho, Hopcraft and<br />
&gt; Ullman, Page 31, Example 1.4</p>
<p>&gt; Suppose T(0) = 1 and T(1) = 4, and in general T(n) = (n+1)^2 . Then we<br />
&gt; see that T(n) is O(n^2) .</p>
<p>&gt; I did not get the last line. If T(n) = (n+1)^2 , how it can be deduced<br />
&gt; that it is T(n) = O(n^2). n^2 is never equal to (n+1)^2</p>
<p><em>That&#8217;s the very point of the O(.) equivalence classes!</p>
<p>It doesn&#8217;t matter whether you&#8217;re considering n or n+1, the question is<br />
that you&#8217;re on the same curve, the square curve, and that sooner or<br />
later you will go beyond resources.</p>
<p>Well, on a square curve you will go beyond resources much sooner than<br />
on a linear curve.  And on an exponential curve, you&#8217;ll go beyond<br />
resources much much much sooner.</p>
<p>Read again http://en.wikipedia.org/wiki/Big_O_notation</p>
<p>     T(n) = O(n²) as n-&gt;∞<br />
  ∃M∈ℝ, ∃n₀∈ℝ, ∀n, n&gt;n₀ =&gt;  |T(n)| ≤ M|n²|</p>
<p>Now, T(n) = (n+1)² = n²+2n+1  ≤  n²+2n²+1n² = 4n², so you can take M=4, and</p>
<p>           ∃n₀∈ℝ, ∀n, n&gt;n₀ =&gt;  |T(n)| ≤ 4|n²|<br />
 =&gt;  ∃M∈ℝ, ∃n₀∈ℝ, ∀n, n&gt;n₀ =&gt;  |T(n)| ≤ M|n²|</em></p>
<p>&gt; if this discussion of the authors is only theoretical. I mean if can<br />
&gt; understand Data Structures and Algorithms and write code without<br />
&gt; understanding this section, then please tell me, I will leave it as it IS OF<br />
&gt; no use at a practical level.<br />
<em><br />
Yes, it is of use at a practical level.  Being able to do complexity<br />
analysis on your algorithms, will let you know whether your program<br />
will have enough time and enough memory to process the user data.</p>
<p>It can always work on the two or three data items you use in your<br />
tests.  But what will happen when the users will feed it a thousands,<br />
a million or a billion data items to process?   Will it still be as<br />
fast and and thrifty, or will it need 500 ExaBytes of RAM and 15<br />
billion years of processing time?</em></p>
<p>&#8211;<br />
<a href="http://www.informatimago.com/">__Pascal Bourguignon__</a> </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>&gt; This is from &#8220;Data Structures and Algorithms&#8221; by Aho, Hopcraft and<br />
&gt; Ullman, Page 31, Example 1.4</p>
<p>&gt; Suppose T(0) = 1 and T(1) = 4, and in general T(n) = (n+1)^2 . Then<br />
&gt; we see that T(n) is O(n^2) .</p>
<p>I assume you mean that T() is a function &#8211; something like:<br />
<em><br />
fun T(integer n)<br />
  integer d = n + 1<br />
  yield d * d<br />
nuf</em></p>
<p>&gt; I did not get the last line. If T(n) = (n+1)^2 , how it can be<br />
&gt; deduced that it is T(n) = O(n^2). n^2 is never equal to (n+1)^2<br />
<em><br />
Big-O is a rough-and-ready measure of worst-case workload in relation<br />
to the amount of data that must be processed.</p>
<p>Multiply 123 by itself *by hand*, showing all your working and taking<br />
no shortcuts, and count how many separate multiplications you have to<br />
do. Now repeat the process for a four-digit number, eg 9287. Then do<br />
it for a five-digit number, and so on up to ten digits or so. Plot<br />
your results in a graph, and observe the shape of that graph.</p>
<p>For 123, for example (and remember we are not taking any shortcuts),<br />
we need to multiply 3 * 3, 3 * 2, 3 * 1, 2 * 3, 2 * 2, 2 * 1, 1 * 3,<br />
1 * 2, and 1 * 1. We also need some shifts and adds, but never mind<br />
those. Nine multiplications for a datum three digits wide. For four<br />
digits, we have to do sixteen multiplications. And so on.</p>
<p>&#8211;<br />
<a href="http://www.cpax.org.uk">Richard Heathfield </a><br />
Email: -http://www. +rjh@<br />
&#8220;Usenet is a strange place&#8221; &#8211; dmr 29 July 1999<br />
Sig line vacant &#8211; apply within<br />
</em><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>&gt;I did not get the last line. If T(n) = (n+1)^2 , how it can be deduced<br />
&gt;that it is T(n) = O(n^2). n^2 is never equal to (n+1)^2</p>
<p><em>One way to think of this is that you&#8217;re usually interested in how well<br />
an algorithm scales when n gets large, and when n is large, n^2 and<br />
(n+1)^2 become more and more identical.</em></p>
<p>&gt;if this discussion of the authors is only theoretical. I mean if can<br />
&gt;understand Data Structures and Algorithms and write code without<br />
&gt;understanding this section, then please tell me, I will leave it as its f<br />
&gt;no use at a practical level.<br />
<em><br />
I&#8217;m going to go with &#8220;you really should understand this&#8221;.</p>
<p>I was on a project (I was doing the front-end, another guy was doing the<br />
back end), and things were working swimmingly&#8211;until we opened the site<br />
for beta.  As soon as we got about 2000 registered users, the DB died<br />
under the load.  Now, mind you, this wasn&#8217;t 2000 simultaneous<br />
users&#8211;this was just 2000 users registered.</p>
<p>I never found out exactly what was happening in the back-end code, but I<br />
suspect there was some kind of O(N^2) process (or worse) running back<br />
there.  It was fixed, and the site went on to get 100K or so users<br />
during its short lifespan (it was a site to market another product.)</p>
<p>But you have my sympathies, because there&#8217;s so much completely accurate instruction on this topic that is utterly impenetrable to most<br />
newcomers.  (In their defense, it is a difficult concept to present<br />
well.)  Here are a few links that seem popular and not too bad (I only<br />
skimmed them):</em></p>
<p><a href="http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/">http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/</a><br />
<a href="http://www.perlmonks.org/?node_id=573138">http://www.perlmonks.org/?node_id=573138</a><br />
<a href="http://www.perlmonks.org/?node_id=227909">http://www.perlmonks.org/?node_id=227909</a></p>
<p>HTH,<br />
-<a href="http://beej.us/">Beej </a>
</p>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/397/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=397&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/09/02/importance-of-big-o-notation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>The Craft of Programming</title>
		<link>http://lispmachine.wordpress.com/2009/08/31/the-craft-of-programming/</link>
		<comments>http://lispmachine.wordpress.com/2009/08/31/the-craft-of-programming/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 05:46:40 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[esr]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[RMS]]></category>
		<category><![CDATA[software quotes]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=376</guid>
		<description><![CDATA[
Here are some quotes I have gathered over the years. They are written by some of the best known Programmers and Hackers with occasionally some very good programmers thrown in, if not great. They inspired me, changed the way I look at programming and especially at some programming languages and methods to solve problems:



&#8220;Any sufficiently [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=376&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
Here are some quotes I have gathered over the years. They are written by some of the best known Programmers and <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#what_is">Hackers</a> with occasionally some very good programmers thrown in, if not great. They inspired me, changed the way I look at programming and especially at some programming languages and methods to solve problems:
</p>
<p></p>
<p align="justify">
<em>&#8220;Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.” </em> — <a href="http://en.wikipedia.org/wiki/Greenspun%27s_Tenth_Rule">Philip Greenspun</a></p>
<p>
<em><br />
&#8220;Something we didn&#8217;t want was an object-oriented language. OO languages remain a popular fad, but our experience using C++ in the EROS system was that it actively got in the way of understanding what was going on.&#8221;  </em></p>
<p>&#8211; <a href="http://www.bitc-lang.org/docs/bitc/bitc-origins.html">The Origins of the BitC Programming Language</a> </p>
<p>
<em><br />
When you want to use a language that gets compiled and runs at high speed, the best language to use is C. Using another language is like using a non-standard feature. </em> &#8212; <a href="http://www.gnu.org/prep/standards/standards.html#Source-Language">GNU Coding Standards</a></p>
<p>
<em><br />
<em>&#8220;First off, I&#8217;d suggest printing out a copy of the GNU coding standards,<br />
and NOT read it.  Burn them, it&#8217;s a great symbolic gesture.&#8221; </em> &#8212; <a href="http://www.kernel.org/doc/Documentation/CodingStyle">Linux kernel coding guidelines</a> </p>
<p>
<em><br />
&#8220;C++ will rot your brain&#8221; </em> &#8212; someone from #lisp at <a href="http://freenode.net/">irc.freenode.net</a></p>
<p>
<em><br />
<em>&#8220;pointer arithmetic and array indexing [that] are equivalent in C, pointers and arrays are different.&#8221; </em> &#8211;<a href="http://c-faq.com/aryptr/aryptrequiv.html"> Wayne Throop</a> </p>
<p>
<em><br />
<em>&#8220;An array is not a pointer, nor vice versa&#8221; </em> &#8212; Steve Summit in <a href="http://c-faq.com/aryptr/ptrkindofary.html">C FAQs</a></p>
<p>
<em><br />
&#8220;Attitude is no substitute for competence&#8221; </em> &#8212; Eric S. Raymond in <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#believe3">How to become a Hacker</a></p>
<p>
<em><br />
<b>Q:</b>  <em>I&#8217;m having problems with my Windows software. Will you help me? </em></p>
<p><b>A:</b>  <em>Yes. Go to a DOS prompt and type &#8220;format c:&#8221;. Any problems you are experiencing will cease within a few minutes. </em></p>
<p>&#8211; <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#FAQ">Eric S. Raymond</a><br />
<br />
<em><br />
&#8220;This answer cannot be decided by current law—the law should conform to ethics, not the other way around&#8221; &#8212; <a href="http://www.gnu.org/gnu/manifesto.html">Richard M. Stallman</a></p>
<p><em><br />
&#8220;Lisp is a programmable programming language.&#8221;</em> &#8211;<a href="http://www.paulgraham.com/chameleon.html"> John Foderaro, CACM, September 1991</a></p>
<p>
<b> Q: </b> <em>&#8220;My company needs a proprietary operating system to get a competitive edge.&#8221; </em> </p>
<p><b>A:</b> <em>GNU will remove operating system software from the realm of competition. You will not be able to get an edge in this area, but neither will your competitors be able to get an edge over you. You and they will compete in other areas, while benefiting mutually in this one. </em></p>
<p>
<em><br />
&#8220;There is nothing wrong with wanting pay for work, or seeking to maximize one&#8217;s income, as long as one does not use means that are destructive. But the means customary in the field of software today are based on destruction.&#8221;  &#8212;  <a href="http://en.wikipedia.org/wiki/Richard_Stallman">Richard M. Stallman</a></p>
<p>
<em><br />
&#8220;Haskell saves <a href="http://haskell.org/haskellwiki/Humor/Haskell_saves_lives">lives</a>&#8221;  </em></p>
<p>
<em><br />
&#8220;In general, functional languages offer powerful new ways to encapsulate abstractions&#8221; &#8212; <a href="http://haskell.org/haskellwiki/Introduction#What.27s_good_about_functional_programming.3F">Haskell Wiki</a></p>
<p>
<em><br />
&#8220;I invented the term &#8216;Object-Oriented&#8217;, and I can tell you I did not have C++ in mind.&#8221; </em>    — Alan Kay.<br />
<br />
<em><br />
&#8220;C++ is the only current language making COBOL look good&#8221; </em> &#8212; <a href="http://en.wikipedia.org/wiki/Bertrand_Meyer">Bertrand Meyer</a></p>
<p>
<em><br />
&#8220;It&#8217;s 5.50 a.m&#8230;. Do you know where your stack pointer is ?&#8221; </em> &#8212; Anonymous</p>
<p>
<em><br />
&#8220;I understand the philosophy that developer cycles are more important than cpu cycles, but frankly that&#8217;s just a bumper-sticker slogan and not fair to the people who are complaining about performance.&#8221; </em>  &#8211;<a href="http://www.joelonsoftware.com/"> Joel Spolsky </a></p>
<p>
<em><br />
&#8220;The standard &#8212; either one &#8212; is not the End of All C.  Writing ‘strictly conforming’ C code, however, has an enormous benefit.&#8221;</em> &#8212; <a href="http://www.torek.net/torek/c/index.html">Chris Torek</a></p>
<p>
<em><br />
&#8220;Wait a minute, I want to modify that statement. I&#8217;m not claiming, in this particular article, that there&#8217;s anything wrong with Java as an implementation language. There are lots of things wrong with it but those will have to wait for a different article.&#8221; &#8212; Joel Spolsky</p>
<p>
<em><br />
&#8220;Without understanding functional programming, you can&#8217;t invent MapReduce, the algorithm that makes Google so massively scalable&#8221; </em>  &#8212; Joel Spolsky</p>
<p>
<em><br />
&#8220;It [Java] might be successful &#8211; after all, MS DOS was &#8211; and it might be a profitable thing for all your readers to learn Java, but it has no intellectual value whatsoever. Look at their implementation of hash tables. Look at the sorting routines that come with their “cool” sorting applet. &#8221;  </em> – Alexander Stepanov </p>
<p>
<em><br />
&#8220;Java isn’t platform independent; it is a platform. Like Windows, it is a proprietary commercial platform. &#8221; </em> &#8212; <a href="http://en.wikipedia.org/wiki/Bjarne_Stroustrup">Bjarne Stroustrup</a>
</p>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=376&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/08/31/the-craft-of-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>KDE and the new friend</title>
		<link>http://lispmachine.wordpress.com/2009/08/05/kde-and-the-new-friend/</link>
		<comments>http://lispmachine.wordpress.com/2009/08/05/kde-and-the-new-friend/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 11:42:15 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[autotools]]></category>
		<category><![CDATA[cmake]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[scons]]></category>
		<category><![CDATA[waf]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=369</guid>
		<description><![CDATA[
I was just browsing through net and I came across this article. I was a little shocked on reading just the title.  Why would anyone want to leave GNU software ?  .. So it sparked my interest  and I spent next 30 minutes reading the whole article (or rather technical viewpoint of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=369&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
I was just browsing through net and I came across this <a href="http://lwn.net/Articles/188693/">article</a>. I was a little shocked on reading just the title.  Why would anyone want to leave GNU software ?  .. So it sparked my interest  and I spent next 30 minutes reading the whole article (or rather technical viewpoint of KDE team). That did not convince me though in anyway.
</p>
<p align="justify">
I agree that <a href="http://sources.redhat.com/autobook/">autotools</a>  are very old but so is gcc and so are other basic tools that come with all distros.  Reading the article convinced me of one thing, not many people on the KDE team know much about autotools. They have used one small part (Makefile) of it but they don&#8217;t know what exactly the autotools are and how they work. I even somehow got a feeling that many KDE developers are scared of autotools.  <strong>Reason: </strong> autotools have a longer and hard learning curve. It is true, I agree. I was able to write a<a href="http://www.cmake.org/cmake/help/examples.html"> CMakeLists.txt </a> in just a day, right from the scratch without any book or help except the <a href="http://www.cmake.org/cmake/help/documentation.html">online documentation</a> available at their web-site, while with autoconf, the story was different, even after 2 days of work, I was unable to came with with anything.  <a href="http://www.gnu.org/software/autoconf/manual/autoconf.html">Autoconf manual</a> felt like a classic GNU manual written in the spirit of GNU by people who are extremely technical. It pinned me, it binned me and it made my heart bleed.  Are most of KDE developers scared of  autotools ?  I don&#8217;t know and after reading their reasoning , I will say yes. Most of them wanted a short and less painful path to software building: here come <a href="http://www.scons.org/">Scons</a> and <a href="http://www.cmake.org/">CMake</a>.
</p>
<p align="justify">
I was also just put off by the technical-expertise either required as a prerequisite or being used to read the manual but was I scared &#8230;&#8230;   hell no&#8230;. . Say no to the hell and yes to the reasoning and rationality. There glows the bulb on my head, the people who write these kind of manuals are very good at basics , they are the people who have gotten their fundamentals straight, with experience. Reading their manuals always gives you an insight into the things. This is what exactly what you will learn from <a href="http://en.wikipedia.org/wiki/Usenet_newsgroup">Newsgroups</a>.
</p>
<p align="justify">
I am not saying that KDE people need to switch back to autotools. No, I am not agreeing on that. All I am saying is, switching to a different tools needs to be based on purely technical reasons, not on the basis that people can&#8217;t learn them because they are scared.  I really wonder they are not trying <a href="http://code.google.com/p/waf/">waf</a>, which actually does not try to fix the problems of other tools but rather built as a software-construction <a href="http://freehackers.org/~tnagy/wafbook/pr01s02.html">framework</a>.
 </p>
<p align="justify">
I, myself, want to use waf but then I have to learn Python in order to debug my scripts which I don&#8217;t want to do. If I ever get time to learn a new language, I will learn <a href="http://en.wikipedia.org/wiki/Common_Lisp">Common Lisp</a>. So rather I will start learning autotools again and will see what people are scared of.
</p>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=369&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/08/05/kde-and-the-new-friend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>High-Tech fraud and Optima Resources</title>
		<link>http://lispmachine.wordpress.com/2009/07/21/high-tech-fraud-and-optima-resources/</link>
		<comments>http://lispmachine.wordpress.com/2009/07/21/high-tech-fraud-and-optima-resources/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 06:32:10 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[accurum technologies]]></category>
		<category><![CDATA[fraud]]></category>
		<category><![CDATA[optima resources]]></category>
		<category><![CDATA[richa]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=354</guid>
		<description><![CDATA[
One or two years ago, I paid $4500 to Optima Resources for H1B visa. You heard right, they were selling H1B for $4500. I had a talk with a woman named Richa (I am not sure but may be her actual name is Ankita) who sent me an email on this and initiated this visa [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=354&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
One or two years ago, I paid $4500 to <a href="http://optimaresources.com/">Optima Resources</a> for H1B visa. You heard right, they were selling H1B for $4500. I had a talk with a woman named Richa (I am not sure but may be her actual name is Ankita) who sent me an email on this and initiated this visa contract.  She told me this at that time:</p>
<blockquote><p><em><br />
&#8220;We will process your H1 VISA and if you are able to get it, you will pay 20% of your salary for 18 months as our fee and your $4500 will be returned back to you in that same 18 months period. If your VISA application does not get approved, we will cut 25,000 INR from the amount you paid and will refund the rest.&#8221;<br />
</em>
</p></blockquote>
<p>Now, my VISA was not approved and hence they cut 25,000 rupees and refunded me the rest. If there were no friend of mine in USA, I am sure they may not have refunded my money. My friend actually paid them the money, he lives in US and hence may be they did not have any option other than to return the money. I think I learned 2 lessons:
</p>
<p align="justify">
<ol>
<li>I think they send emails to almost everyone in the India and lets say they get 1000 applications then they process some applications of say 3-10 applicants (just a wild guess) and get them the VISA and cut 25,000 rupees in the name of expenses from rest of the 990 applicants. That makes: 25,000 x 990 = 2,47,50,000 of rupees , That is a big money my friend.</li>
<li>
If you want to have a visa, go by real, legal rules. Don&#8217;t ever try to use either illegal or legal but stupid means. Always respect the hard-earned money of yours and especially of your parents. </li>
</ol>
<p align="justify">
If you feel trouble believing that Optima Resources is actually a fraud, you can see this list of 25 domain names that trace back to the IP address of Optimaresources:</p>
<blockquote><p>
 Optimaresources.com<br />
Optimaresourcesapplicationdevelopmentandmaintainence.com<br />
Optimaresourcesbusinessconsulting.com<br />
Optimaresourcesclients.com<br />
Optimaresourcescontactus.com<br />
Optimaresourcescorecompetencies.com<br />
Optimaresourcescorevalues.com 0 listings<br />
Optimaresourcescurrentopenings.com<br />
Optimaresourceshome.com<br />
Optimaresourceshouseofexcellence.com<br />
Optimaresourcesmission.com<br />
Optimaresourcesofferings.com<br />
Optimaresourcesoverview.com<br />
Optimaresourcesprocess.com<br />
Optimaresourcesqms.com<br />
Optimaresourcesquality.com<br />
Optimaresourcesranddcenter.com<br />
Optimaresourcessitemap.com<br />
Optimaresourcesstrength.com<br />
Optimaresourcestechnology.com<br />
Optimaresourcestechnologyinfrastructureservices.com<br />
Optimaresourcestestimonials.com<br />
Optimaresourceswhy.com<br />
Optimaresourcesyou.com
</p></blockquote>
<p align="justify">
go and map the IP addresses  (I used <a href="http://dawhois.com/">http://dawhois.com/</a> ).  No genuine company keeps so many domain names mapping back to same IP address. When I asked Richa about this, she said &#8220;<strong>This is none of your business&#8221;</strong>. Well, I say, it <strong>is</strong> your business because you are paying lacs of rupees to them. 2nd, you will always have to call them from India to US at your own expanses, they never call you. I never heard  any company doing like that. Now many of my friends are placed in countries like Australia, Canada and Switzerland, all of the time, companies called them,  they mailed them, they never asked my friends (their future employee) to call back.  3rd, when I told Rich that I do know C++ and Linux and I do have C++ skills but I don&#8217;t have any industry experience. She asked if I can get some fake experience/certificate or something. is this how a corporation works ?  Even after years of this I am still wondering how did they get the accreditation of <a href="http://www.bbb.org/new-jersey/business-reviews/computers-software-and-services/optima-resources-in-edison-nj-12003835">Better Business Bureau</a> in a country like US ?
</p>
<p align="justify">
you can see lots of threads on <a href="http://www.fraudwatchers.org/forums/">fraudwatchers </a>for the other companies who do this kind of fraud business. Keep your mind open and you will be saved.
</p>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=354&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/07/21/high-tech-fraud-and-optima-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>A LIFO  in C using Singly-Linked List</title>
		<link>http://lispmachine.wordpress.com/2009/05/25/a-lifo-in-c-using-singly-linked-list/</link>
		<comments>http://lispmachine.wordpress.com/2009/05/25/a-lifo-in-c-using-singly-linked-list/#comments</comments>
		<pubDate>Mon, 25 May 2009 05:33:58 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[LIFO]]></category>
		<category><![CDATA[Linked List]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=336</guid>
		<description><![CDATA[
Here is the implementation of a LIFO in C using Singly-Linked list. Remember pop() may look different than what you will read in an academic book.  Actually, I think if my program malloc()s some memory then its my responsibility to free() it while some others may not agree on that and will stress that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=336&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
Here is the implementation of a LIFO in C using Singly-Linked list. Remember <strong>pop()</strong> may look different than what you will read in an academic book.  Actually, I think if my program malloc()s some memory then its my responsibility to free() it while some others may not agree on that and will stress that <strong>pop()</strong> should only give the element, not free() it. Based on my experience with programming I completely disagree, when you give someone a program and tell him what it does, the other person uses it like a black-box, he does not know what is inside the program or how it is working, he just needs to know what this programs requires as input and what is its output. In the end, the only thing he needs to know is it should work fine without giving any strange errors on his LCD monitor. Thats it, and that shifts all the responsibility of handling the program back to the programmer, not the user, which is inherently a good idea I think. If you are a C programmer and you don&#8217;t know where your memory is going and what the pointers are doing and where they are at one point in your program, you should forget working in C.  As usual, you can always find the original discussion on <a href="http://groups.google.com/group/comp.lang.c/browse_thread/thread/f0ea73e0d528ae25/d6571fd9bd2a7ad0?lnk=gst&amp;q=arnuld#d6571fd9bd2a7ad0">Usenet</a>.</p>
<pre class="brush: cpp;">
/* A Stack implementation of a singly linked list with 4 operations: Pop, Push, Top and Print elements in the list.
 *
 * VERISON 0.4
 *
 */

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

enum { STACK_ARR_SIZE = 10 };  

struct my_stack
{
  char arrc[STACK_ARR_SIZE]; /* Thar array must not have more than (STACK_ARR_SIZE - 1) elements */
  struct my_stack* next;
};

struct stack_list
{
  struct my_stack* head;
};

struct stack_list* push( struct stack_list*, const char* );
struct stack_list* pop( struct stack_list* );
struct my_stack* top( struct stack_list* );
struct my_stack* make_null( struct stack_list* );
struct my_stack* is_empty( struct stack_list* );

struct stack_list* stack_new( void );
void stack_print( const struct stack_list* );
void stack_print_element( const struct my_stack* );
struct stack_list* stack_free( struct stack_list* );

int main( void )
{
  struct my_stack* p = NULL;
  struct stack_list* ms = NULL;
  ms = stack_new();

  stack_print(ms);

  push(ms, &quot;comppppppppppppppppp&quot;);
  push(ms, &quot;(dot)&quot;);
  push(ms, &quot;lang&quot;);
  push(ms, &quot;(dot)&quot;);
  push(ms, &quot;c&quot;);

  stack_print(ms);

  pop(ms);
  p = top(ms);

  stack_print(ms);
  stack_free(ms);
  free(ms);
  ms = NULL;

  return 0;
}

struct stack_list* push(struct stack_list* s, const char* c )
{
  struct my_stack* p = malloc( 1 * sizeof *p );

  if( NULL == p )
    {
      fprintf(stderr, &quot;malloc() failed\n&quot;);
      return s;
    }

  /* If use gave us more characters than what we want, then its his problem */
  if( strlen(c) &lt; STACK_ARR_SIZE ) strcpy(p-&gt;arrc, c);
  p-&gt;next = NULL;

  if( NULL == s )
    {
      fprintf(stderr, &quot;Stack not initialized ?\n&quot;);
      free(p);
      return s;
    }
  else if( NULL == s-&gt;head )
    {
      /*      printf(&quot;Stack is Empty, adding first element\n&quot;); */
      s-&gt;head = p;
      return s;
    }
  else
    {
      /*      printf(&quot;Stack not Empty, adding in front of first element\n&quot;); */
      p-&gt;next = s-&gt;head;
      s-&gt;head = p;  /* push new element onto the head */
    }

  return s;
}

struct stack_list* pop( struct stack_list* s )
{
  struct my_stack* p = NULL;

  if( NULL == s )
    {
      printf(&quot;There is no stack list ?\n&quot;);
    }
  else if( NULL == s-&gt;head )
    {
      printf(&quot;There is no element on the stack\n&quot;);
    }
  else
    {
      p = s-&gt;head;
      s-&gt;head = s-&gt;head-&gt;next;
      free(p);
    }

  return s;
}

struct my_stack* top( struct stack_list* s)
{
  if( NULL == s )
    {
      printf(&quot;There is no stack list ?\n&quot;);
      return NULL;
    }
  else if( NULL == s-&gt;head )
    {
      printf(&quot;There is no element on the stack\n&quot;);
    }

  return s-&gt;head;
}

/* Make a Stack empty */
struct my_stack* make_null( struct stack_list* s )
{
  if( NULL == s )
    {
      printf(&quot;Can not make NULL when there is no Stack List\n&quot;);
      return NULL;
    }
  else if( NULL == s-&gt;head )
    {
      printf(&quot;Stack is already Empty\n&quot;);
    }
  else
    {
      stack_free(s);
    }

  return s-&gt;head;
}

struct my_stack* is_empty( struct stack_list* s )
{
  if( NULL == s )
    {
      printf(&quot;There is no Stack\n&quot;);
      return NULL;
    }
  else if( NULL == s-&gt;head )
    {
      printf(&quot;Stack is Empty\n&quot;);
    }
  else
    {
      printf(&quot;Stack is not Empty\n&quot;);
    }

  return s-&gt;head;
}

/* ---------- small helper functions -------------------- */
struct stack_list* stack_free( struct stack_list* s )
{
  if( NULL == s )
    {
      printf(&quot;Can't free a NULL stack list\n&quot;);
    }

  while( s-&gt;head ) pop(s);

  return s;
}

struct stack_list* stack_new( void )
{
  struct stack_list* p = malloc( 1 * sizeof *p );

  if( NULL == p )
    {
      fprintf(stderr, &quot;malloc() in Stack Initialization failed\n&quot;);
      exit( EXIT_FAILURE );  /* There is no point in going beyond this point */
    }

  p-&gt;head = NULL;

  return p;
}

void stack_print( const struct stack_list* s )
{
  struct my_stack* p = NULL;

  if( NULL == s )
    {
      printf(&quot;Can not print an Empty Stack\n&quot;);
    }
  else
    {
      for( p = s-&gt;head; p; p = p-&gt;next ) stack_print_element(p);
    }

  printf(&quot;-------------------------- \n&quot;);
}

void stack_print_element(const struct my_stack* s)
{
  if( s ) printf(&quot;arrc = %s\n&quot;, s-&gt;arrc);
}
</pre>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=336&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/05/25/a-lifo-in-c-using-singly-linked-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>Linked List implementation of a Queue in C</title>
		<link>http://lispmachine.wordpress.com/2009/05/13/queue-in-c/</link>
		<comments>http://lispmachine.wordpress.com/2009/05/13/queue-in-c/#comments</comments>
		<pubDate>Wed, 13 May 2009 06:21:32 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[proprietary software]]></category>
		<category><![CDATA[Linked List]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[comp.lang.c]]></category>
		<category><![CDATA[propriet]]></category>
		<category><![CDATA[russian pipeline explosion]]></category>
		<category><![CDATA[CIA bogus software]]></category>
		<category><![CDATA[CIA]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=304</guid>
		<description><![CDATA[A Queue is a FIFO based data structure. I tried to create one and got lots of advices and improvements from comp.lang.c folks. I am posting it here, in case someone gets benefit from that. I believe in Open Sharing of source code, it helps the community, it helpes the poor people like me who [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=304&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">A Queue is a FIFO based data structure. I tried to create one and got lots of advices and improvements from comp.lang.c folks. I am posting it here, in case someone gets benefit from that. I believe in Open Sharing of source code, it helps the community, it helpes the poor people like me who either did not have money to join some course or did not have enough of experience or a Master&#8217;s degree to get a job. Working on an Open Source software greatly improves the ability of the people to write quality code and also (as a side-effect) consumer always gets a robust  product, a piece of software that they can trust. I am defnitely sure, you can&#8217;t trust a proprietary software, no one knows what its doing on your computer (except of the compnay who created it). MNCs are only intersted in making money and taking control of the market and doing a dishonest business always makes more money than doing an honest business. Having secrets of other corporations delievered to your doorstep always helpes in building a monopoly and I think proprietary software  is a brilliant concept to spy on other companies and homes of general public. Never ever forget the Russian gas piple-line <a href="http://en.wikipedia.org/wiki/At_the_Abyss:_An_Insider's_History_of_the_Cold_War">scandal</a>. Perhaps reading some <a href="http://www.msnbc.msn.com/id/4394002">news</a> will <a href="http://www.zdnet.com.au/news/security/soa/US-software-blew-up-Russian-gas-pipeline-/0,130061744,139116383,00.htm">help.</a>.  You can even check <a href="http://www.amazon.co.uk/At-Abyss-Insiders-History-Cold/dp/0891418377/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1242193942&amp;sr=8-1">amazon</a>. Whether you are a government or an organization or an individual, you can not trust a piece of proprietary software, you don&#8217;t know what it does, you will never know.</p>
<p align="justify">I have seen people writing poor quality C code for years. They wrote poor C programs when they were 23 ( starting their Master&#8217;s degree) and when they were 25 (first day of the job) and now they are 29 and after 4 years of experience they still write poor quality code (Mostly these people are also the ones who have passed their professional degree in first division).  Its because they are working in proprietary software based business company because of which they can not share their code. No critics and hence no improvement and in their spare time they never tried to read comp.lang.c archives though they do get time to shake beer glasses with their friends sometime or joke about the habist of their fellow team-mates or their boss or whetever they like but they never get time to read <a href="http://groups.google.com/group/comp.lang.c/topics?gvc=2">comp.lang.c</a></p>
<p>. You can always find the original duscussion of my program on <a href="http://groups.google.com/group/comp.lang.c/browse_thread/thread/a8c2c1b53db6cd02/ebb0a5e5820f5044?lnk=gst&amp;q=arnuld#ebb0a5e5820f5044">Usenet</a>.</p>
<pre class="brush: cpp;">
/* This Queue implementation of singly linked list in C implements 3
 * operations: add, remove and print elements in the list.  Well, actually,
 * it implements 4 operations, lats one is list_free() but free() should not
 * be considered the operation but  a mandatory practice like brushing
 * teeth every morning, otherwise you will end up loosing some part of
 * your body(the software) Its is the modified version of my singly linked
 * list suggested by Ben from comp.lang.c . I was using one struct to do
 * all the operations but Ben added a 2nd struct to make things easier and
 * efficient.
 *
 * I was always using the strategy of searching through the list to find the
 *  end and then addd the value there. That way list_add() was O(n). Now I
 * am keeping track of tail and always use  tail to add to the linked list, so
 * the addition is always O(1), only at the cost of one assignment.
 *
 *
 * VERISON 0.5
 *
 */

#include  &lt;stdio.h&gt;
#include  &lt;stdlib.h&gt;
#include  &lt;string.h&gt;

struct my_struct
{
  int num;
  struct my_struct* next;
};

struct my_list
{
  struct my_struct* head;
  struct my_struct* tail;
};

struct my_list* list_add_element( struct my_list*, const int);
struct my_list* list_remove_element( struct my_list*);

struct my_list* list_new(void);
struct my_list* list_free( struct my_list* );

void list_print( const struct my_list* );
void list_print_element(const struct my_struct* );

int main(void)
{
  struct my_list*  mt = NULL;

  mt = list_new();
  list_add_element(mt, 1);
  list_add_element(mt, 2);
  list_add_element(mt, 3);
  list_add_element(mt, 4); 

  list_print(mt);

  list_remove_element(mt);
  list_print(mt);

  list_free(mt);   /* always remember to free() the malloc()ed memory */
  free(mt);        /* free() if list is kept separate from free()ing the structure, I think its a good design */
  mt = NULL;      /* after free() always set that pointer to NULL, C will run havon on you if you try to use a dangling pointer */

  list_print(mt);

  return 0;
}

/* Will always return the pointer to my_list */
struct my_list* list_add_element(struct my_list* s, const int i)
{
  struct my_struct* p = malloc( 1 * sizeof(*p) );

  if( NULL == p )
    {
      fprintf(stderr, &quot;IN %s, %s: malloc() failed\n&quot;, __FILE__, &quot;list_add&quot;);
      return s;
    }

  p-&gt;num = i;
  p-&gt;next = NULL;

  if( NULL == s )
    {
      printf(&quot;Queue not initialized\n&quot;);
      return s;
    }
  else if( NULL == s-&gt;head &amp;&amp; NULL == s-&gt;tail )
    {
      /* printf(&quot;Empty list, adding p-&gt;num: %d\n\n&quot;, p-&gt;num);  */
      s-&gt;head = s-&gt;tail = p;
      return s;
    }
  else if( NULL == s-&gt;head || NULL == s-&gt;tail )
    {
      fprintf(stderr, &quot;There is something seriously wrong with your assignment of head/tail to the list\n&quot;);
      free(p);
      return NULL;
    }
  else
    {
      /* printf(&quot;List not empty, adding element to tail\n&quot;); */
      s-&gt;tail-&gt;next = p;
      s-&gt;tail = p;
    }

  return s;
}

/* This is a queue and it is FIFO, so we will always remove the first element */
struct my_list* list_remove_element( struct my_list* s )
{
  struct my_struct* h = NULL;
  struct my_struct* p = NULL;

  if( NULL == s )
    {
      printf(&quot;List is empty\n&quot;);
      return s;
    }
  else if( NULL == s-&gt;head &amp;&amp; NULL == s-&gt;tail )
    {
      printf(&quot;Well, List is empty\n&quot;);
      return s;
    }
  else if( NULL == s-&gt;head || NULL == s-&gt;tail )
    {
      printf(&quot;There is something seriously wrong with your list\n&quot;);
      printf(&quot;One of the head/tail is empty while other is not \n&quot;);
      return s;
    }

  h = s-&gt;head;
  p = h-&gt;next;
  free(h);
  s-&gt;head = p;
  if( NULL == s-&gt;head )  s-&gt;tail = s-&gt;head;   /* The element tail was pointing to is free(), so we need an update */

  return s;
}

/* ---------------------- small helper fucntions ---------------------------------- */
struct my_list* list_free( struct my_list* s )
{
  while( s-&gt;head )
    {
      list_remove_element(s);
    }

  return s;
}

struct my_list* list_new(void)
{
  struct my_list* p = malloc( 1 * sizeof(*p));

  if( NULL == p )
    {
      fprintf(stderr, &quot;LINE: %d, malloc() failed\n&quot;, __LINE__);
    }

  p-&gt;head = p-&gt;tail = NULL;

  return p;
}

void list_print( const struct my_list* ps )
{
  struct my_struct* p = NULL;

  if( ps )
    {
      for( p = ps-&gt;head; p; p = p-&gt;next )
	{
	  list_print_element(p);
	}
    }

  printf(&quot;------------------\n&quot;);
}

void list_print_element(const struct my_struct* p )
{
  if( p )
    {
      printf(&quot;Num = %d\n&quot;, p-&gt;num);
    }
  else
    {
      printf(&quot;Can not print NULL struct \n&quot;);
    }
}
</pre>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/304/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=304&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/05/13/queue-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>My friends will kill me</title>
		<link>http://lispmachine.wordpress.com/2009/02/24/my-friends-will-kill-me/</link>
		<comments>http://lispmachine.wordpress.com/2009/02/24/my-friends-will-kill-me/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 13:45:16 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[conscience of a hacker]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[hackers]]></category>
		<category><![CDATA[infoware]]></category>
		<category><![CDATA[Loveware]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=274</guid>
		<description><![CDATA[
Its been more than a year (since 2007) that I am using a a Linux distro running on text-based system configuration. The idea was difficult to adopt in the beginning but it look intelligent to me. So friends here is my Linux box running on Arch . There is no way you can edit any [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=274&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
Its been more than a year (since 2007) that I am using a a Linux distro running on text-based system configuration. The idea was difficult to adopt in the beginning but it look intelligent to me. So friends here is my Linux box running on Arch . There is no way you can edit any network or printer configrations from the Administration menu of GNOME in Arch. If yuo want to configure then go edit the text file. My colleagues who are still using Ubuntu struggle with the unknown and unrasonable problems everyday but they stick to Ubuntu, its Administration menu, the GUI based system to configure the system settings and they are stil there. Even after several years of usage they get mentally handicapped when some problem arises. They ask stupid questions to each other. Here is some conversation:
</p>
<blockquote><p>Ubuntu User 1:  My system is not booting properly in Ubuntu. What should I do ? </p>
<p>me           :  whats the problem ? </p>
<p>Ubuntu User 1:  I don&#8217;t know, Ubuntu is showing some error. </p>
<p>me           :  What kind of error. Is root file system geting mounted. </p>
<p>Ubuntu User 1:  I don&#8217;t know.  </p>
<p>me           :  Let me check </p>
<p>Ubuntu User 1:  Don&#8217;t worry, I will reinstall Ubuntu.
</p></blockquote>
<p align="justify">
Later I found out, fsck was showing some error on mounting /home partition and was throwing the user into maintenance shell to do fsck but he kep on pressing the Reset button instead.
</p>
<blockquote><p>
Ubuntu User 1:  I have Ubuntu but I need to play 3D games. Ubuntu does not play them as good as Windows XP. </p>
<p>Ubuntu User 2:  Install Sabayon, you can play good games on it. </p>
<p>me           :  What playing games has to do with either Ubuntu or Sabayon (or even Debian) ? </p>
<p>Ubuntu User 2:  Debian does not have any games. </p>
<p>me           :  Debian has largest collection of packages among all the distros. You only need to install a game using apt-get. Even if the package is not there, then you can download and install it. </p>
<p>Ubuntu User 2:  With Debian I have to configure GNOME manually to run, eve after install it. I don&#8217;t want to configure GUIs. </p>
<p>me           : Debian comes auto-configured. You just install something, e.g. X, and it configures it automatically.  </p>
<p>Ubuntu User 2: No, Debian does not play games.</p></blockquote>
<p align="justify">
I really don&#8217;t understand this, if there is Open Source game, and the package is not available for Debian then you can compile it form source. But my friend does not say that he can&#8217;t compile, he says &#8220;Debian does not run games&#8221;. See the difference ?
</p>
<blockquote><p>Ubuntu User 1: I will not use Fedora, my sound system does not work in Fedora. It works in Ubuntu. So I will use Ubuntu. </p>
<p>me           : your statement does not make any sense. Both Ubuntu and Fedora are Linux distros, you can check the sound module of your card and load it in Fedora. </p>
<p>Ubuntu User 1:  you don&#8217;t want listen to me. I said, there is no sound coming in Fedora. </p>
<p>me           : you need to run the <strong>lspci</strong> to check for what hardware you have and the see <strong>lsmod </strong>on Ubuntu to know the name of the kernel module being used for sound. Also check for Linux kernel version. </p>
<p>Ubuntu User 1: I will ask some one else who can solve my problem, you just don&#8217;t understand it. </p>
<p>Ubuntu User 2: Why go so deep into Linux. He can just reinstall Ubuntu if he gets problems. </p>
<p>&#8230; and they got angry. No.. I am serious, they are angry now.
</p></blockquote>
<p align="justify">
I can show you thousands and millions of Linux users like this, who don&#8217;t want to know how to solve problems . First I thought, they don&#8217;t like the black screen of command line (I too don&#8217;t like it) or even the white background of X-terminal (which I do like), then I thought no one  likes to type some words, you just need a mouse click and even these days companies are creating mouses with which we can type characters using clicks. Then I came to know the problem is more fundamental than Linux issues. The problem is of pain, finding the cause of some problem is a painful process (whether Linux or real life), even when you want to build a new house or put the wash-basin at some place in yoru house , it takes some amount of understanding and familiarity with how the houses are constructed and used by people. Putting time into understanding the house when your retired Father is finally building his sweet home , takes energy and the ability to take pain (mental exhaustation ?). All of colleagues are not running away from Linux, they are running away from pain the Linux gives. No one wants pain, everyone wants joy. Yeah.. me too. I want happiness and peace of mind.. the joy of life. The why do I believe in struggling with problems in Linux for days and nights when a 45 minutes Ubuntu reinstall will solve the problem. Why do I get into pain ?
</p>
<p align="justify">
To answer that question I have to go back to my earlier days, the day before I even installed Linux, the day my friend <a href="http://lispmachine.wordpress.com/2007/07/21/the-unix-effect/">Dinesh</a> mentioned the word Linux to me. Its all about happiness. So let me answer the question I have aksed: Why did I install Linux, because I trusted my friend, I knew he is intelligent than me,  Its matter of friendship, the trust and respect you give to your friend based on his ability to creeate angels and daemons on hardware. Moreover I accepted my incompetence in front of him. Dinesh knew it wil be painful for me (a typical Windows User) to install Linux but he never helped me, he never said that he will want to help me. It was like the Cat&#8217;s kid, the Cat does not pick up her kitten when he falls while walking on some fence. She does not help her children because she wants them to learn to face the reality of life (quite in contrast to Human Mothers). I think thats why Cats grow out to be so intellgent. It is natural process of how cats grow their kittens. Kitten feels pain but that is required to successfully walk the fence, he needs training and his Mother gives him proper. Same way Dinesh behaved like. In the World of Linux, he was Cat and I Was his kitten and he handled me well. I am proud of having a friend like him who belives in letting people learn themselves rather than spoonfeeding them,  a typical Hacker behavior.
</p>
<p align="justify">
Now when I struggle with the problems for days, then I am learning, I am looking for the final happiness, the long-term hapinnes, rather the short-term happiness caused by reinstallation. My friends have based their Linux learning on short-term  happiness, thats the whole point. Their definition of hapinnes and my definition of happiness are different. They want quick-fix (cocaine ?) and I Want to drink Milk for 2-4 years continuouly everyday becayse only after years of this daily routine I will be in a good health. Their source of happiness is 2 hours ( <a href="http://en.wikipedia.org/wiki/Bade_Miyan_Chote_Miyan">Bade Miyan Chote Miyan</a> ?) , my source of happiness is solving  problems ( <a href="http://www.themoneymasters.com/">The Money Masters</a> ?). and thats the source of everyone&#8217;s way of living this life. If you are still reading, good and if you are still reading and understand it too, well, congratulations, you can be the one you want to become. As a final note, I have edited the subtitle that comes with Ubuntu:
</p>
<blockquote><p>
<strong>Linux for Idiot Beings</strong>
</p></blockquote>
<p>or need I say:  <strong>Linux for Windows Beings</strong>, for Windows and Ubuntu  users  don&#8217;t have any identity of their own, they have let Microsoft shaped their way of thinking about software. They are no longer original but just copies of the way the Windows is designed. </p>
<p align="justify"> &nbsp; </p>
<p align="justify"> &nbsp; </p>
<p align="justify">
<em><br />
Copyright © 2006, 2007, 2008 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.<br />
</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=274&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/02/24/my-friends-will-kill-me/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>The Key</title>
		<link>http://lispmachine.wordpress.com/2009/01/13/the-key/</link>
		<comments>http://lispmachine.wordpress.com/2009/01/13/the-key/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 12:24:14 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[corporate]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[gnu manifesto]]></category>
		<category><![CDATA[hackers]]></category>
		<category><![CDATA[MNC]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=264</guid>
		<description><![CDATA[
I was wandering on #freebsd and #openbsd some days ago and was pretty much amazed when people did not like GNU way. Then I read FreeBSd and OpenBSD FAQs and foud that BSD folks are very keen on replacing any GPLed code in their system with newly written BSD licensed code. OpenBSD even says that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=264&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
I was wandering on <strong>#freebsd</strong> and <strong>#openbsd</strong> some days ago and was pretty much amazed when people did not like GNU way. Then I read FreeBSd and OpenBSD FAQs and foud that BSD folks are very keen on replacing any GPLed code in their system with newly written BSD licensed code. OpenBSD even says that GPL is acceptable as <a href="http://www.openbsd.org/goals.html">last resource</a>.  </p>
<p align="justify">
what the heck ?
</p>
<p align="justify">
I was very much interested in installing OpenBSD and using it as my daily OS but after this I was literally hurt.  I decided not to spend any time on BSD, rather using that time to understand the GNU software. The current situation of software demands proper attention, commitment and dedication to copyleft ideals, otherwise proprietary software companies will keep on getting stronger and stronger and will keep on eating the society in the name of business and it will affect the Free Software community as whole,  whether BSD or whether GPL or whether Apache people. It will affect all of us, after all we make together free software community).  Free Software is about our responsibility to help society grow better , to make technical innovations that will help removing misery and pain from this planet while proprietary software people are totally committed the other way, make money on the cost of society. Earth is the place where out kids grow, where our loves ones and friends live, and where we see people like us trying to help  each other, proprietary software supporters, intentionally and indirectly do not want, they want control of economy and by writing BSD code BSD people help them in gaining control over society and hence themselves (Windows has some BSD code), BSD license is like giving someone a sharp knife, telling him that he can use it to cut vegetables and fruit so that he can make his health better but that person uses that knife to stab you , in the face&#8230;
</p>
<p align="justify">
What people like me do, we don&#8217;t give such people the knife, we give them GPL, they can&#8217;t attack us back.  Whose responsibility this society is ?  Who wants to stand for his country, for people need to grow out of misery and pain and lower level of poor life to get better education, better health and a better future. if software is the tool then who will accomplish this ? If software is the key in creating a society of liberated, educated and technical people who can take leadership and responsibilities in their own hands then what will you do ? .. Now don&#8217;t say &#8220;Oh.. please, we write software,  don&#8217;t include politics here&#8221;..
</p>
<p align="justify">
Well, why Niels Bohr (if you have read  Science then must be knowing him), a great scientist was flown in a small and risky 2 seat airplane from, IIRC, Denmark to Britain. He literally stopped breathing because of some of technical problem in the plane. British people have to revive him when the airplane landed. It was one of the operation of World War 2. Now why a non-violent scientist came under the World War 2 plan. Its because he was extremely technical when it comes atomic science. If Hitler could have him then Atomic Bombs would have fallen on USA and UK, not Nagasaki and Hiroshima and your people, your friends, your loved ones will be saying &#8220;<a href="http://en.wikipedia.org/wiki/Hitler_salute">Heil Hitler</a>&#8221; instead of &#8220;<a href="http://en.wikipedia.org/wiki/Dr._Alban">this time I&#8217;m free</a>&#8220;. Niels Bohr has the tool to a Free Society and same way in year 2009, the Free Software is the key to a free society where no one is judged on the basis of his religion, his race, his color or his cast. In the world of free software we judge people based on their programming skills and we believe that Information needs to be free for society needs to grow and remove the pain and misery from the lives of their fellow people.
</p>
<p align="justify">
 I think writing BSD licensed code means helping the greedy business to establish the control over us. Don&#8217; do that, if you love your freedom. I Love the Hacker&#8217;s <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#attitude">ideals</a> and from experience I can say that Hackers can become great politicians, and great Leaders who can turn the direction from where human lives are heading today to a better and prosperous future where the government will support people to help themselves and then will get out of their way to let them grow.  Its the Free Society, where anyone can assume his responsibility for his countrymen then he will lead, GPL is the key in doing that, if you loose it, you loose the quality. you loose the peace that a man wants in his entire life. Accept the <a href="http://infinite-hands.draketo.de/">truth</a> and truth will set you free.
</p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p><em><br />
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p align="justify">
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=264&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2009/01/13/the-key/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>Way of Life</title>
		<link>http://lispmachine.wordpress.com/2008/11/15/way-of-life/</link>
		<comments>http://lispmachine.wordpress.com/2008/11/15/way-of-life/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 06:41:25 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=243</guid>
		<description><![CDATA[
People are wrong when they say GNU  (FSF) is just a collection of free softwares, GNU is a way of life. This way of life transcends itself from software profession into one&#8217;s personal and social life too. The truth is not that when people come in the GNU community then they become good, that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=243&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">
People are wrong when they say <a href="http://en.wikipedia.org/wiki/GNU">GNU </a> (<a href="http://en.wikipedia.org/wiki/Free_Software_Foundation">FSF</a>) is just a collection of free softwares, GNU is a way of life. This way of life transcends itself from software profession into one&#8217;s personal and social life too. The truth is not that when people come in the GNU community then they become good, that they become the ones who think of society first instead like others who think of their selfish business interests based on the proprietary softwares.
</p>
<p align="justify">The actual truth is GNU is a place which attracts people who work in the favor of the society, in the interest of humanity. GNU is nothing less than <a href="http://en.wikipedia.org/wiki/United_Nations_Children's_Fund">unicef </a>, helping both kids and mature people who have a common interest in making technology better so that that technology can be used to put humanity on the forefront of innovations.  When GNU was <a href="http://www.gnu.org/gnu/the-gnu-project.html">founded</a>  it gave a platform to all the people who  were working on different places all across the different nations, to come under one umbrella, the <a href="http://en.wikipedia.org/wiki/Free_software_movement">Free Software Movement.</a>
</p>
<p align="justify">
For me,  GNU worked liked  <a href="http://en.wikipedia.org/wiki/Red_Cross">Red Cross</a>. I have worked for 5 years with Windows, 3 years in college plus 2 more years at home and when today  I compare my learning in Windows with just 2 years of working with <a href="http://en.wikipedia.org/wiki/Linux">Linux</a> I see, I am much more of a man with common-sense about software. Windows is an Operating System which kills your senses, and so are all the other proprietary <a href="http://en.wikipedia.org/wiki/Operating_system">Operating Systems</a>. They kill your senses. It is like you purchased a Motor Cycle and you don&#8217;t know where are its spark plug and  Petrol Tank. When it stops working, you go to the Manufacturer and he charges you $100 and then tells you  that your Petrol Tanks is empty, please fill it and then it will work. It is exactly same in the case of support from Proprietary Softwares. GNU gives you the complete Motor Cycle like as it exists today, you can see where is the engine, where is the spark plug and when trouble happens, you can open them and look for the solution. You can think of the fully-covered machines and then can imagine where our development have been gone if it was like that. The technology must remain open for everyone to study , so that they can spend their time on understanding problems and offering solutions. This is what exactly Free Software community does and I think this is what exactly GNU does. Making money and keeping technology patented are two very-very different things. Corporations are making money on both <a href="http://en.wikipedia.org/wiki/GSM">GSM</a> and <a href="http://en.wikipedia.org/wiki/CDMA">CDMA</a> technologies while GSM is open and CDMA is patented. In fact, 82% of the Mobile market is <a href="http://en.wikipedia.org/wiki/GSM">owned</a> by GSM, an open standard. I don&#8217;t understand why companies making proprietary software get so baffled when someone talks about Free Software in front of them. For becoming the leader of the market and #1 in business, your competitors need to go out of business. You do that by solving some problems which are unsolved yet, by changing your way of doing business, by offering some service to your customers, services that  seem very simple and general but never done, by looking at the domains that are not understood by <a href="http://en.wikipedia.org/wiki/Pointy-Haired_Boss">pointy-haired bosses</a>.  Google did that same, it solved the problem of searching, it solved some problems of e-mail. If you will look at the history of corporate you will find many examples conforming my viewpoint.
</p>
<p align="justify">
Business means making money, by either hook or crook. Unfortunately, general public does not want to understand this, an average man avoids an understanding of his surroundings all the time. He spends 30 years in his job, yet never tries to understand why he is there doing his boring job. He never asks himself what will happen to the company if no one does his kind of job. He never tries to understand his place or the place of his seniors in the company. If one tries to do so, he will get fed up by the so less power he gets in his current job, he will get impatient by thinking if his job and comparing it with what he can do, what he could have accomplished in last 5 years. Many people are afraid of doing business in first place, that fear is nothing, the fear of loosing is just plain nonsense because if you don&#8217;t get any risks, if you don&#8217;t have any insecurity, you won&#8217;t get anything worthwhile (e.g. having 10 million dollars in your bank account is one worthwhile thing, while the other worthwhile thing from my view point is I can buy nutritious food and make my body strong) .  One can also make money by not harming the society. One can make money by making the society, the surroundings a better place to live. There is no need and there is no point in using political tactics to gain power in business.  It is like that we have create a different type of business-model while keeping it more-profitable than current models.  Besides that when one works in  interest of his people, he will not know, how many people will be helping him. There will be communities working day and night to support such a business. One of those organizations is GNU.
</p>
<p align="justify">
GNU is not only about software. Its about making lives better. The people from the Free Software Community are not the onle ones who can become great <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#what_is">Hackers</a> (a.k.a great programmers), they are also the ones who can become great politicians, innovative businessmen and global leaders. I know most readers will not understand that. GNU uses software as a primary way to express itself. How do you express yourself ?  GNU is about living for a cause,  GNU is about Freedom, GNU is a about living your life the way you want, the way you truly are, not the way some boss thinks you are. GNU is the way of life, GNU is inside you, GNU is a mirror all you see in GNU is just own reflection. GNU is not only about software, its about Freedom of your inner self from all the <a href="http://en.wikipedia.org/wiki/Digital_rights_management">chains</a>.  GNU just hands you a <a href="http://en.wikipedia.org/wiki/Free_software#Definition">tool </a> that sets you free. GNU is a way of life.
</p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p><em><br />
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</p>
<p align="justify">
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
</p>
<p></em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/243/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=243&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2008/11/15/way-of-life/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruminations on Programming &#8211; 2</title>
		<link>http://lispmachine.wordpress.com/2008/11/06/ruminations-on-programming-2/</link>
		<comments>http://lispmachine.wordpress.com/2008/11/06/ruminations-on-programming-2/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 05:07:03 +0000</pubDate>
		<dc:creator>arnuld</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[newsgroup]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[usenet]]></category>

		<guid isPermaLink="false">http://lispmachine.wordpress.com/?p=185</guid>
		<description><![CDATA[This post does not contain anything except my own experience with programming. Its just my own experience of 3 years, 2.5 years to be exact, with programming. No, its not stolen. Some programmer from USA read my article on how to kill the poor quality software  and then he asked if I stole it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=185&subd=lispmachine&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">This post does not contain anything except my own experience with programming. Its just my own experience of 3 years, 2.5 years to be exact, with programming. No, its not stolen. Some programmer from USA read my article on how to <a href="http://lispmachine.wordpress.com/2007/08/01/opensource-mncs-killing-the-poor-quality-software/">kill the poor quality software </a> and then he asked if I stole it from somewhere. I <strong>had</strong> to tell him that its my own creation. What the heck, they are only my thoughts.
<p align="justify">We will start talking on how to be a better programmer. I believe that using Linux to learn programming will give you an edge over the people using Windows. I also believe that if you dual boot your computer with Windows and Linux, you will never be able to learn anything about Linux, over a period of 10 years. I also advise you to use a Desktop Computer rather than a Laptop, unless you have very special and helpless requirements. One thing I am darn sure that can shape you in becoming excellent at programming is to hang at <a href="http://en.wikipedia.org/wiki/Usenet">Usenet</a> <a href="http://en.wikipedia.org/wiki/Newsgroup">Newsgroups</a> all the time, e.g. for C use <a href="news:comp.alng.c">comp.lang.c </a>and <a href="news:comp.lang.c.moderated">comp.lang.c.moderated</a> for Haskell and Lisp, use <a href="news:fa.haskell">fa.haskell</a> and <a href="news:comp.lang.lisp">comp.lang.lisp</a> respectively. Hang there, read posts, reply to posts on what you think about them, ask questions, give answers. The market is highly competitive when it comes to a job in Software industry, where one has to rely on his programming talent and ability , which can be improved day by day at a miraculous rate if you keep on hanging on Newsgroups all the way. read Usenet before breakfast and after breakfast, read and write the problems before lunch and after lunch, ask questions and reply to queries before dinner and after dinner. Usenet 24 hours a day, you need to live with it, if you truly desire to become an excellent programmer. That may sound like a overfeeding problem but it is not. I told you, getting a Job in Software means high competition even when you have got the job and performing well and being a part of mass fired team is so common that you should not get amazed when 116 employees are fired along with you. You should expect it everyday. As a programmer, you need to check your official e-mail every morning for a termination letter. It sounds really bad and that is how we hi-tech programmers live everyday, in the shadow of penniless future. There is someone who say he is okay while he is living an average life by working only on job and not while in home, with kids. I feel sorry for you if you think that. Your only security is your talent and you need to improve that talent day in, day out, night in, night out. Everyone wants to have a family life and I have to say this painful truth that when you start doing a job, you must improve your programming skills and for that you need to do 2 things:</p>
<ol>
<li>
<p align="justify">Use the office time efficiently and effectively so that your productivity is more than that of your colleagues. You will not get any extra hour than your colleagues, for everyone has 24 hours in a day. Its only the use of those hours and minutes that will put on different and productive front.</p>
</li>
<li>
<p align="justify">Invest your personal and family time into learning the new concepts. Learn what most programmers are weak at, Problem solving, Algorithms, understand when to use which Data Structures , learn a new language which focuses on solving problems elegantly while being a real-life language (like Haskell, Mercury and Common Lisp) while at the same time not focusing on languages which exist purely for monetary reason on this Earth. Working in those languages at your home will give you a new perspective on programming and will definitely equip with an ability and tools that very few will have and those tools and the experiences will serve you all your software life.</p>
</li>
</ol>
<p align="justify">Whatever I am describing here is purely from general purpose programming perspective only. Its not directed to one language or one platform in anyway. Its not even directed at solving some particular problems. Its also not about being good at what you do for for bread and butter. Its about living a quality life. Its about thinking about Software on the Monday morning, its about coding while you are in your Friday dressing.  If you are not willing to spend next 10 years, perfecting your craft of programming, you better look for some other job or do an FMCG business, a good idea for making 10 times of what you will earn in doing a programming job. So here are my technical ruminations, not in any order, based on my own experience with programming:</p>
<ul>
<li>
<p align="justify">Remember, we programmers, are problem solvers. My first rumination is in realizing that we are problem solvers.</p>
</li>
<li>
<p align="justify"> As programmers, we identify the problem at first. We explain *what* first, we need to be very clear on what exactly is the problem we are going to work on. Many programmers identify the  effect of the problems to work on rather than the original cause of the problem. This thing needs to be avoided. Identifying the specific problems to solve is one of the most important skills in programming, if not most. If you mess-up this first step, you will mess-up the whole software.</p>
</li>
<li>
<p align="justify"> We choose tools to solve the particular problems. Those tools may be a collection of data structures, may a set of algorithms and may also be some components of Standard Libraries shipped with particular language implementation. e.g. in Socket Programming, we use Networking components like bind(), recv() and threads to solve our networking problems.</p>
</li>
<li>
<p align="justify"> We need to  practice different ways of collecting and organizing those components so that we can put a structure to them to resolve the problems we are working on. There are many ways to put the components collection into a structure and with experience we will learn and master many of them. It is called the design of the program but design is very subjective word, thats why I used word structure as the approach to put together the components.</p>
</li>
<li>
<p align="justify">Many students and even majority of programmers ask a question like &#8220;Which language is good for my career, C++ or Java ?&#8221; . This stupid question shows the stupid mentality of the seeker. The whole basis on which the question is based is wrong, the thinking about what programming is, in that person&#8217;s mind, obtuse. That man needs to take fresh look at what he has learned and should file a human-rights harassment suit against his college(university). There are no careers in programming languages, there is no career in Java, there is no career in C++, there is no career in Oberon and for the heck of emphasizing, there is no career in Lua. There is a career in some domain, there are careers in different domains like System Programming, Telecommunications field, Embedded Programming, GUI development  and there are careers in Web Development. There are many types of domains and there are always more than 2 or 3 programming languages used in one domain. Besides that learning about a domain is whole time consuming task. Try doing 3D-programming and tell me. So as good programmers we are supposed to know about the problems of our domain. We need to get familiar and understand the different types of problems occur in the particular domain we are working on and prhaps make a mental note of all of them. It takes some years before you get proficient. </p>
</li>
<li>
<p align="justify"> This also belongs to the last point. We need to get familiar and understand what types of solutions are used to solve the types of problems identified in step 4. We need to read and find what  good programmers and hackers use to solve the particular set of problems in our particular domain. More you do, the better you will be. These 2 steps must get familiar to you like you are familiar with the tastes of foods you like. You just recognize them by smelling or biting the different foods a little. Same way it needs to work for domain problems and the way hackers approach for their solutions.</p>
</li>
</ul>
<p align="justify">You can be better programmer, if you will make it happen buy practicing, practicing and practicing&#8230;. <strong>oops!</strong> I am sorry, I was wrong you can not become a good programmer just by practicing, practicing and practicing. The old age saying <em>&#8220;Practice makes a man perfect&#8221;</em> shows only the partial face of the problem. The other 50% is You also need a company of excellent programmers who will tell you where you are wrong and right and will dictate and improve your programming ability and will teach you what is called quality practice. <strong>Practice does not make a man perfect, only quality practice makes a man good at something</strong>. That company must consist of helpful and technically sound people. Fortunately that community is existing here from much longer times , it is called <a href="http://en.wikipedia.org/wiki/Usenet">Usenet</a>:  UNIX Users Network&#8230; eat it.  HTH, HAND.</p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p><em><br />
Copyright © 2008, Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. &#8211; Ropar, Punjab (INDIA) &#8211; 140126</em></p>
<p align="justify"><em>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved. </em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lispmachine.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lispmachine.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lispmachine.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lispmachine.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lispmachine.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lispmachine.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lispmachine.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lispmachine.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lispmachine.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lispmachine.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lispmachine.wordpress.com&blog=1624923&post=185&subd=lispmachine&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://lispmachine.wordpress.com/2008/11/06/ruminations-on-programming-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f33fb7ad9872b0360b567f102b187771?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">arnuld</media:title>
		</media:content>
	</item>
	</channel>
</rss>