<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>Colin Watson   </title>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom</link>
    <description>Colin Watson's blog</description>
    <language>en</language>

  <item>
    <title>Tissue of lies</title>
    <pubDate>Fri, 13 Nov 2009 19:56:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/11/13#2009-11-13-tissue-of-lies</link>
    <description>
&lt;p&gt;In case it isn't obvious, in
&lt;a href=&quot;http://ubuman.wordpress.com/2009/11/13/ubuntu-9-10-sp1-coming-in-spring-2010/&quot;&gt;
&quot;Ubuntu 9.10 SP1 coming in spring 2010&quot;&lt;/a&gt;, &quot;Ubuman&quot; is blatantly lying in
attributing a number of statements to me. None of the text there was written
by me, and if you thought any of it was true then you should probably make
sure your troll radar is working properly. Nice joke, but try harder next
time - it doesn't even look like my writing style.&lt;/p&gt;

&lt;p&gt;(I wouldn't normally bother to respond, since I'm probably just giving it
more publicity, but apparently one or two people may already have been taken
in by it. One person was sensible enough to write to me and check the
facts.)&lt;/p&gt;</description>
  </item>
  <item>
    <title>Keysigning bits</title>
    <pubDate>Fri, 31 Jul 2009 13:32:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/07/31#2009-07-31-keysigning-bits</link>
    <description>
&lt;p&gt;If you're generating one of these shiny new RSA keys, do please remember
to &lt;a href=&quot;http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/&quot;&gt;generate
an encryption subkey too&lt;/a&gt; if you expect people to sign it - at least your
more obscure UIDs. I'm not going to mail unencrypted signatures around
unless I have some out-of-band knowledge that the e-mail address actually
belongs to the person I met.&lt;/p&gt;

&lt;p&gt;I generated a new 4096-bit RSA key myself at DebConf (baa!), and have
just published a
&lt;a href=&quot;http://www.chiark.greenend.org.uk/~cjwatson/key-transition&quot;&gt;key
transition document&lt;/a&gt;. Please consider signing my new key if you signed my
old one.&lt;/p&gt;</description>
  </item>
  <item>
    <title>man-db: 'man -K'</title>
    <pubDate>Tue, 14 Jul 2009 17:36:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/07/14#2009-07-14-man-db-K</link>
    <description>
&lt;p&gt;I recently implemented &lt;code&gt;man -K&lt;/code&gt; (full-text search over all
manual pages) in &lt;a href=&quot;http://man-db.nongnu.org/&quot;&gt;man-db&lt;/a&gt;. This was
inspired by a similar feature in Federico Lucifredi's
&lt;a href=&quot;http://primates.ximian.com/~flucifredi/man/&quot;&gt;man&lt;/a&gt; package
(formerly maintained by Andries Brouwer). I think I did a much better job of
it, though. The man package just forks grep for every manual page; man-db
takes advantage of the pipeline library I wrote for it a while back and does
it entirely in-process (decompression requires a fork but no exec, while the
man package has to exec gunzip as well).&lt;/p&gt;

&lt;p&gt;The upshot is that, with a hot cache, man-db takes around 40 seconds to
search all manual pages on my laptop; the man package (also with a hot
cache) takes around five minutes, and interactive performance goes down the
drain while it's doing it since it's spawning subprocesses like crazy. If I
limit to a single section, the disparity is closer to 3x than 10x, but it's
still very noticeable. It's interesting how much good libraries can do to
help guide efficient approaches to problems.&lt;/p&gt;

&lt;p&gt;Of course, a proper full-text search engine would be much better still, but
that's a project for some other time ...&lt;/p&gt;</description>
  </item>
  <item>
    <title>Python SIGPIPE handling</title>
    <pubDate>Thu, 02 Jul 2009 10:15:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/07/02#2009-07-02-python-sigpipe</link>
    <description>
&lt;p&gt;&lt;a href=&quot;http://www.enricozini.org/2009/debian/python-pipes/&quot;&gt;Enrico&lt;/a&gt;
writes about creating pipelines with Python's &lt;code&gt;subprocess&lt;/code&gt;
module, and notes that you need to take care to close stdout in non-final
subprocesses so that subprocesses get &lt;code&gt;SIGPIPE&lt;/code&gt; correctly. This
is correct as far as it goes (and true in any language, although there's a
&lt;a href=&quot;http://bugs.python.org/issue1615376&quot;&gt;Python bug report requesting
that &lt;code&gt;subprocess&lt;/code&gt; be able to do this itself&lt;/a&gt;), but there's an
additional gotcha with Python that you missed.&lt;/p&gt;

