<?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/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/'>
<channel>
  <title>Bela Lugosi&apos;s Dead, Jim</title>
  <link>http://ewx.livejournal.com/</link>
  <description>Bela Lugosi&apos;s Dead, Jim - LiveJournal.com</description>
  <lastBuildDate>Thu, 09 Jul 2009 18:24:30 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>ewx</lj:journal>
  <lj:journalid>604268</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>http://l-userpic.livejournal.com/1975446/604268</url>
    <title>Bela Lugosi&apos;s Dead, Jim</title>
    <link>http://ewx.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/524436.html</guid>
  <pubDate>Thu, 09 Jul 2009 18:24:30 GMT</pubDate>
  <title>Things that annoy me about Perforce</title>
  <link>http://ewx.livejournal.com/524436.html</link>
  <description>&lt;h3&gt;Missing Features&lt;/h3&gt;

&lt;p&gt;Things that just aren&apos;t there, that shouldn&apos;t (in principle) be
hard to add.&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;b&gt;&lt;tt&gt;p4 resolve&lt;/tt&gt; won&apos;t show the difference between
&lt;i&gt;theirs&lt;/i&gt; and &lt;i&gt;merged&lt;/i&gt;&lt;/b&gt;.  A motivating example is where you
merge from a release branch (&lt;i&gt;theirs&lt;/i&gt;) that has changed more, and
more recently, than the merge target (&lt;i&gt;yours&lt;/i&gt;). In this case I&apos;m
more familiar with the branch changes and so would like to see what
else I&apos;m getting (i.e. from the branch I&apos;m merging into) in the
eventual submit. (Perforce have an enhancement request open for this
one.)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;There is no command to report the current status of your working
tree&lt;/b&gt; (like &lt;tt&gt;cvs -n up&lt;/tt&gt;, &lt;tt&gt;bzr status&lt;/tt&gt; etc).  When writing
&lt;a href=&quot;http://www.greenend.org.uk/rjk/2009/vcs.html&quot;&gt;VCS&lt;/a&gt; I had
to write my own.  &lt;tt&gt;p4 opened&lt;/tt&gt; is part way there in that it will
tell you what have open, but the output format is rather verbose; it
lacks the equivalent of &lt;tt&gt;.cvsignore&lt;/tt&gt;; and it doesn&apos;t tell you
if any files need resolving.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;&lt;tt&gt;p4 diff&lt;/tt&gt; (etc.) won&apos;t do the equivalent of &lt;tt&gt;diff
-N&lt;/tt&gt;&lt;/b&gt; (even if you set &lt;tt&gt;P4DIFF&lt;/tt&gt;!).  This makes the patches
they generate incomplete if there are any added, branched or removed
files, which is inconvenient for review and means that they&apos;re not
suitable for use with the &lt;tt&gt;patch&lt;/tt&gt; program.&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;Interface Inconveniences&lt;/h3&gt;

&lt;p&gt;Nuisances in the user interface.  Again, I don&apos;t think these would
be especially difficult to change.&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;b&gt;Perforce forms (e.g. for &lt;tt&gt;p4 submit&lt;/tt&gt;) treat visually
identical whitespace as distinct&lt;/b&gt;.  So if you&apos;ve configured your editor
not to insert raw tab characters (because your coding standard says
you shouldn&apos;t use them, for instance, which is quite sensible given
the trouble they cause) then your change description will appear to be
correctly formatted when you submit it but be wrongly indented when
you look at it in &lt;tt&gt;p4 changes&lt;/tt&gt; or whatever.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;&lt;tt&gt;p4 submit&lt;/tt&gt; can only take one filename pattern&lt;/b&gt;.
i.e. &amp;ldquo;&lt;tt&gt;p4 submit one.c&lt;/tt&gt;&amp;rdquo; is OK but &amp;ldquo;&lt;tt&gt;p4
submit one.c two.c&lt;/tt&gt;&amp;rdquo; is not; you have to manually add files
to a change in separate steps before submitting it, or construct a
change listing all the desired files manually.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;If a change cannot be submitted you have to modify it and resubmit
it&lt;/b&gt;; you can&apos;t delete it and start again, which otherwise might well be
more convenient.  The restriction seems to be an entirely bureaucratic
one, too: you can remove all the files from it and &lt;i&gt;then&lt;/i&gt; delete
it.  (For non-p4 users, the &amp;ldquo;change&amp;rdquo; here means the
description and metadata, which in p4 have an independent life of
their own; not your edits.)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Output tends to hide important information among
unimportant&lt;/b&gt;.  For example if a &lt;tt&gt;p4 sync&lt;/tt&gt; updates 100 files
and only one of them requires resolving, you&apos;re likely to miss it.
Summarizing the files that need resolving at the end of the list of
updates files would improve matters.&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;Model Problems&lt;/h3&gt;

