<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:dse</id>
  <title>Darren Embry's livejournal.  Thoughts on fonts, Unix, and other pabulum.</title>
  <subtitle>Subtle Subtitle</subtitle>
  <author>
    <name>Darren Stuart Embry</name>
  </author>
  <link rel="alternate" type="text/html" href="http://dse.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom"/>
  <updated>2009-06-03T03:41:50Z</updated>
  <lj:journal userid="1551806" username="dse" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://dse.livejournal.com/data/atom" title="Darren Embry's livejournal.  Thoughts on fonts, Unix, and other pabulum."/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:70736</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/70736.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=70736"/>
    <title>New bike shop opening in Louisville</title>
    <published>2009-06-03T03:41:50Z</published>
    <updated>2009-06-03T03:41:50Z</updated>
    <content type="html">Just saw some signs posted on the window at 1345 Bardstown Road.&lt;br /&gt;I'm told it's where Raindog's Salon used to be.&lt;br /&gt;&lt;br /&gt;It's called Parkside Bike &amp; Boutique.&lt;br /&gt;Grand opening is Friday, June 5th, from 5pm until the crack of dawn.&lt;br /&gt;There will be door prizes, a bike giveaway, and grand opening discounts.&lt;br /&gt;&lt;br /&gt;According to the signs, they will sell classic, single speed, and fixed gear bicycles, as well as vintage clothing from the 1940s to the 1980s.&lt;br /&gt;&lt;br /&gt;In other words, hipster heaven.&lt;br /&gt;&lt;br /&gt;Thanks to V for telling me about this.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:70525</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/70525.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=70525"/>
    <title>PHP just might be moved off my "DEAD TO ME" board.</title>
    <published>2008-07-22T13:41:15Z</published>
    <updated>2008-07-22T13:44:05Z</updated>
    <category term="higher-order programming"/>
    <category term="php"/>
    <category term="lambda functions"/>
    <category term="anonymous functions"/>
    <category term="closures"/>
    <content type="html">&lt;p&gt;PHP 5.3, which will come out eventually, &lt;a href="http://www.toosweettobesour.com/2008/07/21/php-53-and-closures/"&gt;has closures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The lack of this feature, having been present in other programming languages for years, was only my &lt;a href="http://webonastick.com/php.html"&gt;biggest problem&lt;/a&gt; with PHP.&lt;/p&gt;

&lt;p&gt;My testing indicates they actually work, too.  Let's hope I don't discover anything stupid.&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php

// a read-only closure
function closure1 ($string, $x) {
&amp;#9;$y = $x;
&amp;#9;return function () use ($string, $y) {
&amp;#9;&amp;#9;print &amp;quot;$string: $y =&amp;gt; &amp;quot;;
&amp;#9;&amp;#9;$y = $y + 1;
&amp;#9;&amp;#9;print &amp;quot;$y\n&amp;quot;;
&amp;#9;};
}

$a = closure1(&amp;quot;closure1 a&amp;quot;, 3);
$b = closure1(&amp;quot;closure1 b&amp;quot;, 5);
$a();&amp;#9;// outputs: closure1 a: 3 =&amp;gt; 4
$a();&amp;#9;// outputs: closure1 a: 3 =&amp;gt; 4
$b();&amp;#9;// outputs: closure1 b: 5 =&amp;gt; 6
$b();&amp;#9;// outputs: closure1 b: 5 =&amp;gt; 6

// a read-write closure
function closure2 ($string, $x) {
&amp;#9;$y = $x;
&amp;#9;return function () use (&amp;amp;$string, &amp;amp;$y) {
&amp;#9;&amp;#9;print &amp;quot;$string: $y =&amp;gt; &amp;quot;;
&amp;#9;&amp;#9;$y = $y + 1;
&amp;#9;&amp;#9;print &amp;quot;$y\n&amp;quot;;
&amp;#9;};
}

$c = closure2(&amp;quot;closure2 c&amp;quot;, 3);
$d = closure2(&amp;quot;closure2 d&amp;quot;, 5);
$c();&amp;#9;// outputs: closure2 c: 3 =&amp;gt; 4
$d();&amp;#9;// outputs: closure2 d: 5 =&amp;gt; 6
$c();&amp;#9;// outputs: closure2 c: 4 =&amp;gt; 5
$d();&amp;#9;// outputs: closure2 d: 6 =&amp;gt; 7