&lt;p&gt;Python ignores &lt;code&gt;SIGPIPE&lt;/code&gt; on startup, because it prefers to
check every write and raise an &lt;code&gt;IOError&lt;/code&gt; exception rather than
taking the signal. This is all well and good for Python itself, but most
Unix subprocesses don't expect to work this way. Thus, when you are creating
subprocesses from Python, it is &lt;strong&gt;very important&lt;/strong&gt; to set
&lt;code&gt;SIGPIPE&lt;/code&gt; back to the default action. Before I realised this was
necessary, I wrote code that caused serious data loss due to a child process
carrying on out of control after its parent process died!&lt;/p&gt;

&lt;pre&gt;
import signal
import subprocess

def subprocess_setup():
    # Python installs a SIGPIPE handler by default. This is usually not what
    # non-Python subprocesses expect.
    signal.signal(signal.SIGPIPE, signal.SIG_DFL)

subprocess.Popen(command, preexec_fn=subprocess_setup)
&lt;/pre&gt;

&lt;p&gt;I filed a &lt;a href=&quot;http://bugs.python.org/issue1652&quot;&gt;patch&lt;/a&gt; a while
back to add a &lt;code&gt;restore_sigpipe&lt;/code&gt; option to
&lt;code&gt;subprocess.Popen&lt;/code&gt;, which would take care of this. As I say in
that bug report, in a future release I think this ought to be made the
default, as it's very easy to get things dangerously wrong right now.&lt;/p&gt;</description>
  </item>
  <item>
    <title>code_swarm video of Ubuntu uploads</title>
    <pubDate>Thu, 28 May 2009 22:32:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/05/28#2009-05-28-code_swarm</link>
    <description>
&lt;p&gt;Joey Hess posted a
&lt;a href=&quot;http://lists.debian.org/debian-boot/2009/05/msg00265.html&quot;&gt;draft&lt;/a&gt;
of a &lt;a href=&quot;http://code.google.com/p/codeswarm/&quot;&gt;code_swarm&lt;/a&gt; video for
d-i a couple of weeks ago, which reminded me that I've been meaning to do
something similar for Ubuntu for a while now as it's just about our
archive's fifth birthday. I have a more or less complete archive of all our
-changes mailing lists locally (I think I'm missing some of the very early
ones, before the end of July 2004; let me know if you were one of the very
early Canonical employees and have a record of these), and with the aid of
&lt;a href=&quot;https://help.launchpad.net/API/launchpadlib&quot;&gt;launchpadlib&lt;/a&gt; it's
fairly easy to map all the e-mail addresses into Launchpad user names,
massage out some of the more obvious duplicates, and then treat the stream
of uploads as if it were a stream of commits.&lt;/p&gt;

&lt;p&gt;If you haven't seen code_swarm before, each dot represents an upload, and
the dots &quot;swarm&quot; around their corresponding committers' names; more active
committers have larger swarms of dots and brighter names. I assigned a
colour to each of our archive components (uploads aren't really at the C
code vs. Python code vs. translations vs. whatever kind of granularity that
you see in other code_swarm videos), which mostly means that people who
predominantly upload to main are in roughly an Ubuntu tan colour, people who
predominantly upload to universe are coloured bluish, and people with a good
mixture tend to come out coloured green. If I get a bit more time I may try
to figure out enough about video editing software to add some captions.&lt;/p&gt;

&lt;p&gt;Here's the
&lt;a href=&quot;http://people.ubuntu.com/~cjwatson/ubuntu-uploads.ogv&quot;&gt;video&lt;/a&gt;
(194 MB).&lt;/p&gt;</description>
  </item>
  <item>
    <title>Bug triage, redux</title>
    <pubDate>Thu, 05 Mar 2009 11:04:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/03/05#2009-03-05-bug-triage-redux</link>
    <description>
&lt;p&gt;I've been a bit surprised by the strong positive response to my &lt;a href=&quot;http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/ubuntu/2009-02-27-bug-triage-rants.html&quot;&gt;previous post&lt;/a&gt;. People generally seemed to think it was quite non-ranty; maybe I should clean the rust off my flamethrower. :-) My hope was that I'd be able to persuade people to change some practices, so I guess that's a good thing.&lt;/p&gt;

