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

<channel>
	<title>Ashish Agarwal &#187; Uncategorized</title>
	<atom:link href="http://ashishagarwal.org/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://ashishagarwal.org</link>
	<description></description>
	<lastBuildDate>Mon, 11 Mar 2019 21:28:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Rap Guide to Evolution</title>
		<link>http://ashishagarwal.org/2011/06/26/rap-guide-to-evolution/</link>
		<comments>http://ashishagarwal.org/2011/06/26/rap-guide-to-evolution/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 17:41:07 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=150</guid>
		<description><![CDATA[Baba Brinkman&#8217;s Rap Guide to Evolution is a hilarious show on a serious topic. It&#8217;s an alternative approach to educate people about the fact of evolution. If you have it, don&#8217;t miss the chance to see him live!]]></description>
				<content:encoded><![CDATA[<p>Baba Brinkman&#8217;s <a href="http://rapguidetoevolution.com/">Rap Guide to Evolution</a> is a hilarious show on a serious topic. It&#8217;s an alternative approach to educate people about the fact of evolution. If you have it, don&#8217;t miss the chance to <a href="http://rapguidetoevolution.com/tickets/">see him live</a>!<br />
<a href="http://ashishagarwal.org/wp-content/uploads/2011/06/DarwinQuote-e1316761074750.jpg"><img src="http://ashishagarwal.org/wp-content/uploads/2011/06/DarwinQuote-e1316761074750.jpg" alt="" title="Darwin Quote" width="862" height="500" class="aligncenter size-full wp-image-151" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2011/06/26/rap-guide-to-evolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MACS 1.4 patch</title>
		<link>http://ashishagarwal.org/2011/03/26/macs14-patch/</link>
		<comments>http://ashishagarwal.org/2011/03/26/macs14-patch/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 19:36:11 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=140</guid>
		<description><![CDATA[A bug was introduced in MACS 1.4, which arises if many of the initial reads in an input SAM file are unaligned. You are having this error if MACS is printing something like the following to stderr: Traceback (most recent &#8230; <a href="http://ashishagarwal.org/2011/03/26/macs14-patch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A bug was introduced in <a href="http://liulab.dfci.harvard.edu/MACS/">MACS</a> 1.4, which arises if many of the initial reads in an input SAM file are unaligned. You are having this error if MACS is printing something like the following to stderr:</p>
<p><code>Traceback (most recent call last):<br />
  File "python/bin/macs14", line 354, in <module><br />
    main()<br />
  File "python/bin/macs14", line 59, in main<br />
    (treat, control) = load_tag_files_options (options)<br />
  File "python/bin/macs14", line 323, in load_tag_files_options<br />
    ttsize = tp.tsize()<br />
  File "lib/python2.6/site-packages/MACS14/IO/Parser.py", line 655, in tsize<br />
    return int(s/n)<br />
ZeroDivisionError: integer division or modulo by zero</code></p>
<p><a href='http://ashishagarwal.org/wp-content/uploads/2011/03/macs14_Parser.patch.txt'>Here&#8217;s a patch</a> to fix the problem. You can download the patch to any location. Apply the patch by cd&#8217;ing to the directory lib/IO within the MACS source code. Then do</p>
<p><code>patch < path/to/macs14_Parser.patch.txt</code></p>
<p>and proceed to install MACS as normal.</p>
<p>Many thanks to David Cittaro, who provided this fix on the <a href="http://groups.google.com/group/macs-announcement/browse_thread/thread/37744015faf029cf">MACS mailing list</a>.  However, the diff given there is the wrong way around---with the old and new files swapped---so that cannot be used as the patch.</p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2011/03/26/macs14-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Small example of pthreads</title>
		<link>http://ashishagarwal.org/2011/02/13/multicore-programming-with-pthreads/</link>
		<comments>http://ashishagarwal.org/2011/02/13/multicore-programming-with-pthreads/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 22:54:06 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=138</guid>
		<description><![CDATA[Here&#8217;s a simple C program that demonstrates the use of the pthreads library. The following code can be downloaded here, so you can test it yourself. Simply compile with the command: gcc -lpthread pthreads_test.c -o pthreads_test First, let&#8217;s import some &#8230; <a href="http://ashishagarwal.org/2011/02/13/multicore-programming-with-pthreads/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a simple C program that demonstrates the use of the <strong>pthreads</strong> library. The following code can be downloaded <a href="http://ashishagarwal.org/wp-content/uploads/2011/02/pthreads_test.c">here</a>, so you can test it yourself. Simply compile with the command:</p>
<p><code>gcc -lpthread pthreads_test.c -o pthreads_test</code></p>
<p>First, let&#8217;s import some necessary headers, mainly <em>pthread.h</em> which provides the POSIX threads implementation.</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #bc7a00;">#include &lt;pthread.h&gt;</span>
<span style="color: #bc7a00;">#include &lt;stdio.h&gt;</span>
<span style="color: #bc7a00;">#include &lt;stdlib.h&gt;</span>
<span style="color: #bc7a00;">#include &lt;math.h&gt;</span></pre>
</div>
<p>Now, define a task that takes some non-negligible amount of time to complete. We pass in an id simply to identify each call to the task in output messages.</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #b00040;">void</span> <span style="color: #666666;">*</span><span style="color: #0000ff;">task</span>(<span style="color: #b00040;">int</span> id) {
  printf(<span style="color: #ba2121;">"Task %d started</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, id);
  <span style="color: #b00040;">int</span> i;
  <span style="color: #b00040;">double</span> result <span style="color: #666666;">=</span> <span style="color: #666666;">0.0</span>;
  <span style="color: #008000; font-weight: bold;">for</span> (i <span style="color: #666666;">=</span> <span style="color: #666666;">0</span>; i <span style="color: #666666;">&lt;</span> <span style="color: #666666;">1000000</span>; i<span style="color: #666666;">++</span>) {
    result <span style="color: #666666;">=</span> result <span style="color: #666666;">+</span> sin(i) <span style="color: #666666;">*</span> tan(i);
  }
  printf(<span style="color: #ba2121;">"Task %d completed with result %e</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, id, result);
}</pre>
</div>
<p>We can run the above task a desired number of times in serial by calling the following function:</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #b00040;">void</span> <span style="color: #666666;">*</span><span style="color: #0000ff;">serial</span>(<span style="color: #b00040;">int</span> num_tasks) {
  <span style="color: #b00040;">int</span> i;
  <span style="color: #008000; font-weight: bold;">for</span> (i <span style="color: #666666;">=</span> <span style="color: #666666;">0</span>; i <span style="color: #666666;">&lt;</span> num_tasks; i<span style="color: #666666;">++</span>) {
    task(i);
  }
}</pre>
</div>
<p>Now, let&#8217;s define <em>task</em> in a manner suitable for being called in its own thread. All this requires is to use <em>pthread_exit</em> to let the parent process know this thread has completed. Actually this doesn&#8217;t affect the simple program we&#8217;re writing, but it&#8217;s the correct thing to do if you want to later join threads. Also, we have to make sure the function signature matches the requirements of <em>pthread_create</em>.</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #b00040;">void</span> <span style="color: #666666;">*</span><span style="color: #0000ff;">threaded_task</span>(<span style="color: #b00040;">void</span> <span style="color: #666666;">*</span>t) {
  <span style="color: #b00040;">long</span> id <span style="color: #666666;">=</span> (<span style="color: #b00040;">long</span>) t;
  printf(<span style="color: #ba2121;">"Thread %ld started</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, id);
  task(id);
  printf(<span style="color: #ba2121;">"Thread %ld done</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, id);
  pthread_exit(<span style="color: #666666;">0</span>);
}</pre>
</div>
<p>Finally, the interesting code generates a new thread for each call to <em>threaded_task</em>.</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #b00040;">void</span> <span style="color: #666666;">*</span><span style="color: #0000ff;">parallel</span>(<span style="color: #b00040;">int</span> num_tasks)
{
  <span style="color: #b00040;">int</span> num_threads <span style="color: #666666;">=</span> num_tasks;
  pthread_t <span style="color: #008000; font-weight: bold;">thread</span>[num_threads];
  <span style="color: #b00040;">int</span> rc;
  <span style="color: #b00040;">long</span> t;
  <span style="color: #008000; font-weight: bold;">for</span> (t <span style="color: #666666;">=</span> <span style="color: #666666;">0</span>; t <span style="color: #666666;">&lt;</span> num_threads; t<span style="color: #666666;">++</span>) {
    printf(<span style="color: #ba2121;">"Creating thread %ld</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, t);
    rc <span style="color: #666666;">=</span> pthread_create(<span style="color: #666666;">&amp;</span><span style="color: #008000; font-weight: bold;">thread</span>[t], <span style="color: #008000;">NULL</span>, threaded_task, (<span style="color: #b00040;">void</span> <span style="color: #666666;">*</span>)t);
    <span style="color: #008000; font-weight: bold;">if</span> (rc) {
      printf(<span style="color: #ba2121;">"ERROR: return code from pthread_create() is %d</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, rc);
      exit(<span style="color: #666666;">-1</span>);
    }
  }
}</pre>
</div>
<p>The main function runs a specified number of tasks either in serial or parallel.</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #b00040;">void</span> <span style="color: #666666;">*</span><span style="color: #0000ff;">print_usage</span>(<span style="color: #b00040;">int</span> argc, <span style="color: #b00040;">char</span> <span style="color: #666666;">*</span>argv[]) {
  printf(<span style="color: #ba2121;">"Usage: %s serial|parallel num_tasks</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>, argv[<span style="color: #666666;">0</span>]);
  exit(<span style="color: #666666;">1</span>);
}

<span style="color: #b00040;">int</span> <span style="color: #0000ff;">main</span>(<span style="color: #b00040;">int</span> argc, <span style="color: #b00040;">char</span> <span style="color: #666666;">*</span>argv[]) {
  <span style="color: #008000; font-weight: bold;">if</span> (argc <span style="color: #666666;">!=</span> <span style="color: #666666;">3</span>) {print_usage(argc, argv);}

  <span style="color: #b00040;">int</span> num_tasks <span style="color: #666666;">=</span> atoi(argv[<span style="color: #666666;">2</span>]);

  <span style="color: #008000; font-weight: bold;">if</span> (<span style="color: #666666;">!</span>strcmp(argv[<span style="color: #666666;">1</span>], <span style="color: #ba2121;">"serial"</span>)) {
    serial(num_tasks);
  } <span style="color: #008000; font-weight: bold;">else</span> <span style="color: #008000; font-weight: bold;">if</span> (<span style="color: #666666;">!</span>strcmp(argv[<span style="color: #666666;">1</span>], <span style="color: #ba2121;">"parallel"</span>)) {
    parallel(num_tasks);
  }
  <span style="color: #008000; font-weight: bold;">else</span> {
    print_usage(argc, argv);
  }

  printf(<span style="color: #ba2121;">"Main completed</span><span style="color: #bb6622; font-weight: bold;">\n</span><span style="color: #ba2121;">"</span>);
  pthread_exit(<span style="color: #008000;">NULL</span>);
}</pre>
</div>
<p>That&#8217;s it! Now, compile the program using the command given at the beginning of this post. Here are some results on a MacBook Air.<br />
<code><br />
$ time ./pthreads_test serial 4<br />
Task 0 started<br />
Task 0 completed with result -3.153838e+06<br />
Task 1 started<br />
Task 1 completed with result -3.153838e+06<br />
Task 2 started<br />
Task 2 completed with result -3.153838e+06<br />
Task 3 started<br />
Task 3 completed with result -3.153838e+06<br />
Main completed</code></p>
<p>real 0m0.673s<br />
user 0m0.665s<br />
sys 0m0.003s</p>
<p><code><br />
$ time ./pthreads_test parallel 4<br />
Creating thread 0<br />
Creating thread 1<br />
Creating thread 2<br />
Creating thread 3<br />
Main completed<br />
Thread 1 started<br />
Task 1 started<br />
Thread 2 started<br />
Task 2 started<br />
Thread 3 started<br />
Task 3 started<br />
Thread 0 started<br />
Task 0 started<br />
Task 3 completed with result -3.153838e+06<br />
Thread 3 done<br />
Task 2 completed with result -3.153838e+06<br />
Task 1 completed with result -3.153838e+06<br />
Thread 2 done<br />
Thread 1 done<br />
Task 0 completed with result -3.153838e+06<br />
Thread 0 done</code></p>
<p>real 0m0.378s<br />
user 0m0.667s<br />
sys 0m0.007s</p>
<p>Note that threads do not necessarily start or end in order. And the point of it all; there is a factor 2x speedup for the multi-threaded run! Here&#8217;s a plot of the <em>real</em> time against number of tasks for 2, 4, 8, 16, 32, and 64 tasks.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" alt="" src="http://chart.apis.google.com/chart?chxl=1:|2|4|8|16|32|64&amp;chxr=0,0,11|1,-125,100&amp;chxt=y,x&amp;chbh=a,4,16&amp;chs=600x225&amp;cht=bvg&amp;chco=A2C180,3D7930&amp;chds=0,11,0,11&amp;chd=t:0.36,0.692,1.344,2.736,5.423,10.825|0.206,0.418,0.754,1.528,2.999,5.879&amp;chdl=serial|parallel&amp;chma=0,0,10" width="600" height="225" /></p>
<p>You can learn more by following the excellent tutorial provided <a href="https://computing.llnl.gov/tutorials/pthreads/">here</a>, from which the above example was derived.</p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2011/02/13/multicore-programming-with-pthreads/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>MACS password download</title>
		<link>http://ashishagarwal.org/2011/02/01/macs-password-download/</link>
		<comments>http://ashishagarwal.org/2011/02/01/macs-password-download/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 18:18:22 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=136</guid>
		<description><![CDATA[Downloading MACS requires you to either sign up for their mailing list or solve a puzzle. I signed up for their mailing list and then solved the puzzle for fun. Perhaps you will find the answer on my website.]]></description>
				<content:encoded><![CDATA[<p><a href="http://liulab.dfci.harvard.edu/MACS/Download.html">Downloading MACS</a> requires you to either sign up for their mailing list or solve a puzzle. I signed up for their mailing list and then solved the puzzle for fun. Perhaps you will find the answer on my website.</p>
<p><!--
fun decode_char(c) =
c' = ascii_code(c)
if c' < 110 then           char_of_ascii_code(c' + 13)       else           char_of_ascii_code(c' - 13)     Now apply this function to all letters in their puzzle. --></p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2011/02/01/macs-password-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Platform independent .bashrc file</title>
		<link>http://ashishagarwal.org/2010/11/10/platform-independent-bashrc-file/</link>
		<comments>http://ashishagarwal.org/2010/11/10/platform-independent-bashrc-file/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 18:55:12 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Bash]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=114</guid>
		<description><![CDATA[The number of computers I have accounts on has recently exploded, and manually editing my .bashrc file on each of these computers started getting tedious. I decided to resolve this by writing a single .bashrc file that can be copied &#8230; <a href="http://ashishagarwal.org/2010/11/10/platform-independent-bashrc-file/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The number of computers I have accounts on has recently exploded, and manually editing my .bashrc file on each of these computers started getting tedious. I decided to resolve this by writing a single .bashrc file that can be copied over to all my accounts. This allows me to maintain a single master file, but requires me to set configurations conditional on the account the file is on. Here, I describe some of the things I did.</p>
<p>Firstly, I finally spent a few hours learning bash by readingÂ <a href="http://www.amazon.com/gp/product/0596009658?ie=UTF8&amp;tag=ashishagarwal-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596009658">Learning the bash Shell</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=ashishagarwal-20&amp;l=as2&amp;o=1&amp;a=0596009658" border="0" alt="" width="1" height="1" />. I recommend you do this too. You&#8217;ll easily make up the hours in increased productivity.</p>
<p>My conditional settings are dependent on the kind of operating system I&#8217;m running and the particular machine I&#8217;m on. Let&#8217;s put this information in two variables:</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #19177c;">os</span><span style="color: #666666;">=</span><span style="color: #ba2121;">`</span>uname -s<span style="color: #ba2121;">`</span>
<span style="color: #19177c;">host</span><span style="color: #666666;">=</span><span style="color: #ba2121;">`</span>hostname | cut -d. -f1<span style="color: #ba2121;">`</span></pre>
</div>
<p>Passing the result of <em>hostname</em> to <em>cut</em> causes <em>host</em> to be set to just the first part of your hostname. For example, <em>foo</em> instead of <em>foo.bar.com</em>. This allows me to type less in later code.</p>
<p>Now, as an example, on one of my computer accounts I was using a software called Netkit. This required setting some environment variables and sourcing a file that provided bash completion features. Assuming the hostname was <em>net.cs.yale.edu</em>, I did this with:</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #008000; font-weight: bold;">if</span> <span style="color: #666666;">[</span> <span style="color: #19177c;">$host</span> <span style="color: #666666;">=</span> <span style="color: #ba2121;">"net"</span> <span style="color: #666666;">]</span>; <span style="color: #008000; font-weight: bold;">then</span>
<span style="color: #008000; font-weight: bold;">    </span><span style="color: #008000;">export </span><span style="color: #19177c;">NETKIT_HOME</span><span style="color: #666666;">=</span>/usr/local/netkit
    <span style="color: #19177c;">MANPATH</span><span style="color: #666666;">=</span><span style="color: #19177c;">$NETKIT_HOME</span>/man:<span style="color: #19177c;">$MANPATH</span>
    <span style="color: #19177c;">PATH</span><span style="color: #666666;">=</span><span style="color: #19177c;">$NETKIT_HOME</span>/bin:<span style="color: #19177c;">$PATH</span>
    . <span style="color: #19177c;">$NETKIT_HOME</span>/bin/netkit_bash_completion
<span style="color: #008000; font-weight: bold;">fi</span></pre>
</div>
<p>With this code, my environment variable namespace is not polluted on all my other accounts, and I won&#8217;t get any errors at login aboutÂ netkit_bash_completion not being found.</p>
<p>Some settings depend on the OS. For example, I like to colorize the output from ls, but the option for this differs on Mac and Linux systems. I can use a bash case construct to set the alias appropriately:</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #008000; font-weight: bold;">case</span> <span style="color: #19177c;">$os</span> in
    <span style="color: #ba2121;">"Darwin"</span> <span style="color: #666666;">)</span>
        <span style="color: #008000;">alias </span><span style="color: #19177c;">ls</span><span style="color: #666666;">=</span><span style="color: #ba2121;">'ls -G'</span>;;
    <span style="color: #ba2121;">"Linux"</span>  <span style="color: #666666;">)</span>
        <span style="color: #008000;">alias </span><span style="color: #19177c;">ls</span><span style="color: #666666;">=</span><span style="color: #ba2121;">'ls --color=auto'</span>;;
<span style="color: #008000; font-weight: bold;">esac</span></pre>
</div>
<p>As one more example, I define aliases to help me ssh between all my machines more easily. There&#8217;s no point in setting this up for the machine you&#8217;re on, so I do:</p>
<div class="highlight" style="background: #f8f8f8;">
<pre style="line-height: 125%;"><span style="color: #666666;">[</span> <span style="color: #19177c;">$host</span> !<span style="color: #666666;">=</span> <span style="color: #ba2121;">"net"</span> <span style="color: #666666;">]</span> <span style="color: #666666;">&amp;&amp;</span> <span style="color: #008000;">alias </span><span style="color: #19177c;">ssh_net</span><span style="color: #666666;">=</span><span style="color: #ba2121;">'ssh user_name@net.cs.yale.edu'</span></pre>
</div>
<p>Now all you have to do is create another bash script that rsync&#8217;s your .bashrc file to all your accounts, and run it every time you make a change.</p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2010/11/10/platform-independent-bashrc-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shiny new copy of Logicomix has arrived!</title>
		<link>http://ashishagarwal.org/2010/09/11/logicomix/</link>
		<comments>http://ashishagarwal.org/2010/09/11/logicomix/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 15:19:31 +0000</pubDate>
		<dc:creator><![CDATA[ashish]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Popular Science]]></category>

		<guid isPermaLink="false">http://ashishagarwal.org/?p=100</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/1596914521?ie=UTF8&#038;tag=ashishagarwal-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1596914521"><img alt="Logicomix" title="Logicomix" width="109" height="160" class="aligncenter size-full wp-image-103" border="0" src="http://ashishagarwal.org/wp-content/uploads/2010/09/Logicomix.jpg"></a><img src="http://www.assoc-amazon.com/e/ir?t=ashishagarwal-20&#038;l=as2&#038;o=1&#038;a=1596914521" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ashishagarwal.org/2010/09/11/logicomix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
