<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>Slow and Steady</title>
    <link>http://blog.hurrynot.org/serendipity/</link>
    <description>Occasional ramblings of an idiot with a PhD</description>
    <dc:language>en</dc:language>

    <image rdf:resource="http://blog.hurrynot.org/serendipity/templates/default/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/7-guid.html" />
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/6-guid.html" />
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/4-guid.html" />
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/3-guid.html" />
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/2-guid.html" />
        <rdf:li resource="http://blog.hurrynot.org/serendipity/archives/1-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://blog.hurrynot.org/serendipity/templates/default/img/s9y_banner_small.png">
        <url>http://blog.hurrynot.org/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Slow and Steady - Occasional ramblings of an idiot with a PhD</title>
        <link>http://blog.hurrynot.org/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://blog.hurrynot.org/serendipity/archives/7-guid.html">
    <title>My Novell Hack Week project: Implement support for Mono in Automake</title>
    <link>http://blog.hurrynot.org/serendipity/archives/7-My-Novell-Hack-Week-project-Implement-support-for-Mono-in-Automake.html</link>
    <description>
    This week was &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/idea.opensuse.org&#039;);&quot; href=&quot;http://idea.opensuse.org&quot;&gt;hack week&lt;/a&gt; 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&#039;ve been planning for a long time, ever since I joined the Mono project, in fact: &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/idea.opensuse.org/content/ideas/better-automake-support-for-mono&#039;);&quot; href=&quot;http://idea.opensuse.org/content/ideas/better-automake-support-for-mono&quot;&gt;add support for Mono in Automake&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It has been a while since I hacked on the automake source tree, but I didn&#039;t have too much trouble getting started.  In the end, I got most of the features I intended for it:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;support for building Mono exes and dlls&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for installing them in the GAC&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support out-of-tree builds&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;dependency tracking on sources&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for specifying resources, and tracking dependencies on them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for specifying references, and tracking dependencies on them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for multiple languages, include C#, VB.NET, Nemerle, Boo&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;easy extensibility of the support to other languages -- essentially, just need to add the filename extension of the language to SUFFIXES&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;bundled autoconf macro to detect installed compilers and other tools&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;... and some examples, test cases, and documentation to explain how to use all of it&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
Stuff missing include&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;autoconf macros to detect if libraries are installed or not&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for Microsoft&#039;s compilers -- basically a question of replacing &#039;/&#039; with &#039;\&#039; in filenames, where appropriate&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for response files -- mainly wrt distributing sources mentioned in them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;real life experience with actual projects using all the above features&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
The whole effort took up most of the five days.  I spent much of Monday checking out the code from CVS into &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/git.or.cz&#039;);&quot; href=&quot;http://git.or.cz&quot;&gt;git&lt;/a&gt; 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&#039;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.&lt;br /&gt;
&lt;br /&gt;
The code is available as a series of &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/patches&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/patches&quot; rel=&quot;nofollow&quot;&gt;patches&lt;/a&gt; to Automake  (packed conveniently in a &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/patches.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/patches.tar.gz&quot; rel=&quot;nofollow&quot;&gt;tarball&lt;/a&gt;), and there&#039;s also an &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz&quot; rel=&quot;nofollow&quot;&gt;example project&lt;/a&gt; that shows how to use it.  I also have a &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/video.google.com/videoplay?docid=7525466052747539502&#039;);&quot; href=&quot;http://video.google.com/videoplay?docid=7525466052747539502&quot;&gt;&quot;lightning talk&quot; short video&lt;/a&gt; about the project.&lt;br /&gt;
&lt;br /&gt;
&lt;embed style=&quot;width:400px; height:326px;&quot; id=&quot;VideoPlayback&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://video.google.com/googleplayer.swf?docId=7525466052747539502&amp;hl=en&quot; flashvars=&quot;&quot;&gt; &lt;/embed&gt;&lt;br /&gt;
&lt;br /&gt;
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. 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    build system, mono, </dc:subject>
    <dc:date>2007-07-02T06:33:30Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.hurrynot.org/serendipity/archives/6-guid.html">
    <title>It's a girl !!!</title>
    <link>http://blog.hurrynot.org/serendipity/archives/6-Its-a-girl-!!!.html</link>
    <description>
    &lt;div style=&quot;float: right; margin-left: 10px; margin-bottom: 10px&quot;&gt;&lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.flickr.com/photos/harinath/316298014/&#039;);&quot; title=&quot;photo sharing&quot; href=&quot;http://www.flickr.com/photos/harinath/316298014/&quot;&gt;&lt;img align=&quot;top&quot; style=&quot;border: 2px solid #000000&quot; src=&quot;http://static.flickr.com/99/316298014_5f26ee2d49_m.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I became a dad this morning (6:25am).&lt;br /&gt;