&lt;p&gt;Of course, there are many very smart people doing bug triage very well, and I don't want to impugn their fine work. Like its medical namesake, bug triage is a skilled discipline. While it's often repetitive, and there are lots of people showing up with similar symptoms, a triage nurse can really make a difference by spotting urgent cases, cleaning up some of the initial blood, and referring the patient quickly to a doctor for attention. Or, if a pattern of cases suddenly appears, a triage nurse might be able to warn of an incipient epidemic. [Note: I have no medical experience, so please excuse me if I'm talking crap here. :-)] The bug triagers who do this well are an absolute godsend; especially when they respond to repetitive tasks with tremendously useful pieces of automation like &lt;a href=&quot;https://launchpad.net/bughelper&quot;&gt;bughelper&lt;/a&gt;. The cases I have trouble with are more like somebody showing up untrained, going through everyone in the waiting room, and telling each of them that they just need to go home, get some rest, and stop complaining so much. Sometimes of course they'll be right, but without taking the time to understand the problem they're probably going to do more harm than good.&lt;/p&gt;

&lt;p&gt;Ian Jackson reminded me that it's worth mentioning the purpose of bug reports on free software: namely, &lt;strong&gt;to improve the software&lt;/strong&gt;. The GNU Project has some &lt;a href=&quot;http://www.gnu.org/prep/maintain/maintain.html#Mail&quot;&gt;advice to maintainers&lt;/a&gt; on this. I think sometimes we stray into regarding bug reports more like support tickets. In that case it would be appropriate to focus on resolving each case as quickly as possible, if necessary by means of a workaround rather than by a software change, and only bother the developers when necessary. This is the wrong way to look at bug reports, though. The reason that we needed to set up a bug triage community in Ubuntu was that we had a relatively low developer-to-package ratio and a very high user-to-developer ratio, and we were getting a lot of bug reports that weren't fleshed out enough for a developer to investigate them without spending a lot of time in back-and-forth with the reporter, so a number of people volunteered to take care of the initial back-and-forth so that good clear bug reports could be handed over to developers. This is all well and good, and indeed I encouraged it because I was personally finding myself unable to keep up with incoming bugs and actually fix anything at the same time. Somewhere along the way, though, some people got the impression that what we wanted was a first-line support firewall to try to defend developers from users, which of course naturally leads to ideas such as closing wishlist bugs containing ideas because obviously those important developers wouldn't want to be bothered by them, and closing old bugs because clearly they must just be getting in developers' way. Let me be clear about this now: I absolutely appreciate help getting bug reports into a state where I can deal with them efficiently, but &lt;strong&gt;I do not want to be defended from my users&lt;/strong&gt;! I don't have a basis from which to state that all developers feel the same way, but my guess is that most do.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://antti-juhani.kaijanaho.fi/newblog/archives/471&quot;&gt;Antti-Juhani Kaijanaho&lt;/a&gt; said he'd experienced most of these problems in Debian. I hadn't actually intended my post to go to Planet Debian - I'd forgotten that the &quot;ubuntu&quot; category on my blog goes there too, which generally I see as a feature, but if I'd remembered that I would have been a little clearer that I was talking about Ubuntu bug triage. If I had been talking about Debian bug triage I'd probably have emphasised different things. Nevertheless, it's interesting that at least one Debian (and non-Ubuntu) developer had experienced similar problems.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jldugger.livejournal.com/25994.html&quot;&gt;Justin Dugger&lt;/a&gt; mentions a practice of marking duplicate bugs invalid that he has problems with. I agree that this is suboptimal and try not to do it myself. That said, this is not something I object to to the same extent. Given that the purpose of bugs is to improve the software, the real goal is to be able to spend more time fixing bugs, not to get bugs into the ideal state when the underlying problem has already been solved. If it's a choice between somebody having to spend time tracking down the exact duplicate bug number versus fixing another bug, I know which I'd take. Obviously, when doing this, it's worth apologising that you weren't able to find the original bug number, and explaining what the user can do if they believe that you're mistaken (particularly if it's a bug that's believed to be fixed); the stock text people often use for this doesn't seem informative enough to me.&lt;/p&gt;

&lt;p&gt;Sebastien Bacher commented that preferred bug triage practices differ among teams: for instance, the Ubuntu desktop team deals with packages that are very much to the forefront of users' attention and so get a lot of duplicate bugs. Indeed - and bug triagers who are working closely with the desktop team on this are almost certainly doing things the way the developers on the desktop team prefer, so I have no problem with that. The best advice I can give bug triagers is that their ultimate aim is to help developers, and so they should figure out which developers they need to work with and &lt;strong&gt;go and talk to them&lt;/strong&gt;! That way, rather than duplicating work or being counterproductive, they can tailor their work to be most effective. Everybody wins.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Bug triage rants</title>
    <pubDate>Mon, 02 Mar 2009 14:51:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/03/02#2009-02-27-bug-triage-rants</link>
    <description>
&lt;p&gt;I hate to say this, but often when somebody does lots of bug triage on a package I work on, I find it to be a net loss for me. I end up having to go through all the things that were changed, correct a bunch of them, occasionally pacify angry bug submitters, and all the rest of it, and often the benefits are minimal at best.&lt;/p&gt;

&lt;p&gt;I would very much like this not to be the case. Bug triage is supposed to help developers be more efficient, and I think most people who do bug triage are generally well-intentioned and eager to help. Accordingly, here is a series of mini-rants intended to have educational value.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Bugs are not like fruit.&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;Fruit goes bad if you leave it too long. By and large, bugs don't, especially if they're on software that doesn't change very much. There is no reason why a bug filed against a package in Ubuntu 4.10 where the relevant code hasn't changed much since shouldn't still be perfectly valid. Even if it isn't, it deserves proper consideration.&lt;/p&gt;

    &lt;p&gt;My biggest single annoyance with bug triage is people coming around and asking if bugs are still valid when they haven't put any effort into reproducing them themselves. This annoys bug submitters too; every so often somebody replies and says &quot;didn't you even bother to check?&quot;. This gives a very bad impression of us as a project - wouldn't it be better if we looked as if we knew what we were talking about? There is a good reason to do this kind of check, of course: random undiagnosed crash reports and the like may well go away due to related changes, and it is occasionally worth checking. But if the bug is already well-understood and/or well-described, you should just go and check whether it's still there rather than asking.&lt;/p&gt;

    &lt;p&gt;As I understand it, the intended workflow is that people file bugs, then if they aren't clear enough bug triagers work with the submitter to gather information until they are, then they're passed to developers for further work. We seem to have added an extra step wherein submitters must periodically give their bug a health-check, and if they don't then it gets closed as being out of date. In a small minority of cases this is useful; in most cases, frankly, it makes us look a bit clueless. Can we please stop doing this? The more we waste people's time doing this, the less likely it is that they'll bother to respond to us, and this might help our statistics but doesn't help the project as a whole.&lt;/p&gt;

    &lt;p&gt;I know that there's a problem with bug count. I think every project of non-trivial size has that problem. But, honestly, the right answer is to &lt;em&gt;fix more bugs&lt;/em&gt; - and, personally, I would be able to spend more time doing that if I weren't often running around trying to make sure that bugs I care about aren't getting overenthusiastically closed just because somebody thinks they've been lying around too long.&lt;/p&gt;

    &lt;p&gt;There is a good way to expire bugs like this, of course. It goes something like this: &quot;I've read through your bug and tried to reproduce it with a current release, but I'm afraid I can't do so. Are you still experiencing it? If not, then I think it might have been fixed by [this change I found in the package's history that seems to be related].&quot; You can't do this &lt;em&gt;en masse&lt;/em&gt;, but you'll get a much better response from submitters, you'll learn more doing it, and in the process of doing the necessary investigation of each bug you'll find that there are many cases you don't have to ask about at all.&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Wishlist bugs are not intrinsically bad.&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;There are certainly cases where something is far too broad or vague for a bug report; but there are also plenty of cases, probably far more, where the wish in question is a relatively small change to the program, or doesn't need any more sophisticated tracking, and a wishlist bug is just right. If you don't know the program very well, it may be difficult to tell whether a wishlist bug is appropriate or not; in that case, just leave the bug alone.&lt;/p&gt;

    &lt;p&gt;Please, for the love of all that's holy, don't close wishlist bugs saying that people should use Brainstorm or write a specification instead! If you don't want to see wishlist bugs in your statistics, just filter them out; it's quite easy to do. Even worse, don't tell people that something probably isn't a good idea when you aren't familiar with the software; people who have gone to the effort of writing up their idea for us deserve a response from somebody who knows the software well. I've encountered cases where friends of mine submitted a bug report (sometimes even at my request) and then a triager told them it was a bad idea and closed their bug. This sort of thing puts people off Ubuntu.&lt;/p&gt;

    &lt;p&gt;Specifications are software design documents. As such, they are best written by software designers. People who tell other people to go and write a specification may not realise that as a result of doing this for three years it's now essentially impossible to find anything in the specification system! The intent was never that every user of Ubuntu would need to write a specification to get anything changed; specifications are used by developers to document the results of discussions and write up plans. They are not a straightforward alternative to wishlist bugs, nor do they turn out to work very well as what many formal processes call &quot;requirements documents&quot;; the process of refining the latter in the context of Ubuntu might involve wishlist bugs, mailing list threads, wiki pages, private discussions with developers, or things of that nature, and probably shouldn't involve creating a specification until the requirements-gathering process is well underway.&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Closing a bug is taking an item off somebody's to-do list.&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;You wouldn't go up to a colleague's whiteboard and take an eraser to it unless you were sure that was OK, would you? Yet people seem to do that all the time with bugs. It's OK when the bug is really just like a support request - &quot;help, it crashed, what do I do?&quot; - and either you're pretty sure it's user error or there's just no way to get enough information to fix it. But once the initial triage process is done, now it's on somebody's to-do list.&lt;/p&gt;

    &lt;p&gt;This is closely related to ...&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;If a developer has accepted it, leave it alone.&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;Every so often I find that there's a bug that I have accepted by way of a bug comment or setting to Triaged or whatever, or even a bug that I filed on a package I work on as a reminder to myself, and somebody comes along and asks for more information or asks if we can still reproduce it or something. The hit rate on this kind of thing is extraordinarily low. There's a good chance that the developer went and verified the bug against the code, and in that case it certainly doesn't need more information (or they would have asked for it) and it probably isn't going to go away without anyone noticing.&lt;/p&gt;

    &lt;p&gt;In most other free software projects, developers file bug reports themselves as a reminder about things that need to be done, and people leave them alone unless they're intending to help with the fix. In Ubuntu, developers also have to spend time making sure that those to-do items don't get expired. Nobody is helped by this.&lt;/p&gt;

    &lt;p&gt;&lt;a href=&quot;https://launchpad.net/launchpad-gm-scripts&quot;&gt;launchpad-gm-scripts&lt;/a&gt; includes a Greasemonkey script called &lt;code&gt;lp_karma_suffix&lt;/code&gt;, which can help you to identify developers without having to spend lots of time clicking around.&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Check whether the package is being actively worked on.&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;Some packages are actively worked on in Ubuntu; some aren't (e.g. we just sync packages from Debian, or they're basically orphaned, or whatever). It's worth checking which is which before doing any kind of extensive triage work. If it's being actively worked on, why not go and talk to the developer(s) in question first? It's only polite, and it will probably help you to do a better job.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;</description>
  </item>
  <item>
    <title>Totem BBC plugin</title>
    <pubDate>Mon, 27 Oct 2008 12:41:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/10/27#2008-10-27-totem-bbc-plugin</link>
    <description>
