<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8811117896392347197</id><updated>2011-07-08T10:35:45.379-07:00</updated><category term='suggestions'/><category term='processing'/><category term='youcan'/><category term='documentation'/><category term='useful'/><category term='oops'/><category term='new'/><category term='photos'/><category term='xterm'/><category term='intuition'/><category term='get a job'/><category term='ishould'/><category term='typeitin'/><category term='kickass'/><category term='lots of ram'/><category term='spreadsheet'/><category term='cool books'/><category term='breaking'/><category term='animation'/><category term='supercompilation'/><category term='installer'/><category term='todo'/><category term='windows'/><category term='songs for beautiful girls'/><category term='alt/meta key doesn&apos;t work'/><category term='line noise'/><category term='hardware'/><category term='amole'/><category term='paper'/><category term='scripting'/><category term='simulation'/><category term='scheme'/><category term='wrong'/><category term='stop'/><category term='emacs'/><category term='office'/><category term='linguistics'/><category term='whack'/><category term='sometimes'/><category term='logic'/><category term='numerics'/><category term='mycomputer'/><category term='random'/><category term='graphics'/><category term='maybe'/><category term='metaprogramming'/><category term='new payment model'/><category term='lots of compiling'/><category term='myrandomnumbers'/><category term='blog'/><category term='book'/><category term='corewars'/><category term='radar'/><category term='might actually learn something'/><category term='fix?'/><category term='publishing'/><category term='wanted'/><category term='something'/><category term='cool'/><category term='text'/><category term='yourself'/><category term='matrix'/><category term='words'/><category term='is anyone out there?'/><category term='unix'/><category term='typesystems suck'/><category term='optimization'/><category term='features'/><category term='feed my cat'/><category term='annoying'/><category term='gmail'/><category term='i didn&apos;t write this'/><category term='google'/><category term='money'/><title type='text'>metashell</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-7142284547560944917</id><published>2009-09-04T06:46:00.000-07:00</published><updated>2009-09-04T06:49:05.822-07:00</updated><title type='text'>How to Disable Windows Automatic Restart After Updates</title><content type='html'>Tired of coming in to work in the morning only to find that all your work you forgot to save is lost because of an auto-restart by Windows during the middle of the night?&lt;br /&gt;&lt;br /&gt;Me too.&lt;br /&gt;&lt;br /&gt;Here's how to disable this major annoyance of Windows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       * In the Start Menu go to Run type “gpedit.msc” and press Enter&lt;br /&gt;&lt;br /&gt;       * Now a Group Policy editor will open. In this window navigate to: Computer Configuration -&gt; Administrative Template -&gt; Windows Components -&gt; Windows Update&lt;br /&gt;&lt;br /&gt;       * Double click on No auto-restart for scheduled Automatic Updates installations&lt;br /&gt;&lt;br /&gt;       * In the settings window Choose Enabled and click OK&lt;br /&gt;&lt;br /&gt;       * Close Group Policy Editor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it.  &lt;br /&gt;&lt;br /&gt;Source: http://www.aviransplace.com/2004/12/18/tip-disable-auto-restart-in-windows-update/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-7142284547560944917?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/7142284547560944917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=7142284547560944917' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7142284547560944917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7142284547560944917'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2009/09/how-to-disable-windows-automatic.html' title='How to Disable Windows Automatic Restart After Updates'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3005772778246361348</id><published>2009-08-19T07:59:00.000-07:00</published><updated>2009-08-19T08:03:05.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>Current Inflation</title><content type='html'>I heard this morning that inflation in Canada over the past year is at an alltime low of around 0.9% (or so, from memory).  Seems a bit odd though that my rent and almost everything that &lt;i&gt;I&lt;/i&gt; buy (food) has gone up around 5-10% at least over the past year.&lt;br /&gt;&lt;br /&gt;One has to wonder what they are using to calculate the inflation rates around here, or if &lt;i&gt;they&lt;/i&gt; ever buy anything at all.  Damn lies and statistics, as usual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3005772778246361348?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3005772778246361348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3005772778246361348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3005772778246361348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3005772778246361348'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2009/08/current-inflation.html' title='Current Inflation'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3152639282910635189</id><published>2009-08-02T16:26:00.000-07:00</published><updated>2009-08-02T16:30:16.778-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>No cursor in Emacs 23 with -rv?</title><content type='html'>&lt;p&gt;I just tried Emacs 23 for Windows and found a slight annoyance when run with the -rv switch: the cursor isn't visible!  A simple work around I found was to set the cursor color:&lt;/p&gt;&lt;p&gt;    &lt;code&gt;M-x set-cursor-color&lt;/code&gt;&lt;/p&gt;&lt;p&gt;and then type 'white' when prompted for the new color.  To make this permanent, you can always add:&lt;/p&gt;&lt;p&gt;   &lt;code&gt;(set-cursor-color 'white)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;to your $HOME/.emacs file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3152639282910635189?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3152639282910635189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3152639282910635189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3152639282910635189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3152639282910635189'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2009/08/no-cursor-in-emacs-23-with-rv.html' title='No cursor in Emacs 23 with -rv?'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3294762090531721944</id><published>2009-01-24T15:16:00.001-08:00</published><updated>2009-01-24T15:16:01.507-08:00</updated><title type='text'>lol</title><content type='html'>snarge (noun) : remains of a bird found on an aircraft after a bird strike&lt;br&gt;The engines of US Airways flight 1549 will be examined by the NTSB and&lt;br&gt;the snarge recovered for analysis. —Carla Dove, Smithsonian, National&lt;br&gt;Public Radio, Jan 16, 2009&lt;br&gt;Submitted by: Rick Hansen from Massachusetts on Jan. 22, 2009 12:21&lt;p&gt;Source: &lt;a href="http://www3.merriam-webster.com/opendictionary/newword_display_recent.php"&gt;http://www3.merriam-webster.com/opendictionary/newword_display_recent.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3294762090531721944?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3294762090531721944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3294762090531721944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3294762090531721944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3294762090531721944'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2009/01/lol.html' title='lol'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5726438243201287175</id><published>2008-12-18T15:55:00.000-08:00</published><updated>2008-12-18T16:01:52.830-08:00</updated><title type='text'>Fwd: Sandisk Flash Card article</title><content type='html'>Don&amp;#39;t Waste Your Time With Tying To Boot Sandisk Flash Cards&lt;br&gt;------------------------------------------------------------&lt;p&gt;I&amp;#39;ve wasted a number of hours recently trying to make a flash based&lt;br&gt;root Gentoo system on a Sandisk 8GB card using a nifty Flash-&amp;gt;IDE&lt;br&gt;adapter I picked up from Ebay for ~$10.  In summary, it doesn&amp;#39;t work,&lt;br&gt;at least not for the Dell Latitude LS I was hoping to silence...[1]&lt;p&gt;It turns out that the card I picked up comes with a shockingly&lt;br&gt;non-standard 576 byte sector size (as opposed to the 512 bytes of&lt;br&gt;every other IDE drive on the planet that I have seen or known).  This&lt;br&gt;causes the files stored on the drive to start on addresses which are&lt;br&gt;not multiples of the 512 bytes which causes GRUB to fail with the&lt;br&gt;informative &amp;#39;Error 16&amp;#39; sometimes, or more frequently &amp;#39;Read Error&amp;#39;.&lt;br&gt;More importantly, IT JUST DOESN&amp;#39;T WORK.&lt;p&gt;This phenomenon has been seen in the past when using reiserfs on your&lt;br&gt;boot partition (due to it&amp;#39;s tail packing algorithm). Normally this can&lt;br&gt;be solved by mounting the partition using the &amp;#39;notail&amp;#39; option; I was&lt;br&gt;using the normal ext2 so this was not the problem in my case.&lt;p&gt;So I am wondering, Sandisk, is there a reason for the 576 byte sector&lt;br&gt;size other than to completely screw up Linux boot loaders and keep&lt;br&gt;people from creating cheap flash based systems? Of course, I am no&lt;br&gt;flash chip design expert so there might be some technical problems&lt;br&gt;which require such an odd value, but I&amp;#39;m sure if I asked the company&lt;br&gt;I&amp;#39;d recieve no response...&lt;p&gt;I am pondering the option of pouring through the GRUB source trying to&lt;br&gt;find the trigger that hits &amp;#39;Error 16&amp;#39; and removing it to see if that&lt;br&gt;might help it work but I haven&amp;#39;t had the chance yet.  If so I&amp;#39;ll post&lt;br&gt;the results and the patch, but I feel that it could just be another&lt;br&gt;waste of my time hunting for multiple random occurences of hardcoded&lt;br&gt;checks scattered around code that has had too many people put their&lt;br&gt;fingers on it.  Time to write another simple, modern boot loader?&lt;p&gt;Good thing I checked the return policy on the card before I bought it.&lt;br&gt;I&amp;#39;m taking it back and buying some winter boots, if I can find some.&lt;p&gt;[1] It did work on my other Compaq EVO so I am assuming that it is the&lt;br&gt;relatively ancient Phoenix BIOS that is the causing the problems.  I&lt;br&gt;checked the Dell site and found that the A09 BIOS version was the most&lt;br&gt;up to date available for the system.&lt;p&gt;&lt;br&gt;just something i wrote for myself that i thought i would share with...myself&lt;p&gt;---------- Forwarded message ----------&lt;br&gt;From: Burton Samograd &amp;lt;&lt;a href="mailto:burton.samograd@gmail.com"&gt;burton.samograd@gmail.com&lt;/a&gt;&amp;gt;&lt;br&gt;Date: Fri, Nov 14, 2008 at 7:05 AM&lt;br&gt;Subject: Sandisk Flash Card article&lt;br&gt;To: &lt;a href="mailto:burton.samograd@gmail.com"&gt;burton.samograd@gmail.com&lt;/a&gt;&lt;p&gt;&lt;br&gt;Don&amp;#39;t Waste Your Time With Tying To Boot Sandisk Flash Cards&lt;br&gt;------------------------------------------------------------&lt;p&gt;I&amp;#39;ve wasted a number of hours recently trying to make a flash based&lt;br&gt;root Gentoo system on a Sandisk 8GB card using a nifty Flash-&amp;gt;IDE&lt;br&gt;adapter I picked up from Ebay for ~$10.  In summary, it doesn&amp;#39;t work,&lt;br&gt;at least not for the Dell Latitude LS I was hoping to silence...[1]&lt;p&gt;It turns out that the card I picked up comes with a shockingly&lt;br&gt;non-standard 576 byte sector size (as opposed to the 512 bytes of&lt;br&gt;every other IDE drive on the planet that I have seen or known).  This&lt;br&gt;causes the files stored on the drive to start on addresses which are&lt;br&gt;not multiples of the 512 bytes which causes GRUB to fail with the&lt;br&gt;informative &amp;#39;Error 16&amp;#39; sometimes, or more frequently &amp;#39;Read Error&amp;#39;.&lt;br&gt;More importantly, IT JUST DOESN&amp;#39;T WORK.&lt;p&gt;This phenomenon has been seen in the past when using reiserfs on your&lt;br&gt;boot partition (due to it&amp;#39;s tail packing algorithm). Normally this can&lt;br&gt;be solved by mounting the partition using the &amp;#39;notail&amp;#39; option; I was&lt;br&gt;using the normal ext2 so this was not the problem in my case.&lt;p&gt;So I am wondering, Sandisk, is there a reason for the 576 byte sector&lt;br&gt;size other than to completely screw up Linux boot loaders and keep&lt;br&gt;people from creating cheap flash based systems? Of course, I am no&lt;br&gt;flash chip design expert so there might be some technical problems&lt;br&gt;which require such an odd value, but I&amp;#39;m sure if I asked the company&lt;br&gt;I&amp;#39;d recieve no response...&lt;p&gt;I am pondering the option of pouring through the GRUB source trying to&lt;br&gt;find the trigger that hits &amp;#39;Error 16&amp;#39; and removing it to see if that&lt;br&gt;might help it work but I haven&amp;#39;t had the chance yet.  If so I&amp;#39;ll post&lt;br&gt;the results and the patch, but I feel that it could just be another&lt;br&gt;waste of my time hunting for multiple random occurences of hardcoded&lt;br&gt;checks scattered around code that has had too many people put their&lt;br&gt;fingers on it.  Time to write another simple, modern boot loader?&lt;p&gt;Good thing I checked the return policy on the card before I bought it.&lt;br&gt;I&amp;#39;m taking it back and buying some winter boots, if I can find some.&lt;p&gt;[1] It did work on my other Compaq EVO so I am assuming that it is the&lt;br&gt;relatively ancient Phoenix BIOS that is the causing the problems.  I&lt;br&gt;checked the Dell site and found that the A09 BIOS version was the most&lt;br&gt;up to date available for the system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5726438243201287175?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5726438243201287175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5726438243201287175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5726438243201287175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5726438243201287175'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/12/fwd-sandisk-flash-card-article.html' title='Fwd: Sandisk Flash Card article'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-6731691618382032383</id><published>2008-12-17T17:13:00.001-08:00</published><updated>2008-12-17T17:15:32.851-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='is anyone out there?'/><category scheme='http://www.blogger.com/atom/ns#' term='corewars'/><title type='text'>Slashdot SEZ : 'i am not human'</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3ods4fmRhkU/SUmkBCH0oaI/AAAAAAAAASU/BAqGKYwAauE/s1600-h/slashdot-comment-says-i-am-not-human.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://4.bp.blogspot.com/_3ods4fmRhkU/SUmkBCH0oaI/AAAAAAAAASU/BAqGKYwAauE/s400/slashdot-comment-says-i-am-not-human.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5280932375725121954" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-6731691618382032383?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/6731691618382032383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=6731691618382032383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/6731691618382032383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/6731691618382032383'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/12/slashdot-sez-i-am-not-human.html' title='Slashdot SEZ : &apos;i am not human&apos;'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3ods4fmRhkU/SUmkBCH0oaI/AAAAAAAAASU/BAqGKYwAauE/s72-c/slashdot-comment-says-i-am-not-human.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3434121726909501529</id><published>2008-09-07T20:53:00.000-07:00</published><updated>2008-09-07T20:54:49.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i didn&apos;t write this'/><title type='text'>useanenum</title><content type='html'>&lt;span style="font-size: 11pt; font-weight: bold;"&gt;&lt;a id="header_mo17c4t4mlfnmrhdih3kisnjqllvq2famh@4ax.com" href="javascript:AjaxRequest.get(%7B'url':'/forumgetmessage.html?group=comp.lang.c&amp;msgid=mo17c4t4mlfnmrhdih3kisnjqllvq2famh@4ax.com','onSuccess':function(req)%7B%20document.getElementById('content_mo17c4t4mlfnmrhdih3kisnjqllvq2famh@4ax.com').innerHTML%20=%20req.responseText;%20%7D%20%7D);"&gt;Barry Schwarz&lt;/a&gt;   07 Sep, 09:04&lt;a name="mo17c4t4mlfnmrhdih3kisnjqllvq2famh@4ax.com"&gt; &lt;/a&gt;&lt;/span&gt;&lt;span id="content_mo17c4t4mlfnmrhdih3kisnjqllvq2famh@4ax.com"&gt;&lt;div style="border: 1px solid silver; padding: 5px;"&gt; &lt;div class="large"&gt;Re: Increment a number in compile time macro&lt;/div&gt;&lt;pre&gt;&lt;messagebody gxi="http://geode.it/gxi/2.0/"&gt;On Sat, 6 Sep 2008 23:54:08 -0700 (PDT), Bin Chen&lt;br /&gt;&lt;binary.chen@gmail.com&gt; wrote:&lt;br /&gt;&lt;br /&gt;&gt;switch(i) {&lt;br /&gt;&gt;case 1:&lt;br /&gt;&gt;  break;&lt;br /&gt;&gt;case 2:&lt;br /&gt;&gt;  break;&lt;br /&gt;&gt;[...]&lt;br /&gt;&gt;case N:&lt;br /&gt;&gt;  break;&lt;br /&gt;&gt;&lt;br /&gt;&gt;}&lt;br /&gt;&gt;&lt;br /&gt;&gt;Now, after some time I want to add a 'case 2' between case 1 and case&lt;br /&gt;&gt;2, the result means every case number after case 2 need to be&lt;br /&gt;&gt;incremented by 1, it there a macro tricks to make life easier? Such&lt;br /&gt;&gt;as:&lt;br /&gt;&gt;&lt;br /&gt;&gt;switch(i) {&lt;br /&gt;&gt;case AUTO_INC_MACRO:&lt;br /&gt;&gt;  break;&lt;br /&gt;&gt;case AUTO_INC_MACRO:&lt;br /&gt;&lt;br /&gt;Macros don't perform calculations.  They only perform text&lt;br /&gt;substitution.  And a subsequent appearance of a macro in your code&lt;br /&gt;will not have access to the result of a previous appearance.&lt;br /&gt;&lt;br /&gt;However, you can do what you want with an enum.  Something of the form&lt;br /&gt;   enum {CASE1=1, CASE2, ..., CASEN};&lt;br /&gt;and change each case label to&lt;br /&gt;   case CASE1:&lt;br /&gt;   ...&lt;br /&gt;   case CASE2:&lt;br /&gt;   etc.&lt;br /&gt;&lt;br /&gt;Later, when you want to insert a case between CASE1 and CASE2, change&lt;br /&gt;you enum to&lt;br /&gt;   enum {CASE1=1, CASE1A, CASE2, ..., CASEN};&lt;br /&gt;and insert the new block of code immediately before the CASE2 label.&lt;br /&gt;&lt;br /&gt;To eliminate the rampant confusion after a half-dozen insertions where&lt;br /&gt;CASE6 may be 7 while CASE10 is 13, I would suggest using identifiers&lt;br /&gt;that are suggestive of the function to be performed rather than their&lt;br /&gt;numeric value.  Something like&lt;br /&gt;   enum {INSERT=1, DELETE, EDIT, COMPUTE};&lt;br /&gt;and then you could later amend it to&lt;br /&gt;   enum {INSERT=1, DELETE, EDIT, PRINT, COMPUTE};&lt;/messagebody&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3434121726909501529?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3434121726909501529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3434121726909501529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3434121726909501529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3434121726909501529'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/09/useanenum.html' title='useanenum'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2745244952752791348</id><published>2008-09-06T14:23:00.000-07:00</published><updated>2008-09-06T14:24:26.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='get a job'/><category scheme='http://www.blogger.com/atom/ns#' term='wanted'/><title type='text'>chromium-linux-dev @ google groups</title><content type='html'>&lt;table style="padding: 5px; background-color: rgb(255, 255, 255);" cellspacing="0"&gt;&lt;br /&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt; &lt;img src="http://groups.google.com/groups/img/3nb/groups_bar.gif" alt="Google Groups" height="26" width="132" /&gt;&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;td style="padding-left: 5px; font-size: 125%;"&gt;&lt;br /&gt; &lt;b&gt;chromium-linux-dev&lt;/b&gt;&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;td style="padding-left: 5px;"&gt;&lt;br /&gt; &lt;a href="http://groups.google.com/group/chromium-linux-dev"&gt;Visit this group&lt;/a&gt;&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2745244952752791348?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2745244952752791348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2745244952752791348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2745244952752791348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2745244952752791348'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/09/chromium-linux-dev-google-groups.html' title='chromium-linux-dev @ google groups'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-710363961208520756</id><published>2008-08-06T18:47:00.000-07:00</published><updated>2008-08-06T18:49:26.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alt/meta key doesn&apos;t work'/><category scheme='http://www.blogger.com/atom/ns#' term='ishould'/><category scheme='http://www.blogger.com/atom/ns#' term='something'/><category scheme='http://www.blogger.com/atom/ns#' term='maybe'/><title type='text'>kubrick's boxes</title><content type='html'>&lt;div align="right"&gt;how, &lt;a href="http://video.google.com/videosearch?q=kubrick&amp;emb=0#"&gt;appropriate&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-710363961208520756?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/710363961208520756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=710363961208520756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/710363961208520756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/710363961208520756'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/08/kubricks-boxes.html' title='kubrick&apos;s boxes'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3055394965418308077</id><published>2008-08-05T18:37:00.000-07:00</published><updated>2008-08-05T19:22:56.344-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrong'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='oops'/><category scheme='http://www.blogger.com/atom/ns#' term='kickass'/><title type='text'>ping</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://www.youtube.com/watch?v=pOs0gChiW6g&amp;feature=related"&gt;*smack*&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;* the &lt;a href="http://dictionary.reference.com/browse/retarded"&gt;news&lt;/a&gt; of my &lt;a href="http://dictionary.reference.com/browse/suicide"&gt;departure&lt;/a&gt; has been greatly &lt;a href="http://dictionary.reference.com/search?r=2&amp;q=exaggerated"&gt;exaggerated&lt;/a&gt; *&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3055394965418308077?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3055394965418308077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3055394965418308077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3055394965418308077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3055394965418308077'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/08/ping.html' title='ping'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-4972724753083850163</id><published>2008-07-03T08:16:00.000-07:00</published><updated>2008-07-03T08:29:36.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amole'/><category scheme='http://www.blogger.com/atom/ns#' term='kickass'/><category scheme='http://www.blogger.com/atom/ns#' term='myrandomnumbers'/><category scheme='http://www.blogger.com/atom/ns#' term='whack'/><title type='text'>i like random numbers</title><content type='html'>...and &lt;a href="http://burtleburtle.net/bob/rand/isaacafa.html"&gt;this guy&lt;/a&gt; says &lt;a href="http://burtleburtle.net/bob/rand/randvect.txt"&gt;his are better&lt;/a&gt; than &lt;a href="http://myspace.com/kruhft"&gt;mine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;i guess &lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=7&amp;amp;url=http%3A%2F%2Flinks.jstor.org%2Fsici%3Fsici%3D0002-9890%28195604%2963%253A4%253C243%253ATMEIAF%253E2.0.CO%253B2-8&amp;amp;ei=9-5sSLrrKaCQgQK1utz9Aw&amp;amp;usg=AFQjCNFb84DIW1jKYSgiGU_bP7s-ki5mxw&amp;amp;sig2=kM3ljizygepTF6hygcw7SQ"&gt;ax+b%c&lt;/a&gt; just ain't gonna cut it anymore...not that it &lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwindowsvistablog.com%2Fblogs%2Fwindowsvista%2Farchive%2F2006%2F11%2F30%2Fmicrosoft-s-biggest-launch-has-begun.aspx&amp;amp;ei=G-9sSPmRF5HiggLr6bn5Aw&amp;amp;usg=AFQjCNFwya6fCnKjkvBXlxL2Pc4cMkYMsA&amp;amp;sig2=4aCslyZT-rmFgHtEAfNetg"&gt;ever has&lt;/a&gt; but it's always&lt;br /&gt;&lt;br /&gt;&lt;a href="http://burton.samograd.googlepages.com/wishlist"&gt;WORKEDFORME&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=18&amp;amp;url=http%3A%2F%2Fwww.encyclopedia.com%2Fdoc%2F1O999-shell.html&amp;amp;ei=rO5sSLiCBJj-ggKN6NTxAw&amp;amp;usg=AFQjCNHnDUTuOjzoYbpjgUmBcAri5hiF-Q&amp;amp;sig2=9iCbODu6b6BXMlWY5KVd0A"&gt;sometimes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=72&amp;amp;url=http%3A%2F%2Fwww.rabble.ca%2Frpn%2Fnni%2F&amp;amp;ei=We9sSIboLqKShALOvMzpAw&amp;amp;usg=AFQjCNEINpbtKFIJEIbn8TXNvLa46o3kUw&amp;amp;sig2=G5OD1hFV9iNXIXDx5UUlIw"&gt;no&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=3&amp;amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxKB4ce6pvjA&amp;amp;ei=zu5sSIOCDYHWgQKTs7XpAw&amp;amp;usg=AFQjCNEIzf_4oIu33tfuUFeje7zfUwESrw&amp;amp;sig2=g1sula_F_QFOdWgUZd2TFw"&gt;all the time&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;but &lt;a href="http://images.google.ca/images?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla:en-US:official&amp;amp;hs=LSl&amp;amp;q=natalie+portman&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;sa=X&amp;amp;oi=image_result_group&amp;amp;resnum=1&amp;amp;ct=title"&gt;i needed&lt;/a&gt; some example &lt;a href="http://colorforth.com"&gt;forth&lt;/a&gt; code, too bad it &lt;a href="http://burtleburtle.net/bob/rand/fisaac.txt"&gt;just doesn't cut it&lt;/a&gt; for &lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fxaos.sourceforge.net%2F&amp;amp;ei=p-9sSOnVIaichAK7h53sAw&amp;amp;usg=AFQjCNExbj_ku7enwt1xZJF59sgWvUFCxg&amp;amp;sig2=rTdB9TPdFPND4YfY_AUXuQ"&gt;my system&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=9&amp;amp;url=http%3A%2F%2Fwww.transcoil.com%2FSalessupport%2FDrawings%2FHg7%2FEnclosed-600v%2FHg600cw01st.dxf&amp;amp;ei=u-9sSISkJ5DigQLjh-TfAw&amp;amp;usg=AFQjCNFUl7Y5o0t9XtJlqjXwk_9wxlHFlQ&amp;amp;sig2=rQchgp7fFRMsWYxe9R4J5Q"&gt;WTF?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/url?sa=t&amp;amp;ct=res&amp;amp;cd=3&amp;amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNevermind&amp;amp;ei=-u9sSJuJFojegQKOz_X9Aw&amp;amp;usg=AFQjCNEzDxNabRT4RFMSqe63RG6jAhaHeQ&amp;amp;sig2=VUJ_nP90T05l-F4uUdt2pw"&gt;n/m&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-4972724753083850163?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/4972724753083850163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=4972724753083850163' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4972724753083850163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4972724753083850163'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/07/i-like-random-numbers.html' title='i like random numbers'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3189234641529028236</id><published>2008-06-25T16:04:00.000-07:00</published><updated>2008-06-25T16:06:23.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='breaking'/><category scheme='http://www.blogger.com/atom/ns#' term='stop'/><category scheme='http://www.blogger.com/atom/ns#' term='mycomputer'/><title type='text'>was it just me?</title><content type='html'>or did malloc suddenly get commented out of /usr/include/stdlib.h?&lt;br /&gt;&lt;br /&gt;that was stupid.&lt;br /&gt;&lt;br /&gt;i'm sure it was just me.&lt;br /&gt;&lt;br /&gt;except...&lt;br /&gt;&lt;br /&gt;ididn'tdoit&lt;br /&gt;&lt;br /&gt;that would be stupid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3189234641529028236?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3189234641529028236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3189234641529028236' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3189234641529028236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3189234641529028236'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/was-it-just-me.html' title='was it just me?'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1506287067700102813</id><published>2008-06-25T08:50:00.000-07:00</published><updated>2008-06-25T08:56:49.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lots of compiling'/><category scheme='http://www.blogger.com/atom/ns#' term='lots of ram'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Speed Up Gentoo/Emerge</title><content type='html'>$ mount -t tmpfs none /var/tmp/portage&lt;br /&gt;&lt;br /&gt;warning: use only if you have more free ram than you know what to do with, like I do (4Gigs).&lt;br /&gt;&lt;br /&gt;speed up is caused by never touching a moving part (aka. a disk) during operations that read and write lots of files (software building).&lt;br /&gt;&lt;br /&gt;i don't have any numbers to say it works faster, but it does.  also, you would want to change your MAKEOPTS to reflect your ACTUAL number of processors rather than N+1 since the processors won't be hanging around waiting to read and write to disk anymore.&lt;br /&gt;&lt;br /&gt;and you should be doing this to your /tmp as well, since the contents of that aren't supposed to be hanging around after reboot anyways.&lt;br /&gt;&lt;br /&gt;as always, put it in your /etc/fstab to make it stick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1506287067700102813?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1506287067700102813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1506287067700102813' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1506287067700102813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1506287067700102813'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/speed-up-gentooemerge.html' title='Speed Up Gentoo/Emerge'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2400627071592820507</id><published>2008-06-25T08:27:00.000-07:00</published><updated>2008-06-25T08:36:38.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='might actually learn something'/><category scheme='http://www.blogger.com/atom/ns#' term='cool books'/><title type='text'>SICM + SICP = cooler first year</title><content type='html'>&lt;div style="text-align: center;"&gt;look what I found!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mitpress.mit.edu/SICM/SICM.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://mitpress.mit.edu/SICM/SICM.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;...math is hard to read and not too practical with all these computers lying around these days...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;maybe this can help translate all those symbols to understandable ASCII and we could start LEARNING TO USE all the things we sat through and are told to forget once we get out of school.&lt;br /&gt;&lt;br /&gt;courses are expensive.  it pissed me off that i couldn't use any of the information i learned once i started getting paid to write code I DIDN'T OWN.&lt;br /&gt;&lt;br /&gt;wanted: structure and interpretations of computational chemistry, how to build your code library that you can take from job to job and not have your employers say they OWN it when you leave&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2400627071592820507?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2400627071592820507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2400627071592820507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2400627071592820507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2400627071592820507'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/sicm-sicp-cooler-first-year.html' title='SICM + SICP = cooler first year'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2927710908868456053</id><published>2008-06-24T14:14:00.000-07:00</published><updated>2008-06-24T14:16:12.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metaprogramming'/><category scheme='http://www.blogger.com/atom/ns#' term='typesystems suck'/><category scheme='http://www.blogger.com/atom/ns#' term='sometimes'/><title type='text'>could we keep the types on the first floor please?</title><content type='html'>&gt; Representation: Strings vs. Algebraic datatype vs. Quasi-quote&lt;br /&gt;&lt;br /&gt;&gt; A meta-programming system uses program annotations (called staging annotations) to distinguish between the meta-program from the &gt; object program. An object program should be a first-class value. One should think of it as a datastructure that can be manipulated like &gt; any other. Many meta-systems represent object-programs by using strings, graphs, or algebraic data-structures.&lt;br /&gt;&lt;br /&gt;&gt; With the string encoding, we represent the code fragment f (x,y) simply as "f(x,y)". While constructing and combining fragments&lt;br /&gt;&gt; represented by strings can be done concisely, deconstructing them is quite verbose. More seriously, there is no automatically&lt;br /&gt;&gt; verifiable guarantee that programs thusly constructed are syntactically correct. For example, "f (,y)" can have the static type string, but &gt; this clearly does not imply that this string represents a syntactically correct program.&lt;br /&gt;&lt;br /&gt;WHO CARES.  THAT IS WHAT EVAL IS FOR. why must all metaprogramming&lt;br /&gt;systems be so f'n annoying and layer even more crap on an already&lt;br /&gt;existing language?&lt;br /&gt;&lt;br /&gt;metaprogram  strings are not not complete programs.  they are short;&lt;br /&gt;they are concise and generally just a bunch of extremely similar&lt;br /&gt;simple code that is REALLY ANNOYING TO TYPE.  you don't need an entire&lt;br /&gt;type system to guarantee the correctness of single line code&lt;br /&gt;fragments; that's what your BRAIN IS FOR.&lt;br /&gt;&lt;br /&gt;KISS.  that last S is for SMARTY.&lt;br /&gt;&lt;span style="color: rgb(136, 136, 136);"&gt;&lt;br /&gt;Source:  &lt;a href="http://web.cecs.pdx.edu/%7Esheard/staged.html"&gt;http://web.cecs.pdx.edu/~sheard/staged.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;k&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2927710908868456053?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2927710908868456053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2927710908868456053' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2927710908868456053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2927710908868456053'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/could-we-keep-tye-types-on-first-floor.html' title='could we keep the types on the first floor please?'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-4437740795516670092</id><published>2008-06-24T08:55:00.000-07:00</published><updated>2008-06-24T10:48:01.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='line noise'/><category scheme='http://www.blogger.com/atom/ns#' term='useful'/><title type='text'>sed cheat sheet</title><content type='html'>&lt;pre&gt;Source: &lt;a href="http://student.northpark.edu/pemente/sed/sed1line.txt"&gt;http://student.northpark.edu/pemente/sed/sed1line.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;move on up for even more: &lt;a href="http://student.northpark.edu/pemente/sed/"&gt;http://student.northpark.edu/pemente/sed/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------&lt;br /&gt;HANDY ONE-LINERS FOR SED (Unix stream editor)               Apr. 26, 2004&lt;br /&gt;compiled by Eric Pement - pemente[at]northpark[dot]edu        version 5.4&lt;br /&gt;Latest version of this file is usually at:&lt;br /&gt; http://sed.sourceforge.net/sed1line.txt&lt;br /&gt; http://www.student.northpark.edu/pemente/sed/sed1line.txt&lt;br /&gt;This file is also available in Portuguese at:&lt;br /&gt; http://www.lrv.ufsc.br/wmaker/sed_ptBR.html&lt;br /&gt;&lt;br /&gt;FILE SPACING:&lt;br /&gt;&lt;br /&gt;# double space a file&lt;br /&gt;sed G&lt;br /&gt;&lt;br /&gt;# double space a file which already has blank lines in it. Output file&lt;br /&gt;# should contain no more than one blank line between lines of text.&lt;br /&gt;sed '/^$/d;G'&lt;br /&gt;&lt;br /&gt;# triple space a file&lt;br /&gt;sed 'G;G'&lt;br /&gt;&lt;br /&gt;# undo double-spacing (assumes even-numbered lines are always blank)&lt;br /&gt;sed 'n;d'&lt;br /&gt;&lt;br /&gt;# insert a blank line above every line which matches "regex"&lt;br /&gt;sed '/regex/{x;p;x;}'&lt;br /&gt;&lt;br /&gt;# insert a blank line below every line which matches "regex"&lt;br /&gt;sed '/regex/G'&lt;br /&gt;&lt;br /&gt;# insert a blank line above and below every line which matches "regex"&lt;br /&gt;sed '/regex/{x;p;x;G;}'&lt;br /&gt;&lt;br /&gt;NUMBERING:&lt;br /&gt;&lt;br /&gt;# number each line of a file (simple left alignment). Using a tab (see&lt;br /&gt;# note on '\t' at end of file) instead of space will preserve margins.&lt;br /&gt;sed = filename | sed 'N;s/\n/\t/'&lt;br /&gt;&lt;br /&gt;# number each line of a file (number on left, right-aligned)&lt;br /&gt;sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'&lt;br /&gt;&lt;br /&gt;# number each line of file, but only print numbers if line is not blank&lt;br /&gt;sed '/./=' filename | sed '/./N; s/\n/ /'&lt;br /&gt;&lt;br /&gt;# count lines (emulates "wc -l")&lt;br /&gt;sed -n '$='&lt;br /&gt;&lt;br /&gt;TEXT CONVERSION AND SUBSTITUTION:&lt;br /&gt;&lt;br /&gt;# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format&lt;br /&gt;sed 's/.$//'               # assumes that all lines end with CR/LF&lt;br /&gt;sed 's/^M$//'              # in bash/tcsh, press Ctrl-V then Ctrl-M&lt;br /&gt;sed 's/\x0D$//'            # gsed 3.02.80, but top script is easier&lt;br /&gt;&lt;br /&gt;# IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format&lt;br /&gt;sed "s/$/`echo -e \\\r`/"            # command line under ksh&lt;br /&gt;sed 's/$'"/`echo \\\r`/"             # command line under bash&lt;br /&gt;sed "s/$/`echo \\\r`/"               # command line under zsh&lt;br /&gt;sed 's/$/\r/'                        # gsed 3.02.80&lt;br /&gt;&lt;br /&gt;# IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format&lt;br /&gt;sed "s/$//"                          # method 1&lt;br /&gt;sed -n p                             # method 2&lt;br /&gt;&lt;br /&gt;# IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format&lt;br /&gt;# Can only be done with UnxUtils sed, version 4.0.7 or higher.&lt;br /&gt;# Cannot be done with other DOS versions of sed. Use "tr" instead.&lt;br /&gt;sed "s/\r//" infile &gt;outfile         # UnxUtils sed v4.0.7 or higher&lt;br /&gt;tr -d \r &lt;infile&gt;outfile            # GNU tr version 1.22 or higher&lt;br /&gt;&lt;br /&gt;# delete leading whitespace (spaces, tabs) from front of each line&lt;br /&gt;# aligns all text flush left&lt;br /&gt;sed 's/^[ \t]*//'                    # see note on '\t' at end of file&lt;br /&gt;&lt;br /&gt;# delete trailing whitespace (spaces, tabs) from end of each line&lt;br /&gt;sed 's/[ \t]*$//'                    # see note on '\t' at end of file&lt;br /&gt;&lt;br /&gt;# delete BOTH leading and trailing whitespace from each line&lt;br /&gt;sed 's/^[ \t]*//;s/[ \t]*$//'&lt;br /&gt;&lt;br /&gt;# insert 5 blank spaces at beginning of each line (make page offset)&lt;br /&gt;sed 's/^/     /'&lt;br /&gt;&lt;br /&gt;# align all text flush right on a 79-column width&lt;br /&gt;sed -e :a -e 's/^.\{1,78\}$/ &amp;amp;/;ta'  # set at 78 plus 1 space&lt;br /&gt;&lt;br /&gt;# center all text in the middle of 79-column width. In method 1,&lt;br /&gt;# spaces at the beginning of the line are significant, and trailing&lt;br /&gt;# spaces are appended at the end of the line. In method 2, spaces at&lt;br /&gt;# the beginning of the line are discarded in centering the line, and&lt;br /&gt;# no trailing spaces appear at the end of lines.&lt;br /&gt;sed  -e :a -e 's/^.\{1,77\}$/ &amp;amp; /;ta'                     # method 1&lt;br /&gt;sed  -e :a -e 's/^.\{1,77\}$/ &amp;amp;/;ta' -e 's/\( *\)\1/\1/'  # method 2&lt;br /&gt;&lt;br /&gt;# substitute (find and replace) "foo" with "bar" on each line&lt;br /&gt;sed 's/foo/bar/'             # replaces only 1st instance in a line&lt;br /&gt;sed 's/foo/bar/4'            # replaces only 4th instance in a line&lt;br /&gt;sed 's/foo/bar/g'            # replaces ALL instances in a line&lt;br /&gt;sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # replace the next-to-last case&lt;br /&gt;sed 's/\(.*\)foo/\1bar/'            # replace only the last case&lt;br /&gt;&lt;br /&gt;# substitute "foo" with "bar" ONLY for lines which contain "baz"&lt;br /&gt;sed '/baz/s/foo/bar/g'&lt;br /&gt;&lt;br /&gt;# substitute "foo" with "bar" EXCEPT for lines which contain "baz"&lt;br /&gt;sed '/baz/!s/foo/bar/g'&lt;br /&gt;&lt;br /&gt;# change "scarlet" or "ruby" or "puce" to "red"&lt;br /&gt;sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # most seds&lt;br /&gt;gsed 's/scarlet\|ruby\|puce/red/g'                # GNU sed only&lt;br /&gt;&lt;br /&gt;# reverse order of lines (emulates "tac")&lt;br /&gt;# bug/feature in HHsed v1.5 causes blank lines to be deleted&lt;br /&gt;sed '1!G;h;$!d'               # method 1&lt;br /&gt;sed -n '1!G;h;$p'             # method 2&lt;br /&gt;&lt;br /&gt;# reverse each character on the line (emulates "rev")&lt;br /&gt;sed '/\n/!G;s/\(.\)\(.*\n\)/&amp;amp;\2\1/;//D;s/.//'&lt;br /&gt;&lt;br /&gt;# join pairs of lines side-by-side (like "paste")&lt;br /&gt;sed '$!N;s/\n/ /'&lt;br /&gt;&lt;br /&gt;# if a line ends with a backslash, append the next line to it&lt;br /&gt;sed -e :a -e '/\\$/N; s/\\\n//; ta'&lt;br /&gt;&lt;br /&gt;# if a line begins with an equal sign, append it to the previous line&lt;br /&gt;# and replace the "=" with a single space&lt;br /&gt;sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'&lt;br /&gt;&lt;br /&gt;# add commas to numeric strings, changing "1234567" to "1,234,567"&lt;br /&gt;gsed ':a;s/\B[0-9]\{3\}\&gt;/,&amp;amp;/;ta'                     # GNU sed&lt;br /&gt;sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # other seds&lt;br /&gt;&lt;br /&gt;# add commas to numbers with decimal points and minus signs (GNU sed)&lt;br /&gt;gsed ':a;s/\(^\|[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g;ta'&lt;br /&gt;&lt;br /&gt;# add a blank line every 5 lines (after lines 5, 10, 15, 20, etc.)&lt;br /&gt;gsed '0~5G'                  # GNU sed only&lt;br /&gt;sed 'n;n;n;n;G;'             # other seds&lt;br /&gt;&lt;br /&gt;SELECTIVE PRINTING OF CERTAIN LINES:&lt;br /&gt;&lt;br /&gt;# print first 10 lines of file (emulates behavior of "head")&lt;br /&gt;sed 10q&lt;br /&gt;&lt;br /&gt;# print first line of file (emulates "head -1")&lt;br /&gt;sed q&lt;br /&gt;&lt;br /&gt;# print the last 10 lines of a file (emulates "tail")&lt;br /&gt;sed -e :a -e '$q;N;11,$D;ba'&lt;br /&gt;&lt;br /&gt;# print the last 2 lines of a file (emulates "tail -2")&lt;br /&gt;sed '$!N;$!D'&lt;br /&gt;&lt;br /&gt;# print the last line of a file (emulates "tail -1")&lt;br /&gt;sed '$!d'                    # method 1&lt;br /&gt;sed -n '$p'                  # method 2&lt;br /&gt;&lt;br /&gt;# print only lines which match regular expression (emulates "grep")&lt;br /&gt;sed -n '/regexp/p'           # method 1&lt;br /&gt;sed '/regexp/!d'             # method 2&lt;br /&gt;&lt;br /&gt;# print only lines which do NOT match regexp (emulates "grep -v")&lt;br /&gt;sed -n '/regexp/!p'          # method 1, corresponds to above&lt;br /&gt;sed '/regexp/d'              # method 2, simpler syntax&lt;br /&gt;&lt;br /&gt;# print the line immediately before a regexp, but not the line&lt;br /&gt;# containing the regexp&lt;br /&gt;sed -n '/regexp/{g;1!p;};h'&lt;br /&gt;&lt;br /&gt;# print the line immediately after a regexp, but not the line&lt;br /&gt;# containing the regexp&lt;br /&gt;sed -n '/regexp/{n;p;}'&lt;br /&gt;&lt;br /&gt;# print 1 line of context before and after regexp, with line number&lt;br /&gt;# indicating where the regexp occurred (similar to "grep -A1 -B1")&lt;br /&gt;sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h&lt;br /&gt;&lt;br /&gt;# grep for AAA and BBB and CCC (in any order)&lt;br /&gt;sed '/AAA/!d; /BBB/!d; /CCC/!d'&lt;br /&gt;&lt;br /&gt;# grep for AAA and BBB and CCC (in that order)&lt;br /&gt;sed '/AAA.*BBB.*CCC/!d'&lt;br /&gt;&lt;br /&gt;# grep for AAA or BBB or CCC (emulates "egrep")&lt;br /&gt;sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # most seds&lt;br /&gt;gsed '/AAA\|BBB\|CCC/!d'                        # GNU sed only&lt;br /&gt;&lt;br /&gt;# print paragraph if it contains AAA (blank lines separate paragraphs)&lt;br /&gt;# HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts below&lt;br /&gt;sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'&lt;br /&gt;&lt;br /&gt;# print paragraph if it contains AAA and BBB and CCC (in any order)&lt;br /&gt;sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'&lt;br /&gt;&lt;br /&gt;# print paragraph if it contains AAA or BBB or CCC&lt;br /&gt;sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d&lt;br /&gt;gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # GNU sed only&lt;br /&gt;&lt;br /&gt;# print only lines of 65 characters or longer&lt;br /&gt;sed -n '/^.\{65\}/p'&lt;br /&gt;&lt;br /&gt;# print only lines of less than 65 characters&lt;br /&gt;sed -n '/^.\{65\}/!p'        # method 1, corresponds to above&lt;br /&gt;sed '/^.\{65\}/d'            # method 2, simpler syntax&lt;br /&gt;&lt;br /&gt;# print section of file from regular expression to end of file&lt;br /&gt;sed -n '/regexp/,$p'&lt;br /&gt;&lt;br /&gt;# print section of file based on line numbers (lines 8-12, inclusive)&lt;br /&gt;sed -n '8,12p'               # method 1&lt;br /&gt;sed '8,12!d'                 # method 2&lt;br /&gt;&lt;br /&gt;# print line number 52&lt;br /&gt;sed -n '52p'                 # method 1&lt;br /&gt;sed '52!d'                   # method 2&lt;br /&gt;sed '52q;d'                  # method 3, efficient on large files&lt;br /&gt;&lt;br /&gt;# beginning at line 3, print every 7th line&lt;br /&gt;gsed -n '3~7p'               # GNU sed only&lt;br /&gt;sed -n '3,${p;n;n;n;n;n;n;}' # other seds&lt;br /&gt;&lt;br /&gt;# print section of file between two regular expressions (inclusive)&lt;br /&gt;sed -n '/Iowa/,/Montana/p'             # case sensitive&lt;br /&gt;&lt;br /&gt;SELECTIVE DELETION OF CERTAIN LINES:&lt;br /&gt;&lt;br /&gt;# print all of file EXCEPT section between 2 regular expressions&lt;br /&gt;sed '/Iowa/,/Montana/d'&lt;br /&gt;&lt;br /&gt;# delete duplicate, consecutive lines from a file (emulates "uniq").&lt;br /&gt;# First line in a set of duplicate lines is kept, rest are deleted.&lt;br /&gt;sed '$!N; /^\(.*\)\n\1$/!P; D'&lt;br /&gt;&lt;br /&gt;# delete duplicate, nonconsecutive lines from a file. Beware not to&lt;br /&gt;# overflow the buffer size of the hold space, or else use GNU sed.&lt;br /&gt;sed -n 'G; s/\n/&amp;amp;&amp;amp;/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'&lt;br /&gt;&lt;br /&gt;# delete all lines except duplicate lines (emulates "uniq -d").&lt;br /&gt;sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'&lt;br /&gt;&lt;br /&gt;# delete the first 10 lines of a file&lt;br /&gt;sed '1,10d'&lt;br /&gt;&lt;br /&gt;# delete the last line of a file&lt;br /&gt;sed '$d'&lt;br /&gt;&lt;br /&gt;# delete the last 2 lines of a file&lt;br /&gt;sed 'N;$!P;$!D;$d'&lt;br /&gt;&lt;br /&gt;# delete the last 10 lines of a file&lt;br /&gt;sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1&lt;br /&gt;sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2&lt;br /&gt;&lt;br /&gt;# delete every 8th line&lt;br /&gt;gsed '0~8d'                           # GNU sed only&lt;br /&gt;sed 'n;n;n;n;n;n;n;d;'                # other seds&lt;br /&gt;&lt;br /&gt;# delete ALL blank lines from a file (same as "grep '.' ")&lt;br /&gt;sed '/^$/d'                           # method 1&lt;br /&gt;sed '/./!d'                           # method 2&lt;br /&gt;&lt;br /&gt;# delete all CONSECUTIVE blank lines from file except the first; also&lt;br /&gt;# deletes all blank lines from top and end of file (emulates "cat -s")&lt;br /&gt;sed '/./,/^$/!d'          # method 1, allows 0 blanks at top, 1 at EOF&lt;br /&gt;sed '/^$/N;/\n$/D'        # method 2, allows 1 blank at top, 0 at EOF&lt;br /&gt;&lt;br /&gt;# delete all CONSECUTIVE blank lines from file except the first 2:&lt;br /&gt;sed '/^$/N;/\n$/N;//D'&lt;br /&gt;&lt;br /&gt;# delete all leading blank lines at top of file&lt;br /&gt;sed '/./,$!d'&lt;br /&gt;&lt;br /&gt;# delete all trailing blank lines at end of file&lt;br /&gt;sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # works on all seds&lt;br /&gt;sed -e :a -e '/^\n*$/N;/\n$/ba'        # ditto, except for gsed 3.02*&lt;br /&gt;&lt;br /&gt;# delete the last line of each paragraph&lt;br /&gt;sed -n '/^$/{p;h;};/./{x;/./p;}'&lt;br /&gt;&lt;br /&gt;SPECIAL APPLICATIONS:&lt;br /&gt;&lt;br /&gt;# remove nroff overstrikes (char, backspace) from man pages. The 'echo'&lt;br /&gt;# command may need an -e switch if you use Unix System V or bash shell.&lt;br /&gt;sed "s/.`echo \\\b`//g"    # double quotes required for Unix environment&lt;br /&gt;sed 's/.^H//g'             # in bash/tcsh, press Ctrl-V and then Ctrl-H&lt;br /&gt;sed 's/.\x08//g'           # hex expression for sed v1.5&lt;br /&gt;&lt;br /&gt;# get Usenet/e-mail message header&lt;br /&gt;sed '/^$/q'                # deletes everything after first blank line&lt;br /&gt;&lt;br /&gt;# get Usenet/e-mail message body&lt;br /&gt;sed '1,/^$/d'              # deletes everything up to first blank line&lt;br /&gt;&lt;br /&gt;# get Subject header, but remove initial "Subject: " portion&lt;br /&gt;sed '/^Subject: */!d; s///;q'&lt;br /&gt;&lt;br /&gt;# get return address header&lt;br /&gt;sed '/^Reply-To:/q; /^From:/h; /./d;g;q'&lt;br /&gt;&lt;br /&gt;# parse out the address proper. Pulls out the e-mail address by itself&lt;br /&gt;# from the 1-line return address header (see preceding script)&lt;br /&gt;sed 's/ *(.*)//; s/&gt;.*//; s/.*[:&lt;] *//'  # add a leading angle bracket and space to each line (quote a message) sed 's/^/&gt; /'&lt;br /&gt;&lt;br /&gt;# delete leading angle bracket &amp;amp; space from each line (unquote a message)&lt;br /&gt;sed 's/^&gt; //'&lt;br /&gt;&lt;br /&gt;# remove most HTML tags (accommodates multiple-line tags)&lt;br /&gt;sed -e :a -e 's/&lt;[^&gt;]*&gt;//g;/&lt;/infile&gt;zipup.bat&lt;br /&gt;dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" &gt;&gt;zipup.bat&lt;br /&gt;&lt;br /&gt;TYPICAL USE: Sed takes one or more editing commands and applies all of&lt;br /&gt;them, in sequence, to each line of input. After all the commands have&lt;br /&gt;been applied to the first input line, that line is output and a second&lt;br /&gt;input line is taken for processing, and the cycle repeats. The&lt;br /&gt;preceding examples assume that input comes from the standard input&lt;br /&gt;device (i.e, the console, normally this will be piped input). One or&lt;br /&gt;more filenames can be appended to the command line if the input does&lt;br /&gt;not come from stdin. Output is sent to stdout (the screen). Thus:&lt;br /&gt;&lt;br /&gt;cat filename | sed '10q'        # uses piped input&lt;br /&gt;sed '10q' filename              # same effect, avoids a useless "cat"&lt;br /&gt;sed '10q' filename &gt; newfile    # redirects output to disk&lt;br /&gt;&lt;br /&gt;For additional syntax instructions, including the way to apply editing&lt;br /&gt;commands from a disk file instead of the command line, consult "sed &amp;amp;&lt;br /&gt;awk, 2nd Edition," by Dale Dougherty and Arnold Robbins (O'Reilly,&lt;br /&gt;1997; http://www.ora.com), "UNIX Text Processing," by Dale Dougherty&lt;br /&gt;and Tim O'Reilly (Hayden Books, 1987) or the tutorials by Mike Arst&lt;br /&gt;distributed in U-SEDIT2.ZIP (many sites). To fully exploit the power&lt;br /&gt;of sed, one must understand "regular expressions." For this, see&lt;br /&gt;"Mastering Regular Expressions" by Jeffrey Friedl (O'Reilly, 1997).&lt;br /&gt;The manual ("man") pages on Unix systems may be helpful (try "man&lt;br /&gt;sed", "man regexp", or the subsection on regular expressions in "man&lt;br /&gt;ed"), but man pages are notoriously difficult. They are not written to&lt;br /&gt;teach sed use or regexps to first-time users, but as a reference text&lt;br /&gt;for those already acquainted with these tools.&lt;br /&gt;&lt;br /&gt;QUOTING SYNTAX: The preceding examples use single quotes ('...')&lt;br /&gt;instead of double quotes ("...") to enclose editing commands, since&lt;br /&gt;sed is typically used on a Unix platform. Single quotes prevent the&lt;br /&gt;Unix shell from intrepreting the dollar sign ($) and backquotes&lt;br /&gt;(`...`), which are expanded by the shell if they are enclosed in&lt;br /&gt;double quotes. Users of the "csh" shell and derivatives will also need&lt;br /&gt;to quote the exclamation mark (!) with the backslash (i.e., \!) to&lt;br /&gt;properly run the examples listed above, even within single quotes.&lt;br /&gt;Versions of sed written for DOS invariably require double quotes&lt;br /&gt;("...") instead of single quotes to enclose editing commands.&lt;br /&gt;&lt;br /&gt;USE OF '\t' IN SED SCRIPTS: For clarity in documentation, we have used&lt;br /&gt;the expression '\t' to indicate a tab character (0x09) in the scripts.&lt;br /&gt;However, most versions of sed do not recognize the '\t' abbreviation,&lt;br /&gt;so when typing these scripts from the command line, you should press&lt;br /&gt;the TAB key instead. '\t' is supported as a regular expression&lt;br /&gt;metacharacter in awk, perl, and HHsed, sedmod, and GNU sed v3.02.80.&lt;br /&gt;&lt;br /&gt;VERSIONS OF SED: Versions of sed do differ, and some slight syntax&lt;br /&gt;variation is to be expected. In particular, most do not support the&lt;br /&gt;use of labels (:name) or branch instructions (b,t) within editing&lt;br /&gt;commands, except at the end of those commands. We have used the syntax&lt;br /&gt;which will be portable to most users of sed, even though the popular&lt;br /&gt;GNU versions of sed allow a more succinct syntax. When the reader sees&lt;br /&gt;a fairly long command such as this:&lt;br /&gt;&lt;br /&gt; sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d&lt;br /&gt;&lt;br /&gt;it is heartening to know that GNU sed will let you reduce it to:&lt;br /&gt;&lt;br /&gt; sed '/AAA/b;/BBB/b;/CCC/b;d'      # or even&lt;br /&gt; sed '/AAA\|BBB\|CCC/b;d'&lt;br /&gt;&lt;br /&gt;In addition, remember that while many versions of sed accept a command&lt;br /&gt;like "/one/ s/RE1/RE2/", some do NOT allow "/one/! s/RE1/RE2/", which&lt;br /&gt;contains space before the 's'. Omit the space when typing the command.&lt;br /&gt;&lt;br /&gt;OPTIMIZING FOR SPEED: If execution speed needs to be increased (due to&lt;br /&gt;large input files or slow processors or hard disks), substitution will&lt;br /&gt;be executed more quickly if the "find" expression is specified before&lt;br /&gt;giving the "s/.../.../" instruction. Thus:&lt;br /&gt;&lt;br /&gt; sed 's/foo/bar/g' filename         # standard replace command&lt;br /&gt; sed '/foo/ s/foo/bar/g' filename   # executes more quickly&lt;br /&gt; sed '/foo/ s//bar/g' filename      # shorthand sed syntax&lt;br /&gt;&lt;br /&gt;On line selection or deletion in which you only need to output lines&lt;br /&gt;from the first part of the file, a "quit" command (q) in the script&lt;br /&gt;will drastically reduce processing time for large files. Thus:&lt;br /&gt;&lt;br /&gt; sed -n '45,50p' filename           # print line nos. 45-50 of a file&lt;br /&gt; sed -n '51q;45,50p' filename       # same, but executes much faster&lt;br /&gt;&lt;br /&gt;If you have any additional scripts to contribute or if you find errors&lt;br /&gt;in this document, please send e-mail to the compiler. Indicate the&lt;br /&gt;version of sed you used, the operating system it was compiled for, and&lt;br /&gt;the nature of the problem. Various scripts in this file were written&lt;br /&gt;or contributed by:&lt;br /&gt;&lt;br /&gt;Al Aab &lt;af137@freenet.toronto.on.ca&gt;   # "seders" list moderator&lt;br /&gt;Edgar Allen &lt;era@sky.net&gt;              # various&lt;br /&gt;Yiorgos Adamopoulos &lt;adamo@softlab.ece.ntua.gr&gt;&lt;br /&gt;Dale Dougherty &lt;dale@songline.com&gt;     # author of "sed &amp;amp; awk"&lt;br /&gt;Carlos Duarte &lt;cdua@algos.inesc.pt&gt;    # author of "do it with sed"&lt;br /&gt;Eric Pement &lt;pemente@northpark.edu&gt;    # author of this document&lt;br /&gt;Ken Pizzini &lt;ken@halcyon.com&gt;          # author of GNU sed v3.02&lt;br /&gt;S.G. Ravenhall &lt;stew.ravenhall@totalise.co.uk&gt; # great de-html script&lt;br /&gt;Greg Ubben &lt;gsu@romulus.ncsc.mil&gt;      # many contributions &amp;amp; much help&lt;br /&gt;-------------------------------------------------------------------------&lt;br /&gt;&lt;/gsu@romulus.ncsc.mil&gt;&lt;/stew.ravenhall@totalise.co.uk&gt;&lt;/ken@halcyon.com&gt;&lt;/pemente@northpark.edu&gt;&lt;/cdua@algos.inesc.pt&gt;&lt;/dale@songline.com&gt;&lt;/adamo@softlab.ece.ntua.gr&gt;&lt;/era@sky.net&gt;&lt;/af137@freenet.toronto.on.ca&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-4437740795516670092?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/4437740795516670092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=4437740795516670092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4437740795516670092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4437740795516670092'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/sed-cheat-sheet.html' title='sed cheat sheet'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3123724820268106796</id><published>2008-06-23T08:06:00.000-07:00</published><updated>2008-06-23T08:59:59.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feed my cat'/><category scheme='http://www.blogger.com/atom/ns#' term='new payment model'/><title type='text'>Code Bounties aka. presents</title><content type='html'>Like &lt;a href="http://feeds.feedburner.com/NeurosTechnology"&gt;these&lt;/a&gt; get me excited.  Of course, as usual, I missed them, or it seems as such, but listing projects with "we will pay this much for you to do them" is a lot more modern and will probably result in better results than the "i have a project; how cheap can i get someone to screw up it's development" that most developer&lt;a href="http://rentacoder.com/"&gt; slave&lt;/a&gt; &lt;a href="http://www.getacoder.com/"&gt;auction&lt;/a&gt; sites follow.&lt;br /&gt;&lt;br /&gt;A recent discussion with a possible employer I was having on an above mentioned auction site resulted in them ceasing their discussions with me about the possibility of my working (and getting paid to work on!) the project. I am unsure of why the stopped talking with me, but after a few mailings with them and me STILL HAVING NO CLEAR IDEA what the hell they were wanting me to do and them DEMANDING how much I was willing to do it for, I told them to tell me how much they wanted to  pay me.&lt;br /&gt;&lt;br /&gt;I said, you will get what you pay for.  Well, I didn't say it exactly like that, but I did ensure them that the quality of the resulting product will be proportional to the proposed and actual budget that they were willing to commit to over the lifespan of the development.&lt;br /&gt;&lt;br /&gt;Seems like people don't like way sort of dealings with a tech-slave.   At least this one didn't.  They ceased communication and negotiation with me; I still have no clear idea of what they wanted.  I even asked them to draw me a diagram.&lt;br /&gt;&lt;br /&gt;But, back to the subject; Code Bounties are cool and I think more companies and projects should offer them.  The amounts offered for the Neuros projects look pretty reasonable somewhat in line with an expected livable salary for a 'Code Bounty' hunter, given the skill set and experience required to complete a the projects.&lt;br /&gt;&lt;br /&gt;And it's better than some dick expecting to get some desperate loser to do their work for them for $100 because they won't accept a bid any higher than that...BECAUSE THEY DON"T HAVE TO.&lt;br /&gt;&lt;br /&gt;For a project manager to put up on a listing "I AM WILLING TO PAY $4000 TO HAVE THIS DONE TO MY PROJECT" shows some commitment and ALSO SHOWS that they are expecting a professional to complete this project and also THEY have thought about and done some research into how much a project like that should cost.&lt;br /&gt;&lt;br /&gt;I mean, if you want your developers to be able to pay their power bills.  And feed their cats.  And some can't really work in offices day to day to day to day to day to day, so some of us NEED AN WAY TO MAKE A LIVING WAGE WITH OUR SKILLS FROM DECENT EMPLOYERS.  I'm sure there are some out there.&lt;br /&gt;&lt;br /&gt;But then again I hate the slave auction model...and my cat KILLER is&lt;br /&gt;&lt;br /&gt;HUNGRY.&lt;br /&gt;&lt;br /&gt;Well, not so much lately, but he will be again&lt;br /&gt;&lt;br /&gt;soon.&lt;br /&gt;&lt;br /&gt;so, EMPLOYERS, maybe you might want to think about payment and proposal models for software development projects using open source software.  i presented one, now you can present the other...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3123724820268106796?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3123724820268106796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3123724820268106796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3123724820268106796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3123724820268106796'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/code-bounties-aka-presents.html' title='Code Bounties aka. presents'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2269110100824834618</id><published>2008-06-22T19:52:00.000-07:00</published><updated>2008-06-22T20:07:21.107-07:00</updated><title type='text'>the rosetta code?</title><content type='html'>&lt;p&gt;or just plain creepy?  &lt;a href="http://www.cse.unsw.edu.au/~dons/data/Basics.html"&gt;[source]&lt;/a&gt;&lt;/p&gt;&lt;p&gt;(actually, &lt;a href="http://www.cse.unsw.edu.au/~dons/data/"&gt;there's a bunch more&lt;/a&gt; that's fascinating me too...)&lt;/p&gt;-- Some unix-like tools written in simple, clean Haskell&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-- Author: Don Stewart, 2006, http://www.cse.unsw.edu.au/~dons&lt;br /&gt;-- Free for any use.&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;import Data.List&lt;br /&gt;import Data.Char&lt;br /&gt;import System.IO&lt;br /&gt;import Text.Printf&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;-- First, two helpers&lt;br /&gt;--&lt;br /&gt;io f    = interact (unlines . f . lines)&lt;br /&gt;showln  = (++ "\n") . show&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- The 'cat' program&lt;br /&gt;--&lt;br /&gt;cat     = interact id&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Sort a file&lt;br /&gt;--&lt;br /&gt;sort'   = io sort&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- remove duplicate lines from a file (like uniq)&lt;br /&gt;--&lt;br /&gt;uniq    = io nub&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;-- repeat the input file infintely &lt;br /&gt;--&lt;br /&gt;rpt     = interact cycle&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Return the head -10 line of a file&lt;br /&gt;--&lt;br /&gt;take'   = io (take 10)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Remove the first 10 lines of a file&lt;br /&gt;--&lt;br /&gt;drop'   = io (drop 10)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Return the head -1 line of a file&lt;br /&gt;--&lt;br /&gt;head'   = io (return . head)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Return the tail -1 line of a file&lt;br /&gt;--&lt;br /&gt;tail'   = io (return . last)&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;-- Reverse lines in a file (tac)&lt;br /&gt;--&lt;br /&gt;tac     = io reverse&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Reverse characters on each line (rev)&lt;br /&gt;--&lt;br /&gt;rev     = io (map reverse)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Reverse words on each line&lt;br /&gt;--&lt;br /&gt;revw    = io $ map (unwords. reverse . words)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Count number of characters in a file (like wc -c)&lt;br /&gt;--&lt;br /&gt;wc_c    = interact (showln . length)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Count number of lines in a file, like wc -l&lt;br /&gt;--&lt;br /&gt;wc_l    = interact (showln . length . lines)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Count number of words in a file (like wc -w)&lt;br /&gt;--&lt;br /&gt;wc_w    = interact (showln . length . words)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- double space a file&lt;br /&gt;--&lt;br /&gt;space   = io (intersperse "")&lt;br /&gt;&lt;br /&gt;-- &lt;br /&gt;-- undo double space&lt;br /&gt;--&lt;br /&gt;unspace = io $ filter (not.null)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- remove the first occurence of the line "str"&lt;br /&gt;--&lt;br /&gt;remove  = io (delete "str")&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- make a file all upper case&lt;br /&gt;--&lt;br /&gt;upper   = interact (map toUpper)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- remove leading space from each line&lt;br /&gt;--&lt;br /&gt;clean   = io $ map (dropWhile isSpace)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- remove trailing whitespace&lt;br /&gt;--&lt;br /&gt;clean'  = io (map f)&lt;br /&gt;    where f = reverse . dropWhile isSpace . reverse&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- delete leading and trailing whitespace&lt;br /&gt;--&lt;br /&gt;clean'' = io $ map (f . f)&lt;br /&gt;    where f = reverse . dropWhile isSpace&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- insert blank space at beginning of each line&lt;br /&gt;--&lt;br /&gt;blank   = io $ map (s ++)&lt;br /&gt;    where s = replicate 8 ' '&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- join lines of a file&lt;br /&gt;--&lt;br /&gt;join    = io (return . concat)&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Translate the letter 'e' to '*', like tr 'e' '*' (or y// in sed)&lt;br /&gt;--&lt;br /&gt;y       = interact (map f)&lt;br /&gt;    where f 'e' = '*'&lt;br /&gt;          f  c  =  c&lt;br /&gt;--&lt;br /&gt;-- Filter the letter 'e' from a file, like tr -d 'e'&lt;br /&gt;--&lt;br /&gt;tr      = interact $ filter (/= 'e')&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- grep lines matching "^foo" from a file&lt;br /&gt;--&lt;br /&gt;grep    = io $ filter (isPrefixOf "foo")&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- grep lines that don't match "^foo" (grep -v)&lt;br /&gt;--&lt;br /&gt;grep_v  = io $ filter (not . isPrefixOf "foo")&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- number each line of a file&lt;br /&gt;--&lt;br /&gt;num     = io $ zipWith (printf "%3d %s") [(1::Int)..]&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;-- Compute a simple cksum of a file&lt;br /&gt;--&lt;br /&gt;cksum   = interact $ showln . foldl' k 5381&lt;br /&gt;    where k h c = h * 33 + ord c&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2269110100824834618?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2269110100824834618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2269110100824834618' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2269110100824834618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2269110100824834618'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/rosetta-code.html' title='the rosetta code?'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5691216376843937538</id><published>2008-06-22T13:54:00.000-07:00</published><updated>2008-06-22T14:44:04.449-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='typeitin'/><category scheme='http://www.blogger.com/atom/ns#' term='yourself'/><category scheme='http://www.blogger.com/atom/ns#' term='youcan'/><title type='text'>HOTWO: draw OpenGL on the X11 root window</title><content type='html'>&lt;p align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3ods4fmRhkU/SF688EBhkVI/AAAAAAAAAPY/IUOJNorY9Cs/s1600-h/howto--draw-on-the-root-X-window.jpg"&gt;it's just that easy&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3ods4fmRhkU/SF688EBhkVI/AAAAAAAAAPY/IUOJNorY9Cs/s1600-h/howto--draw-on-the-root-X-window.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_3ods4fmRhkU/SF688EBhkVI/AAAAAAAAAPY/IUOJNorY9Cs/s400/howto--draw-on-the-root-X-window.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5214813158599922002" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://code.google.com/p/rootbox/downloads/list"&gt;http://code.google.com/p/rootbox/downloads/list&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://code.google.com/p/rootbox/wiki/PageName"&gt;http://code.google.com/p/rootbox/wiki/PageName&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;X&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5691216376843937538?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5691216376843937538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5691216376843937538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5691216376843937538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5691216376843937538'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/hotwo-draw-opengl-on-x11-root-window.html' title='HOTWO: draw OpenGL on the X11 root window'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3ods4fmRhkU/SF688EBhkVI/AAAAAAAAAPY/IUOJNorY9Cs/s72-c/howto--draw-on-the-root-X-window.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-7045457105284309064</id><published>2008-06-17T11:56:00.001-07:00</published><updated>2008-06-17T11:59:27.334-07:00</updated><title type='text'>Algebraic Data Types In Javascript</title><content type='html'>Kinda like Haskell, but more ugly... &lt;p&gt;&lt;p&gt;&lt;a href="http://w3future.com/weblog/stories/2008/06/16/adtinjs.xml"&gt;http://w3future.com/weblog/stories/2008/06/16/adtinjs.xml&lt;/a&gt;  (by &lt;a href="http://en.q42.nl/about-us"&gt;http://en.q42.nl/about-us&lt;/a&gt;) &lt;p&gt;I guess I'd better start (re)learning my javascript again...it looks&lt;br /&gt;like I have to make a website before anybody will take me seriously...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-7045457105284309064?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/7045457105284309064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=7045457105284309064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7045457105284309064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7045457105284309064'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/algebraic-data-types-in-javascript.html' title='Algebraic Data Types In Javascript'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1965614794734245160</id><published>2008-06-16T13:37:00.001-07:00</published><updated>2008-06-16T13:43:12.962-07:00</updated><title type='text'>Fwd: The Inevitable Rise and Liberation of NiggyTardust! CD / Vinyl / iTunes + Bonus Tracks!!</title><content type='html'>not much for advertising, but SAUL WILLIAMS kicks serious ass as an artist, plus 'The Rise...' was done with Trent Reznor on production, so I can't really say that I can't promote a combo like that!&lt;br /&gt;--kruhft hasbig (and sorry for seriously swearing!)&lt;br /&gt;&lt;br /&gt;---------- Forwarded message ----------&lt;br /&gt;&lt;span class="gmail_quote"&gt;From: &lt;b class="gmail_sendername"&gt;Saul Williams Email List&lt;/b&gt; &amp;lt;&lt;a href="mailto:email_list@saulwilliams.com"&gt;email_list@saulwilliams.com&lt;/a&gt;&amp;gt;&lt;br /&gt;Date: Jun 10, 2008 10:48 AM&lt;br /&gt;Subject: The Inevitable Rise and Liberation of NiggyTardust! CD / Vinyl / iTunes + Bonus Tracks!!&lt;br /&gt;To: &lt;a href="mailto:burton.samograd@gmail.com"&gt;burton.samograd@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="gmail_quote"&gt;&lt;/span&gt;&lt;div text="#FFFFFF"&gt;&lt;table height="435" cellspacing="0" cellpadding="0" width="535" align="center" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="793" bgcolor="#000000" height="227"&gt;&lt;table cellspacing="0" cellpadding="5" width="535" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="753" background="http://saulwilliams.com/htmlemail/background_1.gif"&gt;&lt;table cellspacing="4" cellpadding="5" width="535" align="center" bgcolor="#0d0d0d" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" color="#000000"&gt;&lt;div align="center"&gt;&lt;img height="415" src="http://saulwilliams.com/htmlemail/eyes1.jpg" width="530" border="0" /&gt;&lt;br /&gt;&lt;table cellspacing="8" cellpadding="2" width="540" border="0"&gt;&lt;tbody&gt;&lt;tr  style="color:#0d0d0d;"&gt;&lt;td style="COLOR: #000000" valign="top"&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;span style="font-size:0;"&gt;The Inevitable Rise&lt;br /&gt;and Liberation of NiggyTardust!&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://tinyurl.com/4uak4g" target="_blank"&gt;&lt;img height="36" src="http://saulwilliams.com/images/itunes2.gif" width="116" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:0;"&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://tinyurl.com/4uak4g" target="_blank"&gt;OUT NOW on iTunes&lt;/a&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;&lt;strong&gt;Available July 8th on CD and Limited Edition Double Vinyl Album with 5 Bonus Tracks!&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" bg style="color:#000000;"&gt;&lt;img height="224" src="http://saulwilliams.com/htmlemail/niggyalbum_cover_home.jpg" width="299" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr  style="color:#0d0d0d;"&gt;&lt;td valign="top" colspan="2"  style="color:#000000;"&gt;&lt;span style="font-size:0;"&gt;&lt;strong&gt;&lt;strong&gt;Track list:&lt;/strong&gt;&lt;br /&gt;&lt;/strong&gt;Black History Month, Convict Colony, Tr(n)igger, Sunday Bloody Sunday, Break, Niggy Tardust, DNA, WTF!, Scared Money,Raw, Skin of a Drum, No One Ever Does, Banged and Blown Through, Raised to be Lowered, The Ritual&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Bonus Tracks:&lt;/strong&gt;&lt;br /&gt;Pedagogue of Young Gods&lt;br /&gt;World on Wheels&lt;br /&gt;Can't Hide Love&lt;br /&gt;Gunshots by Computer&lt;br /&gt;List of Demands (Reparations)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table cellspacing="8" cellpadding="2" width="540" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" bgcolor="#0d0d0d"&gt;&lt;div align="center"&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://www.saulwilliams.com" target="_blank"&gt;&lt;img height="181" src="http://saulwilliams.com/htmlemail/niggyscreenshot1.jpg" width="260" vspace="4" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;The NEW WEBSITE&lt;br /&gt;is ONLINE NOW&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;Videos, performance dates,&lt;br /&gt;the latest news and photos.&lt;br /&gt;&lt;span style="font-size:0;"&gt;and a word to the wise...&lt;br /&gt;arrow keys, shift and spacebar.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://www.saulwilliams.com" target="_blank"&gt;&lt;span style="font-size:0;"&gt;WWW.SAULWILLIAMS.COM&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="top" bgcolor="#0d0d0d"&gt;&lt;div align="center"&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://www.saulwilliams.com/forum" target="_blank"&gt;&lt;img height="181" src="http://saulwilliams.com/htmlemail/forum1.jpg" width="260" vspace="4" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;The NEW FORUM at SaulWilliams.com is LIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;Post poems, talk music, spead love&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:0;"&gt;and recipes, be kind...&lt;br /&gt;Saul will be checking in to say hi,&lt;br /&gt;read your work, and share thoughts.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/clicktracker.php?cd=725&amp;amp;ld=1&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;url=http://www.saulwilliams.com/forum" target="_blank"&gt;&lt;span style="font-size:0;"&gt;WWW.SAULWILLIAMS.COM/FORUM&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" bgcolor="#000000"&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;p.s. Go Obama!!!!!!!!!!!!!!!!! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/emailforwarding.php?cd=725&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;rud=-1" target="_blank"&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;"&gt;FORWARD THIS EMAIL TO A FRIEND&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table cellspacing="4" cellpadding="5" width="571" align="center" bgcolor="#0d0d0d" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="553" bgcolor="#000000"&gt;&lt;div align="center"&gt;&lt;img height="415" src="http://saulwilliams.com/htmlemail/eyes1.jpg" width="530" border="0" /&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/unsubscribe.php?cd=725&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf" target="_blank"&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;"&gt;Click here to be removed from Saul Williams' list&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="center"&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://server1.streamsend.com/newstreamsend/unsubscribe.php?cd=725&amp;amp;md=199&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf" target="_blank"&gt;&lt;span style="font-family:Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://server1.streamsend.com/newstreamsend/view.php?cd=725&amp;amp;ld=1&amp;amp;ud=bcb1354e7afa35f104495cfc276adabf&amp;amp;md=199" /&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;Burton Samograd - ${psitechnologies[indirector]}&lt;br /&gt;&lt;a href="mailto:burton.samograd@gmail.com"&gt;burton.samograd@gmail.com&lt;/a&gt;, &lt;a href="mailto:psitechnologies@gmail.com"&gt;psitechnologies@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://burton.samograd.googlepages.com/"&gt;http://burton.samograd.googlepages.com/&lt;/a&gt;,. &lt;a href="http://psitechnologies.googlepages.com/"&gt;http://psitechnologies.googlepages.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1965614794734245160?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1965614794734245160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1965614794734245160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1965614794734245160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1965614794734245160'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/06/fwd-inevitable-rise-and-liberation-of.html' title='Fwd: The Inevitable Rise and Liberation of NiggyTardust! CD / Vinyl / iTunes + Bonus Tracks!!'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-8307886636326792637</id><published>2008-05-27T19:24:00.000-07:00</published><updated>2008-05-27T19:25:24.245-07:00</updated><title type='text'>Request for an LG-490 Software Development Kit - 2008</title><content type='html'>guess i'll just have to&lt;br /&gt;&lt;br /&gt;hackit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---------- Forwarded message ----------&lt;br /&gt;From: Burton Samograd &lt;burton.samograd@gmail.com&gt;&lt;br /&gt;&lt;br /&gt;- Hide quoted text -&lt;br /&gt;Date: Tue, May 27, 2008 at 8:23 PM&lt;br /&gt;Subject: Re: [218411:150149]&lt;br /&gt;To: jennifer &lt;customerservice@lge.com&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok.  Thank you for your time.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;Burton Samograd&lt;br /&gt;&lt;br /&gt;On Tue, May 27, 2008 at 12:48 PM, jennifer &lt;customerservice@lge.com&gt; wrote:&lt;br /&gt;&gt; Dear Customer,&lt;br /&gt;&gt;&lt;br /&gt;&gt; I do apologize, but we do not have any of these development kits. I do not know who you would need to contact for this sort of issue.&lt;br /&gt;&gt;&lt;br /&gt;&gt; If you have other questions or concerns, please do not hesitate to contact us again either via email, or by calling our customer service division at 800-793-8896 at your convenience.&lt;br /&gt;&gt;&lt;br /&gt;&gt; Jennifer S&lt;br /&gt;&gt; Electronic Correspondence Executive (ECE)&lt;br /&gt;&gt; LG Electronics USA&lt;br /&gt;&gt; 800-793-8896&lt;br /&gt;&gt;&lt;br /&gt;&gt;&lt;br /&gt;&gt; -----Original Message-----&lt;br /&gt;&gt; From: "Burton Samograd" &lt;burton.samograd@gmail.com&gt;&lt;br /&gt;&gt; Received: 5/27/2008 12:33 PM&lt;br /&gt;&gt; To: "jennifer" &lt;customerservice@lge.com&gt;&lt;br /&gt;&gt; Subject: Re: [218411:150118]&lt;br /&gt;&gt;&lt;br /&gt;&gt; Hi Jennifer,&lt;br /&gt;&gt;&lt;br /&gt;&gt; I currently have 2 LG phones that I am interested in developing for.&lt;br /&gt;&gt; The first is a 'Telus' phone, with an ESN of 02105371663 and this is a&lt;br /&gt;&gt; Canadian phone.&lt;br /&gt;&gt;&lt;br /&gt;&gt; The second is one that I ordered from the USA, second hand from Ebay,&lt;br /&gt;&gt; which I do not connect to any phone network. It is from a provider&lt;br /&gt;&gt; named 'Alltel'. This is the info from the backplate:&lt;br /&gt;&gt;&lt;br /&gt;&gt; Model No: AX490a&lt;br /&gt;&gt; S/N: 610KPJP0216932&lt;br /&gt;&gt; ESN: HEX 15AF6B25&lt;br /&gt;&gt;&lt;br /&gt;&gt; The first is my personal phone; I do not wish to do much delopment for&lt;br /&gt;&gt; that model. The second phone listed would be the one that most, if not&lt;br /&gt;&gt; all of my software development would be for, but if I could obtain&lt;br /&gt;&gt; info on the first one, I would be happy with that as well.&lt;br /&gt;&gt;&lt;br /&gt;&gt; Thank you for your reply and I hope I hear from you soon.&lt;br /&gt;&gt;&lt;br /&gt;&gt; --&lt;br /&gt;&gt; Burton Samograd&lt;br /&gt;&gt; burton.samograd@gmail.com&lt;br /&gt;&gt; http://burton.samograd.googlepages.com&lt;br /&gt;&gt;&lt;br /&gt;&gt; On Tue, May 27, 2008 at 11:06 AM, jennifer &lt;customerservice@lge.com&gt; wrote:&lt;br /&gt;&gt;&gt; Dear Customer,&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; We are delighted to hear from you as our Valued Customer. Please provide me with the esn/imei # so I can verify you have a phone made for the United States and can further assist you.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; If you have other questions or concerns, please do not hesitate to contact us again either via email, or by calling our customer service division at 800-793-8896 at your convenience.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; Jennifer S&lt;br /&gt;&gt;&gt; Electronic Correspondence Executive (ECE)&lt;br /&gt;&gt;&gt; LG Electronics USA&lt;br /&gt;&gt;&gt; 800-793-8896&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; -----Original Message-----&lt;br /&gt;&gt;&gt; Name Burton Samograd (burton.samograd@gmail.com)&lt;br /&gt;&gt;&gt; Country/Region U.S.A. l Customer Information l&lt;br /&gt;&gt;&gt; Received Date 5/26/2008&lt;br /&gt;&gt;&gt; Status of inquiry Received&lt;br /&gt;&gt;&gt; The type of inquiry Software/Hardware updates&lt;br /&gt;&gt;&gt; Product / Model No. CDMA Mobile Phones/490&lt;br /&gt;&gt;&gt; Person in charge customerservice (customerservice@lge.com)&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; Hello,&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; I was wondering how I might be able to obtain a Software Development Kit (SDK) for my LG-490 telephone. I love the phone, but I feel that the software could use a bit of updating to compliment the amazing and durable hardware that you have developed.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; A free development kit would be best, since I already have the phone and a link cable to do software updates and downloads. I use Linux, Windows and (possibly) Sun/Solaris, so if you have tools that support those platforms, that would be a major bonus.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; I would also need some full documentation for your Java API's so as to use the internal hardware to it's maximum potential; some basic tutorials on how to write some simple applications and how to get them installed and running on the phone would also be *very* helpful.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; Thanks and I hope that you will be able to provide an SDK to me to help with the enhancement of you otherwise amazing product. You can communicate with me VIA email at burton.samograd@gmail.com about this request if you would like any other info or a better idea of what I am expecting from an SDK.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; If you do not have a FREE development kit, please tell me how much it will cost to develop software for your hardware and I will add it to my working budget (which, unfortunately is very low at the moment as I am looking for startup funding, which I cannot guarantee will, if ever, arrive).&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; Thank you. I hope you can fulfill my request in a timely manner, and I hope you have a nice day.&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&gt; --&lt;br /&gt;&gt;&gt; Burton Samograd&lt;br /&gt;&gt;&gt; burton.samograd@gmail.com&lt;br /&gt;&gt;&gt; http://burtonsamograd.googlepages.com&lt;br /&gt;&gt;&gt;&lt;br /&gt;&gt;&lt;br /&gt;&gt;&lt;br /&gt;&gt;&lt;br /&gt;&gt; --&lt;br /&gt;&gt; Burton Samograd&lt;br /&gt;&gt; burton.samograd@gmail.com&lt;br /&gt;&gt; http://burton.samograd.googlepages.com&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;Burton Samograd&lt;br /&gt;burton.samograd@gmail.com&lt;br /&gt;http://burton.samograd.googlepages.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;- Hide quoted text -&lt;br /&gt;Burton Samograd&lt;br /&gt;burton.samograd@gmail.com&lt;br /&gt;http://burton.samograd.googlepages.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-8307886636326792637?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/8307886636326792637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=8307886636326792637' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8307886636326792637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8307886636326792637'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/05/request-for-lg-490-software-development.html' title='Request for an LG-490 Software Development Kit - 2008'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-4971716785459808149</id><published>2008-05-27T11:24:00.001-07:00</published><updated>2008-05-27T11:30:43.186-07:00</updated><title type='text'>narritive-rechaining: new web piece</title><content type='html'>A recent walk to the back corner of the main library of the University of Regina found me a book, title paraphrased as "The Dictionary of Psychology and Mental Disorders".  As I searched the book, I used my cameraphone to take notes, with which, I have assembled &lt;a href=http://burton.samograd.googlepages.com/narritive-rechaining&gt;narritive-rechaining&lt;/a&gt;, both a pseudo-web-art piece, as well as a cognitive theory that I was *unsable* to find in the book...although I can't say that looking through the book didn't give me the ideas for coming up with the, possibly new, theory on mental disorders.&lt;br /&gt;&lt;br /&gt;But, the book might be old and some current researcher might have already come up with it, but...given I'm no mentaldisorderologist, I am unsure if I have come up with&lt;br /&gt;&lt;br /&gt;somethingnew, but I figure, an afternoon of wasted research&lt;br /&gt;&lt;br /&gt;could be ART.&lt;br /&gt;&lt;br /&gt;Enjoy the piece, and don't forget to &lt;a href=https://www.paypal.com/row/cgi-bin/webscr?cmd=_flow&amp;SESSION=H3sEqxW5jhj_E0WPOLaGyc0hqZCabWRm-LDaet2CoNQw0Hc_rXm_rl_CrEK&amp;dispatch=5885d80a13c0db1f1ff80d546411d7f823b5265b6559fc2a37ef4de22a1503c3&gt;donate&lt;/a&gt; if you would like to help me keep my domains I bought from &lt;a href=http://godaddy.com&gt;godaddy&lt;/a&gt; before some nasty parker comes along and swipes them up...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-4971716785459808149?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/4971716785459808149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=4971716785459808149' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4971716785459808149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4971716785459808149'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/05/narritive-rechaining-new-web-piece.html' title='narritive-rechaining: new web piece'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3231655836638827515</id><published>2008-05-26T08:15:00.001-07:00</published><updated>2008-05-26T08:20:58.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='suggestions'/><category scheme='http://www.blogger.com/atom/ns#' term='todo'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>Dear Gmail...</title><content type='html'>Have an idea for gmail?  I did, and it took me a while to find out &lt;a href=http://mail.google.com/support/bin/request.py?contact_type=suggest&gt;*exactly* where&lt;/a&gt; to type it to make sure it gets to the team.&lt;br /&gt;&lt;br /&gt;I love gmail and I've been using it for years, but the 1st Web2.0 app that put AJAX on the map is starting to lack a couple of features that would make my work a bit more convenient. If you're thinking so too, the link above is where you should go instead of bitching about it on your blog...&lt;br /&gt;&lt;br /&gt;todo: suggest that more companies and development teams have such links displayed and available WITH STAFF to read and filter the suggestions, rather than the old way of having marketing telling the developers what the people want in the next version.&lt;br /&gt;&lt;br /&gt;Have a great day, and until next time...peace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3231655836638827515?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3231655836638827515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3231655836638827515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3231655836638827515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3231655836638827515'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/05/dear-gmail.html' title='Dear Gmail...'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5176268743630852448</id><published>2008-04-14T07:54:00.001-07:00</published><updated>2008-04-14T07:59:14.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alt/meta key doesn&apos;t work'/><category scheme='http://www.blogger.com/atom/ns#' term='annoying'/><category scheme='http://www.blogger.com/atom/ns#' term='fix?'/><category scheme='http://www.blogger.com/atom/ns#' term='xterm'/><title type='text'>Fwd: HOWTO: fix the Alt/Meta key xterm problem</title><content type='html'>&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------&lt;br&gt;&lt;span class="gmail_quote"&gt;From: &lt;b class="gmail_sendername"&gt;Burton Samograd&lt;/b&gt; &amp;lt;&lt;a href="mailto:burton.samograd@gmail.com"&gt;burton.samograd@gmail.com&lt;/a&gt;&amp;gt;&lt;br&gt;Date: Apr 14, 2008 2:53 PM&lt;br&gt; Subject: HOWTO: fix the Alt/Meta key xterm problem&lt;br&gt;To: kruhft &amp;lt;&lt;a href="mailto:kruhft@gmail.com"&gt;kruhft@gmail.com&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;This is supposed to fix the Alt/Meta key not working problem in standard xterms:&lt;br&gt; &lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br&gt;echo 'xterm*altSendsEscape:   true' &amp;gt;&amp;gt; ~/.Xdefaults&lt;br&gt;&lt;br /&gt;xrdb -merge ~/.Xdefaults&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The /easier/ solution is to install rxvt; that always works.&lt;br&gt;&lt;span class="sg"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5176268743630852448?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5176268743630852448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5176268743630852448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5176268743630852448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5176268743630852448'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/04/fwd-howto-fix-altmeta-key-xterm-problem.html' title='Fwd: HOWTO: fix the Alt/Meta key xterm problem'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3837419195964702858</id><published>2008-04-08T10:56:00.001-07:00</published><updated>2008-04-08T11:01:27.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='is anyone out there?'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='new'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Another Blog, Another Day</title><content type='html'>I just started my &lt;a href="http://aroundtownwtf.blogspot.com/"&gt;Around Town WTF?&lt;/a&gt; blog, which, as you might have guessed, is photos of things that I see on my walks around town that just make me go "What the F*uck?"™.&lt;br /&gt;&lt;br /&gt;I was thinking of taking the photos and making a book if there is any interest, so make some comments and let me know you're listening and then I might get inspired to create something for your coffee table...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3837419195964702858?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3837419195964702858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3837419195964702858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3837419195964702858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3837419195964702858'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/04/another-blog-another-day.html' title='Another Blog, Another Day'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1009986976660762412</id><published>2008-03-28T10:01:00.000-07:00</published><updated>2008-03-28T10:12:51.210-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='radar'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='songs for beautiful girls'/><title type='text'>Google Radar</title><content type='html'>I did a recent post asking "&lt;a href="http://metashell3-11.blogspot.com/2008/03/have-you-ever-wondered.html"&gt;Have you ever wondered who Charlie Rich was?&lt;/a&gt;" on the  "alter-blog" of this site  &lt;a href="http://metashell3-11.blogspot.com/"&gt;meta's hell&lt;/a&gt;. I was curious, because I get a number of emails a week with his name in it using a feature of Google I like to call "Google Radar". &lt;br /&gt;&lt;br /&gt;As some of you might know, I have written a number of albums over the past few years, and like anybody, would like to know when people talk about it, such as a review or whatever they might feel like saying about my work, good or bad.  To do that, I use a &lt;a href="http://www.google.com/alerts"&gt;Google Alerts&lt;/a&gt;, using the name of my album as the alert term, and I get up to date emails from Google whenever it finds something about my album title.&lt;br /&gt;&lt;br /&gt;Unfortunately for me, all it seems to find it is a bunch of used copies of Charlie Rich's album for sale.  Given that I have no idea who Charlie Rich is, and the fact that I have sold less than 10 albums in the past 5 years since I started writing music, I thought I would find out who this superstar might be.&lt;br /&gt;&lt;br /&gt;It turns out he was the singer that wrote a song about crying over a lost lover.&lt;br /&gt;&lt;br /&gt;But I digress. This post was to tell you about &lt;a href="http://google.com/alerts"&gt;Google Alerts&lt;/a&gt;, so you might want to give them a shot.  Try putting your name, your company name, anything you want to know something about that might get updated on the web and you'll get custom emails sent right to your inbox.&lt;br /&gt;&lt;br /&gt;It's a feature I don't know if I would be able to live without and I hope you find it useful and can't live without it too.&lt;br /&gt;&lt;br /&gt;Until next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1009986976660762412?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1009986976660762412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1009986976660762412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1009986976660762412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1009986976660762412'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/google-radar.html' title='Google Radar'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-7559678900225571288</id><published>2008-03-26T09:21:00.000-07:00</published><updated>2008-03-26T09:28:17.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supercompilation'/><category scheme='http://www.blogger.com/atom/ns#' term='paper'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Supercompilation</title><content type='html'>Here is a &lt;a href="http://www.supercompilers.com/white_paper.shtml"&gt;pretty understandable paper&lt;/a&gt; on the concept of supercompilation, which can most easily be described as &lt;a href="http://en.wikipedia.org/wiki/Compiler_optimization#Interprocedural_optimizations"&gt;whole program optimzation&lt;/a&gt;.  It takes a less theoretical view and concentrates on the process of supercompiling programs written by humans, rather than a more complex general solution, so it is a lot less mathy and a lot more understandable than most papers on the subject so I suggest giving it a read.&lt;br /&gt;&lt;br /&gt;Found in the &lt;a href="http://lambda-the-ultimate.org/taxonomy/term/1"&gt;LTU Forums&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-7559678900225571288?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/7559678900225571288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=7559678900225571288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7559678900225571288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7559678900225571288'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/supercompilation.html' title='Supercompilation'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5378664602241295162</id><published>2008-03-25T08:30:00.000-07:00</published><updated>2008-03-25T08:32:30.523-07:00</updated><title type='text'>Think there are only 2 Operating Systems for your PC?</title><content type='html'>&lt;a href=http://www.google.com/Top/Computers/Software/Operating_Systems/x86/&gt;Think different&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;k&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5378664602241295162?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5378664602241295162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5378664602241295162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5378664602241295162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5378664602241295162'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/think-there-are-only-2-operating.html' title='Think there are only 2 Operating Systems for your PC?'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-4419416234952049069</id><published>2008-03-16T13:15:00.000-07:00</published><updated>2008-03-16T13:29:16.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='numerics'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Alas, yorick, I do not know thee well enough</title><content type='html'>&lt;a href="http://web.mit.edu/yorick_v1.5.12/yorick/1.5/doc/"&gt;Yorick&lt;/a&gt; is a cool little language for scientific computing.  Powerful enough to &lt;a href="http://web.mit.edu/yorick_v1.5.12/yorick/1.5/doc/examples.html"&gt;simulate an airfoil&lt;/a&gt;, yet &lt;a href="http://netlib.org/env/yorick.tar.gz"&gt;small enough to fit on a floppy&lt;/a&gt;.  The project has been around for quite some time, but thanks to &lt;a href="http://sourceforge.net/users/dhmunro/"&gt;it's author&lt;/a&gt;, it has successfully kept with the times (aka. it has a configure script that works, it builds with modern compilers and works when you actually try to run it).  All that, and it's fun and intuitive to use, has a C like syntax, handles numeric arrays incredibly efficiently, comes with an easy to use graphics output system, *and* it /doesn't/ come with a 10000 function 'standard' library (I consider that a feature) so you might learn some programming rather than just how to duct tape and bubble gum library components together.&lt;br /&gt;&lt;br /&gt;Oh, and &lt;a href="http://yorick.sourceforge.net/manual/yorick.php"&gt;it's well documented&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-4419416234952049069?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/4419416234952049069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=4419416234952049069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4419416234952049069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4419416234952049069'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/alas-yorick-i-do-not-know-thee-well.html' title='Alas, yorick, I do not know thee well enough'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1206953885466463093</id><published>2008-03-16T12:48:00.000-07:00</published><updated>2008-03-16T12:53:48.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='spreadsheet'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><title type='text'>Siag Office - because it sucks less!</title><content type='html'>Fully scriptable in scheme, comes with word processor, spread sheet and animation program (along with a few other nice tools), and, according to it's byline, it sucks less.  It's not too hard to figure out what systems it probably sucks less than, so you might want to give it a shot, especially if you have an older system that can't run the current monolithic office suites.&lt;br /&gt;&lt;br /&gt;Check it out &lt;a href="http://siag.nu/index.shtml"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1206953885466463093?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1206953885466463093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1206953885466463093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1206953885466463093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1206953885466463093'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/siag-office-because-it-sucks-less.html' title='Siag Office - because it sucks less!'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1856813522368001799</id><published>2008-03-16T12:34:00.000-07:00</published><updated>2008-03-16T12:54:14.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intuition'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><title type='text'>xmagic hits</title><content type='html'>Searching for XMagic on google gave me the following (unfortunately) unrelated hits on my search which seemed interesting enough to save:&lt;br /&gt;&lt;br /&gt;an alternate implementation of file typing based on Magic numbers or tests based on file(1) - &lt;a href="http://ftimes.sourceforge.net/FTimes/XMagic.shtml"&gt;http://ftimes.sourceforge.net/FTimes/XMagic.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;a library written in C, which allows integration of the ImageMagick library with any X application - &lt;a href="http://siag.nu/xmagick/"&gt;http://siag.nu/xmagick/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There were not what I wanted, but interesting nonetheless.  The real magic can be found here: &lt;a href="ftp://netlib.org/magic/index.html"&gt;ftp://netlib.org/magic/index.html&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1856813522368001799?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/html' href='http://ftimes.sourceforge.net/FTimes/XMagic.shtml' length='0'/><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1856813522368001799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1856813522368001799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1856813522368001799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1856813522368001799'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/xmagic-hits.html' title='xmagic hits'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-874649318303898656</id><published>2008-03-16T12:20:00.000-07:00</published><updated>2008-03-16T12:28:12.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='matrix'/><title type='text'>Random Matrix Generator</title><content type='html'>If you ever have a pressing need to generate some random matrix data, here's a nice web interface to the &lt;a href=http://math.nist.gov/MatrixMarket/data/misc/xlatmr/matgen.html&gt;LAPACK Test Matrix Generators&lt;/a&gt;.  Since the form paramters are a bit, um, complex, one would think that you could get *even* more random matrices by filling in the parameters randomly! Isn't randomness just asking for something and not knowing what you're going to get?&lt;br /&gt;&lt;br /&gt;Found by browsing &lt;a href=http://www.netlib.org/&gt;NETLIB&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-874649318303898656?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/html' href='http://math.nist.gov/MatrixMarket/data/misc/xlatmr/matgen.html' length='0'/><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/874649318303898656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=874649318303898656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/874649318303898656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/874649318303898656'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/random-matrix-generator.html' title='Random Matrix Generator'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5620835041918614496</id><published>2008-03-11T08:59:00.000-07:00</published><updated>2008-03-16T12:54:35.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>CRAY-1 Hardware Reference Manual</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM-0000.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM-0000.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Anybody that knows anything about hardware has heard of the CRAY super computer company.  These machines seem a bit tame by today's standard where you can buy a 1x1 inch chip with 4 of these machines in them, but there's a lot to learn from how they were designed.  Lucky for us, a copy of &lt;a href="http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM.html"&gt;the original CRAY-1 Hardware Reference Manual&lt;/a&gt; is available online for those interested in the inner workings of the original supercomputer.&lt;br /&gt;&lt;br /&gt;Plus they even had built in seating.   Now that was class that you just don't see today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5620835041918614496?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/html' href='http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM.html' length='0'/><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5620835041918614496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5620835041918614496' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5620835041918614496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5620835041918614496'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/cray-1-hardware-reference-manual.html' title='CRAY-1 Hardware Reference Manual'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3935045869635399507</id><published>2008-03-11T08:54:00.000-07:00</published><updated>2008-03-11T09:11:20.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linguistics'/><category scheme='http://www.blogger.com/atom/ns#' term='text'/><category scheme='http://www.blogger.com/atom/ns#' term='words'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>UNIX commands for computational linguists</title><content type='html'>Here is a nice point form 'cook book' type article that gives plenty of recipes for those that are interested in using UNIX to analyze words.  Read it &lt;a href="http://www.isi.edu/natural-language/mt/unix.txt"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;You might find it handy when doing some self study using the  course notes and slides from &lt;a href="http://www-rohan.sdsu.edu/~malouf/ling571.html"&gt;LING 571: &lt;span style="font-size:100%;"&gt;Computational Corpus Linguistics&lt;/a&gt; from San Diego State University. &lt;br /&gt;&lt;br /&gt;Remember, nobody ever got dumber learning UNIX... ;-)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3935045869635399507?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='text/plain' href='http://www.isi.edu/natural-language/mt/unix.txt' length='0'/><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3935045869635399507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3935045869635399507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3935045869635399507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3935045869635399507'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/unix-commands-for-computational.html' title='UNIX commands for computational linguists'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2623929166051110343</id><published>2008-03-04T09:51:00.000-08:00</published><updated>2008-03-16T12:54:59.844-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='publishing'/><title type='text'>Creating a PDF With Embedded Fonts from a Postscript file</title><content type='html'>ps2pdf -dEmbedAllFonts=true -dPDFSETTINGS=/printer v7vol1.ps&lt;br /&gt;&lt;br /&gt;It's just that easy :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2623929166051110343?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2623929166051110343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2623929166051110343' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2623929166051110343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2623929166051110343'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/03/creating-pdf-with-embedded-fonts-from.html' title='Creating a PDF With Embedded Fonts from a Postscript file'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2353214121851980586</id><published>2008-01-19T00:48:00.001-08:00</published><updated>2008-01-19T00:54:41.133-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='installer'/><title type='text'>HOWTO: Make a Windows installer with SIOD</title><content type='html'>Here is an interesting part of the "Scheme in One Defun" (SIOD) documentation that I found that shows how to create a simple setup.exe install program for Windows:&lt;br /&gt;&lt;br /&gt;   ;;-*-mode:lisp-*-&lt;br /&gt;&lt;br /&gt;   ;; name:    setup.scm&lt;br /&gt;   ;; purpose: source for SETUP.EXE for installation of SIOD subset&lt;br /&gt;   ;;          along with ECI script extension file.&lt;br /&gt;   ;; created: 28-JUL-1999 George J. Carrette LITTON/TASC&lt;br /&gt;   ;;&lt;br /&gt;   ;; note:    The commercial product installshield can do this much prettier.&lt;br /&gt;   ;;          As can a custom setup.exe created using visual C++ or&lt;br /&gt;   ;;          visual basic.&lt;br /&gt;&lt;br /&gt;   (define *siod-dist-files*&lt;br /&gt;     '("siod.exe"&lt;br /&gt;       "csiod.exe"&lt;br /&gt;       "wcsiod.exe"&lt;br /&gt;       "slibw32.dll"&lt;br /&gt;       "libsiod.dll"))&lt;br /&gt;&lt;br /&gt;   (define *eci-dist-files*&lt;br /&gt;     '("epshr02.dll"&lt;br /&gt;       "eciclt32.dll"))&lt;br /&gt;&lt;br /&gt;   (define *siod-eci-dist-files*&lt;br /&gt;     '("siod_eci.dll"&lt;br /&gt;       "ecisample.ssf"&lt;br /&gt;       "readme.txt"))&lt;br /&gt;&lt;br /&gt;   (define (fatal-setup-error . rest)&lt;br /&gt;     (apply writes (cons nil rest))&lt;br /&gt;     (error "fatal setup error"))&lt;br /&gt;&lt;br /&gt;   (define (main)&lt;br /&gt;     (let ((result (*catch 'errobj (cons 1 (main-1)) nil)))&lt;br /&gt;       (writes nil "Press Enter to exit ...")&lt;br /&gt;       (readline)))&lt;br /&gt;&lt;br /&gt;   (define *key* "SOFTWARE\\George Carrette\\SIOD")&lt;br /&gt;   (define *dir* "C:\\SIOD")&lt;br /&gt;   (define *ftype* "SSF")&lt;br /&gt;&lt;br /&gt;   (define (main-1)&lt;br /&gt;     (writes nil&lt;br /&gt;         "*****************************************\n"&lt;br /&gt;         "* ECI SIOD scripting language installer *\n"&lt;br /&gt;         "* See README.TXT for more information   *\n"&lt;br /&gt;         "*****************************************\n"&lt;br /&gt;         "\n")&lt;br /&gt;     (require-so (so-ext 'slibw32))&lt;br /&gt;     (let ((inplace-siod-lib (siod-lib))&lt;br /&gt;       (key *key*)&lt;br /&gt;       (root "HKEY_LOCAL_MACHINE")&lt;br /&gt;       (value "SIOD_LIB")&lt;br /&gt;       (registered-siod-lib nil)&lt;br /&gt;       (new-siod-lib nil))&lt;br /&gt;       (*catch 'errobj&lt;br /&gt;           (set! registered-siod-lib (registry-ref root key value)))&lt;br /&gt;       (writes nil "\n")&lt;br /&gt;       (cond ((equal? inplace-siod-lib registered-siod-lib)&lt;br /&gt;          ;; if this setup.scm was compiled with :b=siod.exe&lt;br /&gt;          ;; then this can happen.&lt;br /&gt;          (fatal-setup-error "Improperly built SETUP.EXE\n")))&lt;br /&gt;       (writes nil&lt;br /&gt;           "SETUP DIR              = " inplace-siod-lib "\n")&lt;br /&gt;       (cond (registered-siod-lib&lt;br /&gt;          (writes nil&lt;br /&gt;              "Installed SIOD LIB DIR = " registered-siod-lib "\n\n")&lt;br /&gt;          (cond ((y-or-n-p&lt;br /&gt;              (string-append "copy ECI files to "&lt;br /&gt;                     registered-siod-lib " directory?"))&lt;br /&gt;             (install-files (append *eci-dist-files*&lt;br /&gt;                        *siod-eci-dist-files*)&lt;br /&gt;                    inplace-siod-lib&lt;br /&gt;                    registered-siod-lib))&lt;br /&gt;            ('else&lt;br /&gt;             (fatal-setup-error "user chose not to install files\n"))))&lt;br /&gt;         ((set! new-siod-lib&lt;br /&gt;            (get-user-input "Installation Destination directory"&lt;br /&gt;                    *dir*))&lt;br /&gt;          (if (not (substring-equal? "\\"&lt;br /&gt;                         new-siod-lib&lt;br /&gt;                         (- (length new-siod-lib) 1)&lt;br /&gt;                         (length new-siod-lib)))&lt;br /&gt;              (set! new-siod-lib (string-append new-siod-lib&lt;br /&gt;                            "\\")))&lt;br /&gt;          (or (y-or-n-p&lt;br /&gt;           (string-append "copy ECI files to "&lt;br /&gt;                      new-siod-lib " directory?"))&lt;br /&gt;              (fatal-setup-error "user chose not to install files\n"))&lt;br /&gt;          (create-directory new-siod-lib)&lt;br /&gt;          (install-files (append *eci-dist-files*&lt;br /&gt;                     *siod-eci-dist-files*&lt;br /&gt;                     *siod-dist-files*)&lt;br /&gt;                 inplace-siod-lib&lt;br /&gt;                 new-siod-lib)&lt;br /&gt;          (registry-set root key value new-siod-lib))&lt;br /&gt;         ('else&lt;br /&gt;          (fatal-setup-error "not implemented")))&lt;br /&gt;       (cond ((y-or-n-p (string-append&lt;br /&gt;                 "Register file extension "&lt;br /&gt;                 *ftype* " ? "))&lt;br /&gt;          (register-siod-ftype (registry-ref root key value)))))&lt;br /&gt;     (writes nil&lt;br /&gt;         "********\n"&lt;br /&gt;         "* DONE *\n"&lt;br /&gt;         "********\n"&lt;br /&gt;         "\n"))&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   (define (register-siod-ftype dir)&lt;br /&gt;     (registry-set "HKEY_CLASSES_ROOT"&lt;br /&gt;           (string-append "." *ftype*)&lt;br /&gt;           ""&lt;br /&gt;           (string-append *ftype* "_FILE"))&lt;br /&gt;     (registry-set "HKEY_CLASSES_ROOT"&lt;br /&gt;           (string-append *ftype* "_FILE")&lt;br /&gt;           ""&lt;br /&gt;           "SIOD script file")&lt;br /&gt;     (registry-set "HKEY_CLASSES_ROOT"&lt;br /&gt;           (string-append *ftype* "_FILE"&lt;br /&gt;                      "\\Shell\\open\\command")&lt;br /&gt;           ""&lt;br /&gt;           (string-append "\""&lt;br /&gt;                      dir&lt;br /&gt;                      "siod.exe\""&lt;br /&gt;                      "-v01,-m2 \"%1\" %*"))&lt;br /&gt;     (registry-set "HKEY_CLASSES_ROOT"&lt;br /&gt;           (string-append *ftype* "_FILE"&lt;br /&gt;                      "\\Shell\\Edit\\command")&lt;br /&gt;           ""&lt;br /&gt;       ;; we should actually get this value from the key&lt;br /&gt;       ;; WordPad.Document.1\\Shell\Open\command.&lt;br /&gt;         ;; or wrifile. (for .wri).&lt;br /&gt;           (string-append "\""&lt;br /&gt;                      (or (getenv "sysmtedrive") "C:")&lt;br /&gt;                      "\\Program Files\\Windows NT\\Accessories\\"&lt;br /&gt;                      "WORDPAD.EXE"&lt;br /&gt;                      "\""&lt;br /&gt;                      " \"%1\"")))&lt;br /&gt;&lt;br /&gt;   (define (y-or-n-p . msg)&lt;br /&gt;     (let ((result nil)&lt;br /&gt;       (return nil)&lt;br /&gt;       (in nil))&lt;br /&gt;       (while (not return)&lt;br /&gt;         (apply writes (cons nil msg))&lt;br /&gt;         (set! in (readline))&lt;br /&gt;         (cond ((not in) (fatal-setup-error "no input\n"))&lt;br /&gt;           ((member (set! in (string-downcase (string-trim in)))&lt;br /&gt;                '("y" "yes"))&lt;br /&gt;            (set! return t)&lt;br /&gt;            (set! result t))&lt;br /&gt;           ((member in '("n" "no"))&lt;br /&gt;            (set! return t)&lt;br /&gt;            (set! result nil))&lt;br /&gt;           ('else&lt;br /&gt;            (writes nil "Please reply yes or no.\n"))))&lt;br /&gt;       result))&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;   (define (get-user-input msg default)&lt;br /&gt;     (let ((result nil)&lt;br /&gt;       (return nil)&lt;br /&gt;       (in nil))&lt;br /&gt;       (while (not return)&lt;br /&gt;         (writes nil msg " [" default "]: ")&lt;br /&gt;         (set! in (readline))&lt;br /&gt;         (cond ((not in) (fatal-setup-error "no input\n"))&lt;br /&gt;           ((equal? in "")&lt;br /&gt;            (set! return t)&lt;br /&gt;            (set! result default))&lt;br /&gt;           ('else&lt;br /&gt;            (set! return in)&lt;br /&gt;            (set! result nil))))&lt;br /&gt;       result))&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   (define (install-files l from into)&lt;br /&gt;     (mapcar (lambda (x)&lt;br /&gt;           (copy-one-file (string-append from x)&lt;br /&gt;                  (string-append into x)))&lt;br /&gt;         l))&lt;br /&gt;&lt;br /&gt;   (define (copy-one-file from to)&lt;br /&gt;     (let ((buff (cons-array 4096 'byte))&lt;br /&gt;       (in (fopen from "rb"))&lt;br /&gt;       (out (fopen to "wb"))&lt;br /&gt;       (nbytes nil))&lt;br /&gt;       (writes nil from " -&gt; " to "\n")&lt;br /&gt;       (while (set! nbytes (fread buff in))&lt;br /&gt;         (fwrite (if (= nbytes (length buff)) buff (list buff nbytes)) out))&lt;br /&gt;       (fclose in)&lt;br /&gt;       (fclose out)))&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;   (define (create-directory name)&lt;br /&gt;     (let ((old (getcwd)))&lt;br /&gt;       (chdir (getenv "WINDIR"))&lt;br /&gt;       ;; chdir prevents warning if cwd is an UNC&lt;br /&gt;       (system (string-append "mkdir \"" name "\""))&lt;br /&gt;       (chdir old)))&lt;br /&gt;&lt;br /&gt;; source:  &lt;a href="http://people.delphiforums.com/gjc/winsiod.html"&gt;http://people.delphiforums.com/gjc/winsiod.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2353214121851980586?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2353214121851980586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2353214121851980586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2353214121851980586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2353214121851980586'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2008/01/howto-make-windows-installer-with-siod.html' title='HOWTO: Make a Windows installer with SIOD'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-7282965659363836648</id><published>2007-12-01T16:05:00.000-08:00</published><updated>2007-12-01T16:07:18.557-08:00</updated><title type='text'>you are here</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VGdEtNvrzGo/R1H3FGiImcI/AAAAAAAAAG4/SZbjYbG3Vvo/s1600-R/map-of-internet-resulting-from-initial-scatter-scan.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_VGdEtNvrzGo/R1H3FGiImcI/AAAAAAAAAG4/4tshiYAtV-s/s400/map-of-internet-resulting-from-initial-scatter-scan.png" alt="" id="BLOGGER_PHOTO_ID_5139160316831635906" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-7282965659363836648?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/7282965659363836648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=7282965659363836648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7282965659363836648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/7282965659363836648'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/12/you-are-here.html' title='you are here'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VGdEtNvrzGo/R1H3FGiImcI/AAAAAAAAAG4/4tshiYAtV-s/s72-c/map-of-internet-resulting-from-initial-scatter-scan.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-741081490088621840</id><published>2007-11-23T10:29:00.000-08:00</published><updated>2007-11-23T10:58:47.157-08:00</updated><title type='text'>No frills GMail</title><content type='html'>Here's a link to GMail Mobile, a nice, no frills interface HTML interface to your gmail inbox that can easily be embedded in an IFRAME:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mail.google.com/mail/x/nurm3ov6beir-/?f=1"&gt;http://mail.google.com/mail/x/nurm3ov6beir-/?f=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ca/ig/directory?q=iframe&amp;amp;hl=en&amp;amp;root=%2Fig&amp;amp;igtab=main&amp;amp;dpos=top"&gt;Searching for 'iframe' on google gadgets&lt;/a&gt;, you can use the first entry to add this to your google homepage.  By entering the URL into the iframe gadget, this page will act as notifier which you can also use to browse and edit your Inbox, unlike the default gadget that google provides.  Seems like an improvement to me, plus you can now use your GMail from the homepage rather than have to open another tab.&lt;br /&gt;&lt;br /&gt;It looks like News and Calendar both have mobile interfaces as well.  Here's a shot of my new an improved IFRAME'd homepage with the GMail and Calendar embedded using the IFRAME gadget:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VGdEtNvrzGo/R0chUNb8LsI/AAAAAAAAAF8/0brAVhv1rSA/s1600-h/google-homepage-iframe-headshot-manbearpig.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_VGdEtNvrzGo/R0chUNb8LsI/AAAAAAAAAF8/0brAVhv1rSA/s400/google-homepage-iframe-headshot-manbearpig.png" alt="" id="BLOGGER_PHOTO_ID_5136110531127291586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;More functionality, faster and probably a lot less code than running the full app.  Looks like we have a winner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-741081490088621840?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/741081490088621840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=741081490088621840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/741081490088621840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/741081490088621840'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/no-frills-gmail.html' title='No frills GMail'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VGdEtNvrzGo/R0chUNb8LsI/AAAAAAAAAF8/0brAVhv1rSA/s72-c/google-homepage-iframe-headshot-manbearpig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-3137132210518406646</id><published>2007-11-21T16:00:00.001-08:00</published><updated>2007-11-21T16:00:53.869-08:00</updated><title type='text'>Christmas came early</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://hyperrealm.com/wtfd00d/shsp/'&gt;sweet&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-3137132210518406646?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/3137132210518406646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=3137132210518406646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3137132210518406646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/3137132210518406646'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/christmas-came-early.html' title='Christmas came early'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-8376565965140559600</id><published>2007-11-20T14:48:00.000-08:00</published><updated>2007-11-20T14:53:41.137-08:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VGdEtNvrzGo/R0NlIvh0NBI/AAAAAAAAAFs/7TX4kW6p_WI/s1600-h/halfqwerty2.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_VGdEtNvrzGo/R0NlIvh0NBI/AAAAAAAAAFs/7TX4kW6p_WI/s400/halfqwerty2.gif" alt="" id="BLOGGER_PHOTO_ID_5135059201004155922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;*&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VGdEtNvrzGo/R0Nkb_h0NAI/AAAAAAAAAFk/X_UQVjY2y10/s1600-h/halfqwery3.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_VGdEtNvrzGo/R0Nkb_h0NAI/AAAAAAAAAFk/X_UQVjY2y10/s400/halfqwery3.gif" alt="" id="BLOGGER_PHOTO_ID_5135058432205009922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-8376565965140559600?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/8376565965140559600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=8376565965140559600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8376565965140559600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8376565965140559600'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/blog-post.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VGdEtNvrzGo/R0NlIvh0NBI/AAAAAAAAAFs/7TX4kW6p_WI/s72-c/halfqwerty2.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-5400743071722385782</id><published>2007-11-18T10:48:00.001-08:00</published><updated>2007-11-18T10:48:36.371-08:00</updated><title type='text'>ionice -n3 ...</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;When doing a massive rsync over a USB 1.1 line, the aformentioned command in the title will give you your system responsiveness back.  ionice is part of the linux I/O scheduler system, and this was the first case I thought of trying it.  I'm not sure if my system gets sluggish and unresponsive because of the USB subsystem or sheer amount of data being pushed through my system, but prefixing any long, disk intensive command makes Linux act reasonably responsive.&lt;br/&gt;&lt;br/&gt;man ionice for more details.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-5400743071722385782?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/5400743071722385782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=5400743071722385782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5400743071722385782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/5400743071722385782'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/ionice-n3.html' title='ionice -n3 ...'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-4813277601270830112</id><published>2007-11-11T03:10:00.000-08:00</published><updated>2007-11-11T03:11:16.063-08:00</updated><title type='text'>the signal</title><content type='html'>a single bit of information used to trigger a predetermined meaning.&lt;br /&gt;&lt;br /&gt;a signal can be sent to ensure that a situation is in an agreed uponstate. the actual content or value of the signal is not meaningful atall. the information that is to be transmitted is contained in theoccurance of the signal itself.&lt;br /&gt;&lt;br /&gt;the signal can transmit any amount of information instantly over any distance.&lt;br /&gt;&lt;br /&gt;see also: the sign&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-4813277601270830112?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/4813277601270830112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=4813277601270830112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4813277601270830112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/4813277601270830112'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/signal.html' title='the signal'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-1153101442458143286</id><published>2007-11-11T03:08:00.000-08:00</published><updated>2007-11-17T18:56:08.066-08:00</updated><title type='text'></title><content type='html'>  a single bit of information used to trigger a predetermined meaning.&lt;br&gt;&lt;br&gt;a signal can be sent to ensure that a situation is in an agreed upon&lt;br&gt;state. the actual content or value of the signal is not meaningful at&lt;br&gt;all.  the information that is to be transmitted is contained in the&lt;br&gt;occurance of the signal itself.&lt;br&gt;&lt;br&gt;the signal can transmit any amount of information instantly over any distance.&lt;br&gt;&lt;br&gt;see also: the sign&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-1153101442458143286?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/1153101442458143286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=1153101442458143286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1153101442458143286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/1153101442458143286'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/single-bit-of-information-used-to.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-8605178709132301001</id><published>2007-11-09T12:10:00.000-08:00</published><updated>2007-11-17T18:56:08.071-08:00</updated><title type='text'></title><content type='html'>&lt;BLOCKQUOTE&gt;by &lt;A href="http://slashdot.org/%7EPlusFiveTroll"&gt;PlusFiveTroll (754249)&lt;/A&gt; on Thursday November 08, @05:35PM (&lt;A href="http://mobile.slashdot.org/comments.pl?sid=354901&amp;amp;cid=21287481"&gt;#21287481&lt;/A&gt;) &lt;P&gt;&lt;SMALL&gt;&lt;BR&gt;&lt;/SMALL&gt;It's a hell of a lot easier (for me at least) to spend 20 minutes replacing 5 to 15 bad caps, then to put a new board in and trying to get windows working and praying that you don't have to reactivate the product over the phone.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;Maybe 5 caps, but 15? Of course being able to do it in 20 minutes is probably a hell of a lot faster than spending the time on the phone to register. Looks like I won't be using any OS that requires any form of 'activation' in the near future, if only because if you have to activate it to make it work, you're going to have to activate it again, and again, and again...  Putting in more ram, changing a hard drive or upgrading your processor should *not* void your operating system licence, but if the stories are true, then replacing caps might be the only option if the support line goes down in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-8605178709132301001?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/8605178709132301001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=8605178709132301001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8605178709132301001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8605178709132301001'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/by-plusfivetroll-754249-on-thursday.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2871097421366288682</id><published>2007-11-08T09:16:00.000-08:00</published><updated>2007-11-17T18:56:08.076-08:00</updated><title type='text'></title><content type='html'>&lt;a id="r.-e" href="File?id=d7h6s3g_16nfh39wdh" target="_blank"&gt;&lt;img style="margin: 1em 0pt 0pt 1em; width: 320px; height: 165.452px; float: right;" src="http://docs.google.com/File?id=d7h6s3g_16nfh39wdh"&gt;&lt;/a&gt;With the "2.0" roll out of Gmail, the biggest news was the addition of IMAP support, but there is one change that I'm quite happy with: a new contact manger!  After struggling (and purposely avoiding) the old interface, the new version gives a much improved, more "real" interface, rather than the individual, slow loading page reloads that plagued the old UI.&lt;br&gt;&lt;br&gt;The actual features of the contact manager seem to have remained stable with this new interface.  The contact info for each person is easily expandable with additional email addresses, phone numbers, notes and other info.  I'm no contact database master, but it looks to me like it should be more than adequate for organizing your communications contacts.&lt;br&gt;&lt;br&gt;And now that the interface doesn't suck so much, I might actually use it.  Viva organization!&lt;br&gt;&lt;br&gt;Until next time...&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2871097421366288682?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2871097421366288682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2871097421366288682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2871097421366288682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2871097421366288682'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/with-2.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-2979078970913897825</id><published>2007-11-07T19:34:00.000-08:00</published><updated>2007-11-17T18:56:08.081-08:00</updated><title type='text'></title><content type='html'>I have been working with Solaris lately, so I've been keeping my eyes out for administration articles. Here is a couple from the Sun site that could come in handy for those that are new to or are interested in finding out a bit more about the system.&lt;br&gt;&lt;br&gt;&lt;a href="http://developers.sun.com/solaris/articles/solaris_linux_app.html"&gt;Comparison of Solaris OS and Linux for Application Developers&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://www.sun.com/bigadmin/content/submitted/mount_usb_flash_drive.jsp"&gt;How to Mount a USB Flash Drive&lt;/a&gt;&lt;br&gt;&lt;br&gt;The Solaris 10 DVD's that weren't able to install properly on my Thinkpad, are working quite well on my older Compaq Evo system. The actual operating system, at first glance, is very similar to Ubuntu, with GNOME as it's default desktop environment. I've experienced a hardware / driver problems, such as my new Intellimouse not working correctly[1] and I can't say I've tried the sound yet, but as a 'Workstation' operating system, I think that it will be entirely sufficient for a complete, distraction free, development environment. Sun also provides a full suite of development tools (Sun Studio and Java Studio), office suite (Star Office) and graphics applications (The GNU Image Manipulation Program) with the package, so it's a great start for a professional development and/or office environment.&lt;br&gt;&lt;br&gt;If you are interested in Solaris, you can &lt;a href="http://www.sun.com/software/solaris/get.jsp"&gt;download or order DVD's by mail. &lt;/a&gt;The cost?  $0.  You can't really beat that, plus the DVD's arrived at my door in about 2 days.  Not bad.&lt;br&gt;&lt;br&gt;Now back to reading my articles...&lt;br&gt;&lt;br&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-2979078970913897825?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/2979078970913897825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=2979078970913897825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2979078970913897825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/2979078970913897825'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/i-have-been-working-with-solaris-lately.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-8797064418390025940</id><published>2007-11-03T11:59:00.000-07:00</published><updated>2007-11-03T12:11:30.817-07:00</updated><title type='text'></title><content type='html'>  &lt;div style="text-align: left;"&gt;So, it looks like the word processor &lt;a href="http://docs.google.com" id="tzv9" target="_blank" title="Google Docs"&gt;Google Docs&lt;/a&gt; has the capability of posting to &lt;a href="http://blogger.com" id="bj:b" target="_blank" title="Blogger"&gt;Blogger&lt;/a&gt; blogs.  This could come in handy and means one less extension to install, namely ScribeFire.  Extensions are nice buy you have to install them to make them handy, and sometimes you don't have that option in Internet Cafe's or locked down office setups, so getting used to using browser only programs might be a good idea.  At least I think so, just to keep your interface consistent.  If only they had Emacs key bindings in the word processor, but then again I'm trying to wean my self off of that, so this might be a good thing.&lt;br&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-8797064418390025940?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/8797064418390025940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=8797064418390025940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8797064418390025940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/8797064418390025940'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/11/google-docs-to-blogger-so-it-looks-like.html' title=''/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8811117896392347197.post-712860533434179326</id><published>2007-10-31T16:14:00.001-07:00</published><updated>2007-10-31T16:14:38.515-07:00</updated><title type='text'>Welcome to version 3.0!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;This is the 3rd (actually, 3.11) version of &lt;a href='http://metashell.org'&gt;metashell&lt;/a&gt; (&lt;a href='http://metashell-v2.blogspot.com'&gt;v2.0&lt;/a&gt; and &lt;a href='http://metashell-v1.blogspot.com'&gt;v1.0&lt;/a&gt; are still available in case you are interested), my little site where I report on some news, some new software, some advanced technology and some other things that I (and hopefully you) find interesting and useful.  Please feel free to comment on my posts, as I would like to promote discussion about the topics I write about as much as possible. &lt;br/&gt;&lt;br/&gt;You can subscribe to my posts through an &lt;a href='http://metashell.blogspot.com/feeds/posts/default'&gt;RSS feed&lt;/a&gt;, so you don't have to remember to bookmark and come back to the site.&lt;br/&gt;&lt;br/&gt;Thanks, and I hope you enjoy the articles!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8811117896392347197-712860533434179326?l=metashell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metashell.blogspot.com/feeds/712860533434179326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8811117896392347197&amp;postID=712860533434179326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/712860533434179326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8811117896392347197/posts/default/712860533434179326'/><link rel='alternate' type='text/html' href='http://metashell.blogspot.com/2007/10/welcome-to-version-30.html' title='Welcome to version 3.0!'/><author><name>kruhft</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