&lt;p&gt;Flaws that result from some aspect of the system&apos;s design.  These
might well be difficult to change.  (Which doesn&apos;t make them invalid;
if the underlying design of a system doesn&apos;t support useful features,
then perhaps that design is itself wrong.)&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;b&gt;There&apos;s no whole-module graphical branch history view&lt;/b&gt; (like
&lt;tt&gt;gitk&lt;/tt&gt; or &lt;tt&gt;bzr visualise&lt;/tt&gt;).  &lt;tt&gt;p4v&lt;/tt&gt; will show you
a per-file branch diagram but nothing better than that.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;&lt;tt&gt;p4 describe&lt;/tt&gt; and &lt;tt&gt;p4 diff2&lt;/tt&gt; don&apos;t honor
&lt;tt&gt;P4DIFF&lt;/tt&gt;&lt;/b&gt; (because they do the diffing on the server), so if you
have a better diff tool than p4&apos;s built-in one (which I do) then you
don&apos;t get the benefit of it.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Execute bits are not properly versioned&lt;/b&gt;.  You can&apos;t just edit a
file and chmod it, you have to use a special command to change the
execute bit.  That&apos;s just inconvenient, but worse is that integration
(merging) doesn&apos;t copy the change, so you have to change it on every
branch separately.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;If the server is running slow or is down, &lt;i&gt;all&lt;/i&gt; operations
that are in any way related to version control are affected&lt;/b&gt;.
Since there is no client-side state or caching other than file
contents, this includes non-mutating operations (diff, history, etc;
even testing whether a file is in version control).&lt;/li&gt;

&lt;/ul&gt;

&lt;hr&gt;

&lt;p&gt;(Yes, some of these problems exist to some extent in some other
version control systems too.  That doesn&apos;t mean they&apos;re not
annoying...)&lt;/p&gt;

&lt;h3&gt;Things that aren&apos;t annoying&lt;/h3&gt;

&lt;ul&gt;

&lt;li&gt;&lt;b&gt;The need to &lt;tt&gt;p4 edit&lt;/tt&gt; isn&apos;t a big problem in
practice&lt;/b&gt; (even though it sounds like a nuisance if you&apos;re not used
to it), given &lt;a href=&quot;http://p4el.sourceforge.net/&quot;&gt;adequate editor
integration&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;It doesn&apos;t crash&lt;/b&gt;.  As a rule the problems seem to be design
flaws (such as those above) rather than implementation bugs.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;It&apos;s usually fast&lt;/b&gt;.&lt;/li&gt;

&lt;/ul&gt;</description>
  <comments>http://ewx.livejournal.com/524436.html</comments>
  <category>geek</category>
  <category>software development</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/523808.html</guid>
  <pubDate>Mon, 22 Jun 2009 19:52:27 GMT</pubDate>
  <title>The Green Man</title>
  <link>http://ewx.livejournal.com/523808.html</link>
  <description>&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1419599&quot;&gt;View Poll: #1419599&lt;/a&gt;&lt;/div&gt;</description>
  <comments>http://ewx.livejournal.com/523808.html</comments>
  <category>nonsense</category>
  <category>polls</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/523624.html</guid>
  <pubDate>Mon, 22 Jun 2009 12:34:57 GMT</pubDate>
  <title>Weird Bash time behavior</title>
  <link>http://ewx.livejournal.com/523624.html</link>
  <description>&lt;pre style=&quot;border: 1px solid&quot;&gt;richard@araminta:~$ cat busy.c
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int main(int argc, char **argv) {
  struct timeval now, end;
  sleep(atoi(argv[1]));
  gettimeofday(&amp;amp;now, NULL);
  end = now;
  end.tv_sec += atoi(argv[2]);
  while(now.tv_sec &amp;lt; end.tv_sec || now.tv_usec &amp;lt; end.tv_usec)
    gettimeofday(&amp;amp;now, NULL);
  return 0;
}&lt;/pre&gt;

&lt;p&gt;This programs sleeps for a number of seconds and then busy-waits
for a number of seconds.&lt;/p&gt;