&lt;p&gt;A while back, the &lt;a href=&quot;http://www.bbc.co.uk/&quot;&gt;BBC&lt;/a&gt; approached
&lt;a href=&quot;http://www.canonical.com/&quot;&gt;Canonical&lt;/a&gt; about providing seamless
access to unencumbered BBC content for all
&lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; users (in the UK and elsewhere). We
agreed to approach this by way of a plugin for our primary media player,
&lt;a href=&quot;http://www.gnome.org/projects/totem/&quot;&gt;Totem&lt;/a&gt;, and asked
&lt;a href=&quot;http://www.collabora.co.uk/&quot;&gt;Collabora Multimedia&lt;/a&gt; to do the plugin
development work.&lt;/p&gt;

&lt;p&gt;The results are in what will shortly be released as Ubuntu 8.10, and are
looking really rather good. At the moment the content available from the BBC at
present is mostly audio, but support for video is in place and the feed is
expected to be fleshed out here over time. We have a genre classification
scheme in place, and will see how that scales as the amount of available
content grows. The code has been
&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=555823&quot;&gt;submitted
upstream&lt;/a&gt;, although there are still a few issues to work out there.&lt;/p&gt;

&lt;p&gt;This is not the same thing as iPlayer; all the content available here is
DRM-free. Some of it is geographically restricted to the UK, and these
restrictions are handled on the server side to make sure that the client is
free of encumbrances.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/&quot;&gt;Christian Schaller&lt;/a&gt; from
Collabora &lt;a href=&quot;http://blogs.gnome.org/uraeus/2008/10/08/868/&quot;&gt;posted&lt;/a&gt;
about this a little while ago. Since then, the UI has been improved somewhat
and some I/O issues have been fixed to the point where we felt comfortable
enabling the BBC plugin (as well as the YouTube plugin) by default in Ubuntu
8.10. Here's a
&lt;a href=&quot;http://people.ubuntu.com/~cjwatson/totem-bbc-2.png&quot;&gt;screenshot&lt;/a&gt; of
the current interface.&lt;/p&gt;

