<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: One of the best ideas I&#8217;ve had so far</title>
	<atom:link href="http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/feed/" rel="self" type="application/rss+xml" />
	<link>http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/</link>
	<description>And with Oden on our side, we are victorious</description>
	<lastBuildDate>Sun, 07 Mar 2010 00:32:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Anon</title>
		<link>http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/comment-page-1/#comment-599</link>
		<dc:creator>Anon</dc:creator>
		<pubDate>Sun, 13 Jul 2008 09:02:16 +0000</pubDate>
		<guid isPermaLink="false">http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/#comment-599</guid>
		<description>&lt;p&gt;Hi, just came across this interesting entry. Just wanted to let you know (you might already know) that NSPR (Netscape Portable Runtime) library is one good option. AFAIK, it supports Windows, Solaris, Linux, AIX, HP-UX.&lt;/p&gt;

&lt;p&gt;BTW, you can compile c#/c++ using a unix-style makefile (with MKS or cygwin).
So you can just have one single Makefile for all the platforms.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi, just came across this interesting entry. Just wanted to let you know (you might already know) that NSPR (Netscape Portable Runtime) library is one good option. AFAIK, it supports Windows, Solaris, Linux, AIX, HP-UX.</p>

<p>BTW, you can compile c#/c++ using a unix-style makefile (with MKS or cygwin).
So you can just have one single Makefile for all the platforms.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: iluv</title>
		<link>http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/comment-page-1/#comment-598</link>
		<dc:creator>iluv</dc:creator>
		<pubDate>Sun, 22 Jun 2008 18:20:50 +0000</pubDate>
		<guid isPermaLink="false">http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/#comment-598</guid>
		<description>&lt;p&gt;Sure, and like I said, a library like that would be awesome. But maintaining it is going to get fairly complex(APIs change, feature-specifications change), and I&#039;d really suggest finding help before committing to something so huge.&lt;/p&gt;