?&amp;gt;
&lt;/pre&gt;

Thanks to the PHP team for finally coming through on this one.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:70256</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/70256.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=70256"/>
    <title>MP3 Player and NIC for sale</title>
    <published>2008-07-22T01:28:36Z</published>
    <updated>2008-07-22T01:28:36Z</updated>
    <category term="creative zen"/>
    <category term="forsale"/>
    <category term="d-link"/>
    <category term="nic"/>
    <category term="mp3 player"/>
    <category term="network card"/>
    <content type="html">&lt;a href="http://louisville.craigslist.org/ele/761567351.html"&gt;Creative Zen 4GB+SDHC MP3 Player&lt;/a&gt;&lt;br /&gt;$75 shipped, $70 pickup&lt;br /&gt;&lt;br /&gt;&lt;a href="http://louisville.craigslist.org/sys/761593771.html"&gt;D-Link DFE-530TX+ NIC&lt;/a&gt;&lt;br /&gt;$10 shipped, $5 pickup&lt;br /&gt;&lt;br /&gt;See links for details.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:70110</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/70110.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=70110"/>
    <title>Crap.</title>
    <published>2008-07-12T05:50:16Z</published>
    <updated>2008-07-12T05:50:16Z</updated>
    <category term="administrivia"/>
    <content type="html">Hopefully if you post a comment to one of my entries from this point forward and it gets screened, I'll actually receive an email about it now instead of it going to an invalid email address.  :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:69789</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/69789.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=69789"/>
    <title>ASP Fails.</title>
    <published>2008-07-12T01:06:22Z</published>
    <updated>2008-07-12T01:06:22Z</updated>
    <category term="asp"/>
    <category term="perl"/>
    <category term="perlscript"/>
    <category term="mason"/>
    <category term="iis"/>
    <category term="vbscript"/>
    <category term="pestilence"/>
    <category term="upload"/>
    <category term="windows"/>
    <content type="html">In this week's episode of "Darren learns stuff the hard way", we talk about Active Server Pages.  I'm not talking about ASP.NET here, just classic ASP.&lt;br /&gt;&lt;br /&gt;One misconception some might hold is that (classic) ASP == BASIC.  ASP is actually (kind of) language-neutral.  All ASP is, is a mechanism to mix server-side code and HTML (kind of like PHP without the &lt;a href="http://webonastick.com/php.html"&gt;drama&lt;/a&gt;), and some basic objects for request data, response generation, persistent variables, sessions, and other basic stuff.  In addition to using VBScript, you can also use JScript (also provided by default), PerlScript (just install ActiveState Perl and leave the checkboxes checked), Python (install ActiveState Python), and possibly other languages.&lt;br /&gt;&lt;br /&gt;The reason I even dealt with this in the first place is that I was required to use IIS for this one project.  That was the only actual technical requirement.  I had many options.&lt;br /&gt;&lt;br /&gt;- I could use PHP, but I'm conducting a war on PHP.&lt;br /&gt;&lt;br /&gt;- I could use ASP+BASIC, but as with PHP, I'd have to write a lot more lines of code, find a basic-mode for Emacs, and would have to sift through a lot of really bad examples of code when looking for techniques to do things.  Remember, guys, the "B" stands for "Beginner's", just like it did in 1964.  :)&lt;br /&gt;&lt;br /&gt;- I could use basic Perl scripts containing a bunch of here-documents, but those suck when you have loops.&lt;br /&gt;&lt;br /&gt;- I could have tried Mason+ISAPI, but the only solution I was able to find so far would involve using URLs like /application/index.plx/path/to/actual/mason/file.mthml and I didn't want someone else to have to deal with it incase I get hit by a bus and die or something.&lt;br /&gt;&lt;br /&gt;- I could have tried Mason+CGI and been done, but I wanted to see if I could produce a less inefficient solution.&lt;br /&gt;&lt;br /&gt;- I could use some other Perl templating solution but I'd have to invest time acclimating myself to it.&lt;br /&gt;&lt;br /&gt;- I could use PerlScript+ASP.&lt;br /&gt;&lt;br /&gt;I chose the last option there.  ASP is simple enough.&lt;br /&gt;&lt;br /&gt;The thing I realized midway into the project is that ASP does not natively provide support for file uploads.  Or for multipart/form-data at all.  This is the single biggest WTF I have ever witnessed.  Were it not for this characteristic, ASP would be one of the few technologies from Microsoft that aren't fundamentally wrong, and would be a legitimate alternative to PHP.  So what do I do?&lt;br /&gt;&lt;br /&gt;- I could have used a pure-ASP solution.  But they're all written in VBScript and it's impossible to use it from PerlScript.&lt;br /&gt;&lt;br /&gt;- I could have used an ASP component.  But they are all either buggy, or cost hundreds of dollars for a single-site license.&lt;br /&gt;&lt;br /&gt;- Why didn't I realize this sooner?  I could write just the form action script on the file uploads as a .plx script and use the CGI module for form data parsing.&lt;br /&gt;&lt;br /&gt;That last option's what I'm doing.  I don't get the benefit of ASP there but I think it's okay at least for now to either just die() with an error (the user will click the back button) or redirect to the next step on success.&lt;br /&gt;&lt;br /&gt;Hopefully no more stumbling blocks.  Wish me luck.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:69450</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/69450.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=69450"/>
    <title>Poor man's grocery cart cup holder.</title>
    <published>2008-07-04T04:47:34Z</published>
    <updated>2008-07-04T04:55:52Z</updated>
    <content type="html">They have these grocery carts at Meijer with the cup holders.&lt;br /&gt;&lt;br /&gt;But I wasn't shopping at Meijer.  But I still needed a cup holder.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://webonastick.com/images/misc/grocery-basket-cup-holder.jpg" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:69353</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/69353.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=69353"/>
    <title>Gay Republican Cards</title>
    <published>2008-07-04T04:44:27Z</published>
    <updated>2008-07-04T04:44:27Z</updated>
    <content type="html">I just bought a set of these a few days ago:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gayrepublicancards.com/"&gt;Gay Republican Cards&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://webonastick.com/images/misc/gay-republican-cards.jpg" alt="Gay Republican Cards" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:69007</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/69007.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=69007"/>
    <title>Dear Marketroids,</title>
    <published>2008-06-28T19:04:01Z</published>
    <updated>2008-06-28T19:04:01Z</updated>
    <content type="html">1.  It's a fucking standard hot dog.  Nothing special.  We all know.  You do not need to call it an &amp;ldquo;all beef hot dog&amp;rdquo;.&lt;br /&gt;&lt;br /&gt;2.  Nobody calls their jet skis or boats "pee double-you cees".  We call them "jet skis" or "boats".  And in those rare moments where we actually have to refer to personal watercraft generically, we call them "watercraft" or "personal watercraft".&lt;br /&gt;&lt;br /&gt;Thanks.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:68737</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/68737.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=68737"/>
    <title>Magna Carts are awesome.</title>
    <published>2008-06-27T03:00:03Z</published>
    <updated>2008-06-27T03:00:03Z</updated>
    <category term="magna cart"/>
    <category term="foldable"/>
    <category term="dolly"/>
    <content type="html">I finally found out what those neat foldable dollies are and got one.&lt;br /&gt;&lt;br /&gt;They're called &lt;a href="http://www.welcomproducts.com/"&gt;Magna Carts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://webonastick.com/images/misc/magna-cart.jpg" alt="Magna Cart" /&gt;&lt;br /&gt;&lt;br /&gt;They're only $30 at Sears.  Yes, Sears still exists.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:68523</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/68523.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=68523"/>
    <title>Stainless steel credit card size transit maps.</title>
    <published>2008-06-27T02:56:09Z</published>
    <updated>2008-06-27T02:57:32Z</updated>
    <category term="transit"/>
    <category term="maps"/>
    <content type="html">I found &lt;a href="http://www.firebox.com/product/946/Credit-Card-Subway-Maps?src_t=sbkamp;src_id=subway"&gt;these&lt;/a&gt; while Googling something up.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://webonastick.com/images/misc/credit-card-subway-map.jpg" alt="Credit Card Sized Stainless Steel Subway Maps" /&gt;&lt;br /&gt;&lt;br /&gt;They'd be neat if I lived in NYC or London.&lt;br /&gt;&lt;br /&gt;Instead, I live in Louisville, a relatively chickenshit town.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:68122</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/68122.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=68122"/>
    <title>New version of tdu released!</title>
    <published>2008-05-07T21:00:54Z</published>
    <updated>2008-05-07T21:03:41Z</updated>
    <category term="disk usage"/>
    <category term="tdu"/>
    <content type="html">&lt;p&gt;Has the following important features now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adds online help.&lt;/li&gt;