&lt;p&gt;This is exciting stuff with a lot of potential. To try it out, run
Applications -&amp;gt; Sound &amp;amp; Video -&amp;gt; Movie Player and select the &quot;BBC&quot;
entry from the drop-down box labelled &quot;Playlist&quot;. If you find bugs, please
&lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/totem/+filebug&quot;&gt;report&lt;/a&gt;
them!&lt;/p&gt;</description>
  </item>
  <item>
    <title>Re: Perl is strange</title>
    <pubDate>Mon, 23 Jun 2008 17:59:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/06/23#2008-06-23-reply-perl-is-strange</link>
    <description>
&lt;p&gt;&lt;a href=&quot;http://www.df7cb.de/blog/2008/Perl_is_strange.html&quot;&gt;Christoph&lt;/a&gt;:
That's because &lt;code&gt;=~&lt;/code&gt; binds more tightly than &lt;code&gt;+&lt;/code&gt;. This
does what you meant:&lt;/p&gt;

&lt;pre&gt;
$ perl -le 'print &quot;yoo&quot; if (1 + 1) =~ /3/'
&lt;/pre&gt;

&lt;p&gt;perlop(1) has a useful table of precedence.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Don't use sshkeygen.com to generate keys!</title>
    <pubDate>Mon, 23 Jun 2008 11:55:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/06/23#2008-06-23-ssh-keygen</link>
    <description>
