<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Emacsen</title>
	<link rel="self" href="http://planet.emacsen.org/atom.xml"/>
	<link href="http://planet.emacsen.org/"/>
	<id>http://planet.emacsen.org/atom.xml</id>
	<updated>2010-09-02T21:01:44+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title type="html" xml:lang="en">Joost Diepenmaat: In search of a better keyboard; The IBM Model M</title>
		<link href="http://joost.zeekat.nl/2010/09/01/in-search-of-a-better-keyboard-the-ibm-model-m/"/>
		<id>http://joost.zeekat.nl/2010/09/01/in-search-of-a-better-keyboard-the-ibm-model-m/</id>
		<updated>2010-09-01T20:55:37+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;&lt;img alt=&quot;IBM Model M, full size 101-key version&quot; src=&quot;http://joost.zeekat.nl/wp-content/model-m.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By far the oldest board in this series. Production of these things started in 1985 and &lt;a href=&quot;http://pckeyboards.stores.yahoo.net/keyboards.html&quot;&gt;slightly modified versions are still being build by Unicomp&lt;/a&gt; (the Customizers are the closest to the standard IBM Model M, but always make sure you pick the Buckling Spring versions, see below).&lt;/p&gt;
&lt;h3&gt;Build quality&lt;/h3&gt;
&lt;p&gt;I've been using a Model M keyboard for the last couple of years, and in many respects it's the best keyboard I've ever used: it's very sturdy, will last for decades (mine is 15 years old and still working fine) and the key switches are phenomenal.&lt;/p&gt;
&lt;h3&gt;Layout&lt;/h3&gt;
&lt;p&gt;This was one of the first keyboards with what's now more or less the standard PC layout and it's probably the reason that that layout became so popular. Probably not remarkable - even boring - these days, but on the whole it's very well thought out and effective. Especially if you map the CAPS Lock key to Control (Unicomp sells models with CAPS and Left-CTRL swapped, but you can swap the keys on any OS and I don't really see the point of looking at a keyboard when you're typing on it).&lt;/p&gt;
&lt;h3&gt;Buckling Spring switch technology&lt;/h3&gt;
&lt;p&gt;The switches work via a so called &quot;buckling spring&quot; mechanism, which means every key is set on top of a fairly long spring that &quot;collapses&quot; sideways when you've pressed the key about half way down and activates the mechanical &quot;hammer&quot; attached to the bottom of the spring. You can easily feel when that is about to happen, and once it does you can feel the key &quot;give&quot; and it makes a very satisfying CLICK sound.&lt;/p&gt;
&lt;p&gt;On this keyboard you simply can't get fooled about whether you've pressed a key or not: the auditory and tactile feedback is very immediate.&lt;/p&gt;
&lt;h3&gt;Issues&lt;/h3&gt;
&lt;p&gt;As you can probably tell, I really like this keyboard, but there a few issues with it that are annoying:&lt;/p&gt;
&lt;h3&gt;Size&lt;/h3&gt;
&lt;p&gt;This is a large keyboard, even for a full size standard layout: the MS Natural 4000 has a big wrist rest and a &quot;split&quot; main cluster and it's still only marginally larger than the Model M.&lt;/p&gt;
&lt;p&gt;Size is especially important if you're a right handed mouse user. With the num-pad to the right, your mouse is quite a long way away from the main alphanumeric cluster where your hands are when you're typing, which means that you're not always using an optimal position for the mouse, the keyboard or both. You can tell these things were invented before PCs had mice.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.clickykeyboards.com/index.cfm/fa/categories.main/parentcat/9242&quot;&gt;There used to be Model M variants that didn't have a numeric key pad&lt;/a&gt;, but production of those stopped somewhere in the early '90s. Expect them to be expensive - if you can find one. Ebay US seems to have a few, but once you include shipping, you might want to consider something else if you live in Europe. Clickykeyboards (where that link is to) sells them for fairly reasonable prices, but they don't seem to have them all that often - and you still have to pay shipping from the US.&lt;/p&gt;
&lt;h3&gt;Finger fatigue&lt;/h3&gt;
&lt;p&gt;The switches on these keyboards are very good, but also quite heavy: they require noticeably more force than most conventional keyboards. You get used to it, especially since the force is consistent over all keys, but for me, it's just barely on the edge of &quot;too heavy&quot;.&lt;/p&gt;
&lt;h3&gt;Sound&lt;/h3&gt;
&lt;p&gt;The click sound, while satisfying, can get on your nerves late at night. Not that much of an issue for me, but sometimes you just wish it made a bit less noise. If you have coworkers or family in the same room, I expect they won't like this keyboard much.&lt;/p&gt;
&lt;h3&gt;Pro: price&lt;/h3&gt;
&lt;p&gt;On the other hand, second hand full-size Model Ms are cheap and not that hard to get. New ones from Unicomp are also very competitively priced compared to other well-built keyboards with mechanical switches (the basic model is $69), even if you have to ship them across the Atlantic.&lt;/p&gt;
&lt;p&gt;Previous episode: &lt;b&gt;&lt;a href=&quot;http://joost.zeekat.nl/2010/08/29/in-search-of-a-better-keyboard-early-history/&quot;&gt;In search of a better keyboard - Early history&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Next episode: &lt;b&gt;what now?&lt;/b&gt; (not finished, stay tuned).&lt;/p&gt;</content>
		<author>
			<name>Joost</name>
			<uri>http://joost.zeekat.nl</uri>
		</author>
		<source>
			<title type="html">code.h(oe)kje » emacs</title>
			<subtitle type="html">Webdevelopment en ander cools in Lisp Perl JavaScript &amp;amp; Ruby.</subtitle>
			<link rel="self" href="http://joost.zeekat.nl/category/emacs/feed/"/>
			<id>http://joost.zeekat.nl</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Dimitri Fontaine: Want to share your recipes?</title>
		<link href="http://blog.tapoueh.org/news.dim.html#%20Want%20to%20share%20your%20recipes%3F"/>
		<id>http://blog.tapoueh.org/news.dim.html#%20Want%20to%20share%20your%20recipes%3F</id>
		<updated>2010-08-31T14:15:00+00:00</updated>
		<content type="html">&lt;p&gt;Yes, that's another &lt;a href=&quot;http://github.com/dimitri/el-get/&quot;&gt;el-get&lt;/a&gt; related entry. It seems to take a lot of my