&lt;li&gt;handles window resizing.&lt;/li&gt;
&lt;li&gt;doesn't choke anymore on large amounts of data.&lt;/li&gt;
&lt;li&gt;CAVEAT: grouping together files by pattern moved into separate program, dugroup.  This made tdu's code much smaller.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://webonastick.com/tdu/"&gt;http://webonastick.com/tdu/&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:67876</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/67876.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=67876"/>
    <title>In bus transit, you don't need a $1,000 solution to solve a $10 problem.</title>
    <published>2008-04-17T20:55:41Z</published>
    <updated>2008-04-17T20:55:41Z</updated>
    <content type="html">&lt;p&gt;Residents of Louisville might recall that a few years ago, TARC was proposing a light-rail system whose initial cost estimate was $500 million just to build the thing.  Even back then, we all knew how low-ball these initial cost estimates always turn out to be.  And that cost estimate was for one damn line.  "Why not just improve the bus system?", asked yours truly and undoubtedly many others.  You may also recall that thankfully the proposal has been scrapped indefinitely.&lt;/p&gt;

&lt;p&gt;Having watched &lt;a href="http://www.streetfilms.org/archives/bus-rapid-transit-bogota/"&gt;this video&lt;/a&gt;, I was proven right.&lt;/p&gt;

&lt;p&gt;You see, back in the '90s, they were talking about doing the same thing in Bogot&amp;aacute;, Colombia.  Granted, they might have been talking about more than one rail line.  I don't know the details.  Thankfully, people there were also asking, "why not just improve the bus system?", and that proposal was also scrapped.  In its place we have &lt;a href="http://en.wikipedia.org/wiki/Transmilenio"&gt;TransMilenio&lt;/a&gt;, an archetypal example of cheap, effective bus transit.  You pay your fare at the station instead of on the bus&amp;mdash;this makes the buses travel faster because the driver doesn't have to waste his time.  Feeder bus lines, which serve neighborhoods, are free and take you to the station.  On the trunk lines you have over 1,000 articulated buses with wide doors to facilitate mass ingress and egress.  The stations also have massive secure bicycle storage facilities.  Even when it's not rush-hour it's still &lt;s&gt;crowded&lt;/s&gt; I prefer to call it well-utilized.&lt;/p&gt;

