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

<channel>
	<title>ruminations</title>
	<atom:link href="http://yiqiang.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://yiqiang.org/blog</link>
	<description>code, math, life</description>
	<pubDate>Thu, 11 Sep 2008 21:16:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
			<item>
		<title>californication</title>
		<link>http://yiqiang.org/blog/2008/09/11/californication/</link>
		<comments>http://yiqiang.org/blog/2008/09/11/californication/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 21:16:40 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[sfc]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=17</guid>
		<description><![CDATA[I just started my new job at Microsoft in Mountain View. I&#8217;m a program manager (sounds fancier than it actually is) on the Mac team here. It&#8217;s been a pretty exciting month, arriving in San Francisco with no idea where I&#8217;d be living. Lucikly I was able to find a gorgeous townhouse in Potrero Hill, [...]]]></description>
			<content:encoded><![CDATA[<p>I just started my new job at Microsoft in Mountain View. I&#8217;m a program manager (sounds fancier than it actually is) on the Mac team here. It&#8217;s been a pretty exciting month, arriving in San Francisco with no idea where I&#8217;d be living. Lucikly I was able to find a gorgeous townhouse in Potrero Hill, so I&#8217;m taking the Caltrain to work everyday. I&#8217;ll post pictures of my new pad + workplace soon <img src='http://yiqiang.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/09/11/californication/feed/</wfw:commentRss>
		</item>
		<item>
		<title>dsage update</title>
		<link>http://yiqiang.org/blog/2008/07/09/dsage-update/</link>
		<comments>http://yiqiang.org/blog/2008/07/09/dsage-update/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 17:20:34 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=16</guid>
		<description><![CDATA[A pretty big rewrite of the worker part of dsage landed in trac now. It&#8217;s ticket #3600 on the Sage trac and is eagerly awaiting review.  Here&#8217;s a quick rundown of the major changes:
1. Workers no longer poll the server for new jobs.
2. Workers no longer poll sage for when the job finishes.
3. Doctests run [...]]]></description>
			<content:encoded><![CDATA[<p>A pretty big rewrite of the worker part of dsage landed in trac now. It&#8217;s ticket #<a href="http://trac.sagemath.org/sage_trac/ticket/3600">3600</a> on the Sage trac and is eagerly awaiting review.  Here&#8217;s a quick rundown of the major changes:</p>
<p>1. Workers no longer poll the server for new jobs.</p>
<div>2. Workers no longer poll sage for when the job finishes.</div>
<div>3. Doctests run much more reliably now, and in much less time (no need for # long time now)</div>
<div>4. The worker, as well as the server use twistd now, this make things like running them under a profile</div>
<div>    trivial.</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/07/09/dsage-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>dsage news</title>
		<link>http://yiqiang.org/blog/2008/07/04/dsage-news/</link>
		<comments>http://yiqiang.org/blog/2008/07/04/dsage-news/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 22:44:20 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[sage]]></category>

		<category><![CDATA[sage distributed math]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=15</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve blogged about dsage so here&#8217;s a big braindump on what&#8217;s been happening&#8230;
I was really happy by the amount of activity and interest in distributed computing at Sage Devel Days 1. I think the major participants were William Stein, Glenn Tarbox and Bill Furnish. 
As the week went on it became [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve blogged about dsage so here&#8217;s a big braindump on what&#8217;s been happening&#8230;</p>
<p>I was really happy by the amount of activity and interest in distributed computing at <a href="http://wiki.sagemath.org/dev1">Sage Devel Days 1</a>. I think the major participants were William Stein, Glenn Tarbox and Bill Furnish. </p>
<p>As the week went on it became clear that dsage as it stands right now does not fulfill the needs of some (maybe even many, or most) users. As a result, right now I am aware of several &#8220;next gen&#8221; dsage proposals such as dsageNG and some stuff that Bill wrote (i think by the time dev1 was over, Bill was at dsage4 <img src='http://yiqiang.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> Bill and I chatted a bit about the architecture of dsage currently and the major problem he saw was that dsage workers used polling and there could be a significant (i.e., seconds) delay between when a new job arrived and when a job was processed by the workers. </p>
<p>I thought about this for a while and I think that he&#8217;s absolutely right. Therefore, I&#8217;ve rewritten parts of the worker/server code so now workers will start on a job <strong>immediately</strong>. This should bring down the overhead of running dsage jobs considerably. </p>
<p>The rewrite is also more Twisted by using twisted&#8217;s async process communication. It was actually surprisingly easy to write a worker pool using the existing tools in the framework. </p>
<p>I also added a convenience function called eval_function() that allows you to submit a live function as a job. This works for any function that can be pickled (its arguments as well of course). For example:</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;">sage: <span style="color: #ff7700;font-weight:bold;">def</span> f<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">return</span> n<span style="color: #66cc66;">*</span>n
...
<span style="color: black;">sage</span>: j = d.<span style="color: black;">eval_function</span><span style="color: black;">&#40;</span>f, <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">25</span>,<span style="color: black;">&#41;</span>,<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>, job_name=<span style="color: #483d8b;">'square'</span><span style="color: black;">&#41;</span>
sage: j
<span style="color: #ff4500;">625</span>
sage: <span style="color: #ff7700;font-weight:bold;">print</span> j.<span style="color: black;">wall_time</span>
0:00:<span style="color: #ff4500;">00.144780</span></pre></div></div>

<p>This is much, much faster than the performance before the rewriting of the workers. </p>
<p>Having eval_function als makes it really easy to the map part of map reduce (it&#8217;s also being referred to as scatter/gather). For example:</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;">sage: jobs = d.<span style="color: #008000;">map</span><span style="color: black;">&#40;</span>f, <span style="color: black;">&#91;</span>10..20<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
sage: jobs
<span style="color: black;">&#91;</span><span style="color: #ff4500;">100</span>, <span style="color: #ff4500;">121</span>, <span style="color: #ff4500;">144</span>, <span style="color: #ff4500;">169</span>, <span style="color: #ff4500;">196</span>, <span style="color: #ff4500;">225</span>, <span style="color: #ff4500;">256</span>, <span style="color: #ff4500;">289</span>, <span style="color: #ff4500;">324</span>, <span style="color: #ff4500;">361</span>, <span style="color: #ff4500;">400</span><span style="color: black;">&#93;</span></pre></div></div>

<p>Also, dsage now supports the new @parallel convenience decorator that William wrote:</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;">sage: P = parallel<span style="color: black;">&#40;</span>p_iter = d.<span style="color: black;">parallel_iter</span><span style="color: black;">&#41;</span>
sage: @P
....: <span style="color: #ff7700;font-weight:bold;">def</span> f<span style="color: black;">&#40;</span>n,m<span style="color: black;">&#41;</span>:
....:     <span style="color: #ff7700;font-weight:bold;">return</span> n+m
....: 
sage: f<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span>, <span style="color: #ff4500;">10</span>/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span>, <span style="color: #ff4500;">10</span>/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>, <span style="color: #ff4500;">25</span>/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span></pre></div></div>

<p>William and I both agree that the strategy for Sage should be to have something that is very fast on local multicore machines (multiprocessing module comes to mind) while also having something that will work both on local clusters and WANs (dsage). </p>
<p>If anyone is interested in helping me to test out the new version and making it more robust, please let me know! </p>
<p>I&#8217;m hoping that this stuff will make it into the next major release of Sage since I will going on vacation for 6 weeks (hooray) on July 14th.</p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/07/04/dsage-news/feed/</wfw:commentRss>
		</item>
		<item>
		<title>publishing your dotfiles</title>
		<link>http://yiqiang.org/blog/2008/07/04/publishing-your-dotfiles/</link>
		<comments>http://yiqiang.org/blog/2008/07/04/publishing-your-dotfiles/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 21:40:53 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[sage]]></category>

		<category><![CDATA[config]]></category>

		<category><![CDATA[dotfiles]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=14</guid>
		<description><![CDATA[I discovered freehg.org today, which is a free mercurial repo hosting site. In spirit it&#8217;s very akin to github, but obviously lacks many of the features and much of the polish. However, this particular purpose, it&#8217;s more than sufficient.
If you access many *nix machines on a regular basis, you&#8217;ve probably have been annoyed that your [...]]]></description>
			<content:encoded><![CDATA[<p>I discovered <a href="http://freehg.org">freehg.org</a> today, which is a free mercurial repo hosting site. In spirit it&#8217;s very akin to <a title="github" href="http://github.org">github</a>, but obviously lacks many of the features and much of the polish. However, this particular purpose, it&#8217;s more than sufficient.</p>
<p>If you access many *nix machines on a regular basis, you&#8217;ve probably have been annoyed that your custom configuration files are not immediately available. I used to scp config files around all the time, but that gold old quick. I&#8217;m going to show you my current setup for making sure that all the dotfiles (zshrc, vimrc, etc) that I use are version controlled and are easily accessible.</p>
<p>First, collect all your dotfiles in one directory and make it an hg repository. I use ~/.dotfiles, you can use whatever you like.  Here is what my .dotfiles looks like:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">iapetus:~<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span>
total 54k
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff   <span style="color: #000000;">85</span> <span style="color: #000000;">2008</span>-07-04 <span style="color: #000000;">10</span>:<span style="color: #000000;">20</span> ackrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff   <span style="color: #000000;">50</span> <span style="color: #000000;">2008</span>-05-<span style="color: #000000;">29</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">24</span> bash_profile
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff 2.0k <span style="color: #000000;">2008</span>-05-<span style="color: #000000;">29</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">24</span> bashrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff  <span style="color: #000000;">569</span> <span style="color: #000000;">2008</span>-07-04 <span style="color: #000000;">14</span>:09 create_symlinks.py
drwx------ <span style="color: #000000;">3</span> yqiang staff  <span style="color: #000000;">102</span> <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">13</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">52</span> gtk-<span style="color: #000000;">2.0</span>
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff  <span style="color: #000000;">624</span> <span style="color: #000000;">2008</span>-07-04 09:<span style="color: #000000;">48</span> gvimrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff   <span style="color: #000000;">48</span> <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">17</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">46</span> hgignore
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff  <span style="color: #000000;">454</span> <span style="color: #000000;">2008</span>-07-04 <span style="color: #000000;">10</span>:<span style="color: #000000;">30</span> hgrc
drwx------ <span style="color: #000000;">5</span> yqiang staff  <span style="color: #000000;">170</span> <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">29</span> <span style="color: #000000;">17</span>:<span style="color: #000000;">55</span> irssi
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff  <span style="color: #000000;">403</span> <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">22</span> <span style="color: #000000;">11</span>:<span style="color: #000000;">20</span> pdbrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff  <span style="color: #000000;">642</span> <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">29</span> <span style="color: #000000;">10</span>:<span style="color: #000000;">49</span> screenrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff 6.8k <span style="color: #000000;">2008</span>-07-04 <span style="color: #000000;">13</span>:<span style="color: #000000;">39</span> vimrc
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> yqiang staff 5.8k <span style="color: #000000;">2008</span>-06-<span style="color: #000000;">29</span> <span style="color: #000000;">17</span>:<span style="color: #000000;">43</span> zshrc</pre></div></div>

<p>Then create a freehg.org account and initialize a public repo there. You can find mine at:</p>
<p><a href="http://freehg.org/u/yqiang/dotfiles/">http://freehg.org/u/yqiang/dotfiles/</a></p>
<p>Now, when you access a new machine, to get all your dotfiles in order, just do:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">veritas:~ <span style="color: #000000; font-weight: bold;">&gt;</span> hg clone http:<span style="color: #000000; font-weight: bold;">//</span>freehg.org<span style="color: #000000; font-weight: bold;">/</span>u<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>dotfiles<span style="color: #000000; font-weight: bold;">/</span> .dotfiles
requesting all changes
adding changesets
adding manifests
adding <span style="color: #c20cb9; font-weight: bold;">file</span> changes
added <span style="color: #000000;">22</span> changesets with <span style="color: #000000;">37</span> changes to <span style="color: #000000;">15</span> files
<span style="color: #000000;">15</span> files updated, 0 files merged, 0 files removed, 0 files unresolved
veritas:~ <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> .dotfiles
veritas:~<span style="color: #000000; font-weight: bold;">/</span>.dotfiles <span style="color: #000000; font-weight: bold;">&gt;</span> python create_symlinks.py
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>zshrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.zshrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>gvimrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.gvimrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>bash_profile to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.bash_profile
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>hgignore to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.hgignore
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>bashrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.bashrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>hgrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.hgrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>pdbrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.pdbrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>ackrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.ackrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>screenrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.screenrc
Symlinking <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.dotfiles<span style="color: #000000; font-weight: bold;">/</span>vimrc to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>yqiang<span style="color: #000000; font-weight: bold;">/</span>.vimrc</pre></div></div>

<p>create_symlink.py is a simple python script that will create the symlinks for you. Here is the code for it:</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
home = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">environ</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'HOME'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
path = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>home, <span style="color: #483d8b;">'.dotfiles'</span><span style="color: black;">&#41;</span> 
excludes = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'gtk-2.0'</span>, <span style="color: #483d8b;">'create_symlinks.py'</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> f <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">listdir</span><span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> f.<span style="color: black;">startswith</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'.'</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">continue</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> f <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> excludes:
        dst = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>home, <span style="color: #483d8b;">'.'</span> + f<span style="color: black;">&#41;</span>
        src = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Symlinking %s to %s&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>src, dst<span style="color: black;">&#41;</span>
            <span style="color: #dc143c;">os</span>.<span style="color: black;">symlink</span><span style="color: black;">&#40;</span>src, dst<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span>, msg:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed to symlink %s to %s &quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>src, dst<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">print</span> msg</pre></div></div>

<p>Tada. All your config files are in place now. If you&#8217;re really into it, you can run a cron script that automatically does an hg pull so you don&#8217;t even have to think about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/07/04/publishing-your-dotfiles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some neat sage command line options</title>
		<link>http://yiqiang.org/blog/2008/06/29/some-neat-sage-command-line-options/</link>
		<comments>http://yiqiang.org/blog/2008/06/29/some-neat-sage-command-line-options/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 17:08:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=13</guid>
		<description><![CDATA[I haven&#8217;t looked at sage -h for a while and was surprised to see many useful convenience features that have been added. I will highlight some ones that I&#8217;ve been using constantly that makes Sage development more convenient.
sage  -b [branch]   -- switch to and build SAGE branch in devel/sage-branch
sage  -br [branch] [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t looked at sage -h for a while and was surprised to see many useful convenience features that have been added. I will highlight some ones that I&#8217;ve been using constantly that makes Sage development more convenient.</p>
<pre>sage  -b [branch]   -- switch to and build SAGE branch in devel/sage-branch
sage  -br [branch]  -- switch to, build, and run SAGE branch in devel/sage-branch
sage  -clone [new branch] -- clone and run a new branch of the SAGE library from current branch
sage  -python       -- run the python interpreter
sage  -sh           -- run $SHELL (/opt/local/bin/zsh) with SAGE environment variables set
sage  -t [-optional] [-verbose] [-long] -- test examples in .py, .pyx, .sage or .tex files
                   -optional -- include examples with 'optional' and 'package'
                   -long     -- include lines with the phrase 'long time'
                   -verbose  -- print debuging output during the test</pre>
<p>In particular, sage -sh is really useful for setting all the shell variables.</p>
<p>You can get a list of all the command line options by doing</p>
<pre>sage -advanced</pre>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/06/29/some-neat-sage-command-line-options/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Sage with Fluid</title>
		<link>http://yiqiang.org/blog/2008/05/09/using-sage-with-fluid/</link>
		<comments>http://yiqiang.org/blog/2008/05/09/using-sage-with-fluid/#comments</comments>
		<pubDate>Sat, 10 May 2008 03:49:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[mac]]></category>

		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=12</guid>
		<description><![CDATA[
Above is Sage running in Fluid.app, which is a &#8220;SSB&#8221; (Site Specific Browser). I am starting to like using the Sage notebook this way because it doesn&#8217;t interfere with my regular browsing and it&#8217;s nice having a dock icon to show your friends  

Here&#8217;s how you can get it up and running in no [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://yiqiang.org/gallery/Fluid%20Sage.jpg"><img style="cursor: pointer; width: 400px;" height="200" src="http://yiqiang.org/gallery/Fluid%20Sage.jpg" alt="" border="0" /></a>
<div>Above is Sage running in Fluid.app, which is a &#8220;SSB&#8221; (Site Specific Browser). I am starting to like using the Sage notebook this way because it doesn&#8217;t interfere with my regular browsing and it&#8217;s nice having a dock icon to show your friends <img src='http://yiqiang.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </div>
<div></div>
<div>Here&#8217;s how you can get it up and running in no time:</div>
<div>1) Install Fluid.app (http://fluidapp.com)</div>
<div>2) Create a new SSB by pointing it to http://localhost:8000</div>
<div>3) You can use this Sage logo for a dock icon (the icon is from artwork done by Sirio who originally posted it to the sage-devel mailing list) </div>
<div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://yiqiang.org/gallery/Sage%20Logo.png"><img style="cursor: pointer; width: 200px;" src="http://yiqiang.org/gallery/Sage%20Logo.png" alt="" border="0" /></a></div>
<div>
<div></div>
<div>Obviously this will not work if you don&#8217;t run sage from elsewhere. I thought about including some script-fu to make it launch Sage automatically, but since I do sage -br so often it&#8217;s rather pointless. </div>
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/05/09/using-sage-with-fluid/feed/</wfw:commentRss>
		</item>
		<item>
		<title>remove /home directory on leopard</title>
		<link>http://yiqiang.org/blog/2008/04/11/remove-home-directory-on-leopard/</link>
		<comments>http://yiqiang.org/blog/2008/04/11/remove-home-directory-on-leopard/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 20:08:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=11</guid>
		<description><![CDATA[If you&#8217;re like me and are curious about everything on your system, you might like this tip:
http://www.tipstrs.com/tip/1821/Fix&#8211;home-directory-after-installing-Leopard
It shows you how to remove the /home directory in your root on a Leopard machine.
]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re like me and are curious about everything on your system, you might like this tip:</p>
<p><a href="http://www.tipstrs.com/tip/1821/Fix--home-directory-after-installing-Leopard">http://www.tipstrs.com/tip/1821/Fix&#8211;home-directory-after-installing-Leopard</a></p>
<p>It shows you how to remove the /home directory in your root on a Leopard machine.</p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/04/11/remove-home-directory-on-leopard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Awesome geomap of Sage developers</title>
		<link>http://yiqiang.org/blog/2008/04/10/awesome-geomap-of-sage-developers/</link>
		<comments>http://yiqiang.org/blog/2008/04/10/awesome-geomap-of-sage-developers/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:54:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=10</guid>
		<description><![CDATA[Check out how &#8220;global&#8221; Sage development is here:
http://lite.sagemath.org/devmap.html
This was developed by Harald Schilly. If you&#8217;re a Sage developer and want to show up on the map, contact Harald Schilly.
]]></description>
			<content:encoded><![CDATA[<p>Check out how &#8220;global&#8221; Sage development is here:</p>
<p><a href="http://www.sagemath.org/development-map.html">http://lite.sagemath.org/devmap.html</a></p>
<p>This was developed by Harald Schilly. If you&#8217;re a Sage developer and want to show up on the map, contact Harald Schilly.</p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/04/10/awesome-geomap-of-sage-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Updated version of Colloquy which fixes Python plugins on Leopard</title>
		<link>http://yiqiang.org/blog/2008/04/09/updated-version-of-colloquy-which-fixes-python-plugins-on-leopard/</link>
		<comments>http://yiqiang.org/blog/2008/04/09/updated-version-of-colloquy-which-fixes-python-plugins-on-leopard/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 05:22:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[mac]]></category>

		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=9</guid>
		<description><![CDATA[You can find an updated binary distribution of Colloquy here:
http://yiqiang.org/Colloquy.zip
The only modification is that it is linked using -weak_library so that it uses Python 2.5 if it exists on your machine and falls back to Python 2.3 if you&#8217;re using 10.4. This is needed because Python plugins for Colloquy need the pyobjc bridge, which is [...]]]></description>
			<content:encoded><![CDATA[<p>You can find an updated binary distribution of Colloquy here:</p>
<p><a href="http://yiqiang.org/Colloquy.zip">http://yiqiang.org/Colloquy.zip</a></p>
<p>The only modification is that it is linked using -weak_library so that it uses Python 2.5 if it exists on your machine and falls back to Python 2.3 if you&#8217;re using 10.4. This is needed because Python plugins for Colloquy need the pyobjc bridge, which is in Python 2.5 (as shipped with Leopard), but not Python 2.3.</p>
<p>You can find a sample plugin here:</p>
<p><a href="http://yiqiang.org/sage-devel-trac.py" class="broken_link">http://yiqiang.org/sage-devel-trac.py</a></p>
<p>To install it, drop it into</p>
<p>~/Library/Application Support/Colloquy/PlugIns/</p>
<p>and either restart Colloquy or type /reload plugins.</p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/04/09/updated-version-of-colloquy-which-fixes-python-plugins-on-leopard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sage development funded by Google</title>
		<link>http://yiqiang.org/blog/2008/04/07/sage-development-funded-by-google/</link>
		<comments>http://yiqiang.org/blog/2008/04/07/sage-development-funded-by-google/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 00:50:00 +0000</pubDate>
		<dc:creator>Yi Qiang</dc:creator>
		
		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://yiqiang.org/blog/?p=8</guid>
		<description><![CDATA[Today the Sage team received some very exciting and encouraging news.
Chris DiBona, who is the Open Source Programs Manager at Google, was able to secure funding for several students to work on Sage this summer. The students and the projects are:
Gary Furnish (Rewrite and Vastly Optimize Symbolic Computation)Mike Hansen (Combinatorial Species)Robert Miller (Backtracking Algorithms and [...]]]></description>
			<content:encoded><![CDATA[<p>Today the Sage team received some very exciting and encouraging news.</p>
<p>Chris DiBona, who is the Open Source Programs Manager at Google, was able to secure funding for several students to work on Sage this summer. The students and the projects are:</p>
<p>Gary Furnish (Rewrite and Vastly Optimize Symbolic Computation)<br />Mike Hansen (Combinatorial Species)<br />Robert Miller (Backtracking Algorithms and Permutation Groups)<br />Yi Qiang (Distributed Computing with DSage)</p>
<p>More details are in the original proposal:<url to="" proposal=""></p>
<p><a href="http://yiqiang.org/google_proposal.pdf">http://yiqiang.org/google_proposal.pdf</a></p>
<p>Thanks again to Google and everyone who worked on making this happen!</p>
<p></url></p>
]]></content:encoded>
			<wfw:commentRss>http://yiqiang.org/blog/2008/04/07/sage-development-funded-by-google/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