&lt;pre style=&quot;border: 1px solid&quot;&gt;richard@araminta:~$ time ./busy 0 1 | time ./busy 1 2 | time ./busy 4 3
0.63user 1.36system 0:03.00elapsed 66%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+133minor)pagefaults 0swaps
1.00user 1.99system 0:07.00elapsed 42%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+133minor)pagefaults 0swaps

real    0m7.016s
user    0m1.932s
sys     0m4.088s&lt;/pre&gt;

&lt;p&gt;Superficially it would seem that:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;tt&gt;busy 0 1&lt;/tt&gt; slept 1s and busy-waited 2s&lt;/li&gt;
 &lt;li&gt;&lt;tt&gt;busy 1 2&lt;/tt&gt; slept 4s and busy-waited 3s&lt;/li&gt;
 &lt;li&gt;&lt;tt&gt;busy 4 3&lt;/tt&gt; slept 2s and busy-waited 6s&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course this isn&apos;t the case at all, and the different output
formats are a hint as to what&apos;s really going on.  Bash interpreted the
first &lt;tt&gt;time&lt;/tt&gt; as applying to the &lt;i&gt;whole pipeline&lt;/i&gt; (which
does indeed survive for 7s and consume 6s of CPU) while the second and
third only apply to the individual commands.  The whole-pipeline
output of course has to appear last since the computer can&apos;t predict the future.&lt;/p&gt;

&lt;p&gt;In other words, the actual grammar honored by the shell differs
sharply from the natural reading of the command.  Bash&apos;s
interpretation is both documented (in &lt;tt&gt;man bash&lt;/tt&gt;) and allowed
by a weird exception in &lt;a href=&quot;http://www.opengroup.org/onlinepubs/9699919799/utilities/time.html&quot;&gt;the
specification&lt;/a&gt;, but if you were naively expecting &lt;tt&gt;time&lt;/tt&gt; to
behave like every single other command, you&apos;ll be quite surprised (if
you notice at all).  If you don&apos;t notice then you&apos;ll misled into
thinking that the wrong element of your pipeline needs optimizing.&lt;/p&gt;

&lt;p&gt;Allowing &lt;tt&gt;time&lt;/tt&gt; at the start of (some or all) compound
commands would have been less surprising and more useful, and still
allowed timing whole pipelines (when bracketed).&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/523624.html</comments>
  <category>geek</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/523334.html</guid>
  <pubDate>Thu, 18 Jun 2009 13:22:43 GMT</pubDate>
  <title>More Python character encoding braindamage</title>
  <link>http://ewx.livejournal.com/523334.html</link>
  <description>&lt;pre&gt;rjk@rackheath:~$ python -c &apos;print &quot;møøse&quot;&apos;
møøse
rjk@rackheath:~$ python -c &apos;print u&quot;møøse&quot;&apos;
mÃ¸Ã¸se
rjk@rackheath:~$ locale
LANG=en_GB.UTF-8
LC_CTYPE=&quot;en_GB.UTF-8&quot;
LC_NUMERIC=&quot;en_GB.UTF-8&quot;
LC_TIME=&quot;en_GB.UTF-8&quot;
LC_COLLATE=&quot;en_GB.UTF-8&quot;
LC_MONETARY=&quot;en_GB.UTF-8&quot;
LC_MESSAGES=&quot;en_GB.UTF-8&quot;
LC_PAPER=&quot;en_GB.UTF-8&quot;
LC_NAME=&quot;en_GB.UTF-8&quot;
LC_ADDRESS=&quot;en_GB.UTF-8&quot;
LC_TELEPHONE=&quot;en_GB.UTF-8&quot;
LC_MEASUREMENT=&quot;en_GB.UTF-8&quot;
LC_IDENTIFICATION=&quot;en_GB.UTF-8&quot;
LC_ALL=
rjk@rackheath:~$ python -V
Python 2.5.2&lt;/pre&gt;

&lt;p&gt;(...but it&apos;s the same in 2.6.x.)&lt;/p&gt;

