<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title><![CDATA[Praveen Kumar]]></title>
  
  <link href="http://praveen.kumar.in/" />
  <updated>2012-03-10T23:21:29-08:00</updated>
  <id>http://praveen.kumar.in/</id>
  <author>
    <name><![CDATA[Praveen Kumar]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/praveen-journal" /><feedburner:info uri="praveen-journal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>37.527237</geo:lat><geo:long>-121.967906</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>praveen-journal</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
      




<title type="html"><![CDATA[Org-Mode, LaTeX and Minted - Syntax Highlighting]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/Evpek5yf38Y/" />
<updated>2012-03-10T22:20:00-08:00</updated>
<id>http://praveen.kumar.in/2012/03/10/org-mode-latex-and-minted-syntax-highlighting</id>

      <content type="html">&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='well formatted, syntax highlighted code is easy to read '&gt;
I use &lt;a href="http://orgmode.org/"&gt;Org-Mode&lt;/a&gt; excessively for taking notes, publishing, and even
presentation. As a programmer, most of the stuff I write has snippets
of source code from various languages. I always feel that
well formatted, syntax highlighted code is easy to read in published
documents. It is possible to mark a block as source code in
Org-Mode.
&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;When exporting an Org file to &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt;, Org-Mode provides options to
format the source code block using one of two popular source code
formatting TeX packages namely &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/listings/"&gt;Listings&lt;/a&gt; and &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/minted"&gt;Minted&lt;/a&gt;. I
personally was not that thrilled by Listings. Minted uses
&lt;a href="http://pygments.org/"&gt;Pygments&lt;/a&gt;, a Python based syntax highlighter. I already use Pygments
in a couple of other scenario. Also, Minted looked more modern
compared to Listings. So, I decided to use Minted as my primary code
highlighting tool for LaTeX.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;To use Minted automatically for LaTeX documents that are exported from
an Org file, the following has to be added to your Emacs startup file.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='cl'&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;org-latex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;org-export-latex-listings&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;minted&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-to-list&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;org-export-latex-packages-alist&lt;/span&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;minted&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Additionally, make sure that you have Pygments installed on your system.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;easy_install Pygments
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;With this, code blocks (&lt;code&gt;#+begin_src&lt;/code&gt; &amp;#8230;  &lt;code&gt;#+end_src&lt;/code&gt;) in an Org file
will have a Minted (syntax highlighted) LaTeX environment.&lt;/p&gt;

&lt;p&gt;Here is how this sample &lt;a href="http://www.erlang.org/"&gt;Erlang&lt;/a&gt; code will look like in the
resulting PDF.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;#+begin_src erlang&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  %% A process whose only job is to keep a counter.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  -module&lt;span class="o"&gt;(&lt;/span&gt;counter&lt;span class="o"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;span class='line'&gt;  -export&lt;span class="o"&gt;([&lt;/span&gt;start/0, codeswitch/1&lt;span class="o"&gt;])&lt;/span&gt;.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  start&lt;span class="o"&gt;()&lt;/span&gt; -&amp;gt; loop&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  loop&lt;span class="o"&gt;(&lt;/span&gt;Sum&lt;span class="o"&gt;)&lt;/span&gt; -&amp;gt;
&lt;/span&gt;&lt;span class='line'&gt;    receive
&lt;/span&gt;&lt;span class='line'&gt;       &lt;span class="o"&gt;{&lt;/span&gt;increment, Count&lt;span class="o"&gt;}&lt;/span&gt; -&amp;gt;
&lt;/span&gt;&lt;span class='line'&gt;          loop&lt;span class="o"&gt;(&lt;/span&gt;Sum+Count&lt;span class="o"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;span class='line'&gt;       reset -&amp;gt;
&lt;/span&gt;&lt;span class='line'&gt;          loop&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;span class='line'&gt;       &lt;span class="o"&gt;{&lt;/span&gt;counter, Pid&lt;span class="o"&gt;}&lt;/span&gt; -&amp;gt;
&lt;/span&gt;&lt;span class='line'&gt;          Pid ! &lt;span class="o"&gt;{&lt;/span&gt;counter, Sum&lt;span class="o"&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;span class='line'&gt;          loop&lt;span class="o"&gt;(&lt;/span&gt;Sum&lt;span class="o"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;span class='line'&gt;       code_switch -&amp;gt;
&lt;/span&gt;&lt;span class='line'&gt;          ?MODULE:codeswitch&lt;span class="o"&gt;(&lt;/span&gt;Sum&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    end.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  codeswitch&lt;span class="o"&gt;(&lt;/span&gt;Sum&lt;span class="o"&gt;)&lt;/span&gt; -&amp;gt; loop&lt;span class="o"&gt;(&lt;/span&gt;Sum&lt;span class="o"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;#+end_src&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;img class="center" src="http://praveen.kumar.in/images/MintedErlang.png" title="PDF of Minted Erlang Code" &gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/03/10/org-mode-latex-and-minted-syntax-highlighting/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=Evpek5yf38Y:89mnurgnTpc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=Evpek5yf38Y:89mnurgnTpc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=Evpek5yf38Y:89mnurgnTpc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=Evpek5yf38Y:89mnurgnTpc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=Evpek5yf38Y:89mnurgnTpc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/Evpek5yf38Y" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2012/03/10/org-mode-latex-and-minted-syntax-highlighting/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[C++ refactoring using clang &rarr;]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/ENb_JQQnWqM/" />
<updated>2012-03-10T21:57:00-08:00</updated>
<id>http://praveen.kumar.in/2012/03/10/c-plus-plus-refactoring-using-clang</id>

      <content type="html">&lt;p&gt;Lately, I have been playing with LLVM and clang a lot on some
projects. Yesterday, I ran into an interesting talk by a Google
employee in the last LLVM developers meeting. It was about automatic
C++ refactoring using clang.&lt;/p&gt;

&lt;p&gt;With the power of clang and easy access to its AST information, I can
finally see the possibility of having a decent C++ refactoring tool in
the near future.&lt;/p&gt;

&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/mVbDzTM21BQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;



&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/03/10/c-plus-plus-refactoring-using-clang/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=ENb_JQQnWqM:gVdsRjM9C7Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=ENb_JQQnWqM:gVdsRjM9C7Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=ENb_JQQnWqM:gVdsRjM9C7Q:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=ENb_JQQnWqM:gVdsRjM9C7Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=ENb_JQQnWqM:gVdsRjM9C7Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/ENb_JQQnWqM" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://llvm.org/devmtg/2011-11/#talk2</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Sikh Rights Group Protests Sonia Gandhi's Presence in the United States &rarr;]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/m7evkCF9pU4/" />
<updated>2012-03-03T07:18:00-08:00</updated>
<id>http://praveen.kumar.in/2012/03/03/sikh-rights-group-protests-sonia-gandhis-presence-in-the-united-states</id>

      <content type="html">&lt;blockquote&gt;&lt;p&gt;Sonia Gandhi’s entry and presence in the U.S. is in violation of&lt;br/&gt;section 212(a)(3)(E)(ii) &amp; (iii) of the Immigration and Nationality&lt;br/&gt;Act and section 604 of the International Religious Freedom Act of 1998&lt;br/&gt;which prohibit entry into the U.S. of any individual who, outside of&lt;br/&gt;the U.S., has ordered, incited, assisted or in any way participated in&lt;br/&gt;the commission of any act of torture or extra judicial killing. Sonia&lt;br/&gt;Gandhi is ‘inadmissible’ to the U.S. because as President of the&lt;br/&gt;Indian National Congress party she has been actively covering up the&lt;br/&gt;Sikh genocide and shielding her party leaders who were key players in&lt;br/&gt;executing the atrocities of November 1984.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/03/03/sikh-rights-group-protests-sonia-gandhis-presence-in-the-united-states/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=m7evkCF9pU4:N2wcZBeJ0qc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=m7evkCF9pU4:N2wcZBeJ0qc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=m7evkCF9pU4:N2wcZBeJ0qc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=m7evkCF9pU4:N2wcZBeJ0qc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=m7evkCF9pU4:N2wcZBeJ0qc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/m7evkCF9pU4" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://www.sikhsiyasat.net/2012/03/03/sikh-genocide-1984-sikh-rights-group-protests-sonia-gandhis-presence-in-the-united-states/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Byzantine Generals' Problem &rarr;]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/87XaRQ9JfR8/Byzantine_fault_tolerance" />
<updated>2012-02-28T00:04:00-08:00</updated>
<id>http://praveen.kumar.in/2012/02/28/byzantine-generals-problem</id>

      <content type="html">&lt;p&gt;One of the important considerations that has to be made with respect
to distributed systems is fault tolerance against Byzantine failures.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The generals of the Byzantine Empire&amp;#8217;s army must decide unanimously&lt;br/&gt;whether to attack some enemy army. The problem is complicated by the&lt;br/&gt;geographic separation of the generals, who must communicate by sending&lt;br/&gt;messengers to each other, and by the presence of traitors amongst the&lt;br/&gt;generals. These traitors can act arbitrarily in order to achieve the&lt;br/&gt;following aims: trick some generals into attacking; force a decision&lt;br/&gt;that is not consistent with the generals&amp;#8217; desires, e.g. forcing an&lt;br/&gt;attack when no general wished to attack; or confusing some generals to&lt;br/&gt;the point that they are unable to make up their minds. If the traitors&lt;br/&gt;succeed in any of these goals, any resulting attack is doomed, as only&lt;br/&gt;a concerted effort can result in victory.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/02/28/byzantine-generals-problem/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=87XaRQ9JfR8:Mb5uLTvL1TE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=87XaRQ9JfR8:Mb5uLTvL1TE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=87XaRQ9JfR8:Mb5uLTvL1TE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=87XaRQ9JfR8:Mb5uLTvL1TE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=87XaRQ9JfR8:Mb5uLTvL1TE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/87XaRQ9JfR8" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://en.wikipedia.org/wiki/Byzantine_fault_tolerance</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[The World According to David Cheriton &rarr;]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/B09IZrvMeGE/" />
<updated>2012-02-27T16:19:00-08:00</updated>
<id>http://praveen.kumar.in/2012/02/27/the-world-according-to-david-cheriton</id>

      <content type="html">&lt;p&gt;I just can&amp;#8217;t agree more with Dr. David Cheriton&amp;#8217;s view of the trend in computer innovation.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;For 30 years, computer innovation has moved up the “stack” from chips to operating systems, to middleware, applications and finally social networks.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;There is much more we can do to build a better infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/02/27/the-world-according-to-david-cheriton/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=B09IZrvMeGE:A5SUPQusOMk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=B09IZrvMeGE:A5SUPQusOMk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=B09IZrvMeGE:A5SUPQusOMk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=B09IZrvMeGE:A5SUPQusOMk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=B09IZrvMeGE:A5SUPQusOMk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/B09IZrvMeGE" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://www.pehub.com/137581/the-world-according-to-david-cheriton-he-funded-google-and-the-next-big-area-for-high-tech-innovation/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Octopress Linklog Feature &rarr;]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/KxqWFJIfRlU/1812265" />
<updated>2012-02-27T15:07:00-08:00</updated>
<id>http://praveen.kumar.in/2012/02/27/octopress-linklog-feature</id>

      <content type="html">&lt;p&gt;I got interested in the new linklog feature provided by Octopress and
started playing with it. According to the developer, this feature is
still a preview. I have already started using it on my blog though.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Be aware this is a preview. Don&amp;#8217;t merge this into your main branch and&lt;br/&gt;run along using it. I&amp;#8217;ve tested it a lot but there may be issues I&amp;#8217;m&lt;br/&gt;unaware of. Create a test branch for your blog before you&lt;br/&gt;continue. When everything gets cleared up, I&amp;#8217;ll release this feature&lt;br/&gt;and you can pull from the master branch.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Here are the characteristics of a link.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The font size of a link&amp;#8217;s title is smaller than the font size of a
post&amp;#8217;s title.&lt;/li&gt;
&lt;li&gt;A link&amp;#8217;s title has a → symbol at the end of it.&lt;/li&gt;
&lt;li&gt;Clicking the link&amp;#8217;s title will take you to the linked URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2012/02/27/octopress-linklog-feature/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=KxqWFJIfRlU:MIUQ7lplpjM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=KxqWFJIfRlU:MIUQ7lplpjM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=KxqWFJIfRlU:MIUQ7lplpjM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=KxqWFJIfRlU:MIUQ7lplpjM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=KxqWFJIfRlU:MIUQ7lplpjM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/KxqWFJIfRlU" height="1" width="1"/&gt;</content>
    <feedburner:origLink>https://gist.github.com/1812265</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Building Hadoop and HBase for HBase Maven application development]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/oQdCQSJ_4Ds/" />
<updated>2011-06-20T23:02:40-07:00</updated>
<id>http://praveen.kumar.in/2011/06/20/building-hadoop-and-hbase-for-hbase-maven-application-development</id>

      <content type="html">&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='compile your own binary version'&gt;
&lt;a href="http://hbase.apache.org/"&gt;HBase&lt;/a&gt; 0.90.3 needs
&lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt; common 0.20-append branch in order
to not lose data. More information about this can be found
&lt;a href="http://hbase.apache.org/book/notsoquick.html#hadoop"&gt;&amp;#8220;Getting Started&amp;#8221;&lt;/a&gt;
section of HBase guide. However, there is no official release of
Hadoop common 0.20-append binary. In order to have consistent and
right bits on your cluster and your development platform, you need to
compile your own binary version of Hadoop common from the 0.20-append
branch source and your own version of HBase 0.90.3 using that Hadoop
common binary.&lt;/p&gt;

&lt;p&gt;This article provides an overview of building Hadoop and HBase for
developing HBase applications that are managed using
&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;.
&lt;/span&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;Interpreting Maven terminology&lt;/h2&gt;

&lt;p&gt;A brief description about a few ambiguous terms is provided in this
section to avoid potential confusion.&lt;/p&gt;

&lt;h3&gt;Maven repository vs repository manager&lt;/h3&gt;

&lt;p&gt;Maven repository refers to &lt;code&gt;~/.m2/repository&lt;/code&gt;, whereas Maven
repository manager refers to an artifact repository manager like
&lt;a href="http://archiva.apache.org/"&gt;Apache Archiva&lt;/a&gt; or
&lt;a href="http://www.jfrog.com/products.php"&gt;Artifactory&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Installing vs deploying artifacts&lt;/h3&gt;

&lt;p&gt;Installing an artifact is installing it in the Maven repository,
whereas deploying an artifact means publishing the artifact in a Maven
repository manager. For more information, please refer to
&lt;a href="http://www.sonatype.com/books/mvnref-book/reference/lifecycle-sect-common-goals.html#lifecycle-sect-install-phase"&gt;Maven reference&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Installing artifacts vs binaries&lt;/h3&gt;

&lt;p&gt;Installing artifacts refers to installing them in Maven repository,
whereas installing binaries refers to installing the entire binary
distribution on the cluster.&lt;/p&gt;

&lt;h2&gt;Prerequisites&lt;/h2&gt;

&lt;p&gt;You need the following components for this process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/overview/index-jsp-136246.html"&gt;Oracle Java SE 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/index-jdk5-jsp-142662.html"&gt;Oracle Java SE 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://subversion.apache.org/"&gt;Apache Subversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ant.apache.org/"&gt;Apache Ant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://forrest.apache.org/"&gt;Apache Forrest 0.8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Apache Maven&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A Maven repository manager (Optional)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;If you are using a Maven repository manager, then make sure that you
configure the authentication settings for the repository manager in
&lt;code&gt;~/.m2/settings&lt;/code&gt; file.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;settings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  ...
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="nt"&gt;&amp;lt;server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;yourrepo.internal&lt;span class="nt"&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;username&amp;gt;&lt;/span&gt;USER&lt;span class="nt"&gt;&amp;lt;/username&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;password&amp;gt;&lt;/span&gt;PASSWORD&lt;span class="nt"&gt;&amp;lt;/password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="nt"&gt;&amp;lt;/server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;/servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  ...
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/settings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;code&gt;yourrepo.internal&lt;/code&gt; is the ID that you will be referring to later from
Ant and Maven build configurations.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;USER&lt;/code&gt; and &lt;code&gt;PASSWORD&lt;/code&gt; are the username and password of an account with
deployment role in your Maven repository manager.&lt;/p&gt;

&lt;h2&gt;Building Hadoop common&lt;/h2&gt;

&lt;h3&gt;Checkout Hadoop common&lt;/h3&gt;

&lt;p&gt;Checkout Hadoop common from 0.20-append branch.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ svn co http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-append/ hadoop-common-0.20-append&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;Create build.properties&lt;/h3&gt;

&lt;p&gt;Hadoop uses Apache Ant as a build tool. In order to build
&lt;code&gt;hadoop-common&lt;/code&gt;, you need to create a
&lt;code&gt;hadoop-common-0.20-append/build.properties&lt;/code&gt; file that looks something
like this.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='properties'&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;resolvers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;internal&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;0.20-append-r1057313-yourversion&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;project.version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${version}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;hadoop.version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${version}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;hadoop-core.version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${version}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;hadoop-hdfs.version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${version}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="na"&gt;hadoop-mapred.version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;${version}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Note that at the time of creation of this article, the latest revision
that was available in 0.20-append branch was r1057313.&lt;/p&gt;

&lt;p&gt;Also, try to assign a meaningful suffix in place of &lt;code&gt;yourversion&lt;/code&gt; so
that you can distinguish between the official artifacts and the
artifacts that are deployed by you.&lt;/p&gt;

&lt;h3&gt;OPTIONAL: Configure your repository manager&lt;/h3&gt;

&lt;p&gt;Please follow this step only if you are running a Maven repository
manager for team collaboration and you want to deploy the Hadoop
common artifacts to that repository manager.&lt;/p&gt;

&lt;p&gt;Edit &lt;code&gt;hadoop-common-0.20.append/build.xml&lt;/code&gt; and add two new targets.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;target&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;mvn-deploy-internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;depends=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;mvn-taskdef, bin-package, set-version, simpledeploy-internal&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="na"&gt;description=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;To deploy hadoop core and test jar&amp;#39;s to apache maven repository&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;target&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;simpledeploy-internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;unless=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;staging&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:pom&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-core.pom}&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.core&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:pom&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-test.pom}&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.test&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:pom&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-examples.pom}&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.examples&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:pom&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-tools.pom}&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.tools&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:pom&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-streaming.pom}&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.streaming&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:install-provider&lt;/span&gt; &lt;span class="na"&gt;artifactId=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;wagon-http&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${wagon-http.version}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:deploy&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-core.jar}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;remoteRepository&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yourrepo.internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://yourreposerver.com:port/path&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;pom&lt;/span&gt; &lt;span class="na"&gt;refid=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.core&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;/artifact:deploy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:deploy&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-test.jar}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;remoteRepository&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yourrepo.internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://yourreposerver.com:port/path&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;pom&lt;/span&gt; &lt;span class="na"&gt;refid=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.test&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;/artifact:deploy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:deploy&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-examples.jar}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;remoteRepository&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yourrepo.internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://yourreposerver.com:port/path&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;pom&lt;/span&gt; &lt;span class="na"&gt;refid=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.examples&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;/artifact:deploy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:deploy&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-tools.jar}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;remoteRepository&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yourrepo.internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://yourreposerver.com:port/path&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;pom&lt;/span&gt; &lt;span class="na"&gt;refid=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.tools&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;/artifact:deploy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;artifact:deploy&lt;/span&gt; &lt;span class="na"&gt;file=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;${hadoop-streaming.jar}&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;remoteRepository&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;yourrepo.internal&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;http://yourreposerver.com:port/path&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="nt"&gt;&amp;lt;pom&lt;/span&gt; &lt;span class="na"&gt;refid=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;hadoop.streaming&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;     &lt;span class="nt"&gt;&amp;lt;/artifact:deploy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Note that &lt;code&gt;yourrepo.internal&lt;/code&gt; is the same ID that you have configured
authentication for in the &lt;code&gt;~m2/settings.xml&lt;/code&gt; file earlier.&lt;/p&gt;

&lt;h3&gt;Build and install/deploy Hadoop common artifacts&lt;/h3&gt;

&lt;p&gt;Now, build and install/deploy Hadoop common artifacts using the Maven ant tasks.&lt;/p&gt;

&lt;h4&gt;Install artifacts&lt;/h4&gt;

&lt;p&gt;If you &lt;strong&gt;do not&lt;/strong&gt; have a repository manager, and &lt;strong&gt;skipped the
previous step&lt;/strong&gt;, then use the &lt;code&gt;mvn-install&lt;/code&gt; target and &lt;strong&gt;skip&lt;/strong&gt; the
&amp;#8220;Deploy artifacts&amp;#8221; section. Otherwise, jump directly to &amp;#8220;Deploy
artifacts&amp;#8221; section.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ ant mvn-install&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This target will generate Hadoop common artifacts and Maven POM files,
and install them in your local Maven repository
(&lt;code&gt;~/.m2/repository&lt;/code&gt;).&lt;/p&gt;

&lt;h4&gt;Deploy artifacts&lt;/h4&gt;

&lt;p&gt;If you have an internal repository manager, you should deploy the
artifacts on it that you have specified in &lt;code&gt;build.xml&lt;/code&gt; of the previous
step. To achieve this, run &lt;code&gt;mvn-deploy-internal&lt;/code&gt; task.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ ant mvn-deploy-internal&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This target will generate the artifacts and Maven POM files, and
publish them to your repository manager that you have specified in
&lt;code&gt;build.xml&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Generate the binary tarball to install on the cluster&lt;/h3&gt;

&lt;p&gt;You need to generate a binary tarball to install on the cluster. This
is achieved by running &lt;code&gt;tar&lt;/code&gt; target.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ ant tar -Djava5.home=&amp;lt;Java 5 SE Home&gt; -Dforrest.home=&amp;lt;Forrest 0.8 Home&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Please note that you need Java SE/EE 5 and Apache Forrest 0.8 for this
step. Substituting Java SE/EE 5 or Apache Forrest 0.9 will result in a
build failure.&lt;/p&gt;

&lt;p&gt;This will generate the
&lt;code&gt;hadoop-common-0.20-append-r1057313-yourversion.tar.gz&lt;/code&gt; tarball in
&lt;code&gt;hadoop-common-0.20-append/build/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Install Hadoop binaries on the cluster&lt;/h3&gt;

&lt;p&gt;Copy the tarball that was generated in the previous step to your
cluster, and unpack them in desired location.&lt;/p&gt;

&lt;p&gt;This ensures that you have a consistent Hadoop installation because
you are not mixing and matching artifacts from a Hadoop common
official release and artifacts that you built.&lt;/p&gt;

&lt;h2&gt;Building HBase&lt;/h2&gt;

&lt;h3&gt;Checkout HBase&lt;/h3&gt;

&lt;p&gt;Checkout HBase from 0.90.3 tag.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ svn co http://svn.apache.org/repos/asf/hbase/tags/0.90.3 hbase-0.90.3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;Modify HBase and Hadoop versions&lt;/h3&gt;

&lt;p&gt;Now, edit &lt;code&gt;hbase-0.90.3/pom.xml&lt;/code&gt; and modify HBase and Hadoop versions.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='line'&gt;   ...
&lt;/span&gt;&lt;span class='line'&gt;   &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.hbase&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;   &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;hbase&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;   &lt;span class="nt"&gt;&amp;lt;packaging&amp;gt;&lt;/span&gt;jar&lt;span class="nt"&gt;&amp;lt;/packaging&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;   &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;0.90.3-yourversion&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;   ...
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="nt"&gt;&amp;lt;hadoop.version&amp;gt;&lt;/span&gt;0.20-append-r1057313-yourversion&lt;span class="nt"&gt;&amp;lt;/hadoop.version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;   ...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Note that you should be using the same revision number for Hadoop that
you have assigned while building Hadoop.&lt;/p&gt;

&lt;p&gt;Also, try to assign a meaningful suffix in place of &lt;code&gt;yourversion&lt;/code&gt; so
that you can distinguish between the official artifacts and the
artifacts that are deployed by you.&lt;/p&gt;

&lt;h3&gt;OPTIONAL: Specify the URL of your repository manager&lt;/h3&gt;

&lt;p&gt;If you are running an internal repository manager for team
collaboration, it is the time to specify in the
&lt;code&gt;hbase-0.90.3/pom.xml&lt;/code&gt;. Add the following section to it.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;project&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  ...
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;distributionManagement&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="nt"&gt;&amp;lt;repository&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;yourrepo.internal&lt;span class="nt"&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Your internal repository&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;http://yourreposerver.com:port/path&lt;span class="nt"&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="nt"&gt;&amp;lt;/repository&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;/distributionManagement&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  ...
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Note that &lt;code&gt;yourrepo.internal&lt;/code&gt; is the same ID that you have configured
authentication for in the &lt;code&gt;~m2/settings.xml&lt;/code&gt; file earlier.&lt;/p&gt;

&lt;h3&gt;Build and install/deploy HBase artifacts&lt;/h3&gt;

&lt;p&gt;Now, build and install/deploy HBase artifacts using the Maven goals.&lt;/p&gt;

&lt;h4&gt;Install artifacts&lt;/h4&gt;

&lt;p&gt;If you &lt;strong&gt;do not&lt;/strong&gt; have a repository manager, and &lt;strong&gt;skipped the
previous step&lt;/strong&gt;, then use the &lt;code&gt;install&lt;/code&gt; goal and &lt;strong&gt;skip&lt;/strong&gt; the &amp;#8220;Deploy
artifacts&amp;#8221; section. Otherwise, jump directly to &amp;#8220;Deploy artifacts&amp;#8221;
section.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ mvn install&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This goal will generate HBase artifacts and Maven POM files, and
install them in your local Maven repository
(&lt;code&gt;~/.m2/repository&lt;/code&gt;). &lt;strong&gt;Ignore the rest of this section.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;Deploy artifacts&lt;/h4&gt;

&lt;p&gt;If you have a repository manager, you should deploy the artifacts on
your internal server that you have specified in &lt;code&gt;pom.xml&lt;/code&gt; of the
previous step. To achieve this, invoke &lt;code&gt;deploy&lt;/code&gt; goal.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ mvn deploy&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This goal will generate the artifacts and Maven POM files, and publish
them to your internal repository manager that you have specified in
&lt;code&gt;pom.xml&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Generate the binary tarball to install on the cluster&lt;/h3&gt;

&lt;p&gt;You need to generate a binary tarball to install on the cluster. This
is achieved by invoking &lt;code&gt;assembly:single&lt;/code&gt; goal.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ mvn assembly:single&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This will generate the
&lt;code&gt;hbase-0.90.3/target/hbase-0.90.3-yourversion.tar.gz&lt;/code&gt; tarball.&lt;/p&gt;

&lt;h3&gt;Install HBase binaries on the cluster&lt;/h3&gt;

&lt;p&gt;Copy the tarball that was generated in the last step to your cluster
and unpack them in the desired location.&lt;/p&gt;

&lt;p&gt;This ensures that you have a consistent HBase installation with the
right version of Hadoop artifacts that you have built. There is no
need of replacing any artifact by hand because, Maven automatically
pulled the right version of the artifact that you have built.&lt;/p&gt;

&lt;h2&gt;OPTIONAL: Using the HBase artifact in your HBase application&lt;/h2&gt;

&lt;p&gt;Now you can edit the &lt;code&gt;pom.xml&lt;/code&gt; of your HBase application to use the
version of HBase that you have built (0.90.3-yourversion)&lt;/p&gt;

&lt;h2&gt;Feedback&lt;/h2&gt;

&lt;p&gt;I tried to provide only as much information in the article as possible
without overloading the scope of it. I have also taken basic care to
ensure that the above mentioned commands are accurate. However, there
might be some typos or copy paste errors. If you find something that
doesn&amp;#8217;t work for you please let me know and I&amp;#8217;ll fix them.&lt;/p&gt;

&lt;h2&gt;Credits&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Thanks to &lt;a href="http://www.michael-noll.com/"&gt;Michael G. Noll&lt;/a&gt; for his
&lt;a href="http://www.michael-noll.com/blog/2011/04/14/building-an-hadoop-0-20-x-version-for-hbase-0-90-2/"&gt;blog post&lt;/a&gt;
on building Hadoop.&lt;/li&gt;
&lt;li&gt;Thanks to &lt;a href="https://twitter.com/#!/jpallas"&gt;Joe Pallas&lt;/a&gt; for his
suggestions on this process and review of this article.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Disclaimer&lt;/h2&gt;

&lt;p&gt;This article is provided for informational purpose only and I will not
be liable for any errors, omissions, or delays in this information or
any losses, injuries, or damages arising from its use.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/06/20/building-hadoop-and-hbase-for-hbase-maven-application-development/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=oQdCQSJ_4Ds:G_47mUfkr64:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=oQdCQSJ_4Ds:G_47mUfkr64:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=oQdCQSJ_4Ds:G_47mUfkr64:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=oQdCQSJ_4Ds:G_47mUfkr64:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=oQdCQSJ_4Ds:G_47mUfkr64:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/oQdCQSJ_4Ds" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/06/20/building-hadoop-and-hbase-for-hbase-maven-application-development/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Making Mac applications to make use of memories larger than 4 GB]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/LweP68Y6fWk/" />
<updated>2011-06-19T19:10:42-07:00</updated>
<id>http://praveen.kumar.in/2011/06/19/making-mac-applications-to-make-use-of-memories-larger-than-4-gb</id>

      <content type="html">&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='VirtualBox was not able to see more than 4 GB of memory'&gt;
Today, I upgraded the memory on my Macbook Pro (2010) from 4 GB to 8
GB. One of the main reasons for the memory upgrade was to be able to
run
&lt;a href="http://windows.microsoft.com/en-US/windows7/products/home"&gt;Mircosoft Windows 7&lt;/a&gt;
virtual machine using
&lt;a href="http://www.virtualbox.org/"&gt;Oracle VirtualBox&lt;/a&gt;. However, I noticed
that VirtualBox was not able to see more than 4 GB of memory even
after the upgrade while the system reported that there was 8 GB of
installed memory.
&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='use the 64-bit kernel'&gt;
A quick research showed that Mac OS X 10.6 (Snow Leopard) uses 32-bit
kernel by default. This limits the applications to use only 4 GB of
memory. In order for the applications to use larger memories, one need
to use the 64-bit kernel (provided that you are on a 64-bit
platform). There is an
&lt;a href="http://support.apple.com/kb/HT3773"&gt;Apple support page&lt;/a&gt; that
describes how to select the desired kernel.
&lt;/span&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;I changed the defaults to use 64-bit kernel.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ sudo systemsetup -setkernelbootarchitecture x86_64&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This configuration is stored in the file
&lt;code&gt;/Library/Preferences/SystemConfiguration/com.apple.Boot.plist&lt;/code&gt;&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='xml'&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;plist&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Kernel Architecture&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;x86_64&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Kernel Flags&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/plist&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;After making this change and rebooting, VirtualBox was able to see the
whole memory.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/06/19/making-mac-applications-to-make-use-of-memories-larger-than-4-gb/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=LweP68Y6fWk:IUQM6E9HF1Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=LweP68Y6fWk:IUQM6E9HF1Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=LweP68Y6fWk:IUQM6E9HF1Q:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=LweP68Y6fWk:IUQM6E9HF1Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=LweP68Y6fWk:IUQM6E9HF1Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/LweP68Y6fWk" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/06/19/making-mac-applications-to-make-use-of-memories-larger-than-4-gb/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Plotting a weight chart using Emacs Org-Mode and Gnuplot]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/0zAF8aT5JIE/" />
<updated>2011-06-19T08:07:54-07:00</updated>
<id>http://praveen.kumar.in/2011/06/19/plotting-a-weight-chart-using-emacs-org-mode-and-gnuplot-2</id>

      <content type="html">&lt;p&gt;I discovered about &lt;a href="http://orgmode.org"&gt;Org-Mode&lt;/a&gt; a couple of years
ago. Since then, I have started using it for various tasks. One of the
recent usage is to track my daily weight. This article describes how
to use Org-Mode and Gnuplot to plot your weight measurements.&lt;/p&gt;

&lt;p&gt;Here is the list of software that I use in my setup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.apple.com/macosx/"&gt;Mac OS X 10.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/software/emacs"&gt;GNU Emacs 23.3.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://orgmode.org"&gt;Org-Mode 7.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gnuplot.info"&gt;Gnuplot 4.4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xafs.org/BruceRavel/GnuplotMode"&gt;Gnuplot mode 0.6.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For the purpose of this article, it is assumed that you have a similar
setup that works for you.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;As part of my daily measurement, I track three measurements namely,
weight, body fat percentage and body water percentage. This data can
be represented in an Org table that has four columns as
follows. Please note that the data provided below is hypothetical.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;#+PLOT: script:"Weight.plt"
&lt;/span&gt;&lt;span class='line'&gt;| Date       | Weight |  BF% |  BW% |
&lt;/span&gt;&lt;span class='line'&gt;|------------+--------+------+------|
&lt;/span&gt;&lt;span class='line'&gt;| 05/01/2011 |  145.2 | 30.3 | 50.3 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/02/2011 |  145.1 | 29.4 | 50.7 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/03/2011 |  144.2 | 30.1 | 50.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/04/2011 |  144.0 | 29.0 | 50.8 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/05/2011 |  144.1 | 28.7 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/06/2011 |  144.2 | 29.2 | 50.7 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/07/2011 |  144.4 | 27.8 | 51.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/08/2011 |  143.7 | 27.6 | 51.5 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/09/2011 |  143.2 | 28.5 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/10/2011 |  142.8 | 30.1 | 50.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/11/2011 |  142.2 | 30.1 | 50.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/12/2011 |  142.4 | 29.8 | 50.5 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/13/2011 |  142.2 | 29.9 | 50.5 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/14/2011 |  141.2 | 27.4 | 51.6 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/15/2011 |  141.5 | 27.2 | 51.7 |
&lt;/span&gt;&lt;span class='line'&gt;|------------+--------+------+------|
&lt;/span&gt;&lt;span class='line'&gt;| 05/16/2011 |  141.2 | 28.8 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/17/2011 |  140.8 | 28.9 | 50.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/18/2011 |  140.2 | 29.5 | 50.7 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/19/2011 |  140.5 | 26.8 | 51.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/20/2011 |  140.4 | 28.1 | 51.3 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/21/2011 |  139.2 | 26.7 | 51.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/22/2011 |  137.1 | 27.0 | 51.7 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/23/2011 |  137.5 | 27.0 | 51.7 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/24/2011 |  137.4 | 28.5 | 51.1 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/25/2011 |  136.8 | 29.6 | 50.6 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/26/2011 |  136.3 | 28.8 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/27/2011 |  136.3 | 28.2 | 51.2 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/28/2011 |  136.3 | 28.9 | 50.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/29/2011 |  136.2 | 28.0 | 51.3 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/30/2011 |  135.9 | 28.8 | 50.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 05/31/2011 |  135.5 | 28.2 | 51.2 |
&lt;/span&gt;&lt;span class='line'&gt;|------------+--------+------+------|
&lt;/span&gt;&lt;span class='line'&gt;| 06/01/2011 |  135.1 | 28.2 | 51.2 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/02/2011 |  135.5 | 28.2 | 51.2 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/03/2011 |  134.8 | 28.9 | 50.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/04/2011 |  134.4 | 29.6 | 50.6 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/05/2011 |  134.2 | 27.9 | 51.3 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/06/2011 |  134.4 | 28.1 | 51.3 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/07/2011 |  133.2 | 29.2 | 50.8 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/08/2011 |  133.1 | 28.8 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/09/2011 |  133.0 | 28.6 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/10/2011 |  133.2 | 27.8 | 51.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/11/2011 |  132.2 | 27.9 | 51.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/12/2011 |  132.0 | 27.9 | 51.4 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/13/2011 |  132.1 | 28.9 | 51.0 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/14/2011 |  131.0 | 29.0 | 50.9 |
&lt;/span&gt;&lt;span class='line'&gt;| 06/15/2011 |  130.2 | 27.6 | 51.5 |
&lt;/span&gt;&lt;span class='line'&gt;|------------+--------+------+------|&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;I use the following Gnuplot script, &lt;code&gt;Weight.plt&lt;/code&gt; that plots the
weight, body fat percentage, absolute body fat, body water percentage
and absolute body water.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='gnuplot'&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Weight plotter.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;aqua&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Weight plot&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;xdata&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;timefmt&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&amp;quot;%m/%d/%Y&amp;quot;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;xlabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Date&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;multiplot&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;size&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.33&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Weight.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;origin&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.66&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;ylabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Weight in lb&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;$datafile&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="nb"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Weight&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="n"&gt;linecolor&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;size&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.33&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Body fat.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Percentage.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;origin&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.33&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;ylabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body fat %&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;$datafile&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="nb"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body fat %&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="n"&gt;linecolor&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Absolute.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;origin&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.33&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;ylabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body fat in lb&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;$datafile&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body fat&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="n"&gt;linecolor&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Body water.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Percentage.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;origin&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;ylabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body water %&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;$datafile&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nb"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body water %&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="n"&gt;linecolor&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;# Absolute.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;origin&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;ylabel&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body water in lb&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;plot&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;$datafile&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;title&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Body water&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="n"&gt;linecolor&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;unset&lt;/span&gt; &lt;span class="nb"&gt;multiplot&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Here is the screenshot of the generated plot. Click the thumbnail to
get the actual size.&lt;/p&gt;

&lt;p style="text-align:center;"&gt;&lt;img src="http://praveen.kumar.in/images/OrgModeWeightChart.png" title="Weight Chart" alt="Weight Chart" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/06/19/plotting-a-weight-chart-using-emacs-org-mode-and-gnuplot-2/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=0zAF8aT5JIE:likQm_ZfdRI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=0zAF8aT5JIE:likQm_ZfdRI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=0zAF8aT5JIE:likQm_ZfdRI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=0zAF8aT5JIE:likQm_ZfdRI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=0zAF8aT5JIE:likQm_ZfdRI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/0zAF8aT5JIE" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/06/19/plotting-a-weight-chart-using-emacs-org-mode-and-gnuplot-2/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Permanence]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/fQY55w8-JV0/" />
<updated>2011-06-12T20:34:04-07:00</updated>
<id>http://praveen.kumar.in/2011/06/12/permanence</id>

      <content type="html">&lt;p&gt;I enjoy reading &lt;a href="http://xkcd.com/"&gt;XKCD&lt;/a&gt;. One of the recent comic that
I enjoyed the most was published last week, titled
&amp;#8221;&lt;a href="http://xkcd.com/910/"&gt;Permanence&lt;/a&gt;&amp;#8221;, that was about naming servers.&lt;/p&gt;

&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='based on Greek mythological names'&gt;
One of the reasons that I enjoyed this the most was due to the fact
that I can totally correlate this comic to my behavior in naming
things. I have an obsession of naming my laptops, servers, PCs,
gadgets and more based on Greek mythological names. I am not sure how
I developed this obsession. I think that it was mainly influenced by
the games
&lt;a href="http://en.wikipedia.org/wiki/Zeus:_Master_of_Olympus"&gt;Zeus: Master of Olympus&lt;/a&gt;
and &lt;a href="http://en.wikipedia.org/wiki/Age_of_Mythology"&gt;Age of Mythology&lt;/a&gt;,
the two games that I played a lot almost 8 years ago.
&lt;/span&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Here are some of the names of my stuff and the reason why I picked
that name.&lt;/p&gt;

&lt;h4&gt;Macbook Pro (Mac OS X)&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;aphrodite - Aphrodite (Ἀφροδίτη (Áphroditē))&lt;/em&gt; is the
  goddess of love and beauty.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; This is my most favorite name. I use it for the personal
  machine that I spend time on.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Primary development machine (Solaris 11)&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;athena - Athena or Athene (Ἀθηνᾶ (Athēnâ))&lt;/em&gt; is the goddess
  of wisdom, warfare, battle strategy, heroic endeavour, handicrafts
  and reason.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt; Reason:&lt;/strong&gt; I use this name for my primary development machine at
   work and the primary trait that I care is wisdom.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Messaging Server development server (Solaris 10)&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;angelia - Angelia (Αγγελία)&lt;/em&gt; is the spirit of messages,
  tidings and proclamations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; It mainly deals with messages.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Microsoft Windows VM&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;erebos - Erebos (Ἔρεβος (Érebos))&lt;/em&gt; is the god of darkness
  and shadow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; No comments.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Apple iPhone&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Dionysus - Dionysus (Διόνυσος)&lt;/em&gt; is the god of wine, drunken
  orgies and wild vegetation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; It mainly represents the idea of socializing and
  parties.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Apple iPad&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Ananke - Ananke (Ἀνάγκη (Anánkē))&lt;/em&gt; is the goddess of
  inevitability, compulsion and necessity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Well, iPad is a compulsion and necessity of the current
  generation, especially of magnified amplitude for people in the
  Valley.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Buffalo wireless router&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;aether - Aether (Αιθήρ)&lt;/em&gt; is the primeval god of the upper
  air.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; For the power of sending/receiving tons of data over the
  air.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Apple iPod Nano&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Terpsichore - Terpsichore (Τερψιχόρη)&lt;/em&gt; &amp;#8220;delight of dancing&amp;#8221;
  was one of the nine Muses, ruling over dance and the dramatic
  chorus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Associated with fitness.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Apple TV&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Hedone - Hedone (Ἡδονή)&lt;/em&gt;, is the spirit of pleasure,
  enjoyment and delight.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Associated with entertainment/enjoyment.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Canon EOS 50D camera&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Hyperion - Hyperion (Ὑπερίων (Hyperíōn))&lt;/em&gt; is the titan of
  light. With Theia, he is the father of Helios (the sun), Selene
  (the moon) and Eos (the dawn).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; What suits a camera better than the name of the titan of
  light!&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Honda Civic car&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Hermes - Hermes (Ἡρμῆς (Hērmē̂s))&lt;/em&gt; is the god of travel,
  messengers, trade, thievery, cunning wiles, language, writing,
  diplomacy, athletics, and animal husbandry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; If the god of travel is with you, you are the master of
  roads.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Citizen Skyhawk AT watch&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Chronos - Chronos (Χρόνος (Chrónos))&lt;/em&gt; is the Keeper of
  Time. Not to be confused with the Titan Cronus, the father of
  Zeus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; What suits a clock that is so meticulous in keeping the
  accurate time using atomic time better than this name?&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Fuji CCR3 road bike&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Aura - Aura (Αὔρα (Aúra))&lt;/em&gt; is the titan of the breeze and
  the fresh, cool air of early morning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Mainly reflects the feeling that I get when I ride.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Predator Sneaky Pete cue&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Oupis - Oupis (Ουπις)&lt;/em&gt;, aiming aspect of archery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; That was the closest Greek mythological name that I was
  able to find related to pool.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Atomic Smoke skis&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; &lt;em&gt;Chione - Chione (Χιόνη)&lt;/em&gt; is the goddess of snow and
  daughter of Boreas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reason:&lt;/strong&gt; Isn&amp;#8217;t that obvious?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;You decide if I am crazy or not.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/06/12/permanence/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=fQY55w8-JV0:ACAkoKnK6l8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=fQY55w8-JV0:ACAkoKnK6l8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=fQY55w8-JV0:ACAkoKnK6l8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=fQY55w8-JV0:ACAkoKnK6l8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=fQY55w8-JV0:ACAkoKnK6l8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/fQY55w8-JV0" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/06/12/permanence/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Making GNU Emacs detect custom error messages - A Maven Example]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/OFdEEyHkdSQ/" />
<updated>2011-03-09T01:04:07-08:00</updated>
<id>http://praveen.kumar.in/2011/03/09/making-gnu-emacs-detect-custom-error-messages-a-maven-example</id>

      <content type="html">&lt;p&gt;GNU &lt;a href="http://www.gnu.org/software/emacs"&gt;Emacs&lt;/a&gt;&amp;#8217;s compilation mode is
capable of detecting error messages from various standard compilers
and build tools. However, it is fairy common for one to run into a
format of error message that Emacs can&amp;#8217;t handle by default.&lt;/p&gt;

&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='regexp-builder makes it easier'&gt;
As you know, Emacs is highly extensible and it provides
&lt;a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html"&gt;compilation-error-regexp-alist&lt;/a&gt;
for accomplishing this. I have done this a couple of times earlier and
I had to do it one more time lately for adding regular expression for
&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; error messages. Construction of
these regular expressions is not fun for everyone.
However, regexp-builder makes it easier to construct the regular
expression interactively.  &lt;/span&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;In summary, here is the customization that has to be added to &lt;code&gt;.emacs&lt;/code&gt;.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='scheme'&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;add-to-list&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;compilation-error-regexp-alist&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;maven&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;add-to-list&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;compilation-error-regexp-alist-alist&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;       &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;maven&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;\\[ERROR\\] \\(.+?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\].*&amp;quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;           &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Here is what Emacs&amp;#8217;s inbuilt documentation says about
&lt;code&gt;compilation-error-regular-expression-alist&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;Because the
&lt;a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html"&gt;documentation&lt;/a&gt;
around &lt;code&gt;compilation-error-regexp-alist&lt;/code&gt; isn&amp;#8217;t very intuitive for most,
I have decided to make this screencast that describes how to approach
this from scratch. Sorry about the typos! For best quality, watch it
in HD.&lt;/p&gt;

&lt;iframe title="Using Emacs Regexp Builder" width="480" height="293" src="http://www.youtube.com/embed/U_t5vLr_jVc?hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;




&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;span class='line-number'&gt;53&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;compilation-error-regexp-alist is a variable defined in `compile.el'.
&lt;/span&gt;&lt;span class='line'&gt;Its value is (maven absoft ada aix ant bash borland caml comma edg-1 edg-2 epc ftnchek iar ibm irix java jikes-file jikes-line gnu gcc-include lcc makepp mips-1 mips-2 msft omake oracle perl php rxp sparc-pascal-file sparc-pascal-line sparc-pascal-example sun sun-ada watcom 4bsd gcov-file gcov-header gcov-nomark gcov-called-line gcov-never-called perl--Pod::Checker perl--Test perl--Test2 perl--Test::Harness weblint)
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Documentation:
&lt;/span&gt;&lt;span class='line'&gt;Alist that specifies how to match errors in compiler output.
&lt;/span&gt;&lt;span class='line'&gt;On GNU and Unix, any string is a valid filename, so these
&lt;/span&gt;&lt;span class='line'&gt;matchers must make some common sense assumptions, which catch
&lt;/span&gt;&lt;span class='line'&gt;normal cases.  A shorter list will be lighter on resource usage.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Instead of an alist element, you can use a symbol, which is
&lt;/span&gt;&lt;span class='line'&gt;looked up in `compilation-error-regexp-alist-alist'.  You can see
&lt;/span&gt;&lt;span class='line'&gt;the predefined symbols and their effects in the file
&lt;/span&gt;&lt;span class='line'&gt;`etc/compilation.txt' (linked below if you are customizing this).
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Each elt has the form (REGEXP FILE [LINE COLUMN TYPE HYPERLINK
&lt;/span&gt;&lt;span class='line'&gt;HIGHLIGHT...]).  If REGEXP matches, the FILE'th subexpression
&lt;/span&gt;&lt;span class='line'&gt;gives the file name, and the LINE'th subexpression gives the line
&lt;/span&gt;&lt;span class='line'&gt;number.  The COLUMN'th subexpression gives the column number on
&lt;/span&gt;&lt;span class='line'&gt;that line.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;If FILE, LINE or COLUMN are nil or that index didn't match, that
&lt;/span&gt;&lt;span class='line'&gt;information is not present on the matched line.  In that case the
&lt;/span&gt;&lt;span class='line'&gt;file name is assumed to be the same as the previous one in the
&lt;/span&gt;&lt;span class='line'&gt;buffer, line number defaults to 1 and column defaults to
&lt;/span&gt;&lt;span class='line'&gt;beginning of line's indentation.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;FILE can also have the form (FILE FORMAT...), where the FORMATs
&lt;/span&gt;&lt;span class='line'&gt;(e.g. "%s.c") will be applied in turn to the recognized file
&lt;/span&gt;&lt;span class='line'&gt;name, until a file of that name is found.  Or FILE can also be a
&lt;/span&gt;&lt;span class='line'&gt;function that returns (FILENAME) or (RELATIVE-FILENAME . DIRNAME).
&lt;/span&gt;&lt;span class='line'&gt;In the former case, FILENAME may be relative or absolute.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;LINE can also be of the form (LINE . END-LINE) meaning a range
&lt;/span&gt;&lt;span class='line'&gt;of lines.  COLUMN can also be of the form (COLUMN . END-COLUMN)
&lt;/span&gt;&lt;span class='line'&gt;meaning a range of columns starting on LINE and ending on
&lt;/span&gt;&lt;span class='line'&gt;END-LINE, if that matched.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;TYPE is 2 or nil for a real error or 1 for warning or 0 for info.
&lt;/span&gt;&lt;span class='line'&gt;TYPE can also be of the form (WARNING . INFO).  In that case this
&lt;/span&gt;&lt;span class='line'&gt;will be equivalent to 1 if the WARNING'th subexpression matched
&lt;/span&gt;&lt;span class='line'&gt;or else equivalent to 0 if the INFO'th subexpression matched.
&lt;/span&gt;&lt;span class='line'&gt;See `compilation-error-face', `compilation-warning-face',
&lt;/span&gt;&lt;span class='line'&gt;`compilation-info-face' and `compilation-skip-threshold'.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;What matched the HYPERLINK'th subexpression has `mouse-face' and
&lt;/span&gt;&lt;span class='line'&gt;`compilation-message-face' applied.  If this is nil, the text
&lt;/span&gt;&lt;span class='line'&gt;matched by the whole REGEXP becomes the hyperlink.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;Additional HIGHLIGHTs as described under `font-lock-keywords' can
&lt;/span&gt;&lt;span class='line'&gt;be added.
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;You can customize this variable.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;



&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/03/09/making-gnu-emacs-detect-custom-error-messages-a-maven-example/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=OFdEEyHkdSQ:PzL7w4mvlv8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=OFdEEyHkdSQ:PzL7w4mvlv8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=OFdEEyHkdSQ:PzL7w4mvlv8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=OFdEEyHkdSQ:PzL7w4mvlv8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=OFdEEyHkdSQ:PzL7w4mvlv8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/OFdEEyHkdSQ" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/03/09/making-gnu-emacs-detect-custom-error-messages-a-maven-example/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[GNU Emacs and MIT Scheme on Mac OS X]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/xGExMj3P8BE/" />
<updated>2011-03-06T21:16:13-08:00</updated>
<id>http://praveen.kumar.in/2011/03/06/gnu-emacs-and-mit-scheme-on-mac-os-x</id>

      <content type="html">&lt;p&gt;Today, I planned to go back to the basics by taking
&lt;a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/"&gt;6.001 Structure and Interpretation of Computer Programs&lt;/a&gt;
offered by MIT OpenCourseWare. I&amp;#8217;ll save the reason behind it for
another post.&lt;/p&gt;

&lt;p&gt;For running the programs that are used in the class, I decided to use
&lt;a href="http://www.gnu.org/software/mit-scheme/"&gt;MIT/GNU Scheme&lt;/a&gt;. I am
running &lt;a href="http://www.gnu.org/software/emacs/"&gt;GNU Emacs 23&lt;/a&gt; on my Mac
OS X. After some research, I figured out the best way of doing this is
through
&lt;a href="http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/GNU-Emacs-Interface.html#GNU-Emacs-Interface"&gt;xscheme&lt;/a&gt;.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;First, download the
&lt;a href="http://www.gnu.org/software/mit-scheme/"&gt;MIT/GNU Scheme binary&lt;/a&gt; for
Mac OS X and copy it to your Applications directory.  Then configure
Emacs to use the downloaded binary by adding the following lines to
your &lt;code&gt;.emacs&lt;/code&gt;.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='scheme'&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;scheme-program-name&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="s"&gt;&amp;quot;/Applications/mit-scheme.app/Contents/Resources/mit-scheme&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;xscheme&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Now write your Scheme program.&lt;/p&gt;

&lt;figure class='code'&gt; &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='scheme'&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;; Compute the square root of a given number using successive&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;; approximation.&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;sqrt &lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;is-good-enough?&lt;/span&gt; &lt;span class="nv"&gt;guess&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;&amp;lt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;abs &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;- &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;* &lt;/span&gt;&lt;span class="nv"&gt;guess&lt;/span&gt; &lt;span class="nv"&gt;guess&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="mf"&gt;0.0000001&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;define &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;try&lt;/span&gt; &lt;span class="nv"&gt;guess&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;is-good-enough?&lt;/span&gt; &lt;span class="nv"&gt;guess&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nv"&gt;guess&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;try&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;/ &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+ &lt;/span&gt;&lt;span class="nv"&gt;guess&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;/ &lt;/span&gt;&lt;span class="nv"&gt;value&lt;/span&gt; &lt;span class="nv"&gt;guess&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;try&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;sqrt &lt;/span&gt;&lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Invoke the Scheme process by &lt;code&gt;'M-x run-scheme'&lt;/code&gt;. Send the Scheme
buffer to the Scheme process by &lt;code&gt;'M-o'&lt;/code&gt; and now you are able to run
Scheme programs from Emacs.&lt;/p&gt;

&lt;p&gt;Below is the screenshot of Scheme running under my Emacs session.&lt;/p&gt;

&lt;p style="text-align:center;"&gt;&lt;img src="http://praveen.kumar.in/images/MITSchemeUnderGNUEmacs.png" title="MIT
 Scheme under GNU Emacs" alt="MIT Scheme under GNU Emacs" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/03/06/gnu-emacs-and-mit-scheme-on-mac-os-x/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=xGExMj3P8BE:fm4V_TrQvEY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=xGExMj3P8BE:fm4V_TrQvEY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=xGExMj3P8BE:fm4V_TrQvEY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=xGExMj3P8BE:fm4V_TrQvEY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=xGExMj3P8BE:fm4V_TrQvEY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/xGExMj3P8BE" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/03/06/gnu-emacs-and-mit-scheme-on-mac-os-x/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Apache Software Foundation]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/r6wdlI6vIxw/" />
<updated>2011-03-05T20:30:00-08:00</updated>
<id>http://praveen.kumar.in/2011/03/05/apache-software-foundation</id>

      <content type="html">&lt;p&gt;Recently, I started playing with a lot of Open Source products from
&lt;a href="http://www.apache.org/foundation/how-it-works.html"&gt;Apache Software Foundation&lt;/a&gt;. It
all started with &lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;,
&lt;a href="http://hbase.apache.org/"&gt;HBase&lt;/a&gt; and
&lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;. Day after day, I am getting
my hands dirty on more Apache Foundation&amp;#8217;s products like
&lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt;, &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;,
&lt;a href="http://archiva.apache.org/"&gt;Archiva&lt;/a&gt; and
&lt;a href="http://incubator.apache.org/thrift/"&gt;Thrift&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When trying to build HBase from source, I noticed that the project was
using &lt;a href="http://subversion.apache.org/"&gt;Subversion&lt;/a&gt; for version
control. I found it quite odd to see a modern project like HBase not
using a distributed version control tool like
&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; or
&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;. Soon, I realized that all Apache projects&amp;#8217;
source code were maintained in Subversion. Then, I made a comment to
my co-worker that, &amp;#8220;Maybe Apache Foundation took over Subversion
too!&amp;#8221;, soon to realize that it was true. We learned that Subversion
became an Apache &lt;a href="http://incubator.apache.org/"&gt;Incubator&lt;/a&gt; project in
2009 and became an Apache top-level project in 2010.&lt;/p&gt;

&lt;p&gt;I am really amazed by the number of projects that are now part of the
Apache Software Foundation. Go Apache!&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2011/03/05/apache-software-foundation/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=r6wdlI6vIxw:htmxJu7U6VM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=r6wdlI6vIxw:htmxJu7U6VM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=r6wdlI6vIxw:htmxJu7U6VM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=r6wdlI6vIxw:htmxJu7U6VM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=r6wdlI6vIxw:htmxJu7U6VM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/r6wdlI6vIxw" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2011/03/05/apache-software-foundation/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Halford - Foothill - Moody - Page Mill - Alpine 32 mile loop]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/TuHFYyvbN4I/" />
<updated>2010-10-02T11:54:37-07:00</updated>
<id>http://praveen.kumar.in/2010/10/02/halford-foothill-moody-page-mill-alpine-32-mile-loop</id>

      <content type="html">&lt;p&gt;I went on a solo bicycle ride this morning. I found everything except
the climb on Moody that connects to Page Mill easy. I had to get down
a couple of times during the final stretch of Moody climb. I think
that I am doing something wrong. Need to work on my climbs.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Here is the map of the ride.&lt;/p&gt;

&lt;iframe src="http://js.mapmyfitness.com/embed/blogview.html?r=8fdf1c8f9c4634656aedc425cc04fb0a&amp;u=e&amp;t=ride" height="700px" width="100%" frameborder="0"&gt;&lt;a href="http://www.mapmyride.com/route/united-states/ca/santa-clara/439128555148631450"&gt;Halford - Foothill - Moody - Page Mill - Alpine 32 mile loop&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.mapmyride.com/find-route/united-states/ca/santa-clara"&gt;Find more Others in Santa Clara, California&lt;/a&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/10/02/halford-foothill-moody-page-mill-alpine-32-mile-loop/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=TuHFYyvbN4I:k4WlC0o5zow:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=TuHFYyvbN4I:k4WlC0o5zow:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=TuHFYyvbN4I:k4WlC0o5zow:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=TuHFYyvbN4I:k4WlC0o5zow:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=TuHFYyvbN4I:k4WlC0o5zow:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/TuHFYyvbN4I" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/10/02/halford-foothill-moody-page-mill-alpine-32-mile-loop/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Halford - Sunnyvale Saratoga - Fruitvale 20 mile loop]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/X0PCYAhVDt8/" />
<updated>2010-09-19T15:22:06-07:00</updated>
<id>http://praveen.kumar.in/2010/09/19/halford-sunnyvale-saratoga-fruitvale-20-mile-loop</id>

      <content type="html">&lt;p&gt;Just finished solo ride of Halford Avenue - Sunnyvale Saratoga Road -
Fruitvale Rd loop. It is a steady easy climb to 600 feet and back.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Here is the map.&lt;/p&gt;

&lt;iframe src="http://js.mapmyfitness.com/embed/blogview.html?r=6686b25994312b5313d23d14766198b1&amp;u=e&amp;t=ride" height="700px" width="100%" frameborder="0"&gt;&lt;a href="http://www.mapmyride.com/route/united-states/ca/santa-clara/938128492977637761"&gt;Halford - Sunnyvale Saratoga - Fruitvale 20 mile loop&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.mapmyride.com/find-route/united-states/ca/santa-clara"&gt;Find more Others in Santa Clara, California&lt;/a&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/09/19/halford-sunnyvale-saratoga-fruitvale-20-mile-loop/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=X0PCYAhVDt8:8Y_5AXRa9Os:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=X0PCYAhVDt8:8Y_5AXRa9Os:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=X0PCYAhVDt8:8Y_5AXRa9Os:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=X0PCYAhVDt8:8Y_5AXRa9Os:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=X0PCYAhVDt8:8Y_5AXRa9Os:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/X0PCYAhVDt8" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/09/19/halford-sunnyvale-saratoga-fruitvale-20-mile-loop/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Halford/Foothill/Arastradero 30 mile loop]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/2lVdz1Xr2II/" />
<updated>2010-09-18T15:08:28-07:00</updated>
<id>http://praveen.kumar.in/2010/09/18/halfordfoothillarastradero-30-mile-loop</id>

      <content type="html">&lt;p&gt;Today, I went for a longer bicycle ride with one of my friends from
college, &lt;a href="http://twitter.com/ravi_b_shankar"&gt;Ravi Shankar&lt;/a&gt;. I have
picked the following loop based on Ed Rak&amp;#8217;s advice.  We took 2 hours
and 15 minutes to do this one.&lt;/p&gt;

&lt;p&gt;There were a lot of bicyclists on Foothill Expressway! Apart from some
climbing at Arasterado, the ride was very smooth. Alpine is a downhill
rideI really enjoyed this ride.&lt;/p&gt;

&lt;p&gt;Last night, I created a rough map by hand. After returning from the
ride, I spent some time on &lt;a href="http://www.mapmyride.com/"&gt;MapMyRide.com&lt;/a&gt;
and created a detailed map for this loop.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Here is the map of the loop.&lt;/p&gt;

&lt;iframe src="http://js.mapmyfitness.com/embed/blogview.html?r=773a95bc03223b67c7717b6452b5546d&amp;u=e&amp;t=ride" height="700px" width="100%" frameborder="0"&gt;&lt;a href="http://www.mapmyride.com/route/united-states/ca/santa-clara/774128484576834829"&gt;Halford/Foothill/Arastradero 30 mile loop&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.mapmyride.com/find-route/united-states/ca/santa-clara"&gt;Find more Others in Santa Clara, California&lt;/a&gt;&lt;/iframe&gt;


&lt;p&gt;Here is the course fly-by video.&lt;/p&gt;

&lt;iframe width="100%" height="350px" scrolling="no" src="http://ws.mapmyfitness.com/flyby-panama/index.html?route_key=774128484576834829&amp;site=mapmyride.com"&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/09/18/halfordfoothillarastradero-30-mile-loop/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=2lVdz1Xr2II:1u2bNvjrYFU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=2lVdz1Xr2II:1u2bNvjrYFU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=2lVdz1Xr2II:1u2bNvjrYFU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=2lVdz1Xr2II:1u2bNvjrYFU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=2lVdz1Xr2II:1u2bNvjrYFU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/2lVdz1Xr2II" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/09/18/halfordfoothillarastradero-30-mile-loop/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Introduction to Test-Driven Development in C++ using Boost Test Library]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/4iFaJS3IJ8Y/" />
<updated>2010-04-30T21:12:40-07:00</updated>
<id>http://praveen.kumar.in/2010/04/30/introduction-to-test-driven-development-in-c-using-boost-test-library</id>

      <content type="html">&lt;p&gt;&lt;img class="left" src="http://praveen.kumar.in/images/TDD.jpg" title="TDD" &gt;&lt;/p&gt;

&lt;p&gt;I have been following &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test-Driven Development&lt;/a&gt; for a few years now.
Even though TDD is widespread, often I come across a few friends who
aren’t very familiar with TDD approach. It took a while for me to
really appreciate TDD since I was introduced to it. When I
demonstrated TDD in action, I got a few of my friends interested.&lt;/p&gt;

&lt;p&gt;We have our &lt;a href="http://unittest.red-bean.com/"&gt;own test framework&lt;/a&gt; that we use in our project which
was primarily developed by &lt;a href="http://malvasiabianca.org/"&gt;David Carlton&lt;/a&gt;. It works very well for
our needs. However, for my personal projects, I wanted to try
something that is more widely used in the industry. I started using
&lt;a href="http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page"&gt;CppUnit&lt;/a&gt; for a while until I found &lt;a href="http://www.boost.org/doc/libs/1_42_0/libs/test/doc/html/index.html"&gt;Boost Test Library&lt;/a&gt; coming a
long way. Now, I use Boost Test Library for all my personal
projects. It is very easy to setup tests and I really like it.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;I also wanted to write a quick introduction to Boost Test Library. So,
I thought that I will put down a screencast that will solve two
purposes of demonstrating Boost Test Library and serve as an
introduction to TDD. This is not an extensive demo or an
introduction. I have chosen a really simple problem that is often
asked in preliminary rounds of technical interviews. But, it is a good
place to start. I don’t guarantee that the solution is efficient. But,
it is correct to my knowledge. Please feel free to suggest issues or
improvements. Please note that a HD version of this video is available
when viewed on &lt;a href="http://www.vimeo.com/"&gt;Vimeo’s site&lt;/a&gt;.&lt;/p&gt;

&lt;iframe src="http://player.vimeo.com/video/11370903?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" height="300" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;


&lt;h4&gt;Problem&lt;/h4&gt;

&lt;p&gt;Implement a function &amp;#8217;&lt;code&gt;int atoi(const std::string &amp;amp;val)&lt;/code&gt;&amp;#8217; that converts the given string in decimal notation to its integer value. Return 0 if the input is not a valid integer.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;Program &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;span class='line-number'&gt;53&lt;/span&gt;
&lt;span class='line-number'&gt;54&lt;/span&gt;
&lt;span class='line-number'&gt;55&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='cpp'&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#include &amp;lt;string&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#define BOOST_TEST_MODULE atoi&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#define BOOST_TEST_DYN_LINK&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#include &amp;lt;boost/test/unit_test.hpp&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="n"&gt;impl&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;multiplier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;negative&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;const_reverse_iterator&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rbegin&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rend&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;9&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;multiplier&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="n"&gt;multiplier&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sc"&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="n"&gt;negative&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;negative&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// namespace impl&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unit_position&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;6&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tenth_position&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;45&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;large_number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;123456789&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;123456789&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;negative_number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;-876&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;876&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sign_in_wrong_position&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;72-56&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="n"&gt;BOOST_AUTO_TEST_CASE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;invalid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="n"&gt;BOOST_CHECK_EQUAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;impl&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;abcd&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;




&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;Compilation and execution &lt;/span&gt;&lt;/figcaption&gt;
&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;# g++ -g -lboost_unit_test_framework -o atoi atoi.cpp &amp;&amp; ./atoi --log_level=test_suite --report_level=short&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;



&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/04/30/introduction-to-test-driven-development-in-c-using-boost-test-library/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=4iFaJS3IJ8Y:furFqRF3AUU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=4iFaJS3IJ8Y:furFqRF3AUU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=4iFaJS3IJ8Y:furFqRF3AUU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=4iFaJS3IJ8Y:furFqRF3AUU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=4iFaJS3IJ8Y:furFqRF3AUU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/4iFaJS3IJ8Y" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/04/30/introduction-to-test-driven-development-in-c-using-boost-test-library/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Simple GNU Emacs keyboard macro demonstration]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/miBBG8OYT8c/" />
<updated>2010-04-03T14:15:36-07:00</updated>
<id>http://praveen.kumar.in/2010/04/03/simple-gnu-emacs-keyboard-macro-demonstration</id>

      <content type="html">&lt;p&gt;My obsession for &lt;a href="http://www.gnu.org/software/emacs/"&gt;GNU Emacs&lt;/a&gt; has
grown over years to an extent where I managed to get a significant
amount of users to adopt Emacs. In the past 10 years, I have learned a
lot of nice tricks that I can do on Emacs to improve my
productivity. So, I have decided to create a series of screencasts
demonstrating some of those.&lt;/p&gt;

&lt;p&gt;&lt;span class='pullquote-right' data-pullquote='speed your work by defining a keyboard macro'&gt;
I will start with a very simple one,
&lt;a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Keyboard-Macros.html"&gt;macros&lt;/a&gt;. Quoting
from Emacs documentation, &amp;#8220;A keyboard macro is a command defined by an
Emacs user to stand for another sequence of keys. For example, if you
discover that you are about to type &lt;code&gt;C-n M-d C-d&lt;/code&gt; forty times, you can
speed your work by defining a keyboard macro to do &lt;code&gt;C-n M-d C-d&lt;/code&gt;, and
then executing it 39 more times.
&lt;/span&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;In this demo, I have taken a real world example where you have to add
C++ class member variables and accessors. There are other efficient
ways to do such tasks in GNU Emacs. I personally use
&lt;a href="http://code.google.com/p/yasnippet/"&gt;yasnippets&lt;/a&gt; to do these
things. However, this approach is shown just to demonstrate keyboard
macros. To supplement this video, please take a look at the keyboard
macro documentation that is available within Emacs.&lt;/p&gt;

&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/L6qSWqKz3eQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/04/03/simple-gnu-emacs-keyboard-macro-demonstration/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=miBBG8OYT8c:srdhpA7iC5I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=miBBG8OYT8c:srdhpA7iC5I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=miBBG8OYT8c:srdhpA7iC5I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=miBBG8OYT8c:srdhpA7iC5I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=miBBG8OYT8c:srdhpA7iC5I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/miBBG8OYT8c" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/04/03/simple-gnu-emacs-keyboard-macro-demonstration/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Mozilla Thunderbird 3 and Google Contacts addon issue]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/DmWnOhXBgZc/" />
<updated>2010-03-28T17:58:28-07:00</updated>
<id>http://praveen.kumar.in/2010/03/28/mozilla-thunderbird-3-and-google-contacts-addon-issue</id>

      <content type="html">&lt;p&gt;Yesterday, I upgraded my Ubuntu 9.10 to Ubuntu
&lt;a href="http://releases.ubuntu.com/10.04/"&gt;10.04 beta 1&lt;/a&gt; (Lucid Lynx). Lucid
comes with
&lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/"&gt;Thunderbird 3&lt;/a&gt;. After
upgrading, using Thunderbird 3 once and rebooting, Thunderbird started
up with empty profile and showed the account creation window. When I
looked into the home directory, I noticed that my &lt;code&gt;.thunderbird&lt;/code&gt; is
moved to &lt;code&gt;.thunderbird.upstream&lt;/code&gt; and the new &lt;code&gt;.thunderbird&lt;/code&gt; is created
with an empty profile. Moving the &lt;code&gt;.thunderbird.upstream&lt;/code&gt; back to
&lt;code&gt;.thunderbird&lt;/code&gt; will work fine the first time and on the next startup,
Thunderbird will repeat the same and start with an empty profile.&lt;/p&gt;

&lt;p&gt;After banging my head against this issue for a while and some help
from &lt;code&gt;#ubuntu-mozillateam&lt;/code&gt;, I figured out that
&lt;a href="https://addons.mozilla.org/en-US/thunderbird/addon/7307"&gt;Google Contacts addon&lt;/a&gt;
is causing this problem. When Thunderbird starts up, Google Contacts
addon creates a &lt;code&gt;.mozilla-thunderbird&lt;/code&gt; directory which is the
directory for Thunderbird 2. Thunderbird 3 doesn&amp;#8217;t like this directory
and it does all this renaming stuff. Uninstalling the Google Contacts
addon fixed this issue for me.&lt;/p&gt;

&lt;p&gt;The lesson that I learned from this experience is to start Thunderbird
in safe mode, &lt;code&gt;thunderbird --safe-mode&lt;/code&gt; that will help you to isolate
issues that are caused by faulty extensions.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/03/28/mozilla-thunderbird-3-and-google-contacts-addon-issue/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=DmWnOhXBgZc:VCMZvDWxog0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=DmWnOhXBgZc:VCMZvDWxog0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=DmWnOhXBgZc:VCMZvDWxog0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=DmWnOhXBgZc:VCMZvDWxog0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=DmWnOhXBgZc:VCMZvDWxog0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/DmWnOhXBgZc" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/03/28/mozilla-thunderbird-3-and-google-contacts-addon-issue/</feedburner:origLink></entry>
  
    <entry>
      




<title type="html"><![CDATA[Getting untruncated command line options passed to a Solaris process]]></title>
<link href="http://feedproxy.google.com/~r/praveen-journal/~3/w3UbqWjbeXE/" />
<updated>2010-02-24T17:41:23-08:00</updated>
<id>http://praveen.kumar.in/2010/02/24/getting-untruncated-command-line-options-passed-to-a-solaris-process</id>

      <content type="html">&lt;p&gt;If you have ever wanted to get the command line options that were
passed to a running Solaris process, you might have noticed that the
output of command line arguments from &lt;code&gt;ps&lt;/code&gt; is truncated to 80
characters. Looking into &lt;code&gt;/usr/include/sys/procfs.h&lt;/code&gt; will reveal the
reason why! This is because of the restriction in &lt;code&gt;struct
psinfo&lt;/code&gt;. Here are the relevant fields from the definition of &lt;code&gt;struct
psinfo&lt;/code&gt;.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;/usr/include/sys/procfs.h &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='c'&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#define    PRFNSZ      16  &lt;/span&gt;&lt;span class="cm"&gt;/* Maximum size of execed filename */&lt;/span&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;#define  PRARGSZ     80  &lt;/span&gt;&lt;span class="cm"&gt;/* number of chars of arguments */&lt;/span&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;psinfo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="cm"&gt;/* Fields omitted */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;pr_fname&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PRFNSZ&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;    &lt;span class="cm"&gt;/* name of exec&amp;#39;ed file */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;pr_psargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PRARGSZ&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  &lt;span class="cm"&gt;/* initial characters of arg list */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;         &lt;span class="cm"&gt;/* Fields omitted */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;psinfo_t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;




&lt;!--more--&gt;


&lt;p&gt;So, due to the 80 characters restriction in &lt;code&gt;psinfo::pr_psargs&lt;/code&gt;, the
kernel will not be keeping track of arguments beyond the limit. Now,
the only way to get the information is from the process&amp;#8217; memory of
&lt;code&gt;argv&lt;/code&gt;. In order to do this, you should have access to read the
processes&amp;#8217; memory. This is the trick employed by both &lt;code&gt;pargs&lt;/code&gt; and BSD
version of &lt;code&gt;ps&lt;/code&gt; with &lt;code&gt;-ww&lt;/code&gt; switch.&lt;/p&gt;

&lt;p&gt;To get the full length command line arguments passed to a process, you
can do one of the following.&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;$ /usr/ucb/ps eww &amp;lt;pid&gt;
&lt;/span&gt;&lt;span class='line'&gt;$ pargs -l &amp;lt;pid&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;One catch here is that, if the process has modified the &lt;code&gt;argv&lt;/code&gt; since
it was started, the output reported by both &lt;code&gt;ps&lt;/code&gt; and &lt;code&gt;pargs&lt;/code&gt; will show
the modified data and not the initial arguments that were passed
in. However, modifying &lt;code&gt;argv&lt;/code&gt; within a program is not a standard
practice and hence the chance of encountering such a scenario is
remote.&lt;/p&gt;
&lt;p&gt;&lt;a rel="bookmark" href="http://praveen.kumar.in/2010/02/24/getting-untruncated-command-line-options-passed-to-a-solaris-process/"&gt;&amp;infin; Permalink&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=w3UbqWjbeXE:BcAhW6Wg-0M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=w3UbqWjbeXE:BcAhW6Wg-0M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=w3UbqWjbeXE:BcAhW6Wg-0M:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?i=w3UbqWjbeXE:BcAhW6Wg-0M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/praveen-journal?a=w3UbqWjbeXE:BcAhW6Wg-0M:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/praveen-journal?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/praveen-journal/~4/w3UbqWjbeXE" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://praveen.kumar.in/2010/02/24/getting-untruncated-command-line-options-passed-to-a-solaris-process/</feedburner:origLink></entry>
  
</feed>