attention these days. After having setup the &lt;code&gt;git&lt;/code&gt; repository so that you can
update &lt;code&gt;el-get&lt;/code&gt; from within itself (so that it's &lt;em&gt;self-contained&lt;/em&gt;), the next
logical step is providing &lt;em&gt;recipes&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;By that I mean that &lt;code&gt;el-get-sources&lt;/code&gt; entries will certainly look a lot alike
between a user and another. Let's take the &lt;code&gt;el-get&lt;/code&gt; entry itself:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;(&lt;span style=&quot;color: #729fcf;&quot;&gt;:name&lt;/span&gt; el-get
       &lt;span style=&quot;color: #729fcf;&quot;&gt;:type&lt;/span&gt; git
       &lt;span style=&quot;color: #729fcf;&quot;&gt;:url&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;git://github.com/dimitri/el-get.git&quot;&lt;/span&gt;
       &lt;span style=&quot;color: #729fcf;&quot;&gt;:features&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;el-get&quot;&lt;/span&gt;)
&lt;/pre&gt;

&lt;p&gt;I guess all &lt;code&gt;el-get&lt;/code&gt; users will have just the same 4 lines in their
&lt;code&gt;el-get-sources&lt;/code&gt;. So let's call that a &lt;em&gt;recipe&lt;/em&gt;, and have &lt;code&gt;el-get&lt;/code&gt; look for yours
into the &lt;code&gt;el-get-recipe-path&lt;/code&gt; directories. A recipe is found looking in those
directories in order, and must be named &lt;code&gt;package.el&lt;/code&gt;. Now, &lt;code&gt;el-get&lt;/code&gt; already
contains a handful of them, as you can see:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;ELISP&amp;gt; (directory-files &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;~/dev/emacs/el-get/recipes/&quot;&lt;/span&gt; nil &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;[&lt;/span&gt;&lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;.]$&quot;&lt;/span&gt;)
(&lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;auctex.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;bbdb.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;cssh.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;el-get.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;emms.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;erc-track-score.el&quot;&lt;/span&gt;
 &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;escreen.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;google-maps.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;haskell-mode.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;hl-sexp.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;magit.el&quot;&lt;/span&gt;
 &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;muse-blog.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;nxhtml.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;psvn.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;rainbow-mode.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;rcirc-groups.el&quot;&lt;/span&gt;
 &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;vkill.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;xcscope.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;xml-rpc-el.el&quot;&lt;/span&gt; &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;yasnippet.el&quot;&lt;/span&gt;)
&lt;/pre&gt;

&lt;p&gt;Please note that you can have your own local recipes by adding directories
to &lt;code&gt;el-get-recipe-path&lt;/code&gt;. So now your minimalistic &lt;code&gt;el-get-sources&lt;/code&gt; list will
look like &lt;code&gt;'(el-get cssh screen)&lt;/code&gt;, say. And if you want to override a recipe,
for instance to use the default one but still have a personal &lt;code&gt;:after&lt;/code&gt;
function containing your own setup, then simply have your &lt;code&gt;el-get-source&lt;/code&gt;
entry a partial entry. Missing &lt;code&gt;:type&lt;/code&gt; and &lt;code&gt;el-get&lt;/code&gt; will merge your local
overrides atop the default one.&lt;/p&gt;

&lt;p&gt;Finally, the way to share your recipes is by sending me an email with the
file, or to do the same over the &lt;code&gt;github&lt;/code&gt; interface, I guess I'll still
receive a mail then.&lt;/p&gt;</content>
		<author>
			<name>Dimitri Fontaine</name>
			<uri>http://blog.tapoueh.org/news.dim.html</uri>
		</author>
		<source>
			<title type="html">tail -f /dev/dim</title>
			<subtitle type="html">dim's general purpose blog, which might turn into emacs specific</subtitle>
			<link rel="self" href="http://tapoueh.org/news.dim.xml"/>
			<id>http://blog.tapoueh.org/news.dim.html</id>
		</source>
	</entry>

	<entry>
		<title type="html">Got Emacs?: Another August Build of Emacs 24 available</title>
		<link href="http://feedproxy.google.com/~r/GotEmacs/~3/Jz_TS6sKDeQ/another-august-build-of-emacs-24_31.html"/>
		<id>tag:blogger.com,1999:blog-3165518189103293420.post-1002276494590022996</id>
		<updated>2010-08-31T02:23:06+00:00</updated>
		<content type="html">&lt;div&gt;The &lt;a href=&quot;http://permalink.gmane.org/gmane.emacs.devel/129443&quot; target=&quot;_blank&quot;&gt;latest build of Emacs 24 trunk&lt;/a&gt; is available &lt;a href=&quot;http://alpha.gnu.org/gnu/emacs/windows/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3165518189103293420-1002276494590022996?l=emacsworld.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/5oIM0K1VEHhZ5-MJb2w-9ib_b6E/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/5oIM0K1VEHhZ5-MJb2w-9ib_b6E/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/5oIM0K1VEHhZ5-MJb2w-9ib_b6E/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/5oIM0K1VEHhZ5-MJb2w-9ib_b6E/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GotEmacs/~4/Jz_TS6sKDeQ&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>sivaram</name>
			<email>noreply@blogger.com</email>
			<uri>http://emacsworld.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Got Emacs?</title>
			<subtitle type="html">Postings on living in an Emacs world.  Posts will be mostly on using Emacs, related functions and tools.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/GotEmacs"/>
			<id>tag:blogger.com,1999:blog-3165518189103293420</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Phil Hagelberg: in which the lessons of ZZ Top are applied to the marketplace</title>
		<link href="http://technomancy.us/140"/>
		<id>tag:technomancy.us,2007:in%20which%20the%20lessons%20of%20ZZ%20Top%20are%20applied%20to%20the%20marketplace</id>
		<updated>2010-08-30T18:23:38+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;I've been thinking a lot about ZZ Top recently. This isn't
  something I generally do as a rule, but it was prompted by
  re-reading &lt;a href=&quot;http://gilesbowkett.blogspot.com/2007/10/im-bad-im-nationwide-job-security-vs.html&quot;&gt;a
  blog post&lt;/a&gt; by the inimitable Giles Bowkett ostensibly about the
  song &lt;a href=&quot;http://www.youtube.com/watch?v=SxHyHk3h2IU&quot;&gt;I'm Bad;
  I'm Nationwide&lt;/a&gt;. Go ahead and cue that up in the background
  while you read this post; it's vaguely relevant.&lt;/p&gt;

&lt;img alt=&quot;zz top&quot; src=&quot;http://technomancy.us/i/zz-top.jpg&quot; /&gt;

&lt;p&gt;&quot;Bad&quot; in this sense of course is the good kind of bad, like the
  Michael Jackson song. It seems to be mostly about attitude. Giles
  makes the point that generally being bad is not correlated with
  being nationwide.&lt;/p&gt;

&lt;blockquote&gt;&quot;I'm Bad, I'm Nationwide&quot; is a ZZ Top song. Hopefully
  you can figure out what it's about, but just in case, the singer's
  point is that he is bad, and he is nationwide. [...]&lt;/blockquote&gt;

&lt;blockquote&gt;It's good to be bad. It's good to be nationwide. It's
  even better to be worldwide. How can we apply the lessons of ZZ
  Top in the workplace?&lt;/blockquote&gt;

&lt;blockquote&gt;Obviously if you walk into your boss' office, jump on
  his or her desk, pull down your pants, and perform toilet
  functions all over the place, that would be bad. But it would not
  be nationwide, and it would not encourage becoming nationwide. In
  fact, it would not really be bad, it would just be stupid. But
  this silly example highlights a deeper paradox: that which is bad
  is usually local, and that which is nationwide is usually
  good.&lt;/blockquote&gt;

&lt;p&gt;Giles goes on to talk about how the bad/nationwide balancing act
  applies to a career in software development, which is interesting,
  but I've been thinking about it in terms of projects instead. Take
  the familiar realm of editors. There are a few of them that are
  nationwide just by virtue of having survived and built up a
  following over the course of several decades. And they're also
  often bad when flame wars erupt over them, as is fairly
  common.&lt;/p&gt;

&lt;p&gt;So Emacs and vi have somehow achieved the intersection of bad and
  nationwide, which as Giles posits is tricky to pull off. Simply
  being bad doesn't work in the long-term, and while quiet
  competence sometimes does, it's worth noting that in many cases
  attention helps a project improve in concrete
  ways—especially projects whose users are developers. This
  is pretty key for things like languages, libraries, and build tools.&lt;/p&gt;

&lt;p&gt;The problem I'm faced with here is that being bad is also often
  correlated with being inflammatory. The easiest way to get attention in
  the software world is to pick a fight. You see this &lt;i&gt;all the
  time&lt;/i&gt; on sites like Reddit; when people smell blood they
  upvote, which is why stuff like
  &lt;a href=&quot;http://dosync.posterous.com/clojure-nodejs-and-why-messaging-can-be-lame&quot;&gt;Aleph
  vs Node.js: the smackdown&lt;/a&gt; makes it to the front page despite
  being a superficial comparison.&lt;/p&gt;

&lt;p&gt;The thing you have to remember about picking fights with another
  project or language just for the sake of it is that often the
  attention fallout is more evenly distributed than is
  intended. When someone goes out of their way to pick a fight, they
  &lt;a href=&quot;http://www.jroller.com/obie/entry/top_10_reasons_why_java&quot;&gt;usually
  aren't much good at hiding the fact that they've got an investment
  in one side&lt;/a&gt;. Impartial readers can usually pick up on this
  pretty easily, and they're likely to spot holes in the argument
  or write it off it as a piece of cheerleading. In cases of
  particularly unfair partisanship, they may even begin to
  sympathize with the target under attack.&lt;/p&gt;

&lt;p&gt;The closest I've come to this sort of bad/nationwide
  is &lt;a href=&quot;http://twitter.com/technomancy/status/10994115673&quot;&gt;this
  post I made on Twitter a few months back&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;Q: What's the difference between Ant and Maven? A: The
  creator of Ant has apologized.&lt;/blockquote&gt;

&lt;p&gt;This turned out to be just the right mix of nasty and clever
  to really take off; hundreds and hundreds of people passed it on, and
  over the next few days searches for my name came up with just
  pages and pages of this over and over again. At the time of this
  writing it's still on the second page of results in a search for
  my name.&lt;/p&gt;

&lt;p&gt;I've got to admit, as the author
  of &lt;a href=&quot;http://github.com/technomancy/leiningen&quot;&gt;a build
  system that competes with Maven&lt;/a&gt;, this felt kind of good. The
  problem is it's totally a cheap shot—everyone involved with
  build tools ends up in a position of needing to apologize to their
  users given enough time. James Duncan Davidson has expressed his
  regrets over the use of XML in ant, Dave Thomas is less than proud
  of how RDoc has turned out, and I'm pretty sure the only reason
  the guy responsible for the tabs/spaces distinction in Makefiles
  hasn't apologized is that he fled to Tijuana for facial
  reconstructive surgery. Anyway, Leiningen will eventually be in
  the same position if it's not already.&lt;/p&gt;

&lt;img align=&quot;right&quot; alt=&quot;why sample&quot; src=&quot;http://technomancy.us/i/why-range.gif&quot; /&gt;

&lt;p&gt;So we're still left with this question of whether you can be bad
  and nationwide without also being a jerk. I think it's doable, but
  you just don't see it much because picking fights is so much
  easier. One example that comes readily to mind
  is &lt;a href=&quot;http://en.wikipedia.org/wiki/Why_the_lucky_stiff&quot;&gt;_why
  the lucky stiff&lt;/a&gt;. He qualified not just by his off-kilter visual style
  but by his aversion to what he scoffed at as &quot;best practices&quot;.&lt;/p&gt;

&lt;blockquote&gt;Perhaps this is why I have trouble swallowing unit
  testing or extreme programming or other best practices as the
  law. I guess there’s a place for these tricks (the work place,)
  but they do not speak to the pure form of hacking for hacking’s
  sake, which I so ardently defend! Unit testing, in particular, is
  designed to reel in spontaneous hacking. It is like framing a
  picture before it has been painted. Hacking, at heart, will
  continue to be something of spontaneous order, something of
  anarchy, and the landscape of hacking is something which comes
  from human action but is not of human design.&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://web.archive.org/web/20080512050317/hackety.org/2007/12/24/thisHackWasNotProperlyPlanned.html&quot;&gt;―
    This Hack was not Properly Planned&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This may not sound particularly controversial, but in the context
  of the test-driven-fanatic Ruby community it was a pretty weighty
  heresy. But he was all about exploring the fringe, and some
  excellent ideas came of it. It caught peoples' eyes and drew them
  in, so much so that when he disappeared, the communities
  surrounding his projects picked up the orphaned bits and carried
  them forward.&lt;/p&gt;

&lt;img align=&quot;left&quot; alt=&quot;gibbons&quot; src=&quot;http://technomancy.us/i/zz-top2.jpg&quot; /&gt;

&lt;p&gt;Bad... and &lt;i&gt;nationwide&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;This is way more productive than us-vs-them fights that normally
  accompany attempts to be bad and nationwide. So what does this
  mean for you and me? Most people can't draw like _why, but
  injecting your own particular brand of crazy into your projects
  may be a slick hack you can pull to sidestep the negativity.&lt;/p&gt;

&lt;p&gt;Here's an example: the &lt;tt&gt;new&lt;/tt&gt; task in Leiningen spits out a
  blank Clojure project skeleton. At the time I saw a few too many
  &quot;foojure&quot;-type names popping up for new projects, and when I saw
  one called &quot;Couverjure&quot; I said enough is enough. Now
  the &lt;tt&gt;new&lt;/tt&gt; task will refuse to generate projects named after
  *jure puns. Arbitrary? You bet. Ridiculous? Perhaps. But harmless
  and easy to work around. And don't forget controversial:&lt;/p&gt;

&lt;a href=&quot;http://github.com/technomancy/leiningen/commit/39732d5b649dedb70b14e88fe561dfc9ddb31611&quot;&gt;&lt;img alt=&quot;no more jure names&quot; src=&quot;http://technomancy.us/i/enough.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;The point is: don't take yourself too seriously. Hack the good
  hack and leave an easter egg or two around for the
  adventurous. Then you too can be bad... and &lt;i&gt;nationwide&lt;/i&gt;.&lt;/p&gt;</content>
		<author>
			<name>Phil Hagelberg</name>
			<uri>http://technomancy.us/</uri>
		</author>
		<source>
			<title type="html">Technomancy</title>
			<link rel="self" href="http://technomancy.us/feed/atom"/>
			<id>tag:technomancy.us,2007:blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html">Alex Ott: Release of CEDET 1.0!</title>
		<link href="http://alexott.blogspot.com/2010/08/release-of-cedet-10.html"/>
		<id>tag:blogger.com,1999:blog-6862508.post-827984593013137920</id>
		<updated>2010-08-30T07:17:19+00:00</updated>
		<content type="html">After many years of development, numerous 1.0preX versions, version 1.0 of CEDET package was released.&lt;br /&gt;This version differs from previous version - 1.0pre7, and contains many changes in Semantic, EDE, and other subsystems. Full list of changes you can find in &lt;a href=&quot;http://sourceforge.net/mailarchive/message.php?msg_name=4C7AF54C.9030905%40siege-engine.com&quot;&gt;official announcement&lt;/a&gt;.&lt;br /&gt;Source code you &lt;a href=&quot;http://sourceforge.net/projects/cedet/files/cedet/cedet-1.0.tar.gz/download&quot;&gt;can download&lt;/a&gt; from project's page and compile it &lt;a href=&quot;http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html&quot;&gt;according to instructions&lt;/a&gt;.&lt;br /&gt;And after release 1.0, development team continue to work on further integration of package into GNU Emacs, development of new parsers and other stuff, that will allow to improve work with different languages and build tools.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6862508-827984593013137920?l=alexott.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Ott</name>
			<email>alexott@gmail.com</email>
			<uri>http://alexott.blogspot.com/search/label/emacs</uri>
		</author>
		<source>
			<title type="html">Alex Ott's blog</title>
			<subtitle type="html">Blog dedicated to Software Development, Unixes, Content Filtering, Emacs, Lisp, and other things.</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/6862508/posts/default/-/emacs"/>
			<id>tag:blogger.com,1999:blog-6862508</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Joost Diepenmaat: In search of a better keyboard; Early history</title>
		<link href="http://joost.zeekat.nl/2010/08/29/in-search-of-a-better-keyboard-early-history/"/>
		<id>http://joost.zeekat.nl/2010/08/29/in-search-of-a-better-keyboard-early-history/</id>
		<updated>2010-08-29T20:04:23+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;When you're typing as much as I do, sooner or later you realize that having a good keyboard is important. Years ago I was having issues with wrist-pain and switching keyboards was - for me - a very effective way of almost eliminating the problem.&lt;/p&gt;
&lt;p&gt;But this is not about health issues directly. What I found is that the best way to stay healthy while working is to keep irritation to a minumum, and keyboards can do a lot of things that are just plainly annoying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Keys in wierd and/or hard to reach places
&lt;/li&gt;&lt;li&gt; Keys in half-size
&lt;/li&gt;&lt;li&gt; Keys that only work most of the time
&lt;/li&gt;&lt;li&gt; Keys that are much harder to press than the others
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Looking at that list, there are two main things that can go wrong: keyboard layout and the key switch technology. I'm going to address both throughout this short series.&lt;/p&gt;
&lt;p&gt;I'm going to present the main keyboards I've used in chronological order (that is; order that I used them), but I'm ignoring the very early stuff. Some were not that good (Commodore 64), some were horrible (Atari 400, I'm not even sure if I'd call that thing you've got a keyboard) and some were pretty nice (like the Amiga 500). My focus is on keyboards that are still available and useful to today's PC or Mac user.&lt;/p&gt;
&lt;p&gt;As an example of frustrating design, I present:&lt;/p&gt;
&lt;h2&gt;The MS Natural Elite&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;MS Natural Elite keyboard&quot; src=&quot;http://joost.zeekat.nl/wp-content/ms-natural-elite.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All in all it's not a bad board; they're cheap and they're fairly pleasant to type on with light-weight keys, but all the navigation keys are in half-size AND in non-standard places (and yet close enough to the standard locations to get really confusing). Get used to pressing INSERT instead of END and fumbling for the cursor keys. Bad, ugly and unnessessary. Also, in my experience, they break after 3 years or so.&lt;/p&gt;
&lt;h2&gt;The MS Natural 4000&lt;/h2&gt;
&lt;p&gt;The successor to the Elite that solved most of the issues with the layout, but the modifier keys and especially the space bar were so heavy I found myself slamming my thumbs on them which can't be good.&lt;/p&gt;
&lt;p&gt;The extras, like the horrible multimedia &quot;keys&quot; and the vertical &quot;joystick&quot; or whatever that thing is, I won't further address, since I never used them.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;ms-natural-4000.jpg&quot; src=&quot;http://joost.zeekat.nl/wp-content/ms-natural-4000.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Also, it broke down after only a year. Not good at all for a keyboard that cost about 60 euros at the time.&lt;/p&gt;
&lt;p&gt;By now I was getting frustrated by key switches, and I wanted something that would actually let me type in a consistent way and KNOW that I was really pressing a key when I thought I was, without me having to slam every one of them into the ground.&lt;/p&gt;
&lt;p&gt;Which brings me to the next post: &lt;b&gt;&lt;a href=&quot;http://joost.zeekat.nl/2010/09/01/in-search-of-a-better-keyboard-the-ibm-model-m/&quot;&gt;In search of a better keyboard; The IBM Model M&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;</content>
		<author>
			<name>Joost</name>
			<uri>http://joost.zeekat.nl</uri>
		</author>
		<source>
			<title type="html">code.h(oe)kje » emacs</title>
			<subtitle type="html">Webdevelopment en ander cools in Lisp Perl JavaScript &amp;amp; Ruby.</subtitle>
			<link rel="self" href="http://joost.zeekat.nl/category/emacs/feed/"/>
			<id>http://joost.zeekat.nl</id>
		</source>
	</entry>

	<entry>
		<title type="html">Emacs-fu: narrowing buffer contents</title>
		<link href="http://emacs-fu.blogspot.com/2010/08/narrowing-buffer-contents.html"/>
		<id>tag:blogger.com,1999:blog-3992530807750384868.post-5395938754174547300</id>
		<updated>2010-08-29T19:48:20+00:00</updated>
		<content type="html">&lt;div class=&quot;outline-2&quot; id=&quot;outline-container-1&quot;&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;