&lt;p&gt;To my horror, I recently saw &lt;a href=&quot;http://www.sshkeygen.com/&quot;&gt;this
online SSH key generator&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope nobody reading this needs to be told why this is a bad idea.
However, in case you do, here are a few reasons:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;
  Every SSH implementation I know of - certainly all the major ones - that
  support public key authentication also provide a key generation utility.
  Even aside from all the good reasons not to, there is simply no reason why
  you should need to use a web-based tool in the first place.
 &lt;/li&gt;
 &lt;li&gt;
  How can you trust the person running this site? Without implying that I
  know he or she is untrustworthy (I don't), and with the best will in the
  world, it's a big Internet with a lot of nasty people on it. Do you really want somebody you don't know in a position to keep a copy of all your
  private keys?
 &lt;/li&gt;
 &lt;li&gt;
  Even if the person is trustworthy, the server running sshkeygen.com is now
  a giant blinking target. If lots of people use it, there is every
  incentive in the world for the bad guys to try to take control of it so
  that they can keep a copy of all your private keys. (Or, as we know from
  recent bitter experience, they can just give out keys from a limited set
  and it will probably take a couple of years before anyone notices ...)
 &lt;/li&gt;
 &lt;li&gt;
  The front page of sshkeygen.com says that the keys are escrowed. The plain
  English meaning of this would be that the operator of that site keeps a
  copy of the private key, to be held in trust in case (presumably) you lose
  it and need to retrieve it. Normally this sort of thing depends on a legal
  trust relationship, perhaps linked to a contract. What does it mean here?
  Is it just a buzzword? If it isn't, then this just makes sshkeygen.com
  even more of a target.
 &lt;/li&gt;
 &lt;li&gt;
  sshkeygen.com delivers keys to you over unencrypted HTTP. Yes, this is on
  its &lt;a href=&quot;http://www.sshkeygen.com/about.php&quot;&gt;to-do list&lt;/a&gt;. That
  isn't really an excuse.
 &lt;/li&gt;
 &lt;li&gt;
  Even if keys were delivered over HTTPS, that still relies on people
  diligently checking the authenticity of the certificate. A self-signature
  (as suggested as an alternative in the to-do list) would be impossible to
  check with any reliability; and will people who have trouble with
  non-web-based key generation software really be able or inclined to
  confirm the signature chain? Browsers typically don't enforce this very
  strictly, or if they do they provide fairly simple ways to bypass the
  enforcement, simply because so many sites have broken or poorly-signed SSL
  certificates, and keeping up with all the CAs is pretty hard work too.
 &lt;/li&gt;
 &lt;li&gt;
  Furthermore, delivering private keys over HTTPS makes that SSL certificate
  a single giant blinking target. Might it be compromised? How would you
  tell? What servers would need to be compromised in order to get a copy of
  the private SSL key?
 &lt;/li&gt;
 &lt;li&gt;
  Sure, Debian is in an awkward position here given the recent OpenSSL
  random number generation vulnerability. However, how do you know that
  sshkeygen.com is running on a system that doesn't suffer from this? (As it
  happens, I have checked, and it doesn't appear to suffer from this
  vulnerability - but most people won't check and won't know how to check.)
 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I &lt;em&gt;think&lt;/em&gt; this is probably being done in innocent seriousness