&lt;br clear=&quot;all&quot; /&gt; 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    personal, </dc:subject>
    <dc:date>2006-12-07T22:09:23Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.hurrynot.org/serendipity/archives/4-guid.html">
    <title>More thoughts about MCS and GMCS</title>
    <link>http://blog.hurrynot.org/serendipity/archives/4-More-thoughts-about-MCS-and-GMCS.html</link>
    <description>
    &lt;p&gt;Martin got GMCS to &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/primates.ximian.com/%7Emartin/blog/entry_155.html&#039;);&quot; href=&quot;http://primates.ximian.com/%7Emartin/blog/entry_155.html&quot;&gt;work on Windows&lt;/a&gt;, with a small caveat -- there&#039;s no API to change the &lt;em&gt;MethodAttributes&lt;/em&gt; of a &lt;em&gt;MethodBuilder&lt;/em&gt;.  I have a couple of observations:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;the caveat isn&#039;t really a big deal.  You only need to set &lt;em&gt;NewSlot&lt;/em&gt; when there is a &lt;tt&gt;new&lt;/tt&gt; keyword used in the declaration.  Otherwise, it&#039;s useful but not necessary (See &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/bugzilla.ximian.com/show_bug.cgi?id=74852&#039;);&quot; href=&quot;http://bugzilla.ximian.com/show_bug.cgi?id=74852&quot;&gt;bug 74852&lt;/a&gt; for the gory details)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;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: &lt;em&gt;DropGenericTypeArguments&lt;/em&gt; and &lt;em&gt;DropGenericMethodArguments&lt;/em&gt; 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 &lt;em&gt;doc.cs&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    mcs, mono, </dc:subject>
    <dc:date>2006-02-16T15:53:00Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.hurrynot.org/serendipity/archives/3-guid.html">
    <title>automake, make dist and long filenames</title>
    <link>http://blog.hurrynot.org/serendipity/archives/3-automake,-make-dist-and-long-filenames.html</link>
    <description>
    Harish noticed some &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/blogs.gnome.org/view/kharish/2006/01/18/0&#039;);&quot; href=&quot;http://blogs.gnome.org/view/kharish/2006/01/18/0&quot;&gt;strange behaviour&lt;/a&gt; with &#039;make dist&#039;. He later found out that it had to do with a file with an overly long pathname. Automake 1.9 by default forces &#039;tar&#039; to work in the &quot;most compatible&quot; mode, and that mode supports pathnames only upto 99 characters long.&lt;br /&gt;
