<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/serendipity/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://blog.hurrynot.org/serendipity/feeds/atom10.xml" rel="self" title="Slow and Steady" type="application/atom+xml" />
    <link href="http://blog.hurrynot.org/serendipity/"                        rel="alternate"    title="Slow and Steady" type="text/html" />
    <link href="http://blog.hurrynot.org/serendipity/rss.php?version=2.0"     rel="alternate"    title="Slow and Steady" type="application/rss+xml" />
    <title type="html">Slow and Steady</title>
    <subtitle type="html">Occasional ramblings of an idiot with a PhD</subtitle>
    <icon>http://blog.hurrynot.org/serendipity/templates/default/img/s9y_banner_small.png</icon>
    <id>http://blog.hurrynot.org/serendipity/</id>
    <updated>2007-07-02T06:33:30Z</updated>
    <generator uri="http://www.s9y.org/" version="1.2-beta4">Serendipity 1.2-beta4 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/7-My-Novell-Hack-Week-project-Implement-support-for-Mono-in-Automake.html" rel="alternate" title="My Novell Hack Week project: Implement support for Mono in Automake" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-07-02T06:33:30Z</published>
        <updated>2007-07-02T06:33:30Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=7</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/3-build-system" label="build system" term="build system" />
            <category scheme="http://blog.hurrynot.org/serendipity/categories/2-mono" label="mono" term="mono" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/7-guid.html</id>
        <title type="html">My Novell Hack Week project: Implement support for Mono in Automake</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                This week was <a onclick="javascript:urchinTracker('/extlink/idea.opensuse.org');" href="http://idea.opensuse.org">hack week</a> for all the Open Source hackers at Novell, where we got to work on ideas and projects that we were personally interested in.  I decided to work on something that I've been planning for a long time, ever since I joined the Mono project, in fact: <a onclick="javascript:urchinTracker('/extlink/idea.opensuse.org/content/ideas/better-automake-support-for-mono');" href="http://idea.opensuse.org/content/ideas/better-automake-support-for-mono">add support for Mono in Automake</a>.<br />
<br />
It has been a while since I hacked on the automake source tree, but I didn't have too much trouble getting started.  In the end, I got most of the features I intended for it:<br />
<ul><br />
	<li>support for building Mono exes and dlls</li><br />
	<li>support for installing them in the GAC</li><br />
	<li>support out-of-tree builds</li><br />
	<li>dependency tracking on sources</li><br />
	<li>support for specifying resources, and tracking dependencies on them</li><br />
	<li>support for specifying references, and tracking dependencies on them</li><br />
	<li>support for multiple languages, include C#, VB.NET, Nemerle, Boo</li><br />
	<li>easy extensibility of the support to other languages -- essentially, just need to add the filename extension of the language to SUFFIXES</li><br />
	<li>bundled autoconf macro to detect installed compilers and other tools</li><br />
	<li>... and some examples, test cases, and documentation to explain how to use all of it</li><br />
</ul><br />
Stuff missing include<br />
<ul><br />
	<li>autoconf macros to detect if libraries are installed or not</li><br />
	<li>support for Microsoft's compilers -- basically a question of replacing '/' with '\' in filenames, where appropriate</li><br />
	<li>support for response files -- mainly wrt distributing sources mentioned in them</li><br />
	<li>real life experience with actual projects using all the above features</li><br />
