<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>TheGlide's blog</title>
	<atom:link href="http://theglide.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://theglide.wordpress.com</link>
	<description>Ramblings, ramblings, ramblings...</description>
	<lastBuildDate>Tue, 26 Jun 2007 09:28:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='theglide.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>TheGlide's blog</title>
		<link>http://theglide.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://theglide.wordpress.com/osd.xml" title="TheGlide&#039;s blog" />
	<atom:link rel='hub' href='http://theglide.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Demoscene: screen captures of old DOS demos</title>
		<link>http://theglide.wordpress.com/2007/06/17/demoscene-screen-captures-of-old-dos-demos/</link>
		<comments>http://theglide.wordpress.com/2007/06/17/demoscene-screen-captures-of-old-dos-demos/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 19:46:10 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Demoscene]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/06/17/demoscene-screen-captures-of-old-dos-demos/</guid>
		<description><![CDATA[In search of screen captures of oldskool demos I found a very nice site, WurstCaptures. There are a lot of high-quality video captures of old DOS-based demos to download and also very detailed instructions on how to do the same on your own using DOSBox, a DOS emulator. I have to give this a try: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=34&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In search of screen captures of oldskool demos I found a very nice site, <a href="http://wurstcaptures.untergrund.net/">WurstCaptures</a>. There are a lot of high-quality video captures of old DOS-based demos to download and also very detailed instructions on how to do the same on your own using <a href="http://dosbox.sourceforge.net/">DOSBox</a>, a DOS emulator. I have to give this a try: there&#8217;s also a Mac version available!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=34&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/06/17/demoscene-screen-captures-of-old-dos-demos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Dovecot and Getmail updates</title>
		<link>http://theglide.wordpress.com/2007/06/17/dovecot-and-getmail-updates/</link>
		<comments>http://theglide.wordpress.com/2007/06/17/dovecot-and-getmail-updates/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 19:24:02 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/06/17/dovecot-and-getmail-updates/</guid>
		<description><![CDATA[Dovecot v1.0.1 has been recently released (see the posting on the dovecot-news mailing list) and Getmail is now at version 4.7.5. I will soon refresh my two previous articles on configuring these softwares on Mac OSX adding also SSL support for dovecot (a topic I did not have time to add in the first version [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=33&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dovecot.org/">Dovecot </a>v1.0.1 has been recently released (see the <a href="http://dovecot.org/list/dovecot-news/2007-June/000045.html">posting</a> on the dovecot-news mailing list) and <a href="http://pyropus.ca/software/getmail/">Getmail</a> is now at version 4.7.5. I will soon refresh my two previous articles on configuring these softwares on Mac OSX adding also SSL support for dovecot (a topic I did not have time to add in the first version of the doc).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=33&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/06/17/dovecot-and-getmail-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Mac: dealing with Finder (and iPhoto) comments</title>
		<link>http://theglide.wordpress.com/2007/05/14/mac-dealing-with-finder-and-iphoto-comments/</link>
		<comments>http://theglide.wordpress.com/2007/05/14/mac-dealing-with-finder-and-iphoto-comments/#comments</comments>
		<pubDate>Mon, 14 May 2007 19:19:24 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/05/14/mac-dealing-with-finder-and-iphoto-comments/</guid>
		<description><![CDATA[I&#8217;ve been using Mac OSX for less than a year and only now I&#8217;ve started playing with metadata. I&#8217;ve accumulated quite a number of PDF documents and I have lots of photos on my hard drive and to me the most natural thing seemed to add comments (actually tags, using the trick to prepend a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=30&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Mac OSX for less than a year and only now I&#8217;ve started playing with metadata. I&#8217;ve accumulated quite a number of PDF documents and I have lots of photos on my hard drive and to me the most natural thing seemed to add comments (actually tags, using the trick to prepend a &#8220;&amp;&#8221; to each tag for ease of searching in Spotlight) either through the Finder &#8220;Get Info&#8221; window or through iPhoto&#8217;s interface.</p>
<p>The problem is that I often use the Terminal to do a variety of tasks and a lot of the commands that I use on a daily basis do not play well at all with Finder comments: for example if you use <em>cp</em> or <em>mv</em> to move files around, the affected files will not keep their Comment entry. This is because the metadata is not kept with the file (possibly using the extended attributes) but instead is stored in the <em>.DS_Store</em> file located in the parent directory of any given file. Neither <em>rdiff-backup</em> nor <em>rsync</em> (which I often use to transfer files to a Linux server) play well with  metadata and you risk that your backup does not properly keep the Finder (or iPhoto) Comment. If instead you move files around with Finder (or use other backup solutions like Super Duper), your metadata will smoothly follow the files in their new location.</p>
<p>For a short while I toyed with the idea to code a <em>cp</em>/<em>mv</em> replacement, either through a bash or python script, but for the moment I decided that I would like at least to be able to create a backup (snapshot) of all the current Finder/iPhoto comments.</p>
<p><span id="more-30"></span>This is pretty easy using Spotlight&#8217;s command line utilities. If you want to get a list of the files in the $HOME dir that have a Finder Comment you can simply do:</p>
<blockquote><p>mdfind &#8220;kMDItemFinderComment == &#8216;*&#8217;&#8221; -onlyin $HOME</p></blockquote>
<p>Instead to search for comments added by other tools like iPhoto or iTunes, since those are saved within the <em>kMDItemComment</em> property, you can simply use the following line:</p>
<blockquote><p>mdfind &#8220;kMDItemComment == &#8216;*&#8217;&#8221; -onlyin $HOME</p></blockquote>
<p>So I cooked a small bash script to dump all this information in a file on a regular basis (i.e. when I rsync my data to the server):</p>
<blockquote><p>DATE=`/bin/date +%Y%m%d_%H%M`<br />
mdfind &#8220;kMDItemFinderComment == &#8216;*&#8217;&#8221; -onlyin $HOME &gt; .CommentsTmp<br />
mdfind &#8220;kMDItemComment == &#8216;*&#8217;&#8221; -onlyin $HOME &gt;&gt; .CommentsTmp<br />
touch CommentsBackup_$DATE.comments<br />
while read line<br />
do<br />
mdls -name kMDItemFinderComment -name kMDItemComment &#8220;$line&#8221; &gt;&gt; CommentsBackup_$DATE.comments<br />
done &lt; .CommentsTmp</p></blockquote>
<p>At least now I have a way to extract this data from the store and put it somewhere in ASCII format. Next I&#8217;ll try to do a python script to ease the management of the tags and maybe avoid the situations where I inadvertently move a file with the Terminal and loose its tags. If anybody has a better idea, let me know.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=30&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/05/14/mac-dealing-with-finder-and-iphoto-comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Stanford and UC Berkeley lectures on iTunes</title>
		<link>http://theglide.wordpress.com/2007/05/12/stanford-and-uc-berkeley-lectures-on-itunes/</link>
		<comments>http://theglide.wordpress.com/2007/05/12/stanford-and-uc-berkeley-lectures-on-itunes/#comments</comments>
		<pubDate>Sat, 12 May 2007 19:56:44 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Computer Architectures]]></category>
		<category><![CDATA[Low Power Design]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/05/12/stanford-and-uc-berkeley-lectures-on-itunes/</guid>
		<description><![CDATA[I know this isn&#8217;t surely new, but I just discovered that Stanford and UC Berkeley have made available on-line a number of faculty interviews and seminars through iTunes. Actually you won&#8217;t find this content directly on the iTunes Music Store but you need to go their respective iTunes U web sites and click a link [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=29&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I know this isn&#8217;t surely new, but I just discovered that Stanford and UC Berkeley have made available on-line a number of faculty interviews and seminars through iTunes. Actually you won&#8217;t find this content directly on the iTunes Music Store but you need to go their respective iTunes U web sites and click a link to be taken to the dedicated area in iTunes. &#8220;Stanford on iTunes U&#8221; can be reached <a href="http://itunes.stanford.edu/" title="Stanford on iTunes U">here</a>, while UC Berkeley&#8217;s is <a href="http://itunes.berkeley.edu/" title="UC Berkeley on iTunes U">here</a>.</p>
<p>The geek in me has already found some interesting content there, notably the Computer Systems Colloquium laboratory at Stanford, with an interesting lecture (available in video) from Professor Dave Patterson on the Berkeley View on Parallel Computing. On the UC Berkeley iTunes site are, among others, the audio recordings of lectures from Professor Jan Rabaey on Low Power Design (some slide material can be found on his homepage at Berkeley). For anyone interested in low-power design techniques, those are a must read!</p>
<p>I&#8217;m sure there are many other universities that have their own iTunes U sites.  I mentioned the two I researched so far that have the most material close to my professional domain.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/29/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/29/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=29&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/05/12/stanford-and-uc-berkeley-lectures-on-itunes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>A video tour of Intel&#8217;s 45nm fab in Oregon</title>
		<link>http://theglide.wordpress.com/2007/05/11/a-video-tour-of-intels-45nm-fab-in-oregon/</link>
		<comments>http://theglide.wordpress.com/2007/05/11/a-video-tour-of-intels-45nm-fab-in-oregon/#comments</comments>
		<pubDate>Fri, 11 May 2007 19:42:08 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Semiconductors]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/05/11/a-video-tour-of-intels-45nm-fab-in-oregon/</guid>
		<description><![CDATA[Just stumbled on a nice video tour of Intel&#8217;s D1D Fab in Oregon, where the 45nm process is being ramped up. The guide is Mark Bohr, Intel Senior Fellow and director of the Technology and Manufacturing Group. The video can be found here, and here you can find a little fact sheet by the video&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=28&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just stumbled on a nice video tour of Intel&#8217;s D1D Fab in Oregon, where the 45nm process is being ramped up. The guide is Mark Bohr, Intel Senior Fellow and director of the Technology and Manufacturing Group. The video can be found <a href="http://www.podtech.net/scobleshow/technology/1329/intel-says-goodbye-to-silicon-dioxide-in-new-45-nanometer-fab">here</a>, and <a href="http://scobleizer.com/2007/01/26/looking-into-intels-new-fab/">here</a> you can find a little fact sheet by the video&#8217;s author.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=28&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/05/11/a-video-tour-of-intels-45nm-fab-in-oregon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Oldskool: tiled texture mapping</title>
		<link>http://theglide.wordpress.com/2007/01/08/oldskool-tiled-texture-mapping/</link>
		<comments>http://theglide.wordpress.com/2007/01/08/oldskool-tiled-texture-mapping/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 20:38:10 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/01/08/oldskool-tiled-texture-mapping/</guid>
		<description><![CDATA[While reading &#8220;Inside the Machine&#8221; (see my earlier post), I thought about the times (many many years ago!) when I was doing (demo)coding on my old 486 (then substituted by an AMD K5), using nice little tricks to optimize the execution of inner loops and writing assembly code day and night. In &#8217;97 I wrote [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=20&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://theglide.files.wordpress.com/2007/01/pictb.png" title="pictb.png"></a></p>
<p style="text-align:center;"><a href="http://theglide.files.wordpress.com/2007/01/pictb.png" title="pictb.png"> </a></p>
<p>While reading &#8220;Inside the Machine&#8221; (see my earlier post), I thought about the times (many many years ago!) when I was doing (demo)coding on my old 486 (then substituted by an AMD K5), using nice little tricks to optimize the execution of inner loops and writing   assembly code day and night. In &#8217;97 I wrote a little doc, which is still lying around in my hard drive (and somewhere non the net), on the subject of fast texture mapping by using cache-friendly tiling techniques. Just for fun I decided to restore this doc and put it in this blog. Keep in mind it&#8217;s almost 10 years old! :-)</p>
<p>Read on&#8230;</p>
<p><span id="more-20"></span></p>
<p><strong>Tiled Texture Mapping for pow2 Texture Sizes</strong><br />
Author: TheGlide/SpinningKids &#8211; June 1998</p>
<p><em>Introduction</em></p>
<p>I assume here you know the basics of texture mapping, as eplained in <em>fatmap</em> and <em>fatmap2</em> docs by MRI/Doomsday (see on <a href="http://www.multi.fi/~mbc/personal_sources.html">MRI&#8217;s homepage</a>), since the present document is just an extension of those.</p>
<p>This doc is about doing texture mapping using texture maps stored as tiles, namely 8&#215;8 pixels tiles. Storing the maps this way can improve very much cache access. Most of the time we have to traverse the texture through non-horizontal lines, and this causes many cache misses. The worst situation happens when we have to traverse the texture vertically: each texel we access will be on a different row and this will require, from the processor side, a whole cache line load, which is very slow.Storing the texture in 8&#215;8 tiles ensures that every tile fits in two 32 bytes cache lines (on the Pentium), and as we traverse the texture we have a greater chance to read from the same cache line for a longer time.</p>
<p>Let&#8217;s assume for the moment that you have 256&#215;256 textures.</p>
<p>So the U (x-axis) and V (y-axis) coordinates take up 8 bits:</p>
<p><code>U : xxxxxxxx<br />
V : xxxxxxxx</code></p>
<p><em>Tiling &#8211; method 1</em></p>
<p>The first way to tile the map in 8&#215;8 tiles is this one:</p>
<p><a href="http://theglide.files.wordpress.com/2007/01/pictb.png" title="pictb.png"></a></p>
<p style="text-align:center;"><a href="http://theglide.files.wordpress.com/2007/01/picta.png" title="picta.png"><img src="http://theglide.files.wordpress.com/2007/01/picta.png?w=244&#038;h=162" alt="picta.png" border="0" height="162" width="244" /></a></p>
<p>where numbers 0, 1, 2&#8230; indicate the order by which the 8&#215;8 tiles are stored in memory (each tile being stored in 64 consecutive addresses in memory).</p>
<p>This way we can go from the original (U, V) coordinates to the ones in the tiled map with the following relationship:</p>
<p><code>U : xxxxxXXX  -&gt;    U' = 00000xxxxx000XXX<br />
V : xxxxxXXX  -&gt;    V' = xxxxx00000XXX000</code></p>
<p>i.e. in C code:</p>
<p><code>U' = (U&amp;0x7)|((U&lt;&lt;3)&amp;0x7c0);<br />
V' = ((V&lt;&lt;3)&amp;0x38)|((V&lt;&lt;8)&amp;f800);</code></p>
<p>Basically the lower 3 bits of both U and V (XXX, above) are used to address the texel inside a single tile, whereas the 5 upper bits (xxxxx, above) are used to select the tile inside the texture. The C code to convert normal texture coordinates (U,V) to tiled-texture (U&#8217;, V&#8217;) coordinates is the following:</p>
<p><code>U' = (U&amp;0x7)|((U&lt;&lt;3)&amp;0x7c0);<br />
V' = ((V&lt;&lt;3)&amp;0x38)|((V&lt;&lt;8)&amp;f800);</code></p>
<p>This code enables us to convert a straight texture to a tiled texture:</p>
<p><code>tiledtmap [U'+V'] = tmap [U+V*256]</code></p>
<p><em>Tiling &#8211; method 2 &#8211; the better method</em></p>
<p>There&#8217;s another way to tile a texture map in 8&#215;8 tiles. This one, which uses a different ordering of the tiles:</p>
<p><a href="http://theglide.files.wordpress.com/2007/01/pictb.png" title="pictb.png"></a></p>
<p style="text-align:center;"><a href="http://theglide.files.wordpress.com/2007/01/pictb.png" title="pictb.png"><img src="http://theglide.files.wordpress.com/2007/01/pictb.png?w=244&#038;h=162" alt="pictb.png" border="0" height="162" width="244" /></a></p>
<p>With this tiling method we get from the (U, V) coordinates within the original texture to (U&#8217;, V&#8217;) coordinates relative to the tiled map with this method:</p>
<p><code>u : xxxxxXXX  -&gt;    u' = xxxxx00000000XXX<br />
v : xxxxxXXX  -&gt;    v' = 00000xxxxxXXX000</code></p>
<p>The corresponding C code is:</p>
<p><code>u' = (u&amp;0x7)|((u&lt;&lt;8)&amp;0xf800);<br />
v' = (v&lt;&lt;3);</code></p>
<p>and as before it can be readily plugged in a converter from straight textures to tiled textures.</p>
<p>The code really &#8216;looks better&#8217; than the first method above. It is easier and faster to convert from V to V&#8217;.  That&#8217;s why we will choose this second tiling method.</p>
<p>Now, we could easily get our usual texture map scanline filler, put those relations inside the inner loop, and see the result. Slooow! At the expense of a little overhead, we can get a loop that is really little and optimized. So what can we do to directly use U&#8217; and V&#8217; in the loop and the corresponding dU&#8217; and dV&#8217;, and read directly from the tiled texture?</p>
<p>We convert all of our starting U and V, and the corresponding deltas (dU, dV) that are calculated in the texture mapper before entering the inner loop (all quantities in 8.16 fixed point format, xxx is the integer part, XXX is the fractional part):</p>
<p><code>U : xxxxxxxx,XXXXXXXXXXXXXXXx -&gt; U' = xxxxx00000000xxx,0XXXXXXXXXXXXXXX<br />
V : xxxxxxxx,XXXXXXXXXXXXXXXx -&gt; V' = 00000xxxxxxxx000,0XXXXXXXXXXXXXXX<br />
dU : xxxxxxxx,XXXXXXXXXXXXXXXx -&gt; dU' = xxxxx11111111xxx,1XXXXXXXXXXXXXXX<br />
dV : xxxxxxxx,XXXXXXXXXXXXXXXx -&gt; dV' = 00000xxxxxxxx111,1XXXXXXXXXXXXXXX</code></p>
<p>We have to fill the gaps in (dU&#8217;, dV&#8217;) with 1s because when we add them to the current (U&#8217;, V&#8217;) values we must propagate the carry from the lower bits to the bits that lie after the gap. After the addition we must not forget to mask out the 1s from the (U&#8217;, V&#8217;) we obtain.</p>
<p>Of the 16 bit fractional part we keep only the upper 15 bits. There&#8217;s a valid reason to do this: when calculating the offset to access the texel we add U&#8217; and V&#8217; and shift right by 16. If we kept all of the fractional bits, an hypotetical carry would propagate to the integer part, thus influencing the offset value. Keeping instead only the upper 15 bits of the fractional part, and putting a 1 bit gap between fractional and integer part the problem gets solved automatically. If this explanation seems harsh, look at the &#8216;picture&#8217; of U&#8217;/V&#8217; above.</p>
<p>Now, an hypothetical tiled tmap scanline filler would look like (sorry for the bad formatting, I still have to find a proper way to format/indent C code in WordPress :-):</p>
<p><code>void tiledtmapline (int u, int v, int du, int dv,<br />
int run, const unsigned char * vid, const unsigned char * tmap) {<br />
// on entry u,v,du,dv are in 8.16 format<br />
u = (( u&lt;&lt;8)&amp;0xf8000000) | ( u&amp;0x70000) | (( u&gt;&gt;1)&amp;0x7fff);<br />
du = ((du&lt;&lt;8)&amp;0xf8000000) | (du&amp;0x70000) | ((du&gt;&gt;1)&amp;0x7fff) | 0x7f88000;<br />
v = (( v&lt;&lt;3)&amp;0x07f80000) | (( v&gt;&gt;1)&amp;0x7fff);<br />
dv = ((dv&lt;&lt;3)&amp;0x07f80000) | ((dv&gt;&gt;1)&amp;0x7fff) | 0x78000;<br />
vid+=run;<br />
for (run=-run;run;run++) {<br />
*(vid+run) = tmap [((unsigned int)(u+v)&gt;&gt;16)];<br />
u =(u+du)&amp;0xf8077fff;  // addition + masking out the 1s in the gaps<br />
v =(v+dv)&amp;0x07f87fff;  // same as above<br />
}}</code></p>
<p><em>Extending to pow2 textures</em></p>
<p>Now comes the cool part. We will extend all the formulas we have developed to other texture dimensions (actually always power of 2). Let&#8217;s look at the U&#8217; and V&#8217; formats:</p>
<p><code>            U : xxxxxXXX  -&gt; U' = xxxxx00000000XXX<br />
V : xxxxxXXX  -&gt; V' = 00000xxxxxXXX000</code></p>
<p>bits 0-2 (LSB) of U&#8217; and bits 3-5 of V&#8217; are the coordinates in the single 8&#215;8 tile. Since we always use 8&#215;8 tiles, those fields won&#8217;t change in bitwidth. Let&#8217;s look at the remaining 5 bits of U&#8217; (bits 11-16) and V&#8217; (bits 6-10). 5 bits are need for 32 tiles. 32tiles*8pixels = 256 pixels.</p>
<p>It takes a minute to understand that by varying the number of those bits we can account for different texture sizes. With 4 bits we get 16 tiles, that is a 16*8=128 pixels width/height texture. Here are a couple of cases to make everything more clear:</p>
<ul>
<li>128&#215;128 tiled map ( = 16tiles x 16 tiles): U&#8217; = 00xxxx0000000XX / V&#8217; = 000000xxxxXXX000</li>
</ul>
<ul>
<li>64&#215;64 tiled map ( = 8tiles x 8tiles): U&#8217; = 0000xxx000000XXX / V&#8217; = 0000000xxxXXX000</li>
</ul>
<p>and so on&#8230;</p>
<p>So how can we handle all those cases in the formulas we wrote above? Easy: we simply need a parameter that tells us the number of bits for the &#8216;inter-tile&#8217; addressing, and the corresponding mask. In formulas this will look like:</p>
<p><code>// u,v,du,dv 16.16 fixed point quantities<br />
// bits = tile addressing bits<br />
// mask = tile addressing bit mask<br />
ushift = (3+bits);<br />
umask  = (mask&lt;&lt;(16+6+bits));<br />
vmask  = (mask&lt;&lt;(16+6))|0x380000;<br />
dumask  = vmask|0x8000;<br />
u = (( u&lt;&lt;ushift)&amp;umask)|( u&amp;0x70000)|(( u&gt;&gt;1)&amp;0x7fff);<br />
du = ((du&lt;&lt;ushift)&amp;umask)|(du&amp;0x70000)|((du&gt;&gt;1)&amp;0x7fff)|dumask;<br />
v = (( v&lt;&lt;3)&amp;vmask)|(( v&gt;&gt;1)&amp;0x7fff);<br />
dv = ((dv&lt;&lt;3)&amp;vmask)|((dv&gt;&gt;1)&amp;0x7fff)|0x78000;</code></p>
<p>and that&#8217;s all.</p>
<p>Here are the correct bits &amp; mask values for the different texture sizes:<br />
<code></code></p>
<p><code>size / bits   / mask<br />
256x256     5 0x1f<br />
128x128     4      0xf<br />
64x64        3 0x7<br />
32x32        2 0x3<br />
16x16        1 0x1<br />
8x8           0      0</code></p>
<p>The inner loop then looks like:</p>
<p><code>innerumask = umask|0x77fff;<br />
innervmask = vmask|0x07fff;<br />
vid+=run;<br />
for (run=-run;run;run++) {<br />
*(vid+run) = tmap [((unsigned int)(u+v)&gt;&gt;16)];<br />
u =(u+du)&amp;innerumask;<br />
v =(v+dv)&amp;innervmask;<br />
}</code></p>
<p>And you got it! That&#8217;s a tiled texture mapper ready to handle any power of 2 texture size, subdvided in 8&#215;8 tiles. ushift, umask, vmask, innerumask and innervmask do not need to be calculated at each scanline obviously as they depend solely on the dimensions of the texture. But a little overhead still remains; that&#8217;s true especially when you use this scanline filler in a perspective correct texture mapper that linearly interpolates every 16 pixels. One last thing to note is that wrapping is still allowed with this method.</p>
<p><em>More extensions</em></p>
<p>An obvious limit of the method I presented is that you can apply it to textures with a maximum dimension of 256&#215;256 texels. Extending beyond this limit is not a problem: you only have to trade some bits from the fractional part, so they can be used to address more texels :)</p>
<p>That&#8217;s all folks!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=20&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/01/08/oldskool-tiled-texture-mapping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>

		<media:content url="http://theglide.files.wordpress.com/2007/01/picta.png" medium="image">
			<media:title type="html">picta.png</media:title>
		</media:content>

		<media:content url="http://theglide.files.wordpress.com/2007/01/pictb.png" medium="image">
			<media:title type="html">pictb.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Book: Inside the Machine</title>
		<link>http://theglide.wordpress.com/2007/01/07/book-inside-the-machine/</link>
		<comments>http://theglide.wordpress.com/2007/01/07/book-inside-the-machine/#comments</comments>
		<pubDate>Sun, 07 Jan 2007 21:19:43 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[CPU]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2007/01/07/book-inside-the-machine/</guid>
		<description><![CDATA[Happy 2007! The first post of 2007 is dedicated to the review of a book that I&#8217;ve read during the Christmas period: &#8220;Inside the Machine&#8221;, by Jon &#8220;Hannibal&#8221; Stokes, Senior CPU Editor of Ars Technica. The book subtitle says &#8220;An Illustrated Introduction to Microprocessors and Computer Architecture&#8221; and I think that it pretty much keeps [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=19&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://theglide.files.wordpress.com/2007/01/insidethemachine.png" title="insidethemachine.png"><img src="http://theglide.files.wordpress.com/2007/01/insidethemachine.thumbnail.png?w=700" alt="insidethemachine.png" align="left" border="0" /></a> Happy 2007!</p>
<p>The first post of 2007 is dedicated to the review of a book that I&#8217;ve read during the Christmas period: <a href="http://store.arstechnica.com/index.asp?PageAction=VIEWPROD&amp;ProdID=16&amp;HS=1" title="Inside the Machine @ Ars Technica Store">&#8220;Inside the Machine&#8221;</a>, by Jon &#8220;Hannibal&#8221; Stokes, Senior CPU Editor of <a href="http://arstechnica.com/index.ars">Ars Technica</a>. The book subtitle says &#8220;An Illustrated Introduction to Microprocessors and Computer Architecture&#8221; and I think that it pretty much keeps its promise.</p>
<p>The book contains a detailed review of all the major microprocessor architectures that have seen the light since the early &#8217;90s.</p>
<p>After four chapters where all the basic concepts are reviewed, from the mechanics of program execution inside CPUs, to pipelining and superscalar execution, the author jumps right into the description of one of the most widely know microprocessors from Intel, and a brand which lived for quite a long time: the Pentium.</p>
<p>From there on most of the chapters are dedicated to the description and comparison of the major microarchitectures and microprocessors from Intel, IBM and Motorola. In order:</p>
<ul>
<li>Intel <a href="http://en.wikipedia.org/wiki/Intel_P6">P6</a> microarchitecture (used in <a href="http://en.wikipedia.org/wiki/Pentium_Pro">Pentium Pro</a>, Pentium II and Pentium III)</li>
<li><a href="http://en.wikipedia.org/wiki/Powerpc">PowerPC</a>: <a href="http://en.wikipedia.org/wiki/PowerPC_600">601</a>, 603/603e, 604/604e, <a href="http://en.wikipedia.org/wiki/PowerPC_750">750</a> (a.k.a G3), <a href="http://en.wikipedia.org/wiki/PowerPC_7400">7400</a> (a.k.a.G4)</li>
<li>Intel <a href="http://en.wikipedia.org/wiki/Netburst">NetBurst</a> and the Pentium 4</li>
<li>Motorola <a href="http://en.wikipedia.org/wiki/PowerPC_7400">G4e</a> (PowerPC 7450, an optimized version of the G4&#8242;s microarchitecture)</li>
<li>IBM <a href="http://en.wikipedia.org/wiki/PowerPC_G5">PowerPC 970</a> (a.k.a. G5)</li>
<li>Intel <a href="http://en.wikipedia.org/wiki/Pentium_M">Pentium M</a>, <a href="http://en.wikipedia.org/wiki/Core_duo">Core Duo</a> and <a href="http://en.wikipedia.org/wiki/Intel_Core_2">Core 2 Duo</a></li>
</ul>
<p>Especially interesting are the two chapters (7 and 8) dedicated to a detailed comparison of the Pentium 4 and the PowerPC G4e. Those two processors were designed with two completely different strategies, with the Pentium 4 sporting a <em>deep and narrow</em> pipeline, while the G4e a <em>wide and shallow </em>one. Jon goes into great detail on the implications of the two choices and how they impacted other design decisions and the final performance (both in raw speed and power) of the two approaches.</p>
<p>In between the discussion of the G5 and the PentiumM/Core, there are two interesting chapters which introduce the topics of 64bit computing (and how this was addressed by Intel and AMD) and of cache and memory hierarchy.</p>
<p>The chapter about PentiumM and Core/Core2 is in my opinion a bit too short: I hoped there would be more discussion on those 3 microarchitectures, especially in the light of the multi-core versions and how this impacted the architecture of the L2 cache, etc&#8230;</p>
<p>Jon has done a pretty good job at describing at a good level of detail some of the most important microarchitectures, always putting them into their historical context and guiding the reader in understanding how the focus of microprocessor designers has shifted from pure raw speed and high clock frequencies, to creating high-peforming low-power architectures.</p>
<p>Reading the book has reminded me of the cover stories I used to find in Byte Magazine which described in great details the new microprocessors as they were introduced in the market.  This book helped revive in me an interest in CPU architectures and I hope Jon will consider doing a &#8220;sequel&#8221;, maybe including some of the CPUs and topis that are missing and that I think are very interesting: Stream Processors (now widely used in GPUs), VLIW processors, IBM Cell, IBM POWER6, HyperThreading and CMP (chip-multiprocessing), Sun Niagara, ARM processors, &#8230;</p>
<p>I wish I had such a book during my microelectronics degree courses!</p>
<p>Definitely a good buy.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=19&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2007/01/07/book-inside-the-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>

		<media:content url="http://theglide.files.wordpress.com/2007/01/insidethemachine.thumbnail.png" medium="image">
			<media:title type="html">insidethemachine.png</media:title>
		</media:content>
	</item>
		<item>
		<title>No exponential is forever&#8230; but we can delay &#8220;forever&#8221;</title>
		<link>http://theglide.wordpress.com/2006/10/12/no-exponential-is-forever-but-we-can-delay-forever/</link>
		<comments>http://theglide.wordpress.com/2006/10/12/no-exponential-is-forever-but-we-can-delay-forever/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 22:21:29 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Semiconductors]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2006/10/12/no-exponential-is-forever-but-we-can-delay-forever/</guid>
		<description><![CDATA[Just happened to stumble on Gordon Moore&#8217;s speech slides at 2003 ISSCC (International Solid-State Circuits Conference) while reading an interview with Shekhar Borkar, an Intel Fellow, on Intel Technology Magazine. The interview (in 3 parts) gives a good overview of what are the current challenges that semiconductor companies are facing to further delay the time [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=15&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just happened to stumble on <a href="ftp://download.intel.com/research/silicon/Gordon_Moore_ISSCC_021003.pdf">Gordon Moore&#8217;s speech</a> slides at 2003 ISSCC (International Solid-State Circuits Conference) while reading an <a href="http://www.intel.com/technology/computing/mi03031.htm">interview</a> with Shekhar Borkar, an Intel Fellow, on Intel Technology Magazine. The interview (in 3 parts) gives a good overview of what are the current challenges that semiconductor companies are facing to further delay the time when Moore&#8217;s exponential will no longer hold. Since this is an exponential law, as time goes by the difficulty to make it happen grows exponentially as well. That&#8217;s why a lot of new techniques and paradigm changes are necessary in order to continue improving the performance and power consumption of new chips (and not just microprocessors).</p>
<p>Particularly interesting is the <a href="http://www.intel.com/technology/computing/mi04031.htm" title="Designing for Power - the Future of Moore's law">2nd part</a> of the interview with Shekhar Borkar, where some of the current techniques are detailed that are currently used to reduce power consumption and provide higher performance at a lower power cost.</p>
<p><em>[Update June 2007: I just realized the link to the interview on Intel's website are broken. The interview title was "Designing for power-The future of Moore's Law" and I can't seem to find it on another page. Will update this posting if I find it.]</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=15&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2006/10/12/no-exponential-is-forever-but-we-can-delay-forever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Mac: keyboard shortcuts galore!</title>
		<link>http://theglide.wordpress.com/2006/10/12/mac-keyboard-shortcuts-galore/</link>
		<comments>http://theglide.wordpress.com/2006/10/12/mac-keyboard-shortcuts-galore/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 18:34:03 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2006/10/12/mac-keyboard-shortcuts-galore/</guid>
		<description><![CDATA[Over at melablog.it today I noticed a mention of a document that has just been posted at Apple&#8217;s developers site, that summarizes many of the keyboard shortcuts available in Mac OS X interface. I found this pretty useful since I&#8217;m new to the Mac platform and most of them are still unknown to me. While [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=14&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over at <a href="http://www.melablog.it/post/2517/la-lista-che-mancava" title="melablog">melablog.it</a> today I noticed a mention of a <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGKeyboardShortcuts/chapter_20_section_1.html" title="Keyboard Shortcuts Quick Reference">document</a> that has just been posted at Apple&#8217;s developers site, that summarizes many of the keyboard shortcuts available in Mac OS X interface. I found this pretty useful since I&#8217;m new to the Mac platform and most of them are still unknown to me.</p>
<p>While I&#8217;m at it, let me mention a few other similar links I found recently:</p>
<ul>
<li><a href="http://docs.info.apple.com/article.html?artnum=303124" title="Startup key combinations">Mac startup key combinations </a>(over at Apple&#8217;s documentation site)</li>
<li><a href="http://rixstep.com/2/20040510,00.shtml" title="Rixstep">Mac OS X shortcuts</a> (at Rixstep&#8217;s blog)</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=14&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2006/10/12/mac-keyboard-shortcuts-galore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
		<item>
		<title>Mac: configuring a mail server (part 2 &#8211; getmail, procmail)</title>
		<link>http://theglide.wordpress.com/2006/10/12/mac-configuring-a-mail-server-part-2-getmail-procmail/</link>
		<comments>http://theglide.wordpress.com/2006/10/12/mac-configuring-a-mail-server-part-2-getmail-procmail/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 12:00:07 +0000</pubDate>
		<dc:creator>theglide</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://theglide.wordpress.com/2006/10/12/mac-configuring-a-mail-server-part-2-getmail-procmail/</guid>
		<description><![CDATA[Hello and welcome to the second installment of these articles dedicated to setting up a small email server on a Mac for personal use by a local user. In this second part I&#8217;m going to complete the setup with getmail and procmail. 1. Configuring getmail 1.1 getmailrc Getmail is developed by Charles Cazabon and in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=13&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hello and welcome to the second installment of these articles dedicated to setting up a small email server on a Mac for personal use by a local user. In this second part I&#8217;m going to complete the setup with getmail and procmail.</p>
<p><span id="more-13"></span><br />
<strong>1. Configuring getmail</strong></p>
<p><em>1.1 getmailrc</em><br />
<a href="http://pyropus.ca/software/getmail/" title="Getmail">Getmail</a> is developed by Charles Cazabon and in his own words is&#8230;</p>
<blockquote><p><em>&#8220;a mail retriever designed to allow you to get your mail from one or more mail accounts on various mail servers to your local machine for reading with a minimum of fuss. getmail is designed to be secure, flexible, reliable, and easy-to-use. getmail is designed to replace other mail retrievers such as fetchmail.&#8221;</em></p></blockquote>
<p>Compared to the famous <a href="http://fetchmail.berlios.de/" title="Fetchmail Home">fetchmail</a> developed by Eric S. Raymond, IMO getmail is easier to configure and to maintain, thanks to a clearly documented configuration file format.</p>
<p>In my case all I need is to:</p>
<ul>
<li> run getmail periodically (say every X minutes) to download emails from 2 POP3 servers (i.e. 2 different mail accounts).</li>
<li>let getmail pass the emails along to procmail so they can be processed before being delivered to the final destination in my local Maildir folder.</li>
</ul>
<p>In the <a href="http://theglide.wordpress.com/2006/10/07/mac-configuring-a-mail-server-part-1/" title="configuring a mail server (part 1 - postfix, dovecot)">first part</a> of this series, I explained how to install getmail from the .tar.gz which is downloadable from the project home page. After that step is done, all we need to do is to prepared the configuration scripts to download emails and deliver them appropriately. I say scripts (plural) because with getmail you have to create a single script for each email server you are going to poll for new emails.</p>
<p>I have to poll 2 POP3 servers, which will make the configuration files very similar. For the time being I also prefer to leave email on the servers (I&#8217;m still considering this setup as a test &#8211; once I&#8217;m fully satisfied I&#8217;ll let getmail delete emails from the POP3 servers).</p>
<p>Here is the template of the two configuration files I have:</p>
<blockquote><p><code>[retriever]<br />
type = SimplePOP3Retriever<br />
server = pop3.server.name<br />
username = pop3username<br />
password = pop3userpassword<br />
timeout = 120</code></p>
<p><code>[destination]<br />
type = MDA_external<br />
path = /usr/bin/procmail<br />
arguments = ("-d", "localusername")</code></p>
<p><code>[options]<br />
verbose = 2<br />
read_all = false<br />
delete = false<br />
delivered_to = false<br />
message_log = ~/.getmail/logfilename</code></p></blockquote>
<p>I created two of them and placed them in <em>~/.getmail/getmailrc-pop3-1 </em>and <em>~/.getmail/getmailrc-pop3-2</em>: they only differ for the <em>server</em>, <em>username</em>, <em>password</em> and <em>message_log </em>field.</p>
<p>The <em>[retriever]</em> section specifies the type of server (POP3 in this case), its IP address, and the necessary information to log in (<em>username</em> and <em>password</em>). I also specified a timeout of 120sec.</p>
<p>The <em>[destination]</em> section is where you specify how to deliver the mail locally. In this case I chose to use an external MDA (Mail Delivery Agent), i.e. <em>type = MDA_external</em>, that can be found in <em>/usr/bin/procmail </em>(the path for <em>procmail </em>in Mac OS X). Arguments to the MDA can be specified with the <em>arguments</em> keyword: in this case I only enforced the username (which is the local Unix user that will receive the mail).</p>
<p>The final section is the <em>[options]</em> section that allows to control the way getmail operates. Since I want to leave the mail on the POP3 server and I want to download only new messages, I added the <em>read_all = false</em> and <em>delete = false</em> settings. I also added the <em>delivered_to = false</em> setting but&#8230; I don&#8217;t remember why :-) (I should check back my notes!).</p>
<p><em>1.2 getmail and cron</em><br />
Now that <em>getmailrc*</em> files are ready, we need to schedule regular runs of getmail to download email from all the POP3 servers. Even though Mac OS X has a new mechanism called <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/macosx/launchd.html" title="Getting Started with launchd"><em>launchd</em> </a>which offers extended functionality over <em>cron</em>, I still decided to setup a <em>cron</em> job. I will play with <em>launchd</em> in a later article.</p>
<p>First I prepared a shell script (<em>checkmail.sh</em>) to run getmail on the 2 <em>getmailrc*</em> files I previously created:</p>
<blockquote><p><code>getmail --rcfile ~/.getmail/getmailrc-pop3-1  &gt;&gt; ~/.getmail/log-pop3-1 2&gt;&amp; 1<br />
getmail --rcfile ~/.getmail/getmailrc-pop3-2  &gt;&gt; ~/.getmail/log-pop3-2 2&gt;&amp; 1</code></p></blockquote>
<p>Then by running <em>crontab -e </em>from the Terminal I created a <em>crontab</em> entry to run the <em>checkmail.sh</em> script every 15 minutes:</p>
<blockquote><p><code>0,15,30,45 * * * * &lt;yourpath&gt;/checkmail.sh &gt;&gt; ~/.getmail/log-checkmail 2&gt;&amp; 1</code></p></blockquote>
<p>This will run the <em>checkmail.sh</em> script every 15 minutes and dump any error messages in the <em>~/.getmail/log-checkmail</em> file. Also regularly check the log files dumped by getmail for any error accessing the servers and/or downloading emails.</p>
<p>Note: for the system to find the <em>getmail </em>executable, the directory <em>/opt/bin</em> should be in the PATH.</p>
<p><strong>2. Configuring procmail</strong><br />
Why use procmail? Well first because I wanted to try it and understand it. Second because I wanted to do some processing on the incoming mails, e.g. drop them in a different folder in the Maildir directory depending on the incoming POP3 mail server.</p>
<p>When procmail is invoked by getmail, it will look for a file named <em>~/.procmailrc</em> which contains all the necessary setup and procmail-rules to process incoming mail.</p>
<p>Teaching how to properly configure procmail is way beyond the scope of my articles so I suggest you take a look at the <a href="http://www.ii.com/internet/robots/procmail/qs/" title="Procmail QuickStart Guide"><em>Procmail QuickStart</em></a> document which is really well done and detailed.<br />
Here I will just show you how I setup procmail to drop mails in different folders depending on the POP3 server they came from. First let&#8217;s begin with the <em>~/.procmailrc </em>header, which contains some important variables:</p>
<blockquote><p><code>SHELL=/bin/sh<br />
DEFAULT=$HOME/Maildir/<br />
MAILDIR=$DEFAULT<br />
PMDIR=$HOME/.procmail<br />
LOGFILE=$PMDIR/pmlog<br />
VERBOSE=yes</code></p></blockquote>
<p>The most important here are MAILDIR, which specifies the location of the Maildir folder, and DEFAULT, which gives the location of the default folder (i.e. the INBOX). LOGFILE specified the location for procmail&#8217;s logfile. I also enabled detailed messaging with VERBOSE=yes.</p>
<p>Now on to the rules section:</p>
<blockquote><p><code>:0 c<br />
.INBOX.backup/</code></p>
<p><code>:0<br />
* ^Received:.*from pop3\.server\.one.*with POP3<br />
{<br />
:0<br />
.INBOX.Account1/<br />
}</code></p>
<p><code># DEFAULT<br />
:0<br />
$DEFAULT</code></p></blockquote>
<p>The first rule (:0 c) basically makes sure that the first thing that is done by procmail is to put a copy of the incoming mail into a backup folder (.INBOX.backup/ in Maildir naming format).</p>
<p>The second rule is actually a nested rule that is activated each time the mail comes from &#8220;pop3.server.one&#8221;: I apply a regular expression to the Received: part of the mail message and look for the evenlope which is added by getmail that includes the name of the POP3 server where the mail came from. This way I can do some actions (in this case a simple move to .INBOX.Account1/) on mail as they come from different POP3 servers.</p>
<p>Lastly if the mail doesn&#8217;t fit into any of the preceding rules, I just put it into the default incoming box.</p>
<p><strong>3. That&#8217;s it!</strong></p>
<p>All the pieces are now together. In part1 we have set up postfix and dovecot to act as servers to send emails to an external SMTP server (postfix) and to make the mail in the local folder available to clients through a local IMAP server (dovecot). In this article I discussed how I set up getmail and procmail to gather email from 2 POP3 servers and deliver it in the local Maildir folder (which is the folder that the IMAP server is going to access).</p>
<p>To test the current getmail configuration you could simply run by hand the configuration scripts, check the log files to see that both getmail and procmail worked correctly, then check your mail folder for any new mail.</p>
<p>I&#8217;ve not covered in detail the setup of mail clients like Mail.app and Thunderbird but since I&#8217;ve run out of time I&#8217;ll do this into a soon-to-come article.</p>
<p>Please let me know if you have any comments, questions or corrections to what I wrote.</p>
<p>Thanks!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/theglide.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/theglide.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/theglide.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/theglide.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/theglide.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=theglide.wordpress.com&amp;blog=53128&amp;post=13&amp;subd=theglide&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://theglide.wordpress.com/2006/10/12/mac-configuring-a-mail-server-part-2-getmail-procmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b7df56d4ce763d1cb4fdd19ee3bcc59a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">theglide</media:title>
		</media:content>
	</item>
	</channel>
</rss>