&lt;p&gt;
'Narrowing' is yet another of those many useful emacs features that took me
years to appreciate, mostly because I never really tried it. I may not be the
only one, so here's a short introduction.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Narrowing&lt;/i&gt; is the concept of hiding the buffer contents except for what you
are currently working on. This is useful when you don't want to be distracted,
but also because it allows you to execute commands &lt;i&gt;only&lt;/i&gt; on the narrowed
part. You can narrow different things:
&lt;/p&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot; frame=&quot;hsides&quot; rules=&quot;groups&quot;&gt;
&lt;caption&gt;&lt;/caption&gt;
&lt;colgroup&gt;&lt;col align=&quot;left&quot; /&gt;&lt;col align=&quot;left&quot; /&gt;&lt;col align=&quot;left&quot; /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;what's shown&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;name&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;binding&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;region (selection)&lt;/td&gt;&lt;td&gt;&lt;code&gt;narrow-to-region&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;C-x n n&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;current page&lt;/td&gt;&lt;td&gt;&lt;code&gt;narrow-to-page&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;C-x n p&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;function&lt;/td&gt;&lt;td&gt;&lt;code&gt;narrow-to-defun&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;C-x n d&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;everything&lt;/td&gt;&lt;td&gt;&lt;code&gt;widen&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;C-x n w&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;
I never used narrowing for the current page, but apparently it's used by
e.g. &lt;code&gt;Info-Mode&lt;/code&gt; to show only one page.
&lt;/p&gt;
&lt;p&gt;
That last one is pretty important to remember; it's not &lt;i&gt;totally obvious&lt;/i&gt; how
to get back to 'normal' mode where you can see everything. For this very
reason ('where the #&amp;gt;*$@ did my text go'), always-helpful emacs by defaults
&lt;i&gt;disables&lt;/i&gt; &lt;code&gt;narrow-to-region&lt;/code&gt; (but, for some reason, not the other ones). To
enable it, put the following in your &lt;code&gt;.emacs&lt;/code&gt;:
&lt;/p&gt;



&lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(put 'narrow-to-region 'disabled nil)
&lt;/pre&gt;



&lt;p&gt;
Also note that the mode-line will show 'Narrow' when you're in narrow mode,
lest you forget.
&lt;/p&gt;
&lt;p&gt;
When you're using &lt;code&gt;org-mode&lt;/code&gt; there is an additional one you might want to
memorize:
&lt;/p&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot; frame=&quot;hsides&quot; rules=&quot;groups&quot;&gt;
&lt;caption&gt;&lt;/caption&gt;
&lt;colgroup&gt;&lt;col align=&quot;left&quot; /&gt;&lt;col align=&quot;left&quot; /&gt;&lt;col align=&quot;left&quot; /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;what's shown&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;name&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;binding&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;subtree&lt;/td&gt;&lt;td&gt;&lt;code&gt;org-narrow-to-subtree&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;C-x n s&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;
I'm using that last one quite often; I have org-files where I keep meeting notes
etc., and when in a certain meeting, I only want to see the notes for that
specific meeting.
&lt;/p&gt;
&lt;p&gt;
One &lt;i&gt;bug&lt;/i&gt;? &lt;i&gt;feature&lt;/i&gt;? of narrowing is that line-numbering is relative to the
narrowed area rather than the full buffer. I'd prefer to have the &lt;i&gt;real&lt;/i&gt; line
numbers.
&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3992530807750384868-5395938754174547300?l=emacs-fu.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>djcb</name>
			<email>noreply@blogger.com</email>
			<uri>http://emacs-fu.blogspot.com/search/label/new</uri>
		</author>
		<source>
			<title type="html">emacs-fu</title>
			<subtitle type="html">useful tricks for emacs</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/3992530807750384868/posts/default/-/new"/>
			<id>tag:blogger.com,1999:blog-3992530807750384868</id>
		</source>
	</entry>

	<entry>
		<title type="html">Got Emacs?: Using Emacs for Twitter</title>
		<link href="http://feedproxy.google.com/~r/GotEmacs/~3/Y2ON2E40A-0/using-emacs-for-twitter.html"/>
		<id>tag:blogger.com,1999:blog-3165518189103293420.post-7772590220383822955</id>
		<updated>2010-08-29T04:06:23+00:00</updated>
		<content type="html">&lt;div&gt;Those using the &lt;a href=&quot;http://twitter.com/&quot; target=&quot;_blank&quot;&gt;Twitter &lt;/a&gt;service might be interested in the following &lt;a href=&quot;https://groups.google.com/group/comp.emacs/browse_thread/thread/6468fe96f22fc53e#&quot; target=&quot;_blank&quot;&gt;thread &lt;/a&gt;and links mentioned within to twit from Emacs.  Not something that I've tried or want to do but it might be useful for you.&lt;br /&gt;&lt;br /&gt;There's an &lt;a href=&quot;http://www.emacswiki.org/emacs/Twitter&quot; target=&quot;_blank&quot;&gt;Emacswiki page too&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3165518189103293420-7772590220383822955?l=emacsworld.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/u6Aa3j5S5t_8-k9-n1oNEtr8prg/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/u6Aa3j5S5t_8-k9-n1oNEtr8prg/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/u6Aa3j5S5t_8-k9-n1oNEtr8prg/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/u6Aa3j5S5t_8-k9-n1oNEtr8prg/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/GotEmacs/~4/Y2ON2E40A-0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>sivaram</name>
			<email>noreply@blogger.com</email>
			<uri>http://emacsworld.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Got Emacs?</title>
			<subtitle type="html">Postings on living in an Emacs world.  Posts will be mostly on using Emacs, related functions and tools.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/GotEmacs"/>
			<id>tag:blogger.com,1999:blog-3165518189103293420</id>
		</source>
	</entry>

	<entry>
		<title type="html">Yoni Rabkin Katzenell: emacs-linphone, and some more music</title>
		<link href="http://yrk.livejournal.com/281763.html"/>
		<id>urn:lj:livejournal.com:atom1:yrk:281763</id>
		<updated>2010-08-29T03:30:04+00:00</updated>
		<content type="html">We've ditched having a land-line in favor of cellphones and VOIP. My wife uses a cellphone and I mostly use VOIP via &lt;a href=&quot;http://www.linphone.org/&quot;&gt;Linphone&lt;/a&gt;'s command-line &lt;i&gt;linphonec&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Consequently I've started writing a GNU/Emacs interface to Linphone. I realize that at least &lt;a href=&quot;http://linux.tiflocomp.ru/download/linphone.el&quot;&gt;one other attempt&lt;/a&gt; has been made by I. Poretsky. But Poretsky's version sends commands to &lt;i&gt;linphonec&lt;/i&gt;. This is the Wrong Way To Do It™ since &lt;i&gt;linphonec&lt;/i&gt; is a command line interface for humans.&lt;br /&gt;&lt;br /&gt;The right way is to send commands via &lt;a href=&quot;http://www.linphone.org/eng/documentation/guide/linphonecsh-control.html&quot;&gt;linphonecsh&lt;/a&gt;. As described: &lt;i&gt;&quot;Linphonecsh is a console utility to send non-blocking commands to an instance of linphonec running in the background.&quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The initial revision can be yours for the low-low price of:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;git clone &lt;a href=&quot;http://yrk.nfshost.com/repos/emacs-linphone.git/&quot;&gt;http://yrk.nfshost.com/repos/emacs-linphone.git/&lt;/a&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;unrelated appendix:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After listening to &lt;a href=&quot;http://oyc.yale.edu/music/listening-to-music/&quot;&gt;this excellent Yale course on classical music&lt;/a&gt; I felt ready to tackle slightly more complex classical material: Igor Stravinsky's &quot;Le Sacre du Printemps&quot; and Bach on piano by Hélène Grimaud. For some reason the Stravinsky puts me in mind of &quot;Bitches Brew&quot; (not the &lt;a href=&quot;http://en.wikipedia.org/wiki/Nomeansno&quot;&gt;Nomeansno&lt;/a&gt; cover though).</content>
		<author>
			<name>yrk</name>
			<uri>http://yrk.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">Talk is talk, kill is kill</title>
			<subtitle type="html">The online journal of yrk</subtitle>
			<link rel="self" href="http://yrk.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:yrk</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Ivan Kanis: IRC with furigana</title>
		<link href="http://kanis.fr/blog-emacs.html#%20IRC%20with%20furigana"/>
		<id>http://kanis.fr/blog-emacs.html#%20IRC%20with%20furigana</id>
		<updated>2010-08-29T00:00:00+00:00</updated>
		<content type="html">&lt;p class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://kanis.fr/erc-furigana.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Today I have written code that displays kanji reading in Japanese