</ul><br />
The whole effort took up most of the five days.  I spent much of Monday checking out the code from CVS into <a onclick="javascript:urchinTracker('/extlink/git.or.cz');" href="http://git.or.cz">git</a> and looking at how support for C and other languages was implemented.  I had most of the basic support done by Tuesday, got all dependency tracking working by Wednesday, and added documentation, autoconf support, and GAC-installation support by Friday afternoon.   I'm very happy that I spent the time upfront to import the project into git, since it saved me from spending a lot of timeslices tracking my changes.<br />
<br />
The code is available as a series of <a href="http://blog.hurrynot.org/mono-in-automake/patches" class="urlextern" title="http://blog.hurrynot.org/mono-in-automake/patches" rel="nofollow">patches</a> to Automake  (packed conveniently in a <a href="http://blog.hurrynot.org/mono-in-automake/patches.tar.gz" class="urlextern" title="http://blog.hurrynot.org/mono-in-automake/patches.tar.gz" rel="nofollow">tarball</a>), and there's also an <a href="http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz" class="urlextern" title="http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz" rel="nofollow">example project</a> that shows how to use it.  I also have a <a onclick="javascript:urchinTracker('/extlink/video.google.com/videoplay?docid=7525466052747539502');" href="http://video.google.com/videoplay?docid=7525466052747539502">"lightning talk" short video</a> about the project.<br />
<br />
<embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=7525466052747539502&hl=en" flashvars=""> </embed><br />
<br />
As much as I enjoyed the coding, I also thoroughly enjoyed working with the whole Bangalore open source team, all in the same conference room for five days, with everyone having a good time, and good food. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/6-Its-a-girl-!!!.html" rel="alternate" title="It's a girl !!!" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-07T22:09:23Z</published>
        <updated>2006-12-07T22:09:23Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=6</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/4-personal" label="personal" term="personal" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/6-guid.html</id>
        <title type="html">It's a girl !!!</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <div style="float: right; margin-left: 10px; margin-bottom: 10px"><a onclick="javascript:urchinTracker('/extlink/www.flickr.com/photos/harinath/316298014/');" title="photo sharing" href="http://www.flickr.com/photos/harinath/316298014/"><img align="top" style="border: 2px solid #000000" src="http://static.flickr.com/99/316298014_5f26ee2d49_m.jpg" /></a></div><br />
I became a dad this morning (6:25am).<br />
<br clear="all" /> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/4-More-thoughts-about-MCS-and-GMCS.html" rel="alternate" title="More thoughts about MCS and GMCS" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-02-16T15:53:00Z</published>
        <updated>2006-02-16T15:53:00Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=4</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/6-mcs" label="mcs" term="mcs" />
            <category scheme="http://blog.hurrynot.org/serendipity/categories/2-mono" label="mono" term="mono" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/4-guid.html</id>
        <title type="html">More thoughts about MCS and GMCS</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Martin got GMCS to <a onclick="javascript:urchinTracker('/extlink/primates.ximian.com/%7Emartin/blog/entry_155.html');" href="http://primates.ximian.com/%7Emartin/blog/entry_155.html">work on Windows</a>, with a small caveat -- there's no API to change the <em>MethodAttributes</em> of a <em>MethodBuilder</em>.  I have a couple of observations:</p><br />
<ul><br />
<li>the caveat isn't really a big deal.  You only need to set <em>NewSlot</em> when there is a <tt>new</tt> keyword used in the declaration.  Otherwise, it's useful but not necessary (See <a onclick="javascript:urchinTracker('/extlink/bugzilla.ximian.com/show_bug.cgi?id=74852');" href="http://bugzilla.ximian.com/show_bug.cgi?id=74852">bug 74852</a> for the gory details)</li><br />
<li>these changes, coupled with my older changes should allow us to have more code similarity between MCS and GMCS.  Specifically, I think we can put in a couple of stubs: <em>DropGenericTypeArguments</em> and <em>DropGenericMethodArguments</em> into MCS and eliminate a big part of the textual differences between MCS and GMCS in non-generics related code.  We already started on this in <em>doc.cs</em></li><br />
</ul><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/3-automake,-make-dist-and-long-filenames.html" rel="alternate" title="automake, make dist and long filenames" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-01-19T02:22:00Z</published>
        <updated>2006-01-19T02:22:00Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=3</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=3</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/3-build-system" label="build system" term="build system" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/3-guid.html</id>
        <title type="html">automake, make dist and long filenames</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Harish noticed some <a onclick="javascript:urchinTracker('/extlink/blogs.gnome.org/view/kharish/2006/01/18/0');" href="http://blogs.gnome.org/view/kharish/2006/01/18/0">strange behaviour</a> with 'make dist'. He later found out that it had to do with a file with an overly long pathname. Automake 1.9 by default forces 'tar' to work in the "most compatible" mode, and that mode supports pathnames only upto 99 characters long.<br />