&lt;p&gt;This is incontrovertible evidence, folks, that you don't need an overpriced rail system to improve transit.  Not even in a big-ass city like Bogot&amp;aacute; where even reasonable people would think it's a good idea.  Most certainly not in Louisville, where a fraction of the cost could have been used to simply throw more buses onto those routes and serve the entire city instead of just one corridor.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:67732</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/67732.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=67732"/>
    <title>Emacs tip: resize the window or frame to 80 columns wide.</title>
    <published>2008-04-02T18:22:40Z</published>
    <updated>2008-04-02T18:22:40Z</updated>
    <category term="resize"/>
    <category term="80 columns"/>
    <category term="window"/>
    <category term="emacs"/>
    <category term="frame"/>
    <content type="html">&lt;p&gt;I wrote &lt;tt&gt;fix-horizontal-size&lt;/tt&gt;, an Emacs Lisp function that resizes either the frame or the window to 80 columns wide.&lt;/p&gt;

&lt;p&gt;If the window can be sized to 80 columns wide, without resizing the frame itself, it will resize the window.  Otherwise, it will resize the frame.&lt;/p&gt;

&lt;p&gt;You can use a prefix argument to specify a different column width.&lt;/p&gt;

&lt;pre&gt;
(defun fix-frame-horizontal-size (width)
  "Set the frame's size to 80 (or prefix arg WIDTH) columns wide."
  (interactive "P")
  (if window-system
      (set-frame-width (selected-frame) (or width 80))
    (error "Cannot resize frame horizontally: is a text terminal")))