while chatting on IRC. I often know the meaning of the character but
forget the pronunciation. Other people who go to Japanese channel
might find this hack helpful.&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;;; &lt;/span&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;lisp/emacs.d/ivan-erc.el
&lt;/span&gt;
(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defvar&lt;/span&gt; &lt;span style=&quot;color: #000000; background-color: #b9babd;&quot;&gt;ivan-erc-japanese-channel&lt;/span&gt;
  &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;#japanese&lt;/span&gt;&lt;span style=&quot;color: #8b8b00; background-color: #b9babd;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #8b8b00; background-color: #b9babd;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;#nihongo&quot;&lt;/span&gt;
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Regexp of channels that are in Japanese&quot;&lt;/span&gt;)


(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-erc-furigana&lt;/span&gt; ()
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Display furigana when receiving a message in Japanese&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;when&lt;/span&gt; (and (string-match ivan-erc-japanese-channel (buffer-name))
             (memq 'unicode (find-charset-region
                             (point-min) (point-max)))
             (ivan-japanese-kanji string))
    (insert (kakasi (buffer-substring-no-properties
                     (point-min) (point-max))))
    (erc-restore-text-properties)))

(add-hook 'erc-insert-modify-hook 'ivan-erc-furigana)

&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;;; &lt;/span&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;/lisp/emacs.d/ivan-japanese.el
&lt;/span&gt;
(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-japanese-kakasi&lt;/span&gt; (input)
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Take a Japanese string and return INPUT in hiragana&quot;&lt;/span&gt;
  (get-buffer-create kakasi-buffer)
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;with-temp-buffer&lt;/span&gt;
    (insert input)
    (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;let&lt;/span&gt; ((coding-system-for-read 'euc-jp)
          (coding-system-for-write 'euc-jp))
      (call-process-region (point-min) (point-max)
                           &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;kakasi&quot;&lt;/span&gt; nil kakasi-buffer nil &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;-JH&quot;&lt;/span&gt; &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;-s&quot;&lt;/span&gt;)))
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;prog1&lt;/span&gt;
      (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;with-current-buffer&lt;/span&gt; kakasi-buffer
        (setq kakasi-ret
              (buffer-substring-no-properties (point-min) (point-max))))
    (kill-buffer kakasi-buffer)))

(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-japanese-kanji&lt;/span&gt; (string)
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Return t if string contains Japanese kanji&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;let&lt;/span&gt; ((length (length string))
        (count 0)
        (ret nil)
        (char ?a))
    (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;while&lt;/span&gt; (&amp;lt; count length)
      (setq char (aref string count))
      (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;if&lt;/span&gt; (and (&amp;lt; char ?\u9fa5)
               (&amp;gt; char ?\u4e00))
          (setq ret t))
      (setq count (1+ count)))
    ret))

&lt;/pre&gt;</content>
		<author>
			<name>Ivan Kanis</name>
			<uri>http://kanis.fr/blog-emacs.html</uri>
		</author>
		<source>
			<title type="html">Emacs blog</title>
			<link rel="self" href="http://kanis.fr/blog-emacs.xml"/>
			<id>http://kanis.fr/blog-emacs.html</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Ivan Kanis: ERC with furigana</title>
		<link href="http://kanis.fr/blog-emacs.html#%20ERC%20with%20furigana"/>
		<id>http://kanis.fr/blog-emacs.html#%20ERC%20with%20furigana</id>
		<updated>2010-08-28T00:00:00+00:00</updated>
		<content type="html">&lt;p&gt;[[erc-furigana.gif]
Today I have written code that displays kanji reading in
Japanese. I often know the meaning of the character but forget the
pronunciation. Other people who go to Japanese channel might find this
hack helpful.&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;;; &lt;/span&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;lisp/emacs.d/ivan-erc.el
&lt;/span&gt;
(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defvar&lt;/span&gt; &lt;span style=&quot;color: #000000; background-color: #b9babd;&quot;&gt;ivan-erc-japanese-channel&lt;/span&gt;
  &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;#japanese&lt;/span&gt;&lt;span style=&quot;color: #8b8b00; background-color: #b9babd;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #8b8b00; background-color: #b9babd;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;#nihongo&quot;&lt;/span&gt;
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Regexp of channels that are in Japanese&quot;&lt;/span&gt;)


(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-erc-furigana&lt;/span&gt; ()
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Display furigana when receiving a message in Japanese&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;when&lt;/span&gt; (and (string-match ivan-erc-japanese-channel (buffer-name))
             (memq 'unicode (find-charset-region
                             (point-min) (point-max)))
             (ivan-japanese-kanji string))
    (insert (kakasi (buffer-substring-no-properties
                     (point-min) (point-max))))
    (erc-restore-text-properties)))

(add-hook 'erc-insert-modify-hook 'ivan-erc-furigana)