&lt;p&gt;That was actually me on a kgp machine(don&#039;t have java/gcc here). But most of us are apostates here at Research. Cygwin and Firefox are so common they&#039;ve ended up on the division homepage. And while the mothership occasionally complains about Firefox, no-one really objects to Cygwin because, let&#039;s face it, there are no real alternatives.&lt;/p&gt;

&lt;p&gt;PS. Above listing was actually two files, one cpp, one java. A lot of stuff got elided because it was between angle brackets.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Sure, and like I said, a library like that would be awesome. But maintaining it is going to get fairly complex(APIs change, feature-specifications change), and I&#8217;d really suggest finding help before committing to something so huge.</p>

<p>That was actually me on a kgp machine(don&#8217;t have java/gcc here). But most of us are apostates here at Research. Cygwin and Firefox are so common they&#8217;ve ended up on the division homepage. And while the mothership occasionally complains about Firefox, no-one really objects to Cygwin because, let&#8217;s face it, there are no real alternatives.</p>

<p>PS. Above listing was actually two files, one cpp, one java. A lot of stuff got elided because it was between angle brackets.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/comment-page-1/#comment-597</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Sun, 22 Jun 2008 09:06:43 +0000</pubDate>
		<guid isPermaLink="false">http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/#comment-597</guid>
		<description>&lt;p&gt;I don&#039;t say &quot;virtual machine bad, native gcc code good, hulk smash!&quot; too often. But the point of having such a library is to&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Abstract the different syntaxes by writing wrappers to each of them, in different namespaces but same names.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make them as interoperable as possible. The jpeg decoder should fit well with the graphics system, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exploit already existing cross-platform c++ tools and make them easilly accessible and hot-swappable.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Btw, since when are you using a unix style command line at Redmond, and compiling c# while you&#039;re at it?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I don&#8217;t say &#8220;virtual machine bad, native gcc code good, hulk smash!&#8221; too often. But the point of having such a library is to</p>

<ol>
<li><p>Abstract the different syntaxes by writing wrappers to each of them, in different namespaces but same names.</p></li>
<li><p>Make them as interoperable as possible. The jpeg decoder should fit well with the graphics system, etc.</p></li>
<li><p>Exploit already existing cross-platform c++ tools and make them easilly accessible and hot-swappable.</p></li>
</ol>

<p>Btw, since when are you using a unix style command line at Redmond, and compiling c# while you&#8217;re at it?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: iluv</title>
		<link>http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/comment-page-1/#comment-596</link>
		<dc:creator>iluv</dc:creator>
		<pubDate>Sun, 22 Jun 2008 06:40:21 +0000</pubDate>
		<guid isPermaLink="false">http://anirudhsanjeev.org/one-of-the-best-ideas-ive-had-so-far/#comment-596</guid>
		<description>&lt;p&gt;Long comment(I&#039;m bored), be warned.&lt;/p&gt;

&lt;p&gt;Can we please stop with the &quot;virtualization bad, bare metal good&quot; myth? Reality is rarely that simple. See this.&lt;/p&gt;

&lt;p&gt;ashish@redacted:~$ cat Fibonacci.cpp&lt;/p&gt;

&lt;h1&gt;include&lt;/h1&gt;

&lt;h1&gt;include&lt;/h1&gt;

&lt;p&gt;int fibonacci(int n) {
  return n &gt; 1 ? fibonacci(n - 1) + fibonacci(n - 2) : 1;
}&lt;/p&gt;

&lt;p&gt;int main(int argc, char **argv) {
  std::cout &lt; 1 ? fibonacci(atoi(argv[1])) : fibonacci(0)) &lt; 1 ? fib(n - 2) + fib(n - 1) : 1;
  }&lt;/p&gt;

&lt;p&gt;public static void main(String[] args) throws Exception {
    System.out.println(fib(args.length &gt; 0 ? Integer.parseInt(args[0]) : fib(1)));
  }
}
ashish@redacted:~$ g++ -O2 Fibonacci.cpp -ofib
ashish@redacted:~$ time ./fib 45
1836311903&lt;/p&gt;

&lt;p&gt;real    0m13.614s
user    0m13.609s
sys     0m0.000s
ashish@redacted:~$ javac Fibonacci.java
ashish@redacted:~$ time java -server Fibonacci 45
1836311903&lt;/p&gt;

&lt;p&gt;real    0m10.703s
user    0m10.621s
sys     0m0.032s
ashish@redacted:~$ g++ -O3 Fibonacci.cpp -ofib
ashish@redacted:~$ time ./fib 45
1836311903&lt;/p&gt;

&lt;p&gt;real    0m8.782s
user    0m8.777s
sys     0m0.000s&lt;/p&gt;

&lt;p&gt;-O2 and -server would be the standard(as in recommended in most production environments) options. And the O3 results are due to g++ concentrating on time at the expense of space. Disassembly shows it expanded the recursion to 4 levels.(Interestingly enough, this is not as dangerous as it sounds. I added print statements to the fib function, and gcc reverted back to zero-unrolling. So it apparently does perform checks for side effects.)&lt;/p&gt;

&lt;p&gt;And besides, the way things are going, your code is probably going to end up running on a virtualized copy of an OS anyway(doesn&#039;t matter if the hypervisor itself is bare metal -- there&#039;s still indirection involved).&lt;/p&gt;

&lt;p&gt;Still, (3) would be a very interesting thing to do. This happens to be how most real programs are structured anyway, but the abstraction layer you target is inhouse -- the scope of usage is restricted to at most one organization. If you could come up with a standardized interface layer and, more importantly, have it taken seriously by enough people(eg &quot;most new FOSS&quot;), that would be reasonably spectacular.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Long comment(I&#8217;m bored), be warned.</p>

<p>Can we please stop with the &#8220;virtualization bad, bare metal good&#8221; myth? Reality is rarely that simple. See this.</p>

<p>ashish@redacted:~$ cat Fibonacci.cpp</p>

<h1>include</h1>

<h1>include</h1>

<p>int fibonacci(int n) {
  return n &gt; 1 ? fibonacci(n &#8211; 1) + fibonacci(n &#8211; 2) : 1;
}</p>

<p>int main(int argc, char **argv) {
  std::cout &lt; 1 ? fibonacci(atoi(argv[1])) : fibonacci(0)) &lt; 1 ? fib(n &#8211; 2) + fib(n &#8211; 1) : 1;
  }</p>

<p>public static void main(String[] args) throws Exception {
    System.out.println(fib(args.length &gt; 0 ? Integer.parseInt(args[0]) : fib(1)));
  }
}
ashish@redacted:~$ g++ -O2 Fibonacci.cpp -ofib
ashish@redacted:~$ time ./fib 45
1836311903</p>

<p>real    0m13.614s
user    0m13.609s
sys     0m0.000s
ashish@redacted:~$ javac Fibonacci.java
ashish@redacted:~$ time java -server Fibonacci 45
1836311903</p>

<p>real    0m10.703s
user    0m10.621s
sys     0m0.032s
ashish@redacted:~$ g++ -O3 Fibonacci.cpp -ofib
ashish@redacted:~$ time ./fib 45
1836311903</p>

<p>real    0m8.782s
user    0m8.777s
sys     0m0.000s</p>

<p>-O2 and -server would be the standard(as in recommended in most production environments) options. And the O3 results are due to g++ concentrating on time at the expense of space. Disassembly shows it expanded the recursion to 4 levels.(Interestingly enough, this is not as dangerous as it sounds. I added print statements to the fib function, and gcc reverted back to zero-unrolling. So it apparently does perform checks for side effects.)</p>

<p>And besides, the way things are going, your code is probably going to end up running on a virtualized copy of an OS anyway(doesn&#8217;t matter if the hypervisor itself is bare metal &#8212; there&#8217;s still indirection involved).</p>

<p>Still, (3) would be a very interesting thing to do. This happens to be how most real programs are structured anyway, but the abstraction layer you target is inhouse &#8212; the scope of usage is restricted to at most one organization. If you could come up with a standardized interface layer and, more importantly, have it taken seriously by enough people(eg &#8220;most new FOSS&#8221;), that would be reasonably spectacular.</p>]]></content:encoded>
	</item>
</channel>
</rss>