<br />
The solution is to ask automake to request tar to use the POSIX standard 'pax' format. Add a line like the following in the top-level Makefile.am.<br />
<pre>AUTOMAKE_OPTIONS = tar-pax</pre><br />
However, life wouldn't be interesting if it was so simple.<br />
<ul><br />
	<li>This option is not backwards compatible: older versions of automake don't know about it, and they barf on unknown options</li><br />
	<li>The tar that comes with SuSE 9.2 (IIRC) doesn't support 'pax', but does support the 'ustar' format, an older POSIX standard. Luckily automake has an option to request 'ustar' format: <tt>tar-ustar</tt></li><br />
</ul><br />
That gets us to mono's solution.  Here's the configure.in tidbit that does the trick:<br />
<pre># Gross hack to enable 'make dist' on automake 1.9+tar 1.14.<br />
# The extra brackets are to foil regex-based scans.<br />
m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])</pre><br />
Now, please forget this trick, it's gross.  Just use automake 1.9.<br />
<br />
PS: There's an even simpler trick: start distributing ZIP files (<tt>make dist-zip</tt>) instead <img src="http://blog.hurrynot.org/serendipity/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/2-MCS-Implemented-lookup-qualified-alias-member-feature.html" rel="alternate" title="MCS: Implemented ::-lookup (qualified alias member) feature" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2005-08-03T08:26:00Z</published>
        <updated>2005-08-03T08:26:00Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=2</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/6-mcs" label="mcs" term="mcs" />
            <category scheme="http://blog.hurrynot.org/serendipity/categories/2-mono" label="mono" term="mono" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/2-guid.html</id>
        <title type="html">MCS: Implemented ::-lookup (qualified alias member) feature</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <div>Today, I added my first "tick-mark" feature to Mono's C# compiler: qualified-alias-member or '::' lookup. It's a relatively small feature, and doesn't impact much, code-wise.<br />
<br />
In all, it took about a day's worth of effort from start to check-in. But, that one-day effort needed quite some preparatory work. I'd pretty much decided on the approach a couple of months ago, and had a reasonable plan-of-attack, and was looking for an opportune time to work on it. More importantly, the past few months I spent incessantly refactoring the name- and type-lookup facilities in the compiler has paid off, making the task of implementing '::' trivial.</div> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.hurrynot.org/serendipity/archives/1-Thread-safety-and-me.html" rel="alternate" title="Thread-safety and me" />
        <author>
            <name>Raja R Harinath</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2005-06-25T02:14:00Z</published>
        <updated>2005-06-25T02:14:00Z</updated>
        <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=1</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=atom1.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    
            <category scheme="http://blog.hurrynot.org/serendipity/categories/2-mono" label="mono" term="mono" />
    
        <id>http://blog.hurrynot.org/serendipity/archives/1-guid.html</id>
        <title type="html">Thread-safety and me</title>
        <content type="xhtml" xml:base="http://blog.hurrynot.org/serendipity/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                I'm thinking of working on fixing Mono's <a onclick="javascript:urchinTracker('/extlink/svn.myrealbox.com/source/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs');" href="http://svn.myrealbox.com/source/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs">Dictionary</a> to be <a onclick="javascript:urchinTracker('/extlink/en.wikipedia.org/wiki/Thread-safe');" href="http://en.wikipedia.org/wiki/Thread-safe">thread-safe</a>.<br />
<br />
It seems ironic: I wrote a large part of that Wiki page, and I'm in large part responsible for the dictionary code not being thread-safe. "Blame" me for the use of the <a onclick="javascript:urchinTracker('/extlink/en.wikipedia.org/wiki/Competitive_analysis');" href="http://en.wikipedia.org/wiki/Competitive_analysis">move-to-front</a> heurstic in the dictionary code, and I must say, it was a <a onclick="javascript:urchinTracker('/extlink/svn.myrealbox.com/viewcvs/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?rev=46350&amp;view=markup');" href="http://svn.myrealbox.com/viewcvs/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?rev=46350&view=markup">beautiful piece of code</a>: see how simple it made the 'Remove()' code.<br />
<br />
Of course I've disliked threads all along, and this gives me more reasons to blame threads for the ugliness they bring into the world. 
            </div>
        </content>
        
    </entry>

</feed>