&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;;; &lt;/span&gt;&lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;/lisp/emacs.d/ivan-japanese.el
&lt;/span&gt;
(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-japanese-kakasi&lt;/span&gt; (input)
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Take a Japanese string and return INPUT in hiragana&quot;&lt;/span&gt;
  (get-buffer-create kakasi-buffer)
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;with-temp-buffer&lt;/span&gt;
    (insert input)
    (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;let&lt;/span&gt; ((coding-system-for-read 'euc-jp)
          (coding-system-for-write 'euc-jp))
      (call-process-region (point-min) (point-max)
                           &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;kakasi&quot;&lt;/span&gt; nil kakasi-buffer nil &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;-JH&quot;&lt;/span&gt; &lt;span style=&quot;color: #8b5a00; background-color: #b9babd;&quot;&gt;&quot;-s&quot;&lt;/span&gt;)))
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;prog1&lt;/span&gt;
      (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;with-current-buffer&lt;/span&gt; kakasi-buffer
        (setq kakasi-ret
              (buffer-substring-no-properties (point-min) (point-max))))
    (kill-buffer kakasi-buffer)))

(&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #00008b; background-color: #b9babd;&quot;&gt;ivan-japanese-kanji&lt;/span&gt; (string)
  &lt;span style=&quot;color: #008b00; background-color: #b9babd;&quot;&gt;&quot;Return t if string contains Japanese kanji&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;let&lt;/span&gt; ((length (length string))
        (count 0)
        (ret nil)
        (char ?a))
    (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;while&lt;/span&gt; (&amp;lt; count length)
      (setq char (aref string count))
      (&lt;span style=&quot;color: #8b008b; background-color: #b9babd;&quot;&gt;if&lt;/span&gt; (and (&amp;lt; char ?\u9fa5)
               (&amp;gt; char ?\u4e00))
          (setq ret t))
      (setq count (1+ count)))
    ret))

&lt;/pre&gt;</content>
		<author>
			<name>Ivan Kanis</name>
			<uri>http://kanis.fr/blog-emacs.html</uri>
		</author>
		<source>
			<title type="html">Emacs blog</title>
			<link rel="self" href="http://kanis.fr/blog-emacs.xml"/>
			<id>http://kanis.fr/blog-emacs.html</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Dimitri Fontaine: welcome el-get scratch installer</title>
		<link href="http://blog.tapoueh.org/news.dim.html#%20welcome%20el%2Dget%20scratch%20installer"/>
		<id>http://blog.tapoueh.org/news.dim.html#%20welcome%20el%2Dget%20scratch%20installer</id>
		<updated>2010-08-27T14:15:00+00:00</updated>
		<content type="html">&lt;p&gt;A very good remark from some users: installing and managing &lt;code&gt;el-get&lt;/code&gt; should be
simpler. They wanted both an easy install of the thing, and a way to be able
to manage it afterwards (like, update the local copy against the
authoritative source). So I decided it was high time for getting the code
out of my &lt;code&gt;~/.emacs.d&lt;/code&gt; git repository and up to a public place:
&lt;a href=&quot;http://github.com/dimitri/el-get&quot;&gt;http://github.com/dimitri/el-get&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then, I added some documentation (a &lt;code&gt;README&lt;/code&gt;), and then, a &lt;code&gt;*scratch*
installer&lt;/code&gt;, following great ideas from &lt;code&gt;ELPA&lt;/code&gt;. So have at it, it's a copy paste
away!&lt;/p&gt;

&lt;p&gt;Don't forget to setup your &lt;code&gt;el-get-sources&lt;/code&gt; and include there the &lt;code&gt;el-get&lt;/code&gt;
source for updates, there's nothing magic about it so it's up to you. You
may notice that it's not yet possible to init &lt;code&gt;el-get&lt;/code&gt; from &lt;code&gt;el-get-sources&lt;/code&gt;,
though, that's the drawback of the lack of magic. So you will have to still
add an explicit &lt;code&gt;(require 'el-get)&lt;/code&gt; before to go and define you own
&lt;code&gt;el-get-sources&lt;/code&gt; then finally &lt;code&gt;(el-get)&lt;/code&gt;. I don't think that's a problem I need
to solve, though.&lt;/p&gt;</content>
		<author>
			<name>Dimitri Fontaine</name>
			<uri>http://blog.tapoueh.org/news.dim.html</uri>
		</author>
		<source>
			<title type="html">tail -f /dev/dim</title>
			<subtitle type="html">dim's general purpose blog, which might turn into emacs specific</subtitle>
			<link rel="self" href="http://tapoueh.org/news.dim.xml"/>
			<id>http://blog.tapoueh.org/news.dim.html</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">@emacs: emacs: @pragdave I got your back!</title>
		<link href="http://twitter.com/emacs/statuses/22146783713"/>
		<id>http://twitter.com/emacs/statuses/22146783713</id>
		<updated>2010-08-26T03:37:43+00:00</updated>
		<content type="html">emacs: @pragdave I got your back!</content>
		<author>
			<name>@emacs</name>
			<uri>http://twitter.com/emacs</uri>
		</author>
		<source>
			<title type="html">Twitter / emacs</title>
			<subtitle type="html">Twitter updates from emacs / emacs.</subtitle>
			<link rel="self" href="http://twitter.com/statuses/user_timeline/9492852.rss"/>
			<id>http://twitter.com/emacs</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="es">suso: Publicado el Manual de PCL-CVS para GNU Emacs</title>
		<link href="http://gnu.manticore.es/node/715"/>
		<id>http://gnu.manticore.es/715 at http://gnu.manticore.es</id>
		<updated>2010-08-23T17:09:55+00:00</updated>
		<content type="html">&lt;p&gt;Publico la versión en bruto de la traducción del Manual de PCL-CVS,&lt;br /&gt;
correspondiente a Emacs 22.2.&lt;/p&gt;
&lt;p&gt;Como ya se sabe, se trata de un manual adjunto donde se documenta el&lt;br /&gt;
uso de este programa frontis desde Emacs a CVS.&lt;/p&gt;
&lt;p&gt;Primera prueba alfa de la traducción, como siempre.&lt;/p&gt;
&lt;p&gt;El texto del manual se puede alcanzar en la sección Libros, Mundo&lt;br /&gt;
Emacs.&lt;/p&gt;
&lt;p&gt;Las actualizaciones las iré poniendo en la página del proyecto.&lt;/p&gt;
&lt;p&gt;Copyright de la traducción: TMJQ, S.L.&lt;/p&gt;
&lt;p&gt;Agradeceré cualquier sugerencia, crítica u opinión que desee expresar&lt;/p&gt;
&lt;div class=&quot;watcher_node&quot;&gt;&lt;a class=&quot;watcher_node_toggle_watching_link&quot; href=&quot;http://gnu.manticore.es/user/0/watcher/toggle/715?destination=taxonomy%2Fterm%2F1%2F0%2Ffeed&quot; title=&quot;Nodos vigilados de los que notificar cuando otros usuarios los comenten o los modifiquen&quot;&gt;No está vigilando este nodo; pulse para hacerlo&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://gnu.manticore.es/node/715&quot; target=&quot;_blank&quot;&gt;leer más&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>suso</name>
			<uri>http://gnu.manticore.es/taxonomy/term/1/0</uri>
		</author>
		<source>
			<title type="html">GNU + Emacs en español para usuarios finales - Emacs</title>
			<link rel="self" href="http://gnu.manticore.es/taxonomy/term/1/0/feed"/>
			<id>http://gnu.manticore.es/taxonomy/term/1/0</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="es">suso: Publicado el Manual de Supercite para GNU Emacs + html en inglés</title>
		<link href="http://gnu.manticore.es/node/714"/>
		<id>http://gnu.manticore.es/714 at http://gnu.manticore.es</id>
		<updated>2010-08-23T00:31:45+00:00</updated>
		<content type="html">&lt;p&gt;Publico la versión en bruto de la traducción del Manual de Supercite,&lt;br /&gt;
correspondiente a Emacs 22.2.&lt;/p&gt;
&lt;p&gt;Como ya se sabe, se trata de un manual adjunto donde se documenta el&lt;br /&gt;
uso de esta utilidad para el citado de mensajes y la adjudicación&lt;br /&gt;
de atribuciones en la correspondencia electrónica.&lt;/p&gt;
&lt;p&gt;Primera prueba alfa de la traducción, como siempre.&lt;/p&gt;
&lt;p&gt;El texto del manual se puede alcanzar en la sección Libros, Mundo&lt;br /&gt;
Emacs.&lt;/p&gt;
&lt;p&gt;Las actualizaciones las iré poniendo en la página del proyecto.&lt;/p&gt;
&lt;p&gt;Copyright de la traducción: TMJQ, S.L.&lt;/p&gt;
&lt;div class=&quot;watcher_node&quot;&gt;&lt;a class=&quot;watcher_node_toggle_watching_link&quot; href=&quot;http://gnu.manticore.es/user/0/watcher/toggle/714?destination=taxonomy%2Fterm%2F1%2F0%2Ffeed&quot; title=&quot;Nodos vigilados de los que notificar cuando otros usuarios los comenten o los modifiquen&quot;&gt;No está vigilando este nodo; pulse para hacerlo&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://gnu.manticore.es/node/714&quot; target=&quot;_blank&quot;&gt;leer más&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>suso</name>
			<uri>http://gnu.manticore.es/taxonomy/term/1/0</uri>
		</author>
		<source>
			<title type="html">GNU + Emacs en español para usuarios finales - Emacs</title>
			<link rel="self" href="http://gnu.manticore.es/taxonomy/term/1/0/feed"/>
			<id>http://gnu.manticore.es/taxonomy/term/1/0</id>
		</source>
	</entry>

	<entry>
		<title type="html">Yoni Rabkin Katzenell: More music for me</title>
		<link href="http://yrk.livejournal.com/281549.html"/>
		<id>urn:lj:livejournal.com:atom1:yrk:281549</id>
		<updated>2010-08-22T03:57:25+00:00</updated>
		<content type="html">I found a Sansa e250 for 10 USD today at a yard sale. I brought it home and immediately installed &lt;a href=&quot;http://www.rockbox.org/&quot;&gt;rockbox&lt;/a&gt;. Works fine. Besides playing Doom, I guess I'll start loading it up with music and interesting lectures.</content>
		<author>
			<name>yrk</name>
			<uri>http://yrk.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">Talk is talk, kill is kill</title>
			<subtitle type="html">The online journal of yrk</subtitle>
			<link rel="self" href="http://yrk.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:yrk</id>
		</source>
	</entry>

	<entry>
		<title type="html">Flickr tag 'emacs': Xmonad, Gnome Panel, xmonad-log-applet</title>
		<link href="http://www.flickr.com/photos/doitian/4910034872/"/>
		<id>tag:flickr.com,2004:/photo/4910034872</id>
		<updated>2010-08-20T09:15:34+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/doitian/&quot;&gt;doitian&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/doitian/4910034872/&quot; title=&quot;Xmonad, Gnome Panel, xmonad-log-applet&quot;&gt;&lt;img alt=&quot;Xmonad, Gnome Panel, xmonad-log-applet&quot; height=&quot;150&quot; src=&quot;http://farm5.static.flickr.com/4073/4910034872_0ccc312d46_m.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use xmonad-log-applet to display log in gnome-panel&lt;/p&gt;</content>
		<author>
			<name>doitian</name>
			<email>nobody@flickr.com</email>
			<uri>http://www.flickr.com/photos/tags/emacs/</uri>
		</author>
		<source>
			<title type="html">Recent Uploads tagged emacs</title>
			<link rel="self" href="http://api.flickr.com/services/feeds/photos_public.gne?tags=emacs&amp;lang=en-us&amp;format=rss_200"/>
			<id>http://www.flickr.com/photos/tags/emacs/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Chris Ball: KDB+KMS for nouveau/radeon</title>
		<link href="http://blog.printf.net/articles/2010/08/19/kdb-kms-for-nouveau-radeon"/>
		<id>urn:uuid:acef250e-880a-4739-bf76-53593661f344</id>
		<updated>2010-08-19T17:52:00+00:00</updated>
		<content type="html">First, some background:  &lt;a href=&quot;https://kgdb.wiki.kernel.org/index.php/Main_Page&quot;&gt;KDB&lt;/a&gt; (a kernel debugger shell) and &lt;a href=&quot;https://fedoraproject.org/wiki/Features/KernelModesetting&quot;&gt;KMS&lt;/a&gt; (kernel mode-setting) combine to let you drop into a graphical shell when something debugger-worthy happens on your Linux machine.  That thing  might be a panic, or a breakpoint, or a hardware trap, or a manual entry into the kdb shell.  Inside the shell you can, for example: get a backtrace, inspect &lt;code&gt;dmesg&lt;/code&gt; or &lt;code&gt;ps&lt;/code&gt;, look at memory contents, and kill tasks.
&lt;br /&gt;&lt;br /&gt;
This is a big improvement over the previous model of &quot;something bad happens to your laptop while it's in X, and the keyboard LEDs start blinking, and you hard-reboot and wonder what happened and wish your laptop had a serial port&quot;.
&lt;br /&gt;&lt;br /&gt;
Here's a video of KDB+KMS in action — it's from Jason Wessel at Wind River, who deserves massive kudos for having enough patience to get all of this debugging code merged into mainline Linux to everyone's satisfaction:
&lt;br /&gt;&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;


&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://virtuousgeek.org/blog/index.php/jbarnes/2010/08/02/using_kdb_on_kms&quot;&gt;Jesse&lt;/a&gt; recently wrote about how to give KDB+KMS a spin on Intel graphics chipsets, and now I've written patches that allow &lt;a href=&quot;http://dev.laptop.org/~cjb/kdb-radeon.patch&quot;&gt;radeon&lt;/a&gt; and &lt;a href=&quot;http://dev.laptop.org/~cjb/kdb-nouveau.patch&quot;&gt;nouveau&lt;/a&gt; users to join in too.  The method for testing them is similar to Jesse's:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone git://dev.laptop.org/users/cjb/linux-2.6&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd linux-2.6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git checkout kgdb-next&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Config the kernel as in Jesse's post, and build/install it.&lt;/li&gt;
&lt;li&gt;Boot with &lt;code&gt;kgdboc=kms,kbd&lt;/code&gt; kernel arguments.&lt;/li&gt;
&lt;li&gt;Enter KDB with sysrq-g, or &lt;code&gt;echo g &amp;gt; /proc/sysrq-trigger&lt;/code&gt;, and type &lt;code&gt;go&lt;/code&gt; to leave KDB.&lt;/li&gt;
&lt;/ul&gt;
If you test with radeon or nouveau, please let me know what hardware you tested on, and whether everything worked.  Thanks!</content>
		<author>
			<name>Chris Ball</name>
			<uri>http://blog.printf.net</uri>
		</author>
		<source>
			<title type="html">Chris Ball</title>
			<link rel="self" href="http://blog.printf.net/xml/rss20/feed.xml"/>
			<id>http://blog.printf.net</id>
		</source>
	</entry>

	<entry>
		<title type="html">Bryan Murdock: ls colors on Ubuntu</title>
		<link href="http://bryan-murdock.blogspot.com/2010/08/ls-colors-on-ubuntu.html"/>
		<id>tag:blogger.com,1999:blog-3669809752172683097.post-6913049142078089817</id>
		<updated>2010-08-19T16:29:59+00:00</updated>
		<content type="html">&lt;p&gt;I &lt;code&gt;ls&lt;/code&gt;-ed some files today and noticed a few listed with blue backgrounds and white text.  I use the &lt;code&gt;--color&lt;/code&gt; option to &lt;code&gt;ls&lt;/code&gt; because it's pretty, and because the colors provide information that's not always blindingly obvious from regular &lt;code&gt;ls&lt;/code&gt; output.  Case in point, what did this blue background with white text mean?&lt;/p&gt;

&lt;p&gt;It turns out that, at least for Ubuntu 9.10 an 10.04 (the two I tried), you can see a list of the colors that &lt;code&gt;ls&lt;/code&gt; uses for various things by typing:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dircolors --print-database&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, I had a hunch that these files were hardlinks, and sure enough, I saw this line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;HARDLINK 44;37 # regular file with more than one link&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And looked up a few lines to see that, yes, 44 is blue and 37 is white.  Cool.  Just to be extra sure I passed the file names to the &lt;code&gt;stat&lt;/code&gt; command and saw the, &lt;code&gt;links: 2&lt;/code&gt; for those files.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3669809752172683097-6913049142078089817?l=bryan-murdock.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bryan</name>
			<email>noreply@blogger.com</email>
			<uri>http://bryan-murdock.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Cyclopedia Square</title>
			<link rel="self" href="http://www.blogger.com/feeds/3669809752172683097/posts/default"/>
			<id>tag:blogger.com,1999:blog-3669809752172683097</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Alex Bennée: Edit with Emacs v1.8</title>
		<link href="http://www.bennee.com/~alex/blog/2010/08/19/edit-with-emacs-v1-8/"/>
		<id>http://www.bennee.com/~alex/blog/?p=1999</id>
		<updated>2010-08-19T10:10:11+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;After a relatively quiet period a number of patches have flowed my way so I thought it was worth pushing out a new version. Perhaps the most “important” feature is the edit box flashing and fading from yellow after being updated (like &lt;a href=&quot;http://trac.gerf.org/itsalltext&quot;&gt;It’s All Text&lt;/a&gt;). It wasn’t that hard to do given &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; and the &lt;a href=&quot;http://plugins.jquery.com/project/color&quot;&gt;colour animation plugin&lt;/a&gt; do all the heavy lifting.&lt;/p&gt;
&lt;p&gt;We’ve added a new hook to the edit-server for pre-edit customisation. If anyone has some nice examples of using the various hooks it would great if you could add examples at the &lt;a href=&quot;http://www.emacswiki.org/emacs/Edit_with_Emacs&quot;&gt;emacs wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As ever the extension can be found at the &lt;a href=&quot;https://chrome.google.com/extensions/detail/ljobjlafonikaiipfkggjbhkghgicgoh&quot;&gt;Chrome Extensions site&lt;/a&gt;. Development versions are hosted at &lt;a href=&quot;http://github.com/stsquad/emacs_chrome&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Full Change Log&lt;/p&gt;
&lt;p&gt;v1.8&lt;/p&gt;
&lt;p&gt;Extension&lt;/p&gt;
&lt;p&gt;* Added option to enable/disable visual edit boxes&lt;br /&gt;
* Improved feedback as editable elements come in and out of focus&lt;br /&gt;
* Updated text box will now fade from yellow after an update&lt;/p&gt;
&lt;p&gt;edit-server.el&lt;/p&gt;
&lt;p&gt;* Added edit-server-start-hook for additional customisation when edit starts&lt;/p&gt;</content>
		<author>
			<name>Alex</name>
			<uri>http://www.bennee.com/~alex/blog</uri>
		</author>
		<source>
			<title type="html">Alex's Adventures on the Infobahn » emacs</title>
			<subtitle type="html">the wanderings of a supposed digital native</subtitle>
			<link rel="self" href="http://www.bennee.com/~alex/blog/tag/emacs/feed/"/>
			<id>http://www.bennee.com/~alex/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Phil Hagelberg: in which leiningen valiantly marches on</title>
		<link href="http://technomancy.us/140"/>
		<id>tag:technomancy.us,2007:in%20which%20leiningen%20valiantly%20marches%20on</id>
		<updated>2010-08-18T20:43:20+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;I've just released a new version of Leiningen: 1.3.0.

&lt;img align=&quot;right&quot; alt=&quot;leiningen logo&quot; src=&quot;http://github.com/downloads/technomancy/leiningen/leiningen-banner.png&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Phil Hagelberg</name>
			<uri>http://technomancy.us/</uri>
		</author>
		<source>
			<title type="html">Technomancy</title>
			<link rel="self" href="http://technomancy.us/feed/atom"/>
			<id>tag:technomancy.us,2007:blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">@emacs: emacs: @mediapathic It seems to me that you have some serious anxieties.</title>
		<link href="http://twitter.com/emacs/statuses/21462320922"/>
		<id>http://twitter.com/emacs/statuses/21462320922</id>
		<updated>2010-08-18T04:25:52+00:00</updated>
		<content type="html">emacs: @mediapathic It seems to me that you have some serious anxieties.</content>
		<author>
			<name>@emacs</name>
			<uri>http://twitter.com/emacs</uri>
		</author>
		<source>
			<title type="html">Twitter / emacs</title>
			<subtitle type="html">Twitter updates from emacs / emacs.</subtitle>
			<link rel="self" href="http://twitter.com/statuses/user_timeline/9492852.rss"/>
			<id>http://twitter.com/emacs</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Ian Eure: Frame tiling and centering in Emacs</title>
		<link href="http://atomized.org/2010/08/frame-tiling-and-centering-in-emacs/"/>
		<id>http://atomized.org/?p=751</id>
		<updated>2010-08-18T02:05:46+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Since Emacs predates the widespread adoption of the modern GUI andmouse, its vernacular can be somewhat hard to follow. What you would call a &lt;i&gt;window&lt;/i&gt; in a modern GUI is called a &lt;i&gt;frame&lt;/i&gt; in Emacs. A &lt;i&gt;window&lt;/i&gt; is a panel of a frame in Emacs.&lt;/p&gt;
&lt;p&gt;Most window managers have some facility to arrange the visible windows. With Emacs, you cna programmatically manipulate a frame’s size and position from Lisp.&lt;/p&gt;
&lt;p&gt;There are a few ways I like to arrange my Emacs frames. I generally use one or two – more are harder to manage – and dedicate them to specific purposes. One always has code buffers in it, and the other can have compilation buffers, IRC, w3m, unit test output, or any other variety of programming-related tools.&lt;/p&gt;
&lt;p&gt;When I work with a single frame, I like it to be centered on my screen. When I have two, I like them to be next to each other, in the center. Since it’s hard to align by hand, I wrote some code do to it for me.&lt;/p&gt;
&lt;pre&gt;(defun screen-usable-height (&amp;amp;optional display)
  &quot;Return the usable height of the display.

Some window-systems have portions of the screen which Emacs
cannot address. This function should return the height of the
screen, minus anything which is not usable.&quot;
  (- (display-pixel-height display)
     (cond ((eq window-system 'ns) 22)
           (t 0))))

(defun screen-usable-width (&amp;amp;optional display)
  &quot;Return the usable width of the display.

This works like `screen-usable-height', but for the width of the display.&quot;
  (display-pixel-width display))

(defun frame-sort-ltr (frames)
  &quot;Sort frames by their visual order, left to right.

This method takes a list of frames, and returns that list, sorted
by the visual display order. This is determined by comparing the
left position of the frames; the leftmost frames are returned
first.&quot;
  (sort frames (lambda (framea frameb)
                 (&amp;lt; (frame-parameter framea 'left)
                    (frame-parameter frameb 'left)))))

(defun frame-box-get-center (w h cw ch)
  &quot;Center a box inside another box.

Returns a list of `(TOP LEFT)' representing the centered position
of the box `(w h)' inside the box `(cw ch)'.&quot;
  (list (/ (- cw w) 2) (/ (- ch h) 2)))

(defun frame-get-center (frame)
  &quot;Return the center position of FRAME on its display.&quot;
  (frame-box-get-center (frame-pixel-width frame) (frame-pixel-height frame)
                        (screen-usable-width) (screen-usable-height)))

(defun frame-center (&amp;amp;optional frame)
  &quot;Center a frame on the screen.&quot;
  (interactive)
  (apply 'set-frame-position
         `(,(or frame (selected-frame)) ,@(frame-get-center frame))))

(defun frame-tile-horizonal ()
  &quot;Tile visible frames horizontally.

This function tiles visible frames, distributing them evenly
across the display, and centering them vertically.

It doesn't know about multi-head displays, and will probably fail
dramatically if used in such an environment.&quot;
  (interactive)
  (let ((pos)
        (offset 0)
        (vwidth (/ (screen-usable-width) (length (visible-frame-list)))))
    (dolist (frame (frame-sort-ltr (visible-frame-list)))
      (setq pos (frame-box-get-center (frame-pixel-width frame)
                                      (frame-pixel-height frame)
                                      vwidth (screen-usable-height)))
      (set-frame-position frame (+ offset (car pos)) (cadr pos))
      (incf offset vwidth))))

(defun frame-tile-center-horizonal ()
  &quot;Tile visible frames horizontally, center-weighted.

Rather than tiling frames evenly across the available width of
the display, this function tiles them into the center of the
display, adding a 2% margin in between frames.

It doesn't know about multi-head displays, and will probably fail
dramatically if used in such an environment.&quot;
  (interactive)
  (let* ((framewidth (apply '+ (mapcar 'frame-pixel-width (visible-frame-list))))
         (margin (/ (screen-usable-width) 50)) ;; = (/ s-u-w *.02) = 2%
         (totalwidth (+ framewidth (* margin
                                      (- (length (visible-frame-list)) 1))))
         (offset (car (frame-box-get-center totalwidth 0 (screen-usable-width)
                                            (screen-usable-height)))))

    (dolist (frame (frame-sort-ltr (visible-frame-list)))
      (set-frame-position frame offset (cadr (frame-get-center frame)))
      (incf offset (+ margin (frame-pixel-width frame))))))

(defun frame-restore-defaults (frame)
  (modify-frame-parameters frame default-frame-alist))

(defun frame-default ()
  (interactive)
  (mapcar 'frame-restore-defaults (frame-list))
  (if (&amp;gt; (length (frame-list)) 1)
      (frame-tile-center-horizonal)
    (frame-center)))

(provide 'ime-frame)
&lt;/pre&gt;
&lt;p&gt;You can also call &lt;code&gt;M-x frame-tile-center-horizonal&lt;/code&gt; or &lt;code&gt;M-x frame-center&lt;/code&gt; by hand, if you like.&lt;/p&gt;</content>
		<author>
			<name>Ian</name>
			<uri>http://atomized.org</uri>
		</author>
		<source>
			<title type="html">Atomized » emacs</title>
			<subtitle type="html">Fragmenting reality.</subtitle>
			<link rel="self" href="http://atomized.org/tag/emacs/feed/"/>
			<id>http://atomized.org</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Julien Danjou: Emacs, Google Maps and BBDB</title>
		<link href="http://julien.danjou.info/blog/index.html#Emacs%2C%20Google%20Maps%20and%20BBDB"/>
		<id>http://julien.danjou.info/blog/index.html#Emacs%2C%20Google%20Maps%20and%20BBDB</id>
		<updated>2010-08-18T00:00:00+00:00</updated>
		<content type="html">&lt;p class=&quot;first&quot;&gt;Today's fun idea was to put all my contacts stored into &lt;a href=&quot;http://bbdb.sourceforge.net/&quot;&gt;BBDB&lt;/a&gt; on a Google
Maps' map, using my &lt;a href=&quot;http://julien.danjou.info/google-maps-el.html&quot;&gt;Google Maps extension for Emacs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the help of a few lines of Lisp glue:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;(google-maps-static-show
 &lt;span style=&quot;color: #729fcf;&quot;&gt;:markers&lt;/span&gt;
 (mapcar
  (&lt;span style=&quot;color: #729fcf; font-weight: bold;&quot;&gt;lambda&lt;/span&gt; (address-entry)
    `((,(concat
         (mapconcat
          'identity
          (elt address-entry 1) &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;, &quot;&lt;/span&gt;) &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;, &quot;&lt;/span&gt;
          (elt address-entry 2) &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;, &quot;&lt;/span&gt;
          (elt address-entry 3) &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;, &quot;&lt;/span&gt;
          (elt address-entry 4) &lt;span style=&quot;color: #ad7fa8; font-style: italic;&quot;&gt;&quot;, &quot;&lt;/span&gt;
          (elt address-entry 5)))))
  (mapcan
   (&lt;span style=&quot;color: #729fcf; font-weight: bold;&quot;&gt;lambda&lt;/span&gt; (record)
     &lt;span style=&quot;color: #888a85;&quot;&gt;;; &lt;/span&gt;&lt;span style=&quot;color: #888a85;&quot;&gt;We need to copy the returned list, because mapcan will modify it later
&lt;/span&gt;     (copy-list (bbdb-record-addresses record)))
   (bbdb-records))))
&lt;/pre&gt;

&lt;p&gt;we can make that:&lt;/p&gt;

&lt;p class=&quot;image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://julien.danjou.info/images/emacs-google-maps-bbdb.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It's really simplistic, but I did not need more to have fun. :-)
This could be extended to set a specific marker and/or color for each
contact, with a legend. I'll let that as an exercise for my readers.&lt;/p&gt;



&lt;a href=&quot;http://flattr.com/thing/47923/Julien-Danjous-blog&quot; target=&quot;_blank&quot;&gt;
&lt;img alt=&quot;Flattr this&quot; border=&quot;0&quot; src=&quot;http://api.flattr.com/button/button-compact-static-100x17.png&quot; title=&quot;Flattr this&quot; /&gt;&lt;/a&gt;</content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/index.html</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<subtitle type="html">Julien Danjou's blog</subtitle>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.html</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Ian Eure: Scratch buffers for Emacs</title>
		<link href="http://atomized.org/2010/08/scratch-buffers-for-emacs/"/>
		<id>http://atomized.org/?p=748</id>
		<updated>2010-08-17T03:44:55+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;I often find myself needing to quickly work on some code that’s mostly unrelated to my task at hand. This comes up often when pair programming and code reviews, where you might want to illustrate a tactic without adding useless code to your current buffer.&lt;/p&gt;
&lt;p&gt;Ordinarily, you’d use &lt;code&gt;*scratch*&lt;/code&gt;, but it’s useful to have your scratch buffer use mode for the language you want to write code in, and &lt;code&gt;*scratch*&lt;/code&gt; doesn’t fulfill this unless you’re hacking on emacs-lisp.&lt;/p&gt;
&lt;p&gt;To this end, I created &lt;a href=&quot;http://github.com/ieure/scratch-el&quot;&gt;scratch-el&lt;/a&gt;, a bit of code for doing just this.&lt;/p&gt;
&lt;p&gt;When you invoke it with &lt;code&gt;M-x scratch&lt;/code&gt;, it gives you a scratch buffer with the same mode as your current buffer. So if you’re editing Python code, you get a &lt;code&gt;*python*&lt;/code&gt; buffer which uses python-mode. If you’re in a shell, you get a shell-script-mode buffer, and so on.&lt;/p&gt;
&lt;p&gt;If you invoke it with a prefix argument, as &lt;code&gt;C-u M-x scratch&lt;/code&gt;, it will prompt you for the mode to use, which can be helpful if you want to noodle on a SQL query while editing your app code. There is tab completion support for all known major modes.&lt;/p&gt;
&lt;p&gt;If you want to save the resulting work, it’s just a &lt;code&gt;C-x C-w&lt;/code&gt; away.&lt;/p&gt;</content>
		<author>
			<name>Ian</name>
			<uri>http://atomized.org</uri>
		</author>
		<source>
			<title type="html">Atomized » emacs</title>
			<subtitle type="html">Fragmenting reality.</subtitle>
			<link rel="self" href="http://atomized.org/tag/emacs/feed/"/>
			<id>http://atomized.org</id>
		</source>
	</entry>

	<entry>
		<title type="html">Oleksandr Gavenko: Determining running environment and platform capabilities in Emacs.</title>
		<link href="http://brain-break.blogspot.com/2010/08/determining-running-environment-and.html"/>
		<id>tag:blogger.com,1999:blog-4276477044725324295.post-8061587042991005336</id>
		<updated>2010-08-16T21:39:37+00:00</updated>
		<content type="html">To proper work on different Emacs releases and on different platforms large/complex &lt;code&gt;.emacs&lt;/code&gt; config file must check certain condition.
&lt;p&gt;
I collect come of them and by this post make it public.
&lt;/p&gt;&lt;p&gt;
So check variables:
&lt;/p&gt;&lt;div id=&quot;code&quot;&gt;  emacs-major-version
  emacs-minor-version
  window-system             - 'nil' if in terminal, 'w32' if native Windows build, 'x' if under X Window
  window-system-version     - for windows only
  operating-system-release  - release of the operating system Emacs is running on
  system-configuration      - like configuration triplet: cpu-manufacturer-os
  system-name               - host name of the machine you are running on
  system-time-locale
  system-type               - indicating the type of operating system you are using:
                              'gnu' (GNU Hurd), 'gnu/linux', 'gnu/kfreebsd' (FreeBSD),
                              'darwin' (GNU-Darwin, Mac OS X), 'ms-dos', 'windows-nt', 'cygwin'
  system-uses-terminfo
  window-size-fixed
&lt;/div&gt;

and check functions:

&lt;div id=&quot;code&quot;&gt;  (fboundp ...)             - return t if SYMBOL's function definition is not void
  (featurep ...)            - returns t if FEATURE is present in this Emacs
  (display-graphic-p)       - return non-nil if DISPLAY is a graphic display; graphical
                              displays are those which are capable of displaying several
                              frames and several different fonts at once
  (display-multi-font-p)    - same as 'display-graphic-p'
  (display-multi-frame-p)   - same as 'display-graphic-p'
  (display-color-p)         - return t if DISPLAY supports color
  (display-images-p)        - return non-nil if DISPLAY can display images
  (display-grayscale-p)     - return non-nil if frames on DISPLAY can display shades of gray
  (display-mouse-p)         - return non-nil if DISPLAY has a mouse available
  (display-popup-menus-p)   - return non-nil if popup menus are supported on DISPLAY
  (display-selections-p)    - return non-nil if DISPLAY supports selections
&lt;/div&gt;
Run those checks as below:
&lt;div id=&quot;code&quot;&gt;
  (when window-system ...)
  (when (eq window-system 'x) ...)
  (when (&amp;gt;= emacs-major-version 22) ...)
  (when (fboundp '...) ...)
  (when (featurep '...) ...)
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4276477044725324295-8061587042991005336?l=brain-break.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>gavenkoa</name>
			<email>noreply@blogger.com</email>
			<uri>http://brain-break.blogspot.com/search/label/emacs</uri>
		</author>
		<source>
			<title type="html">Brain break (en).</title>
			<subtitle type="html">it/security/free/math/sci/music
&lt;p&gt;
English version of  &lt;a href=&quot;http://brain-break-ru.blogspot.com&quot;&gt;brain-break-ru.blogspot.com&lt;/a&gt;. Enjoy!&lt;/p&gt;</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/4276477044725324295/posts/default/-/emacs"/>
			<id>tag:blogger.com,1999:blog-4276477044725324295</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Julien Danjou: Updating muse-el in Debian</title>
		<link href="http://julien.danjou.info/blog/index.html#Updating%20muse%2Del%20in%20Debian"/>
		<id>http://julien.danjou.info/blog/index.html#Updating%20muse%2Del%20in%20Debian</id>
		<updated>2010-08-15T20:43:00+00:00</updated>
		<content type="html">&lt;p class=&quot;first&quot;&gt;The Debian package of &lt;a href=&quot;http://mwolson.org/projects/EmacsMuse.html&quot;&gt;Emacs Muse&lt;/a&gt; was maintained by &lt;a href=&quot;http://mwolson.org/web/WelcomePage.html&quot;&gt;Michael W. Wolson&lt;/a&gt;, who is
also the upstream author of that software.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.mwolson.org/tech/projects/emacs_muse_3.20_released.html&quot;&gt;He announced months ago that Muse needed a new upstream maintainer.&lt;/a&gt; That's
not something I'm willing to do, since I really think Muse has been
superseded by &lt;a href=&quot;http://www.orgmode.org&quot;&gt;Org mode&lt;/a&gt; nowadays.&lt;/p&gt;

&lt;p&gt;However, I'm still using Muse to maintain this blog with my &lt;a href=&quot;http://julien.danjou.info/muse-blog.html&quot;&gt;muse-blog&lt;/a&gt;
extension, since Org still lacks some infrastructure to maintain and publish
a blog.&lt;/p&gt;

&lt;p&gt;Therefore, I adopted the &lt;a href=&quot;http://packages.qa.debian.org/m/muse-el.html&quot;&gt;Emacs Muse Debien package&lt;/a&gt; and updated it to the
latest version!&lt;/p&gt;



&lt;a href=&quot;http://flattr.com/thing/47923/Julien-Danjous-blog&quot; target=&quot;_blank&quot;&gt;
&lt;img alt=&quot;Flattr this&quot; border=&quot;0&quot; src=&quot;http://api.flattr.com/button/button-compact-static-100x17.png&quot; title=&quot;Flattr this&quot; /&gt;&lt;/a&gt;</content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/index.html</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<subtitle type="html">Julien Danjou's blog</subtitle>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.html</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Tom Tromey: Blog Reading Solved</title>
		<link href="http://tromey.com/blog/?p=683"/>
		<id>http://tromey.com/blog/?p=683</id>
		<updated>2010-08-14T19:13:50+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;I &lt;a href=&quot;http://tromey.com/blog/?p=602&quot;&gt;wrote&lt;/a&gt; a while ago about my blog-reading woes.  Those woes are now over!&lt;/p&gt;
&lt;p&gt;Lars Magne Ingebrigtsen, of Gnus and &lt;a href=&quot;http://www.gmane.org/&quot;&gt;gmane &lt;/a&gt;fame, has now brought us &lt;a href=&quot;http://www.gwene.org/&quot;&gt;gwene&lt;/a&gt; — an RSS to NNTP gateway.  You enter the feeds you want to read, and soon they show up as newsgroups in gmane.  Thanks also should go to Ted Zlanatov, for bringing this up on the gmane discussion list, and thus getting it all rolling.&lt;/p&gt;
&lt;p&gt;I haven’t quite retired my rss2email cron job, but that is mostly out of laziness.  Any day now.&lt;/p&gt;
&lt;p&gt;Normally I am unhappy about the whole SaaS trend, but gmane gets a pass.  I am not sure if it is because Lars seems trustworthy, or because NNTP is so obviously a fringe interest, or because gmane is at least theoretically replaceable in the event of the worst.&lt;/p&gt;</content>
		<author>
			<name>tom</name>
			<uri>http://tromey.com/blog</uri>
		</author>
		<source>
			<title type="html">The Cliffs of Inanity » Emacs</title>
			<link rel="self" href="http://tromey.com/blog/?cat=11&amp;feed=rss2"/>
			<id>http://tromey.com/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Flickr tag 'emacs': 43-089</title>
		<link href="http://www.flickr.com/photos/hdaniel/4880121285/"/>
		<id>tag:flickr.com,2004:/photo/4880121285</id>
		<updated>2010-08-10T22:50:38+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/people/hdaniel/&quot;&gt;hdaniel&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/hdaniel/4880121285/&quot; title=&quot;43-089&quot;&gt;&lt;img alt=&quot;43-089&quot; height=&quot;192&quot; src=&quot;http://farm5.static.flickr.com/4080/4880121285_fae0ed9bae_m.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Año 43 Día 89 Número 15795&lt;br /&gt;
&lt;br /&gt;
Programando el Nuevo Sistema de Control de Servicios de Cómputo&lt;/p&gt;</content>
		<author>
			<name>hdaniel</name>
			<email>nobody@flickr.com</email>
			<uri>http://www.flickr.com/photos/tags/emacs/</uri>
		</author>
		<source>
			<title type="html">Recent Uploads tagged emacs</title>
			<link rel="self" href="http://api.flickr.com/services/feeds/photos_public.gne?tags=emacs&amp;lang=en-us&amp;format=rss_200"/>
			<id>http://www.flickr.com/photos/tags/emacs/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Alex Bennée: Looping in LISP</title>
		<link href="http://www.bennee.com/~alex/blog/2010/08/10/looping-in-lisp/"/>
		<id>http://www.bennee.com/~alex/blog/?p=1772</id>
		<updated>2010-08-10T08:04:53+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Loops are a fairly important part of any programming language and fairly fundamental to a language that is purported to be all about manipulating lists. However it’s not something I use that often in my .emacs code so I thought it might be useful to discuss the various options with some examples.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt; I run emacs on a number of machines, each with a different set of sound sets. I want to set up set up a valid sound for erc but I don’t want an overly verbose set of cases depending on what machine I’m on. Instead a given a list of sound files I want a function that will return the first one that actually exists.&lt;/p&gt;
&lt;p&gt;This problem can be easily generalised into return the first valid path from a list of paths.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;First version: pure emacs lisp&lt;/h4&gt;
&lt;pre style=&quot;color: #f5deb3; background-color: #2f4f4f; font-size: 8pt;&quot;&gt;&lt;span style=&quot;color: #add8e6; font-style: italic;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #add8e6; font-style: italic;&quot;&gt;the 'elisp' way
&lt;/span&gt;(&lt;span style=&quot;color: #fa8072;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #7fffd4; font-weight: bold;&quot;&gt;find-valid-file-elisp-way&lt;/span&gt; (list-of-files)
  &lt;span style=&quot;color: #ffa07a;&quot;&gt;&quot;Go though a list of files and return the first one that is present&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #fa8072;&quot;&gt;let&lt;/span&gt; (r '())
    (mapc '(&lt;span style=&quot;color: #fa8072;&quot;&gt;lambda&lt;/span&gt; (f)
             (&lt;span style=&quot;color: #fa8072;&quot;&gt;if&lt;/span&gt; (file-exists-p f) (add-to-list 'r f)))
          list-of-files)
    (car r)))
&lt;/pre&gt;
&lt;p&gt;
First impressions aren’t good. The lisp parenthesis do seem to get in the way of making what is happening clear. However it’s using one of common &lt;a href=&quot;http://www.gnu.org/s/emacs/manual/html_node/elisp/Mapping-Functions.html&quot;&gt;mapping functions&lt;/a&gt; you see a lot of in lisp. A mapping function essentially takes a list, applies a function to each element of the list and eventually returns a result. The most common of the mapping functions is &lt;em&gt;mapcar&lt;/em&gt; which returns a modified list as a result. In this case that isn’t what we want so we use &lt;em&gt;mapc&lt;/em&gt; where the only value that is built up is the result &lt;em&gt;r&lt;/em&gt; as we identify each valid file. The final return value is just the first entry in that list. This does mean we have processed the whole list of alternatives which is sub-optimal.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Second version: Common Lisp Version&lt;/h4&gt;
&lt;pre style=&quot;color: #f5deb3; background-color: #2f4f4f; font-size: 8pt;&quot;&gt;(&lt;span style=&quot;color: #fa8072;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #7fffd4; font-weight: bold;&quot;&gt;find-valid-file-clisp-way&lt;/span&gt; (list-of-files)
  &lt;span style=&quot;color: #ffa07a;&quot;&gt;&quot;Go though a list of files and return the first one that is present&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #fa8072;&quot;&gt;loop&lt;/span&gt; for path in list-of-files
        until (file-exists-p path)
        finally return path))
&lt;/pre&gt;
&lt;p&gt;This version probably is the easiest to read for people familiar with other programming languages. The intention of the code jumps out at you. However the actual implementation is done with a macro. If you look at the help for &lt;em&gt;loop&lt;/em&gt; you’ll see it can take a number of different forms – follow that to the code and you’ll see a fairly complex elisp implementation. However to my mind still easier to follow than the pure elisp version with mapc.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Third Version: Using the dolist macro&lt;/h4&gt;
&lt;pre style=&quot;color: #f5deb3; background-color: #2f4f4f; font-size: 8pt;&quot;&gt;&lt;span style=&quot;color: #add8e6; font-style: italic;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #add8e6; font-style: italic;&quot;&gt;using 'cl-macs
&lt;/span&gt;(&lt;span style=&quot;color: #fa8072;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color: #7fffd4; font-weight: bold;&quot;&gt;find-valid-file-dolist-way&lt;/span&gt; (list-of-files)
  &lt;span style=&quot;color: #ffa07a;&quot;&gt;&quot;Go though a list of files and return the first one that is present&quot;&lt;/span&gt;
  (&lt;span style=&quot;color: #fa8072;&quot;&gt;dolist&lt;/span&gt; (f list-of-files)
    (&lt;span style=&quot;color: #fa8072;&quot;&gt;if&lt;/span&gt; (file-exists-p f)
        (&lt;span style=&quot;color: #fa8072;&quot;&gt;return&lt;/span&gt; f))))
&lt;/pre&gt;
&lt;p&gt;This is yet another version using an LISP macro but this one has considerably less potential forms to cause confusion. It’s fairly comprehensible what is going on and even follows the traditional parenthesis happy form. It also takes advantage of the common LISP &lt;em&gt;return&lt;/em&gt; to early return from the loop when we detect a valid file. If it makes it to the end of the list it evaluates the 3rd optional form to calculate the result which in this case will be ‘nil.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;So what do you think? What version do you prefer? Where does the balance lie between writing code is LISPy ways and for code comprehension? Are there any other ways to solve this particular problem? I’ll be looking forward to your comments.&lt;/p&gt;</content>
		<author>
			<name>Alex</name>
			<uri>http://www.bennee.com/~alex/blog</uri>
		</author>
		<source>
			<title type="html">Alex's Adventures on the Infobahn » emacs</title>
			<subtitle type="html">the wanderings of a supposed digital native</subtitle>
			<link rel="self" href="http://www.bennee.com/~alex/blog/tag/emacs/feed/"/>
			<id>http://www.bennee.com/~alex/blog</id>
		</source>
	</entry>

</feed>