&lt;p&gt;I &lt;i&gt;think&lt;/i&gt; it&apos;s interpreting each byte in the (actually UTF-8&lt;sup&gt;1&lt;/sup&gt;) input string as a Unicode code point in its own right, though another (philosophically different but pragmatically essentially identical) possibility is that it thinks all input strings are encoded using ISO-8859-1.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; and don&apos;t give me the nonsense someone came up with &lt;a href=&quot;http://ewx.livejournal.com/457086.html&quot;&gt;last time&lt;/a&gt; about Python having no way to know how the input is encoded.  It does have a way, that&apos;s what &lt;tt&gt;LC_CTYPE&lt;/tt&gt; is for.&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/523334.html</comments>
  <category>geek</category>
  <category>python</category>
  <category>moose</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/523135.html</guid>
  <pubDate>Sat, 13 Jun 2009 13:45:36 GMT</pubDate>
  <link>http://ewx.livejournal.com/523135.html</link>
  <description>&lt;a href=&quot;http://www.flickr.com/photos/p1r/tags/mengersponge/&quot;&gt;Rubik&apos;s Cube Menger Sponge and Crossword For Multidimensional Aliens&lt;/a&gt;</description>
  <comments>http://ewx.livejournal.com/523135.html</comments>
  <category>links</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/522900.html</guid>
  <pubDate>Tue, 09 Jun 2009 18:18:06 GMT</pubDate>
  <title>Stupid Apple</title>
  <link>http://ewx.livejournal.com/522900.html</link>
  <description>&lt;pre&gt;chymax$ ls -lL /usr/X11/lib/libXdamage.*
-rwxr-xr-x 1 root wheel 88496 2009-03-13 00:38 /usr/X11/lib/libXdamage.&lt;span style=&quot;color:red&quot;&gt;1.1.0&lt;/span&gt;.dylib
-rwxr-xr-x 1 root wheel 88496 2009-03-13 00:38 /usr/X11/lib/libXdamage.1.dylib
-rwxr-xr-x 1 root wheel 88496 2009-03-13 00:38 /usr/X11/lib/libXdamage.dylib
-rwxr-xr-x 1 root wheel   936 2007-09-24 05:39 /usr/X11/lib/libXdamage.la
chymax$ grep ^library_names /usr/X11/lib/libXdamage.la
library_names=&apos;libXdamage.1.dylib libXdamage.dylib libXdamage.&lt;span style=&quot;color:red&quot;&gt;1.0.0&lt;/span&gt;.dylib&apos;&lt;/pre&gt;</description>
  <comments>http://ewx.livejournal.com/522900.html</comments>
  <category>geek</category>
  <category>leopard</category>
  <category>mac</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/522677.html</guid>
  <pubDate>Sat, 30 May 2009 22:07:01 GMT</pubDate>
  <title>Complete the song trilogy</title>
  <link>http://ewx.livejournal.com/522677.html</link>
  <description>&lt;ol&gt;
 &lt;li&gt;New Order/&lt;a href=&quot;http://www.google.co.uk/search?q=%22true+faith%22+lyrics&quot;&gt;True Faith&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;Nik Kershaw/&lt;a href=&quot;http://www.google.co.uk/search?q=%22i+won&amp;#39;t+let+the+sun+go+down+on+me%22+lyrics&quot;&gt;I Won&apos;t Let The Sun Go Down On Me&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;???&lt;/li&gt;
&lt;/ol&gt;</description>
  <comments>http://ewx.livejournal.com/522677.html</comments>
  <category>nonsense</category>
  <category>music</category>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/522307.html</guid>
  <pubDate>Sat, 23 May 2009 20:07:05 GMT</pubDate>
  <title>Safari 4</title>
  <link>http://ewx.livejournal.com/522307.html</link>
  <description>&lt;p&gt;I downloaded the &lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari 4
beta&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The obvious visual change is that tabs now replace the title bar.
AFAIK this feature first appeared in &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Google Chrome&lt;/a&gt;.  It seems a
sensible use of vertical space.&lt;/p&gt;

&lt;p&gt;I have a complaint about Apple&apos;s implementation of the idea though:
when you have more than a few tabs (depending on the width of the
window), the first thing to disappear is the close button towards the
left.  Fair enough, but when you hover over the tab (for instance to
select it) the close button reappears.  Since until you&apos;re there
there&apos;s no visual indication you need to avoid that part of the title,
the result is lots of accidentally closed tabs.  Worse, there appears
to be no undo close tab option.&lt;/p&gt;