(defun fix-window-horizontal-size (width)
  "Set the window's size to 80 (or prefix arg WIDTH) columns wide."
  (interactive "P")
  (enlarge-window (- (or width 80) (window-width)) 'horizontal))

(defun fix-horizontal-size (width)
  "Set the window's or frame's width to 80 (or prefix arg WIDTH)."
  (interactive "P")
  (condition-case nil
      (fix-window-horizontal-size width)
    (error 
     (condition-case nil
	 (fix-frame-horizontal-size width)
       (error
	(error "Cannot resize window or frame horizontally"))))))

(global-set-key (kbd "C-x W") 'fix-horizontal-size)
&lt;/pre&gt;

&lt;p&gt;There are separate functions &lt;tt&gt;fix-window-horizontal-size&lt;/tt&gt; and &lt;tt&gt;fix-frame-horizontal-size&lt;/tt&gt; if you want to only resize the window or only resize the frame instead of resizing either.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:67530</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/67530.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=67530"/>
    <title>Why I don't have GPS in my car.</title>
    <published>2008-03-31T15:49:19Z</published>
    <updated>2008-03-31T15:49:51Z</updated>
    <category term="car"/>
    <category term="gps"/>
    <content type="html">&lt;a href="http://consumerist.com/373753/circuit-city-tries-to-install-navigation-system-causes-12119-of-damage-to-your-car#c4942245"&gt;"I have yet to suffer any vehicular damage attributable to a Road Atlas."&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:67208</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/67208.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=67208"/>
    <title>More emacs lisp fun: save face customizations into a different file.</title>
    <published>2008-02-05T06:49:50Z</published>
    <updated>2008-02-05T06:50:38Z</updated>
    <category term="variables"/>
    <category term="giraffes"/>
    <category term="emacs lisp"/>
    <category term="elisp"/>
    <category term="faces"/>
    <category term="emacs"/>
    <category term="customize"/>
    <content type="html">I just wrote &lt;a href="http://webonastick.com/emacs-lisp/custom-faces-file.el"&gt;custom-faces-file.el&lt;/a&gt; so that I can split variable customizations and face customizations into different files.&lt;br /&gt;&lt;br /&gt;It's only guaranteed to work with GNU Emacs 22.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:66834</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/66834.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=66834"/>
    <title>hide-mode-line.el: it's like WriteRoom in Emacs.</title>
    <published>2008-02-01T05:19:42Z</published>
    <updated>2008-02-05T06:51:07Z</updated>
    <category term="distraction removal"/>
    <category term="emacs lisp"/>
    <category term="elisp"/>
    <category term="writeroom"/>
    <category term="distraction-free"/>
    <category term="emacs"/>
    <category term="hide mode line"/>
    <content type="html">You know that flash-in-the-pan text editor &lt;a href="http://hogbaysoftware.com/products/writeroom"&gt;WriteRoom&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Some advocates of Emacs will say "just run emacs in a full-screen" or something along those lines, but I find sometimes that the mode-line is still a distraction.&lt;br /&gt;&lt;br /&gt;So I'm working on an implementation of distraction removal in Emacs for two reasons: (1) I think the concept has merit and (2) I don't like the idea of &lt;a href="http://diveintomark.org/archives/2007/01/21/wrongroom?re"&gt;someone writing&lt;/a&gt; &lt;a href="http://neugierig.org/content/unix/"&gt;a whole new text editor&lt;/a&gt; just so they can have a certain feature.  :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webonastick.com/emacs-lisp/hide-mode-line.el"&gt;My rough implementation&lt;/a&gt; is available for download.&lt;br /&gt;&lt;br /&gt;Incase you want to know what emacs looks like without a modeline:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://webonastick.com/emacs-lisp/hide-mode-line.png" alt="Holy crap, emacs without a modeline!" /&gt;&lt;br /&gt;&lt;br /&gt;Basically, this implementation automatically hides the modeline when all of the following conditions apply:&lt;br /&gt;- hide-mode-line is turned on&lt;br /&gt;- there is only one frame&lt;br /&gt;- there is only one window in that frame&lt;br /&gt;- there is no minibuffer&lt;br /&gt;and automatically shows all buffers' modelines otherwise.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;This implementation &lt;i&gt;does&lt;/i&gt; have bugs, you know&lt;/b&gt;: I intermittently have problems with text disappearing.  Those problems might be related to the more frequent ones I have when I do &lt;tt&gt;(setq mode-line-format nil)&lt;/tt&gt; (or use hide-mode-line) in conjunction with &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/LineNumbers#toc3"&gt;linum&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:66678</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/66678.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=66678"/>
    <title>dse @ 2008-01-03T15:59:00</title>
    <published>2008-01-03T20:59:53Z</published>
    <updated>2008-01-03T20:59:53Z</updated>
    <content type="html">exotic dancers&lt;br /&gt;get fooled by two-dollar bills&lt;br /&gt;they think they're twenties</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:66437</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/66437.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=66437"/>
    <title>How to list the packages in the Debian "Standard System" task</title>
    <published>2007-12-27T17:21:00Z</published>
    <updated>2008-01-03T06:09:28Z</updated>
    <content type="html">&lt;pre&gt;&lt;s&gt;cat /var/lib/dpkg/status | \
awk '/^Package: / { package = $2; } /^Priority: standard/ { print package; }' | \
sort&lt;/s&gt;&lt;/pre&gt;

&lt;pre&gt;aptitude search '~pstandard'&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:66166</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/66166.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=66166"/>
    <title>Rewriting tdu in Perl.  Window resizing, online help.</title>
    <published>2007-12-18T23:42:25Z</published>
    <updated>2007-12-18T23:42:25Z</updated>
    <content type="html">I've been working on a rewrite of &lt;a href="http://webonastick.com/tdu/"&gt;tdu&lt;/a&gt; in Perl.  Primarily because I wanted to add SIGWINCH support and I'm too lazy to write any more C code.  :)&lt;br /&gt;&lt;br /&gt;The nice thing is, when dealing with a large number of entries (on the order of, say, 50,000), the Perl version is actually a performance improvement.  This is primarily because the C version has the disadvantage of not using any kind of hashtable, primary due to its author's laziness.&lt;br /&gt;&lt;br /&gt;I can also add things like online help without too much trouble, and have.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webonastick.com/tdu/tdu.pl.txt"&gt;An early version&lt;/a&gt; is available.  It needs polishing.  GPL2 licensed.  Have fun.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:65961</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/65961.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=65961"/>
    <title>My Treo backup procedure.  (Works with any PalmOS device.)</title>
    <published>2007-10-10T23:52:39Z</published>
    <updated>2007-10-11T00:00:45Z</updated>
    <category term="drosophila melanogaster"/>
    <category term="backup"/>
    <category term="i use makefiles for everything"/>
    <category term="palmos"/>
    <category term="makefile"/>
    <category term="unix"/>
    <category term="treo"/>
    <content type="html">&lt;pre&gt;
cd ~/palm &amp;&amp; make backup commit
&lt;/pre&gt;

&lt;p&gt;It's that simple.  Here's (a modified version of) my ~/palm/Makefile .&lt;/p&gt;

&lt;pre&gt;
DEVICE = /dev/pilot
# or /dev/ttyUSB1 or whatever.
BACKUP_DIR = treo-backup
# I'm assuming your copy of $(BACKUP_DIR) is a working copy of
# a Subversion repository.

.PHONY: backup restore list commit setup

backup:
	make setup
	mkdir -p $(BACKUP_DIR) || true
	pilot-xfer -p $(DEVICE) -s $(BACKUP_DIR)
restore:
	# never tested.
	make setup
	mkdir -p $(BACKUP_DIR) || true
	pilot-xfer -p $(DEVICE) -r $(BACKUP_DIR)
commit:
	# Add new files; remove deleted files; commit.
	# There's probably an easier way.
	svn status $(BACKUP_DIR) | grep '^\?' | cut -c8- | \
		while read file ; do svn add &amp;quot;$$file&amp;quot; ; done
	svn status $(BACKUP_DIR) | grep '^\!' | cut -c8- | \
		while read file ; do svn remove &amp;quot;$$file&amp;quot; ; done
	svn commit -m &amp;quot;backup&amp;quot; $(BACKUP_DIR)
	svn status $(BACKUP_DIR)
	# The last command *should* not display any output.
setup:
	if sudo modprobe --first-time visor &amp;gt;/dev/null 2&amp;gt;/dev/null ; then \
		sleep 5 ; \
	fi
&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:65542</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/65542.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=65542"/>
    <title>Dear Advertisers,</title>
    <published>2007-08-17T13:16:51Z</published>
    <updated>2007-08-17T13:16:51Z</updated>
    <content type="html">Please stop using music that sounds like "The District Sleeps Tonight" by The Postal Service, but is not, in your commercials.&lt;br /&gt;&lt;br /&gt;You people are making me sick of that song by proxy.&lt;br /&gt;&lt;br /&gt;If you're going to ruin that song to death, at least let it die with dignity by licensing the actual recording.&lt;br /&gt;&lt;br /&gt;Thanks.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:65487</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/65487.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=65487"/>
    <title>.signature</title>
    <published>2007-07-17T21:59:24Z</published>
    <updated>2007-07-17T22:02:02Z</updated>
    <category term="top-posting"/>
    <category term="email"/>
    <category term="outlook"/>
    <category term="broken default configuration"/>
    <category term="bottom-posting"/>
    <category term="wolf eel"/>
    <category term="signature"/>
    <content type="html">&lt;p&gt;I found this .signature file somewhere &lt;a href="http://groups.google.com/group/comp.lang.lisp/msg/def680d17b4d9cb5"&gt;on the Internet&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;
-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
&lt;/pre&gt;

&lt;p&gt;I'm going to borrow it.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:65262</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/65262.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=65262"/>
    <title>Test post.</title>
    <published>2007-07-16T06:14:03Z</published>
    <updated>2007-07-16T06:14:03Z</updated>
    <content type="html">Hi, I'm using handhelj, a PalmOS LJ client which has not been updated in 4 years.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I hope this works.&lt;/b&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:64895</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/64895.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=64895"/>
    <title>Treo 680 Review.</title>
    <published>2007-07-09T03:02:57Z</published>
    <updated>2007-07-09T03:02:57Z</updated>
    <content type="html">DISCLAIMER: I'm not experienced at reviewing products.  This means I may not touch on every aspect that someone seeking reviews of gadgets would like me to.  This is a rough draft; I'll probably edit this later.&lt;br /&gt;&lt;br /&gt;That said, three weeks ago, having acquired eligibility to upgrade my phone, I purchased a Palm Treo 680 with "Cingular now the new AT&amp;amp;T".&lt;br /&gt;&lt;br /&gt;I decided to get one for the following reasons:&lt;br /&gt;- as opposed to a Windows Mobile device... in part, because I'm forced to use Windows at work and have no desire to even see the Windows logo on my personal phone, much less use anything with Windows in its name.  Yes, I still have a bad taste in my mouth for Windows and Microsoft products in general, and I need to assert that I can choose to not use Microsoft products.&lt;br /&gt;- as opposed to a "dumb" phone, in part, because most of my Heine Brothers circle of friends have smartphones and I've borne witness to how much fun those things are.&lt;br /&gt;- in part, because I want to continue to use all the PalmOS applications I've been using on my Palm m515.&lt;br /&gt;- in part, because I wanted to get rid of the number of devices I carry around.  I carried my phone and PDA every single day, and on my daily walking journeys, would carry an MP3 player in addition to both.&lt;br /&gt;- in part, because more frequent use of the device would encourage me to start using the calendar.&lt;br /&gt;- in part, because I decided it would be my next nice toy.&lt;br /&gt;&lt;br /&gt;Almost none of the major gripes you've heard about with the iPhone apply to the Treo 680.  But the following still do:&lt;br /&gt;- "Has EDGE, but not 3G".  Same limitation as the iPhone.  More accurately described as "Has EDGE, but neither UTMS nor HSDPA".  Limitation is *not* a big deal for Google Maps or surfing mobile sites.&lt;br /&gt;&lt;br /&gt;The upfront cost is significantly cheaper than the iPhone ($299 with $200 MIR, after which I discovered there were even better deals), but...&lt;br /&gt;- Your data plan will probably be a bit more expensive on the Treo 680 than on the iPhone.&lt;br /&gt;&lt;br /&gt;A smattering of random comments:&lt;br /&gt;- The ordering process: My online order did not set up my phone and data plans correctly, so I had to talk to a CSR to fix the problems.  The main problems were that the new GSM card that came with the phone wasn't yet activated, and that I wasn't provisioned for multimedia messaging.&lt;br /&gt;- As a phone: sound quality and receiption are on par with my Motorola v190, which has been excellent about 99% of the time.&lt;br /&gt;- As a PDA: it's for the most part good old classic PalmOS.&lt;br /&gt;&lt;br /&gt;As an MP3 player:&lt;br /&gt;- Comes with a software package called Pocket Tunes.&lt;br /&gt;- Two of the things I hated about my previous MP3 players (an RCA M2030 and a Sansa e140) were that: (1) it didn't remember the position in a song when you turned the player off, and (2) 4GB SD cards were not supported.  Pocket Tunes is not affected by these limitations.&lt;br /&gt;- pTunes version 3.0.9 is bundled on the phone, and can freely be upgraded to 3.1.8.  You can activate a free feature upgrade; mine happened to be skinnability, but your proverbial mileage may vary.&lt;br /&gt;- I've used trialware version 4, but it didn't provide me much additional features I could use except for a graphic equalizer.  Streaming radio performance was nonexistent.&lt;br /&gt;&lt;br /&gt;Miscellany:&lt;br /&gt;- My SSH client of choice is pssh.  80-column mode works but is really damn tiny.  Switching to any other application will cause your session to terminate.&lt;br /&gt;- Google Maps for Mobile works really well.  It's a native PalmOS application.  Never crashes.&lt;br /&gt;- Blazer, the bundled web browser, has its quirks.&lt;br /&gt;- Java applications crash from time to time.  Or is it just Opera Mini?&lt;br /&gt;- Videos from m.youtube.com do not load at all using the built-in Kinoma video player.&lt;br /&gt;- Streaming Internet radio worked using Kinoma though, at least the one time I tried it.&lt;br /&gt;- Battery life: I'd say 4-5 hours of MP3 playing time.  I only play MP3s for an hour or two a day, mostly while walking.  Since I have it on the nightstand charging nightly, this is not a major issue for me.&lt;br /&gt;- Hangs for a few seconds every once in a while.  I'm not sure why.  This is even after I turn all my hacks/extensions off.&lt;br /&gt;&lt;br /&gt;Things I'm waiting for:&lt;br /&gt;- The first Treos to use the new Linux platform.&lt;br /&gt;- Openmoko.&lt;br /&gt;- The next iPhones.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dse:64663</id>
    <link rel="alternate" type="text/html" href="http://dse.livejournal.com/64663.html"/>
    <link rel="self" type="text/xml" href="http://dse.livejournal.com/data/atom/?itemid=64663"/>
    <title>One good thing about the Cingular/AT&amp;amp;T merger.</title>
    <published>2007-07-09T02:24:23Z</published>
    <updated>2007-07-09T02:27:22Z</updated>
    <content type="html">Along with the "Cingular" name, away went the use of &lt;a href="http://www.myfonts.com/fonts/linotype/avenir/"&gt;Avenir&lt;/a&gt; for corporate branding.&lt;br /&gt;&lt;br /&gt;I've been sick of every giant corporation using that font for their branding for years.&lt;br /&gt;&lt;br /&gt;Thanks, AT&amp;amp;T.</content>
  </entry>
</feed>