(although I kind of hope it's a joke in poor taste), and have e-mailed the
contact address offering to explain why it's a bad idea.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Desktop automounting pain</title>
    <pubDate>Sat, 12 Apr 2008 09:46:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/04/12#2008-04-12-desktop-automount-pain</link>
    <description>
&lt;p&gt;Ubuntu's live CD installer, Ubiquity, needs to suppress desktop
automounting while it's doing partitioning and generally messing about with
mount points, otherwise its temporary mount points end up busy on unmount
due to some smart-arse desktop component that decides to open a window for
it.&lt;/p&gt;

&lt;p&gt;To date, it employs the following methods, each of which was sufficient
at the time:&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;
  Set the &lt;code&gt;/desktop/gnome/volume_manager/automount_drives&lt;/code&gt; and
  &lt;code&gt;/desktop/gnome/volume_manager/automount_media&lt;/code&gt; gconf keys to
  &lt;code&gt;false&lt;/code&gt;.
 &lt;/li&gt;
 &lt;li&gt;
  Tell &lt;code&gt;kded&lt;/code&gt; to unload its &lt;code&gt;medianotifier&lt;/code&gt; module,
  and load it again just before the installer exits.
 &lt;/li&gt;
 &lt;li&gt;
  Set the &lt;code&gt;/apps/nautilus/desktop/volumes_visible&lt;/code&gt; gconf key to
  &lt;code&gt;false&lt;/code&gt;.
 &lt;/li&gt;
 &lt;li&gt;
  Set the &lt;code&gt;AutomountDrives&lt;/code&gt; and &lt;code&gt;AutomountMedia&lt;/code&gt; keys
  in &lt;code&gt;$HOME/.config/Thunar/volmanrc&lt;/code&gt; to &lt;code&gt;FALSE&lt;/code&gt;.
 &lt;/li&gt;
 &lt;li&gt;
  Set the &lt;code&gt;/apps/nautilus/preferences/media_automount&lt;/code&gt; and
  &lt;code&gt;/apps/nautilus/preferences/media_automount_open&lt;/code&gt; gconf keys to
  &lt;code&gt;false&lt;/code&gt;.
 &lt;/li&gt;
 &lt;li&gt;
  The entire installer is run under &lt;code&gt;hal-lock --interface
  org.freedesktop.Hal.Device.Storage --exclusive&lt;/code&gt;.
 &lt;/li&gt;
 &lt;li&gt;
  Set the &lt;code&gt;/apps/nautilus/preferences/media_autorun_never&lt;/code&gt; gconf
  key to &lt;code&gt;true&lt;/code&gt;
  (&lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/210620&quot;&gt;experimental,
  but apparently now required since nautilus uses the gio volume
  monitor&lt;/a&gt;).
 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is getting &lt;strong&gt;ridiculous&lt;/strong&gt;. Dear desktop implementors:
please pick a configuration mechanism and stick to it, and provide backward
compatibility if you can't. This is not a rocket-science concept.&lt;/p&gt;

&lt;p&gt;I rather liked the &lt;code&gt;hal-lock&lt;/code&gt; mechanism; it was simple and
involved minimal fuss. I had hoped that it might end up as a standard, but I
guess that would be too easy.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Vim omni completion for Launchpad bugs</title>
    <pubDate>Thu, 31 Jan 2008 11:19:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/01/31#2008-01-31-vim-lpbug-omnicomplete</link>
    <description>
&lt;p&gt;I hacked together a little timesaver for developers this morning: omni
completion for Launchpad bugs in Vim's debchangelog mode. To use it, install
vim 7.1-138+1ubuntu3 once it hits the mirrors, open up a
&lt;tt&gt;debian/changelog&lt;/tt&gt; file, type &quot;LP: #&quot;, and hit Ctrl-X Ctrl-O. It'll
think for a while and then give you a list of all the bugs open in Launchpad
against the package in question, from which you can select to insert the bug
number into your changelog.&lt;/p&gt;

&lt;p&gt;Here's a screenshot to make it clearer:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://people.ubuntu.com/~cjwatson/lp-omnicomplete.png&quot;&gt;&lt;/p&gt;

&lt;p&gt;Thanks to Stefano Zacchiroli for doing the same for Debian bugs back in
July.&lt;/p&gt;</description>
  </item>
  <item>
    <title>UTF-8 manual pages</title>
    <pubDate>Tue, 29 Jan 2008 01:58:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2008/01/29#2008-01-29-utf-8-manual-pages</link>
    <description>
&lt;p&gt;See
&lt;a href=&quot;http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2007-09-17-man-db-encodings.html&quot;&gt;
Encodings in man-db&lt;/a&gt; for context.&lt;/p&gt;

&lt;p&gt;Yesterday, I uploaded
&lt;a href=&quot;http://lists.debian.org/debian-devel-changes/2008/01/msg02665.html&quot;&gt;
man-db 2.5.1-1&lt;/a&gt; to unstable. With this version, not only is it possible
to install manual pages in UTF-8 (as with 2.5.0, although with fewer bugs),
but it's also possible to ask man to produce a version of an arbitrary page
in the encoding of your choice, and have it guess the source encoding for
you fairly reliably. This finally provides enough support to have debhelper
&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=462937&quot;&gt;
automatically recode manual pages to UTF-8&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It'll probably take a little while to shake out the corner-case bugs, but
I'm generally pretty happy with this. Once the new man-db and debhelper land
in testing, I'll send a note to debian-devel-announce and push harder on my
&lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=440420&quot;&gt;policy
amendment&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Considering the historical state of man-db when it comes to localisation,
and all of the dependencies and general yak-shaving that had to be tackled
to get here, this represents the end of probably several hundred hours of
work, so I'm pretty happy that this is out the door. The only remaining step
is to add UTF-8 input support to groff, which fortunately Brian M. Carlson
is
&lt;a href=&quot;http://lists.gnu.org/archive/html/groff/2007-11/msg00018.html&quot;&gt;working&lt;/a&gt;
&lt;a href=&quot;http://lists.gnu.org/archive/html/groff/2008-01/msg00004.html&quot;&gt;on&lt;/a&gt;.
After that, we can reasonably claim to have dragged manual pages kicking and
screaming into the 21st century.&lt;/p&gt;</description>
  </item>
  <item>
    <title>aptitude safe-upgrade</title>
    <pubDate>Thu, 29 Nov 2007 20:51:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2007/11/29#2007-11-29-safe-upgrade</link>
    <description>
&lt;p&gt;&lt;a href=&quot;http://blog.drinsama.de/erich/en/linux/debian/2007112801-dist-upgrade-hints.html&quot;&gt;Erich&lt;/a&gt;:
I do sometimes wonder why we don't relax the definition of &quot;safe&quot; upgrades
to include installing new packages but still not removing old ones. I know
that many of my uses of dist-upgrade are just for when something grows a new
dependency that I didn't previously have installed.&lt;/p&gt;

&lt;p&gt;(Of course this wouldn't always help as it wouldn't account for a new
dependency that conflicted with an old dependency, but never mind. It would
certainly do wonders for the metapackage case.)&lt;/p&gt;</description>
  </item>
  <item>
    <title>Encodings in man-db</title>
    <pubDate>Mon, 17 Sep 2007 09:34:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2007/09/17#2007-09-17-man-db-encodings</link>
    <description>
&lt;p&gt;I've spent some quality upstream time lately with man-db. Specifically,
I've been upgrading its locale support. I recently published a pre-release,
&lt;a href=&quot;http://people.debian.org/~cjwatson/man-db/man-db-2.5.0-pre2.tar.gz&quot;&gt;
man-db 2.5.0-pre2&lt;/a&gt;, mainly for translators, but other people may be
interested in having a look at it as well. I hope to release 2.5.0 quite
soon so that all of this can land in Debian.&lt;/p&gt;

&lt;p&gt;Firstly, man-db now supports creating and using databases for per-locale
hierarchies of manual pages, not just English. This means that
&lt;a href=&quot;http://bugs.debian.org/29448&quot;&gt;apropos and whatis can now display
information about localised manual pages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Secondly, I've been working on the transition to UTF-8 manual pages. Now,
modulo some hacks, groff can't yet deal with Unicode input; some possible
input characters are reserved for its internal use which makes full 32-bit
input difficult to do properly until that's fixed. However, with a few
exceptions, manual pages generally just need the subset of Unicode that
corresponds to their language's usual legacy character set, so for now it's
good enough to just recode on the fly from UTF-8 to some appropriate 8-bit
character set and use groff's support for that.&lt;/p&gt;

&lt;p&gt;man-db has actually supported doing this kind of thing for a while, but
it's been difficult to use since it only applies to
&lt;code&gt;/usr/share/man/ll_CC.UTF-8/&lt;/code&gt; directories, while manual pages
usually aren't country-specific. So, man-db 2.5.0 supports using
&lt;code&gt;/usr/share/man/ll.UTF-8/&lt;/code&gt; instead, which is a bit more
appropriate. Also, following a
&lt;a href=&quot;http://lists.debian.org/debian-mentors/2007/09/msg00245.html&quot;&gt;
discussion with Adam Borowski&lt;/a&gt;, man-db can now try decoding manual pages
as UTF-8 and fall back to 8-bit encodings even in directories without an
explicit encoding tag; if this fails for some reason, you can put a
&lt;kbd&gt;'\&quot; -*- coding: UTF-8 -*-&lt;/kbd&gt; line at the top of the page.&lt;/p&gt;

&lt;p&gt;I'm still debating whether Debian policy should recommend installing
UTF-8 manual pages in &lt;code&gt;/usr/share/man/ll.UTF-8/&lt;/code&gt; or just in
&lt;code&gt;/usr/share/man/ll/&lt;/code&gt;. Initially I was very strongly in favour of
an encoding declaration, but now that man-db can do a pretty good job of
guesswork I'm coming round to Adam Borowski's position that people should be
able to forget about character sets with UTF-8. Opinions here would be
welcome. One thing I haven't moved on is that any design that assumes that
the encoding of manual pages on the filesystem has anything to do with the
user's locale is demonstrably incorrect and broken; I'm not going to use
&lt;code&gt;LC_CTYPE&lt;/code&gt; for anything except output. However, maybe &quot;UTF-8 or
the usual legacy encoding provided that the latter is not typically confused
for the former&quot; is a good enough specification, and that still has the
desirable property of not requiring a flag day. I'll try to come down from
the fence before unleashing this code on the world.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Keysigning public service announcement</title>
    <pubDate>Wed, 04 Jul 2007 19:45:00 +0100</pubDate>
    <link>http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2007/07/04#2007-07-04-keysigning-psa</link>
    <description>
&lt;p&gt;If your key has so many UIDs and such a combinatorially exploded number
of signatures on it that it takes gpg minutes just to start up in --edit-key
mode, then I probably won't bother signing it. HTH, HAND.&lt;/p&gt;</description>
  </item>
  </channel>
</rss>