&lt;p&gt;In fact the closed tab will be the first thing you see in the
history page, so it&apos;s not that hard to retrieve it.  But you lose any
state that you had in that page (unlike Firefox&apos;s undo close tab
option, which does preserve at least some of the state).&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/misc/safari-topsites.png&quot;&gt;top
sites&lt;/a&gt; page makes is effectively an adaptive bookmarks page,
showing thumbs of the dozen sites Safari thinks you visit most often.
It&apos;s initially populated with the NYT, Amazon, Apple, Wikipedia, CNET
and various others.  Wikipedia presumably got there for free but I did
wonder if the others had to pay and if so how much.  As you can see
from the linked screenshot it&apos;s already accumulated a few of the pages
I&apos;ve visited recently.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/misc/safari-history.png&quot;&gt;history
page&lt;/a&gt; uses Coverflow (something that&apos;s turning up increasingly
often in Apple software).  Seems quite convenient and allowing visual
recognition of pages is nice.&lt;/p&gt;

&lt;p&gt;As in earlier Safaris, text entry boxes (such as Livejournal&apos;s
update form) are resizable, a nice touch that I wish Firefox would
pick up.&lt;/p&gt;

&lt;p&gt;The advertised &quot;full page zoom&quot; buttons don&apos;t exist, though there
are menu and keyboard versions.  Zooming in randomly jumps around the
page, making it very inconvenient to actually use the feature.&lt;/p&gt;

&lt;p&gt;Hovering over a link still doesn&apos;t reveal what the destination is,
unlike Firefox.  It seems like a little thing but actually once you&apos;re
used to it, not knowing for sure where you&apos;re going next makes
browsing feel surprisingly uncomfortable.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/misc/safari-activity.png&quot;&gt;It
actually uses more memory than Firefox&lt;/a&gt; (RSIZE is the amount of
real RAM used, VSIZE counts swap as well and is generally less
interesting).  It does seem to use less CPU when idle (where &quot;idle&quot;
for a web browser means &quot;running various bits of Javascript&quot;), which
would lend a bit of plausibility to Apple&apos;s performance claims if it
weren&apos;t for the fact that visiting a page on Apple&apos;s own website took
around 30s to load (and then proceeded to lag way behind user input,
and &lt;a href=&quot;http://en.wikipedia.org/wiki/Spinning_wait_cursor&quot;&gt;SPOD&lt;/a&gt; some
of the time, when scrolling) where Firefox managed to produce it just
like that.&lt;/p&gt;

&lt;p&gt;(I think it must be something about that page, since other pages
don&apos;t produce the same problem.  But you&apos;d think they&apos;d test it
against its own website!)&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/522307.html</comments>
  <category>geek</category>
  <category>mac</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/522212.html</guid>
  <pubDate>Sat, 23 May 2009 15:09:54 GMT</pubDate>
  <title>Fair-weather friends?</title>
  <link>http://ewx.livejournal.com/522212.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/misc/fairweather.png&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/misc/fairweather.png&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(i.e. lots of accounts friended me and then evaporated).&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/522212.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/521903.html</guid>
  <pubDate>Sat, 23 May 2009 14:56:40 GMT</pubDate>
  <title>Emacs for Macs</title>
  <link>http://ewx.livejournal.com/521903.html</link>
  <description>&lt;p&gt;Mac support for &lt;a href=&quot;http://www.gnu.org/software/emacs/&quot;&gt;Emacs&lt;/a&gt; (or possibly the
other way round) has been a bit of an issue for a while.&lt;/p&gt;

&lt;p&gt;The shipped &lt;tt&gt;/usr/bin/emacs&lt;/tt&gt; only runs in a terminal,
lacking any kind of GUI support, which is OK for quick edits but
rather inferior for extended work.&lt;/p&gt;

&lt;p&gt;Compile your own Emacs with X11 support (or use someone else&apos;s, e.g. &lt;a href=&quot;http://www.finkproject.org/&quot;&gt;Fink&lt;/a&gt;) and that works, but then
you&apos;re at the mercy of Apple&apos;s deranged X11, which gets on badly with
&lt;a href=&quot;http://www.apple.com/macosx/features/spaces.html&quot;&gt;Spaces&lt;/a&gt;
and has very poor cut and paste integration with native
applications.&lt;/p&gt;

&lt;p&gt;For a while there&apos;s been &lt;a href=&quot;http://aquamacs.org/&quot;&gt;Aquamacs&lt;/a&gt;, which bills itself as a
Mac-friendly version of Emacs, but I never really got on all that well
with it.&lt;/p&gt;

&lt;p&gt;A particular problem is that if you type anything while a selection
exists, the selection is replaced with what you type.  This is Macish
enough but if you created the selection using the keyboard rather than
the mouse then you can&apos;t make the selection go away with the keyboard
- you have to use the mouse.  The result ends up being a lot of
undoing, even after months of use.&lt;/p&gt;

&lt;p&gt;It also doesn&apos;t tell you what size your window is when resizing and
creates new windows (frames, in Emacs&apos;s own terminology) with a size
matching the last one.  So getting &lt;a href=&quot;http://ewx.livejournal.com/520772.html&quot;&gt;a window of a particular
size&lt;/a&gt; can be rather fiddly.)&lt;/p&gt;