&lt;br /&gt;
The solution is to ask automake to request tar to use the POSIX standard &#039;pax&#039; format. Add a line like the following in the top-level Makefile.am.&lt;br /&gt;
&lt;pre&gt;AUTOMAKE_OPTIONS = tar-pax&lt;/pre&gt;&lt;br /&gt;
However, life wouldn&#039;t be interesting if it was so simple.&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;This option is not backwards compatible: older versions of automake don&#039;t know about it, and they barf on unknown options&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;The tar that comes with SuSE 9.2 (IIRC) doesn&#039;t support &#039;pax&#039;, but does support the &#039;ustar&#039; format, an older POSIX standard. Luckily automake has an option to request &#039;ustar&#039; format: &lt;tt&gt;tar-ustar&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
That gets us to mono&#039;s solution.  Here&#039;s the configure.in tidbit that does the trick:&lt;br /&gt;
&lt;pre&gt;# Gross hack to enable &#039;make dist&#039; on automake 1.9+tar 1.14.&lt;br /&gt;
# The extra brackets are to foil regex-based scans.&lt;br /&gt;
m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])&lt;/pre&gt;&lt;br /&gt;
Now, please forget this trick, it&#039;s gross.  Just use automake 1.9.&lt;br /&gt;
&lt;br /&gt;
PS: There&#039;s an even simpler trick: start distributing ZIP files (&lt;tt&gt;make dist-zip&lt;/tt&gt;) instead &lt;img src=&quot;http://blog.hurrynot.org/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    build system, </dc:subject>
    <dc:date>2006-01-19T02:22:00Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=3</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.hurrynot.org/serendipity/archives/2-guid.html">
    <title>MCS: Implemented ::-lookup (qualified alias member) feature</title>
    <link>http://blog.hurrynot.org/serendipity/archives/2-MCS-Implemented-lookup-qualified-alias-member-feature.html</link>
    <description>
    &lt;div&gt;Today, I added my first &quot;tick-mark&quot; feature to Mono&#039;s C# compiler: qualified-alias-member or &#039;::&#039; lookup. It&#039;s a relatively small feature, and doesn&#039;t impact much, code-wise.&lt;br /&gt;
&lt;br /&gt;
In all, it took about a day&#039;s worth of effort from start to check-in. But, that one-day effort needed quite some preparatory work. I&#039;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 &#039;::&#039; trivial.&lt;/div&gt; 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    mcs, mono, </dc:subject>
    <dc:date>2005-08-03T08:26:00Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    
    
</item>
<item rdf:about="http://blog.hurrynot.org/serendipity/archives/1-guid.html">
    <title>Thread-safety and me</title>
    <link>http://blog.hurrynot.org/serendipity/archives/1-Thread-safety-and-me.html</link>
    <description>
    I&#039;m thinking of working on fixing Mono&#039;s &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/svn.myrealbox.com/source/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs&#039;);&quot; href=&quot;http://svn.myrealbox.com/source/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs&quot;&gt;Dictionary&lt;/a&gt; to be &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/en.wikipedia.org/wiki/Thread-safe&#039;);&quot; href=&quot;http://en.wikipedia.org/wiki/Thread-safe&quot;&gt;thread-safe&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It seems ironic: I wrote a large part of that Wiki page, and I&#039;m in large part responsible for the dictionary code not being thread-safe. &quot;Blame&quot; me for the use of the &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/en.wikipedia.org/wiki/Competitive_analysis&#039;);&quot; href=&quot;http://en.wikipedia.org/wiki/Competitive_analysis&quot;&gt;move-to-front&lt;/a&gt; heurstic in the dictionary code, and I must say, it was a &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/svn.myrealbox.com/viewcvs/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?rev=46350&amp;amp;view=markup&#039;);&quot; href=&quot;http://svn.myrealbox.com/viewcvs/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?rev=46350&amp;view=markup&quot;&gt;beautiful piece of code&lt;/a&gt;: see how simple it made the &#039;Remove()&#039; code.&lt;br /&gt;
&lt;br /&gt;
Of course I&#039;ve disliked threads all along, and this gives me more reasons to blame threads for the ugliness they bring into the world. 
    </description>

    <dc:publisher>Slow and Steady</dc:publisher>
    <dc:creator>nospam@example.com (Raja R Harinath)</dc:creator>
    <dc:subject>
    mono, </dc:subject>
    <dc:date>2005-06-25T02:14:00Z</dc:date>
    <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=1.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    
    
</item>

</rdf:RDF>