&lt;p&gt;Recently &lt;span class=&apos;ljuser&apos; lj:user=&apos;fanf&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://fanf.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://fanf.livejournal.com/&apos;&gt;&lt;b&gt;fanf&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; mentioned the &lt;a href=&quot;http://en.wikipedia.org/wiki/NeXTSTEP&quot;&gt;NextSTEP&lt;/a&gt; port of
Emacs (or OpenSTEP, if you prefer) which has now been merged into the
trunk of Emacs.  NextSTEP&apos;s direct descendant is of course OS X, so
this is a Mac-native Emacs.&lt;/p&gt;

&lt;p&gt;The source can be &lt;a href=&quot;http://savannah.gnu.org/cvs/?group=emacs&quot;&gt;retrieved via CVS&lt;/a&gt;.
It built an Emacs.app without any trouble.  It act much more like my
muscle-memory expects Emacs should (no more destructive and
un-dismissable selections), but also has concessions to the local OS -
for instance it supports native cut and paste using ⌘C, ⌘X, ⌘V
etc.  Window size behavior is more sane and usable too.&lt;/p&gt;

&lt;p&gt;Complaints so far:&lt;/p&gt;

&lt;ul&gt;

 &lt;li&gt;Trying to save a buffer that doesn&apos;t already have a filename
     offers by default to save it somewhere in the guts of Emacs.app,
     which isn&apos;t very useful.&lt;/li&gt;

 &lt;li&gt;Mac-native means of entering &amp;ldquo;special&amp;rdquo; characters
     don&apos;t seem to be available.  C-X 8 RET works fine, with tab
     completion over Unicode character names, but making ⌥⌘T behave as
     normal would be nice.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;These are pretty minor; overall it&apos;s a clear improvement over what
came before.  Perhaps Apple can be persuaded to included it in future
releases (with a link from &lt;tt&gt;/usr/bin/emacs&lt;/tt&gt; into the depths of
the application bundle)?&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/521903.html</comments>
  <category>geek</category>
  <category>emacs</category>
  <category>mac</category>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/521614.html</guid>
  <pubDate>Sat, 23 May 2009 12:37:40 GMT</pubDate>
  <title>Stupid Microsoft</title>
  <link>http://ewx.livejournal.com/521614.html</link>
  <description>&lt;a href=&quot;http://ewx.livejournal.com/466845.html&quot;&gt;Further to the instructions here&lt;/a&gt;, I&apos;d add that you will need to randomly re-install the new layout from time to time, as Windows randomly breaks or removes it without even telling you.</description>
  <comments>http://ewx.livejournal.com/521614.html</comments>
  <category>geek</category>
  <category>windows</category>
  <category>leopard</category>
  <category>mac</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/521223.html</guid>
  <pubDate>Tue, 19 May 2009 22:13:07 GMT</pubDate>
  <title>Meow</title>
  <link>http://ewx.livejournal.com/521223.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/misc/4961.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/misc/4961.jpg&quot; style=&quot;border:none&quot; width=&quot;600&quot; height=&quot;450&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fitzroy St, lunchtime.&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/521223.html</comments>
  <category>cat pictures</category>
  <category>photography</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/521143.html</guid>
  <pubDate>Tue, 19 May 2009 22:09:58 GMT</pubDate>
  <title>Malign hypercognition disorder</title>
  <link>http://ewx.livejournal.com/521143.html</link>
  <description>&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1402533&quot;&gt;View Poll: #1402533&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You have to choose one of good and evil; black and white comic-book morality here.&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/521143.html</comments>
  <category>nonsense</category>
  <category>polls</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/520772.html</guid>
  <pubDate>Mon, 11 May 2009 15:11:40 GMT</pubDate>
  <title>Does my indentation level look big in this?</title>
  <link>http://ewx.livejournal.com/520772.html</link>
  <description>&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1398064&quot;&gt;View Poll: #1398064&lt;/a&gt;&lt;/div&gt;</description>
  <comments>http://ewx.livejournal.com/520772.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>48</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/520254.html</guid>
  <pubDate>Mon, 11 May 2009 12:57:49 GMT</pubDate>
  <title>Don&apos;t lose your head</title>
  <link>http://ewx.livejournal.com/520254.html</link>
  <description>&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1398014&quot;&gt;View Poll: #1398014&lt;/a&gt;&lt;/div&gt;</description>
  <comments>http://ewx.livejournal.com/520254.html</comments>
  <category>nonsense</category>
  <category>polls</category>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/520086.html</guid>
  <pubDate>Sun, 10 May 2009 17:46:11 GMT</pubDate>
  <title>Yes, they really were that color</title>
  <link>http://ewx.livejournal.com/520086.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1704.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=400&amp;amp;pic=1704.jpg&amp;amp;w=600&quot; width=&quot;600&quot; height=&quot;400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1685.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=600&amp;amp;pic=1685.jpg&amp;amp;w=400&quot; width=&quot;400&quot; height=&quot;600&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1688.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=400&amp;amp;pic=1688.jpg&amp;amp;w=600&quot; width=&quot;600&quot; height=&quot;400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1710.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=400&amp;amp;pic=1710.jpg&amp;amp;w=600&quot; width=&quot;600&quot; height=&quot;400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1715.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=400&amp;amp;pic=1715.jpg&amp;amp;w=600&quot; width=&quot;600&quot; height=&quot;400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-02/1755.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-02?h=400&amp;amp;pic=1755.jpg&amp;amp;w=600&quot; width=&quot;600&quot; height=&quot;400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/520086.html</comments>
  <category>photography</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/519845.html</guid>
  <pubDate>Thu, 07 May 2009 15:50:29 GMT</pubDate>
  <title>/usr/sbin/sendmail</title>
  <link>http://ewx.livejournal.com/519845.html</link>
  <description>&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1396328&quot;&gt;View Poll: #1396328&lt;/a&gt;&lt;/div&gt;</description>
  <comments>http://ewx.livejournal.com/519845.html</comments>
  <category>geek</category>
  <category>polls</category>
  <lj:security>public</lj:security>
  <lj:reply-count>27</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/519668.html</guid>
  <pubDate>Thu, 07 May 2009 13:10:13 GMT</pubDate>
  <title>Money can&apos;t buy you happiness</title>
  <link>http://ewx.livejournal.com/519668.html</link>
  <description>&lt;p&gt;You&apos;re cycling&lt;sup&gt;1&lt;/sup&gt; along and you spot a coin or note on the ground.  Presumably whether you stop to pick it up depends on its value, so how much does it have to be before it&apos;s worth stopping, dismounting, picking up, remounting, and picking your speed back up?&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;http://www.livejournal.com/poll/?id=1396261&quot;&gt;View Poll: #1396261&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; If you don&apos;t cycle, assume some other means of transport that&apos;s comparably inconvenient to interrupt.&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/519668.html</comments>
  <category>polls</category>
  <lj:security>public</lj:security>
  <lj:reply-count>39</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/519266.html</guid>
  <pubDate>Mon, 04 May 2009 21:35:44 GMT</pubDate>
  <title>Welcome to the machine</title>
  <link>http://ewx.livejournal.com/519266.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/05-01/1667.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/05-01?h=600&amp;amp;pic=1667.jpg&amp;amp;w=400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;...yes, I&apos;m attempting to make a dent in my photo backlog.  I spent very little time taking pictures for the first part of the year, a bit of a shame having bought a new camera towards the end of 2008, but got going properly in April without simultaneously getting back into the habit of doing anything with the output.&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/519266.html</comments>
  <category>photography</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/519021.html</guid>
  <pubDate>Mon, 04 May 2009 21:29:02 GMT</pubDate>
  <title>Hemmed in</title>
  <link>http://ewx.livejournal.com/519021.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-29/1623.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/04-29?h=600&amp;amp;pic=1623.jpg&amp;amp;w=400&quot; style=&quot;border:none&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/519021.html</comments>
  <category>nonsense</category>
  <category>photography</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/518721.html</guid>
  <pubDate>Mon, 04 May 2009 21:24:52 GMT</pubDate>
  <title>Suburban decay?</title>
  <link>http://ewx.livejournal.com/518721.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1520.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/gallery/photos/2009/04-25?h=600&amp;amp;pic=1520.jpg&amp;amp;w=400&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1505.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1505.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1512.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1512.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1526.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1526.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1528.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1528.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1543.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1543.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1551.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1551.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1552.jpg&quot;&gt;&lt;img src=&quot;http://www.greenend.org.uk/rjk/photos/2009/04-25/1552.jpg&quot; style=&quot;border: none&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
  <comments>http://ewx.livejournal.com/518721.html</comments>
  <category>photography</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/518569.html</guid>
  <pubDate>Sat, 02 May 2009 16:47:08 GMT</pubDate>
  <title>So much for the Great Schism</title>
  <link>http://ewx.livejournal.com/518569.html</link>
  <description>&lt;p&gt;Pope not giving you the answer you want?  Try another one.&lt;/p&gt;
&lt;p style=&quot;margin-left:1em;font-style:italic&quot;&gt;The Pope had still not granted a dispensation for the marriage of Prince Edward and Anne Neville; Louis&apos;s patience had lone since been exhausted, and in desperation he had sent the Grand Vicar of Bayeux to procure one from the Eastern Orthodox Patriarch of Jerusalem.  This arrived in December, at which time the King moved to Amboise where the wedding would take place.&lt;/p&gt;
&lt;p&gt;(from Alison Weir&apos;s book on the Wars of the Roses.)&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/518569.html</comments>
  <category>history</category>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/518295.html</guid>
  <pubDate>Fri, 01 May 2009 20:30:34 GMT</pubDate>
  <title>en_LOLCAT</title>
  <link>http://ewx.livejournal.com/518295.html</link>
  <description>&lt;pre&gt;21:03 &amp;lt;ewx&amp;gt; .oO{en_LOLCAT}
21:06 &amp;lt;crazyscot&amp;gt; ENOENT -&amp;gt; INVISIBLE FILE
21:07 &amp;lt;crazyscot&amp;gt; ENOSPC -&amp;gt; DO NOT WANT
21:07 &amp;lt;ewx&amp;gt; ENOMEM -&amp;gt; they be stealing mah bucket
21:09 &amp;lt;crazyscot&amp;gt; EINTR -&amp;gt; Im in ur systemz interruptin ur callz?
21:11 &amp;lt;ewx&amp;gt; EFAULT -&amp;gt; O RLY?
21:16 &amp;lt;col&amp;gt; ECHILD -&amp;gt; I MADE YOU A PROCESS, BUT I ATED IT
21:19 &amp;lt;col&amp;gt; EIO -&amp;gt; O HAI, I BROKED YOUR DISK
21:21 &amp;lt;crazyscot&amp;gt; EEXIST -&amp;gt; ALREADY HAZ CHEEZBURGER&lt;/pre&gt;

&lt;p&gt;&amp;#x2026;any more?&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/518295.html</comments>
  <category>nonsense</category>
  <category>geek</category>
  <category>i18n</category>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/518107.html</guid>
  <pubDate>Fri, 01 May 2009 20:23:43 GMT</pubDate>
  <title>lj2news</title>
  <link>http://ewx.livejournal.com/518107.html</link>
  <description>&lt;p&gt;&lt;a href=&quot;http://www.greenend.org.uk/rjk/2006/newstools.html&quot;&gt;lj2news&lt;/a&gt; users may be interested to know it appears to work fine with Dreamwidth.  (Or possibly vice versa.)&lt;/p&gt;

&lt;pre&gt;rjk-nntp-tools (0.10) unstable; urgency=low

  * Separate Keywords: with commas rather than spaces.
  * Documentation updates.

 -- Richard Kettlewell &amp;lt;rjk@greenend.org.uk&amp;gt;  Fri, 01 May 2009 20:30:02 +0100&lt;/pre&gt;</description>
  <comments>http://ewx.livejournal.com/518107.html</comments>
  <category>lj2news</category>
  <category>geek</category>
  <category>newstools</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://ewx.livejournal.com/517841.html</guid>
  <pubDate>Tue, 28 Apr 2009 10:47:50 GMT</pubDate>
  <title>Two questions</title>
  <link>http://ewx.livejournal.com/517841.html</link>
  <description>&lt;p&gt;1) What is the best thing since sliced bread (which &lt;a href=&quot;http://en.wikipedia.org/wiki/Sliced_bread&quot;&gt;apparently&lt;/a&gt; dates back to 1928)?&lt;/p&gt;

&lt;p&gt;2) What was the best thing &lt;i&gt;before&lt;/i&gt; sliced bread?&lt;/p&gt;</description>
  <comments>http://ewx.livejournal.com/517841.html</comments>
  <category>nonsense</category>
  <category>questions</category>
  <lj:security>public</lj:security>
  <lj:reply-count>17</lj:reply-count>
</item>
</channel>
</rss>
