be less verbose

Here in Dublin I’ve been more “formally” introduced to the world of board games. Back at home, a friend had a copy of Settlers of Catan, and we used to play every now and then, but that was it.

Since I arrived I’ve been attending to weekly “board game nights”, and I’ve had the opportunity to play several more, most of which I liked a lot. I’ve played Agricola, Caylus, and Power Grid, all very nice. I’ve also played Race for the Galaxy, which I didn’t like much at first, but which I’ve come to enjoy a bit more as of lately. (All four are in the top-10 of Board Game Geek.)

I’m going to miss this when I get back, particularly since my friends will most certainly not be up to weekly games. I should investigate to see if some kind of board games club exists in Alicante. If you know of one, or are reading this and would be interested in organizing something, please let me know.

Posted Sat, 23 Aug 2008 00:21:03 +0100
Posted Sat, 23 Aug 2008 00:14:55 +0100

Oh dear, more than a month without posting here. Let’s throw in some random updates:

  • I’m in Dublin for the summer, doing an internship at Google. I’m not exactly thrilled by the project they’ve assigned me to, mostly because it’s C++, but oh well. We’ll see later about getting a full-time position.

  • I’m not going to be at DebConf. Not only I got the “amount unable to fund yourself” box backwards (40% vs 60%), but the money I was hoping to spend in travelling was unexpectedly needed at home. I tried tricking Google into sponsoring me, but as I was told, “In Google we are generous, but not that generous”. This is the first DebConf I’ll be missing since I joined Debian.

  • I didn’t fare too well in my return to University. I abandoned most courses, and got my first failure (ever) in one of the few I didn’t abandon. I’ll continue studying one more year at least, but it’ll be hard deciding what to do if I don’t manage to finish by then, because I really, really need to go forward with my life.

Posted Sun, 03 Aug 2008 01:48:55 +0100

I normally don’t play computer games, never been a big fan. Once in a while, though, I will try one, normally when some irc channel I’m in becomes a fan of it.

This afternoon Miriam introduced us to Krank. And now I’m hooked (though I’m not sure for how long, as the title hints).

There are basically four kinds of objects: two you can move, and two you can’t. The objective is to move the movable ones onto the static ones, in a way that makes the static ones disappear (according to the rules here).

I must say, I enjoy levels with links and anchors very, very much. Ah, and Miriam made packages available. (The code is Python and is public domain; the images are mostly free-for-non-commercial, hence the “-nonfree” suffix.)

Posted Thu, 19 Jun 2008 20:57:19 +0100

Lucas asks about how he hates reformatting paragraphs in text documents he keeps in Git, because it creates unnecessary noise in the diffs. He also hates, though, not reformatting the paragraphs, because lines can become very long then, and he wants some kind of “smart formatter”.

My take on this is that you shouldn’t change your preferred workflow to adapt it to how your tools work, but to adapt your tools to work well with your preferred workflow (here, reformatting paragraphs). Or, even better, reading the manual page to discover that your tools can already adapt to it.

In particular, for this problem, I recommend reading diffs for text documents with git’s --color-words. A couple screenshots to show it in action:

Posted Fri, 13 Jun 2008 10:28:20 +0100

My theory is that we humans have faith on stuff in order not to throw ourselves through the window. It is my current belief, though, that one should not have more faith than strictly necessary — I’m not very sure why I think that, though, I just feel it.

Since I’m fine with the idea that there may not be any life after death, or that nobody superior created us, I choose not to have faith in any god, or on the absence of them, nor I follow any form of religion.

However, I do have faith in other stuff. Mainly, I have an immovable (and irrational) faith that, at some point in my life, I will find a life partner. And I do have such strong faith because the sole thought of not finding one would make me, indeed, throw myself through the window.

And I really wish it wasn’t that way.

Posted Tue, 10 Jun 2008 11:20:02 +0100 Tags:

It’s time for recommending five films again. I’ve also decided that I may reserve the last of the five for films I watched prior to starting these series.

So here we go:

  • Au revoir les enfants (Goodbye, Children): just watch it, really. (France, World War II, children in a school run by priests, but there’s a part I’m not telling you.)

  • El bosque animado: a superb film that every Spanish person should watch. Magic comedy & drama set up in rural Galicia. Amazing Tito Valverde.

  • eXistenZ: yet another one by David Cronenberg, involving futuristic video games this time. Quite a good see, but predictable ending?

  • Billy Elliot: the kid who wants to dance ballet. Predictive and linear, but I just loved it, as I expected — maybe you will too.

    The scene where Billy says goodbye to Michael just completely and utterly broke my heart, probably because I identified so much with Michael.

  • Now, Voyager: Bette Davis plays an ugly duckling, that obviously transforms into an awesome swan. Superb. Oh, and Bette Davis.

Posted Tue, 10 Jun 2008 11:16:05 +0100 Tags:

Managing a transition is not always easy, because many times they are bigger than you, and have parts you can’t directly take care of yourself because it’s not your area of expertise, you don’t have access, or whatever else. You end up, then, nagging people to do stuff for you, which for types like me is slightly uneasy.

It is a pleasure, though, when you find supportive fellow developers on the other side, just willing to help you, even if you always have more work for them. Thomas and Michael, thank you! (And thanks, in general, to everybody who helps the release team, past and future. We just can’t do everything!)

On reflection, I notice that I also find very gratifying to do stuff for others myself (particularly if I enjoy the task, of course), because it has an immediate payoff. Highly recommended.

Posted Thu, 05 Jun 2008 20:22:43 +0100

Sometimes, when you play with undo and redo and make, inadvertently or not, some changes in the middle, you find yourself unable to get to the state from where you parted, possibly loosing some words, or more.

Since version 7, Vim has a solution to this problem, named “undo branches”. The idea is simple: if you undo a change C, going back to state B, and make a new change D on top of B, instead of C becoming unreachable, it is stored in an undo branch.

Undo branches are navigated with the g- and g+ commands. For documentation:

  :help usr_32.txt
  :help undo.txt
Posted Sun, 01 Jun 2008 17:53:42 +0100

To control volume, I can adjust the “Master” mixer offered by KMix or alsamixer. Or I can adjust the “PCM” one.

But then, I can also adjust volume directly in my loudspeakers. Or, even, use the hardware buttons in this Thinkpad (which, afaik, can’t be mapped into modifying ALSA values).

For once, so much choice annoys me.

Posted Wed, 28 May 2008 21:13:37 +0100

Now that I use Git at various places, I wanted a tool to send commit diffs. And, I couldn’t find one.

There is the contrib/hooks/post-receive-email script, which does a lot of smart stuff to interpret the stdin of the post-receive hook, but which can’t send out diffs, nor produce nice subjects by default.

Since, to be honest, post-receive-email scares me a bit, and I dreaded the idea of carrying a modified copy around everywhere I needed commit diffs, I went on and created a simple script to send out diffs.

The initial idea was stolen from Philipp Kern (kudos!): abuse git-format-patch to produce the emails, and send those. The first hurdle was that the post-receive hook can receive packed updates, whereas you get notified that a branch changed from rev. N to rev. N+4.

I really wanted to keep things simple, so I didn’t want to find out a list of all the revisions between those two, and invoke git-format-patch for each of those. And I didn’t want to generate temporary files, either (just git-format-patch —stdout).

Then, while doing the dishes, inspiration came, and I saw I could easily let git-format-patch generate a stream of emails, and use formail(1) to split them.

Anyway, this story is becoming larger than the script itself. You can fetch it with:

  % git clone http://chistera.yi.org/~adeodato/tmp/other/git-post-receive-diff.git

After a bit of using, and polishing it a bit more, I think I’ll submit it for contrib/ in git.

Posted Wed, 21 May 2008 12:37:42 +0100

So going alone to the cinema yesterday was not a first, but going alone and being alone in the room certainly was, and an unexpected one.

This was, as far as I know, the premiere in Alicante of Enloquecidas, which is certainly not that of a remarkable film, but which was entertaining enough, and provided some very good laughs.

What is wrong with this city?!

(Update: hm, seems I’m mistaken about the “premiere” bit. Oh well.)

Posted Sat, 17 May 2008 12:58:47 +0100

Unlike Steve, I don’t particularly mind going to the cinema alone. In fact, it’s becoming a growing habit for Friday nights, when my friends go to some meetings about their faith I don’t participate in (nor their meetings, nor their faith). I really hate getting home early on Fridays, so I take chance to go to movies I know we wouldn’t be going together anyway.

(Oh, and in case I haven’t said here already, the movie offerings in this “city” suck big balls. Virtually no undubbed sessions, virtually no non-mainstream movies. I don’t think I’ll still be here in a couple years, but boy would I be unhappy if the circumstances forced me to.)

Posted Fri, 16 May 2008 19:55:08 +0100

Here in this library, next to a couple computers available to query the catalog, a sign reads:

Do not connect your laptop to these jacks. You may loose all data in your computer.

If I wasn’t a computer-savy person, I’m completely sure I would’ve thought: “They’re bluffing.” And then shit happens, because they’re not.

(Oh, but then of course the sign is not 100% honest either.)

Posted Fri, 16 May 2008 19:20:14 +0100

One of the people who most fiercely fought software patents here in Spain and Europe jokingly (?!) uses the word “fag” to insult random people he dislikes. (But so do tons of other people I don’t interact with, of course.)

I used not to be annoyed by this at all, but tonight I felt differently, and it really bothered me (possibly because it was somebody from my community who did it). Life is easier when you don’t care, I guess, but I think it’s a good thing that I care now, since without such caring things can’t and won’t change.

Posted Sat, 10 May 2008 03:20:46 +0100

As I mentioned, this week I’ve been in Sevilla as a finalist for the 2nd edition of a Free Software contest. Each participant at this stage made a presentation of their project, and this afternoon the winners were disclosed. I’m happy to share that Minirok won the 1st prize in its category, yay!

Also, Dudesconf was simply terrific — I’m so happy I could attend this year. And, as for every conference, eternal gratitude to the organizers: people from GPUL, you simply rock!!

Posted Fri, 09 May 2008 18:42:53 +0100

These last two weeks most of my time has been sucked into getting Python 2.5 as default into testing. That’s done now. I made use of the block uploads thingie ftpmaster implemented for the release team to use. Basically, if your package could disrupt an “almost there” transition, the upload will be rejected.

The blocks were in place for 5 days, which I think it’s acceptable. As long as we don’t end blocking stuff for very long, I think we should be fine. See the end of this post for more about this.

Though it was quite a bit of work, I’m very glad I took care it myself, since now I really feel I’m 100% back to Debian, after the time I spent off for health reasons.

Update: Oh, and I forgot to say: having control over britney has really really helped. Thanks a lot Joerg for that.


Dudesconf

Tomorrow I’m leaving to Coruña for Dudesconf, which is a kind of Debconf-ES. I’m giving an introductory talk to Git, a semi-lighting talk about grep-dctrl (30 min.), and (gasp) a talk about Debian packaging with a VCS. We may have a Debian Quiz as well.

I’m so looking forward to it, since many people who’ll attend are amongst my most loved ones, and I already missed last year’s since I wasn’t fully recovered yet. See you there!


Minirok and Sevilla

One of the reasons I wasn’t fully back to release management during the past 5 months or so is because I spent as much time as I had doing development for Minirok. I don’t think I mentioned here before, but I was participating in a Free Software Contest for college students organized by the University of Sevilla, Spain. Such effort finally paid off, since Minirok was elected as one of the finalists.

This means next week I’ll go to Sevilla, to make a presentation of the project, and who knows what more. ;-)

I’m very excited.


Finally, more on blocking uploads

This Python 2.5 transition was the first time the block uploads feature was used, and there were a couple bumps along the way. In particular, a couple packages were blocked, when they shouldn’t have been (libqt4-ruby and evolution-sharp), and one needed package was not blocked, though Rene Engelhard thankfully spotted it very quickly (mono).

The problem is it’s not completely straightforward to generate a list of all the stuff that could possibly affect the transition. What I did was to make a run of britney on an arch that had all the needed bits in place, and block all the packages that migrated together as a result of the hint.

This fails in two ways:

  • it can include stuff that is not needed for the transition, namely unrelated packages that happen to become candidates for testing by one of the their dependencies having migrated as part of the hint. This is what happened with libqt4-ruby and evolution-sharp.

  • it can miss stuff that is needed, like packages that can migrate by themselves, so the main run prior to the hint migrates them, and hence do not show up as part of the hint, but that some package of the transition depend on. This is what happened with mono.

The second problem, though, can be fixed by parsing the excuses list and blocking stuff that some bits of the transition depends on. Easy enough.

Yet, there are more cases when things can go wrong, for example a shlibs-bumping upload of a package (say, sqlite3) linked against by some package still needing a couple of builds (say, qt4-x11).

For that, blocking uploads is not an option, since that’d be an insane amounts of packages that, furthermore, can be uploaded if they don’t bump shlibs, so I guess we’ll have to ask in the next release update that shlibs-bumping uploads are coordinated in -release too, at least when close to finishing a transition.

Posted Wed, 30 Apr 2008 17:41:37 +0100

Yesterday I watched Les invasions barbares, a film by Canadian director Denys Arcand. I came to find it because one of my favourite cinemas in this oh-so-small city was premiering L’âge des ténèbres, the third part of a trilogy started by Le déclin de l’empire américain, and continued by Les invasions barbares above.

I loved Les invasions barbares. I think it’s a very honest film, but for me not only it portrayed a reality and set of characters that I found credible, I also felt empowered by watching attitudes towards life so compatible, if not similar, to my own. Reminds me a bit of some of the feelings I had when watching Juno.

It is also one film more to add to my (smallish) collection of films I’ve watched in French (with subtitles), though I’m intending to fix that: I really enjoy French, as well as enjoyed all Canadian or French I’ve watched in the past. We’ll see how it goes.

Posted Fri, 18 Apr 2008 10:58:37 +0100 Tags:

Sometimes, I’ll accidentally set my music player into “repeat track” or “repeat playlist” mode while working (my playlists are normally short, btw, one album or so).

The funny bit is the number of times the track or playlist needs to be repeated in order to get me to notice. Not that many, but interesting nevertheless.

Posted Tue, 15 Apr 2008 16:36:25 +0100

By pure chance I read somebody mentioning giggle in #git. It’s a visualizer for git branches written in C using GTK+. I find the output a bit nicer than that of gitk, at least on some repos. As Mike Hommey points out, though, it’s quite slow on medium and big repositories.

P.S.: It’s packaged for Debian.

Posted Wed, 09 Apr 2008 10:16:21 +0100

Unlike Martin and Daniel, please do call me by my IRC nick in real life, mostly because that’s what I’ve been called by everybody since I was 0.

On writing the long version is ok.

Posted Fri, 04 Apr 2008 13:41:27 +0100

I had never seen a prank upset so many people. On the other hand, almost 50 people (blindly?) said thanks!

Posted Tue, 01 Apr 2008 19:24:55 +0100

I knew I liked to make my shell aliases short, but I wanted some statistics (FSVO “statistics”). With a simple pipe:

  % alias | sed -e 's/^alias //;s/=.*//;s/././g' | sort | uniq -c | sort -rn
       27 ....
       25 ...
       20 ..
       12 .
       11 .....
        7 ......
        6 ........
        4 .........
        2 .............
        2 .......
        1 ...................

This means 2-4 character aliases are the most common (surprise, surprise), followed by 1-character aliases, of which I have (oh god) 12.

That’s 117 aliases total...

Posted Fri, 28 Mar 2008 08:46:53 +0000

This is fairly obvious in theory, but it’s the kind of thing you don’t always think about: when receiving patches via e-mail, it’s possible to have Mutt directly color them as vim or colordiff(1) does. I have this:

  % grep rc_diff ~/.muttrc
  macro   index   \e,sd   ":source ~/.mutt/rc_diff\n" "source ~/.mutt/rc_diff"
  macro   pager   \e,sd   ":source ~/.mutt/rc_diff\n" "source ~/.mutt/rc_diff"

  % cat ~/.mutt/rc_diff
  color body brightblue default   '^\+.*'
  color body brightred default    '^-.*'
  color body brightgreen default  '^(---|\+\+\+) .*'
  color body brightyellow default '^@@ .*'

Update: In case there was some confusion, the rc_diff snippet above is meant to be sourced only when there’s a mail with a patch, otherwise it’ll highlight parts of normail email too. The way to disable again, though, is quitting Mutt...

Posted Sun, 23 Mar 2008 14:28:34 +0000

Good: Probably because of its origins, there seems to be a higher willingness to write detailed commit messages in the Git community when necessary. I feel like at home.

Bad: I really miss the distinction between mainline revisions and merged revisions. I guess that if they had that, there’d be less urges to rebase and squash all over the place.

Posted Fri, 21 Mar 2008 15:15:26 +0000 Tags: git

I tend to favour text-mode applications (I’m sure vim, irssi, zsh and mutt account for most of my keystrokes, in that order), but there are times when a graphical application is called for, for example the browser. Or when I just find it more convenient, for example the music player.

Lately, though, I’ve been pleasantly surprised by a couple graphical applications, for which I had text-mode versions which worked more or less acceptably: a random-note taker (I was using vim), and a dictionary (/usr/bin/dict).

I’ve replaced these two with Lars’ Notetak, and StarDict. I’ve found that having them constantly running in desktop #2 (which is one keystroke away) beats having to start up vim or dict each time. Curiously enough, in both cases the main interface of the application is a text input line which offers some kind of “incremental search” functionality.

StarDict is packaged in Debian (package name stardict-gtk or stardict-gnome), and Notetak, being Python, is easy enough to run from source (the page claims there is a Debian repository there, though I can’t access it).

Posted Fri, 21 Mar 2008 13:52:34 +0000

Via Planet Warp, Blaxter blogs about MyEpisodes.com. Useful to keep track of your pending episodes to watch and acquire. I like the “All-In-One!” view.

Update: Oh, and as several people mentioned, there is also pogdesign.co.uk/cat, but that’s only a calendar of upcoming episodes, you can’t track your status with it AFAICS. OTOH, it doesn’t require a login, only a cookie.

Posted Wed, 19 Mar 2008 12:15:45 +0000

I’ll blush and admit that I’ve always been a bit of the “my package my castle” type. But things change, and now I feel differently about my packages.

I toyed with the idea of adding myself to the low threshold NMU list, but it didn’t make me very happy for several motives:

  • first and foremost, it places emphasis on the upload as the basic unit of collaboration, whereas I think such unit should be the commit

  • places the information on a network location, whereas I think the information should be more readily available and near the package itself

  • uses “non-maintainer upload” to describe itself, which is already something else

Then there is the collab-maint project in Alioth, which is nowadays intended as a general purpose area for small teams or groups of co-maintainers to collaborate in their packages, without needing to create a full-fledged Alioth project. Every DD and many non-DD have write access to it, but a package being there does not mean that its maintainers want other people to use such write access on their packages. But, alas, there is no standard way of saying that you do want people to make use of that access, and how (of such way could also benefit projects that make use of the Debian acl, to advertise the fact).

So, as a first draft to fill in these gaps, I’ve migrated several packages of mine to the collab-maint umbrella, and added a X-Collab-Maint header to debian/control to signal that I’m open to collaborations on them. For me, a header felt the best way to express this information, since it ends up being very accessible (only one apt-cache showsrc away). As Zack points out to me, though, having it in a header doesn’t necessarily mean the source of the header has to be debian/control forever (think e.g. what debtags does) — this leads to interesting possibilities, like changing the policy without an upload, or setting the same policy for a large set of related packages.

As for the contents of the header, I think a reduced vocabulary would work best. As a start, this is the one I’ve been using for my packages:

  • commit-branch: please commit your stuff into a branch, so that I can review and merge it. Other people could just use commit if they prefer commits to trunk directly.

  • upload-10: feel free to make an upload with your changes if I haven’t acked them within 10 days. Other people could use upload-with-ack, to signal that you’re happy for other people to upload, but that’d you like to review first. Or even upload-0.

Other stuff that’s could be specified includes whether people making a commit should notify the maintainer or not, before letting the upload day count tick. But, if the idea seems worth it, I’m sure we can debate it to death on -project, or something.

Posted Sun, 16 Mar 2008 18:04:13 +0000

I uploaded amule 2.2.0~20080309-1 to experimental yesterday. It should fix the search-related crashes from 2.1.3, and be really close to the final 2.2.0 release.

Posted Mon, 10 Mar 2008 12:37:35 +0000

At the moment I keep my packages in Bazaar branches. I only version the debian/ subdir (whereas I have the .bzr directory at the same level as debian, i.e. not debian/.bzr). I do that because then $VCS operations work without having to be under debian.

One drawback is that the output of status is a bit too noisy, with lots of “unknown” files (all the upstream files). I address that by aliasing bzr std to “bzr status debian”.

With git, one could just have the following:

  % cat .gitignore
  /*
  !/debian
  /debian/files
  ...

Update: One of the Bazaar guys, Wouter van Heyst, points out on IRC that bzr can do it as well:

  % cat .bzrignore
  RE:(?!debian/).*
  ./debian/files
  ...

In fact, possibly more: lines starting with RE: are interpreted as Python regular expressions.

Posted Sat, 08 Mar 2008 15:11:25 +0000 Tags: git

So I was impatient enough and took a stab at writing a bzr frontend for git-fast-import(1). (By the way, the idea behind git-fast-import rocks, and is being adopted by other projects, e.g. bzr-fastimport.)

I announced it here, and for now it lives in:

http://chistera.yi.org/~adeodato/tmp/other/bzr-fast-export.git

Posted Fri, 07 Mar 2008 12:19:55 +0000 Tags: git

1. Bzr

Exactly 2 years ago I started using bzr. I wanted to start using one of the new distributed VCS for my small projects, and I chose bzr. Not having the time/energy to do an exhaustive comparison among them and try them all to see which one I liked most, I read some articles about them, and decided that bzr would be the most appropriate for me, and that I’d stick to it if I was satisfied enough. (JFTR, at that time it was very important for me the ability to serve branches over plain HTTP, and bzr was the only one in which HTTP was a first-class citizen.)

I’ve found bzr easy to use and to learn, powerful enough, customizable enough via plugins, and in general, not requiring a whole lot of attention to get things done. Also, not slow enough as to abandon it.

2. Git

Yesterday somebody posted in #bzr a link to this post by Elijah Newren, where one comment said:

There’s one thing I keep telling people though: Learning git is like learning vi — it’s different from the VCS/text editors you know on a fundamental level. But once you’ve overcome that problem, you’ll not want to go back. Ever.

Which pretty much matched the idea I had of git.

In the summer after my first year at Uni, I told myself: “OK, let’s learn vim.” And I think it’s one of the decisions that has paid off the most. Like learning to touch type.

Reading the above quoted paragraph made more urgent the doubts I had been sporadically having during the past year: maybe I would have been better served by choosing Git instead of Bzr in the first place. What would be my life like if I had stayed with joe?

3. More about Git

So yesterday I decided to spend a couple hours (or three) getting the feel of it, trying to find cool stuff. Until now, whenever I had had the need to use git, I just sticked to the bare minimum, without diving into it.

I’m going to mention only two examples of the cool stuff I found. And I’ll confirm that, in my opinion, the comparison to vi really holds.

  1. commands have lots of options. Tons. And some are incredibly cool, for example git log -S. It allows you to show entries whose diff contains the given string (or pattern, with --pickaxe-regex). I was missing bzr’s log --message, but it was obviously there, as log --grep.

  2. Elijah has another entry that talks about what he dubs the “libmo”, and how it’s different between git and the rest, because of the “index is not automatic” schema.

    In particular, that entry opened my eyes about one very useful use of the index: putting there parts of an upcoming commit that are known to be correct, and that need no further inspection. Doing that with git add -p makes those parts no longer appear in your git diff, which is... whoa.

    I like to review before committing a lot. However, with other VCSen I always find myself reviewing/glancing at the same parts over and over. So having a way to review what’s pending or WIP is something to die for. And I know even before getting addicted to it!

4. More about Bzr

I’m not sure I want to completely switch from bzr to git, not yet anyway. However, I think I’ll try it for some new projects, or migrate some minor ones.

Before I can migrate everything I’ll need a bzr frontend for git-fast-import. One of the bzr authors, Ian Clatworthy, has written bzr-fastimport, and he tells me a simple exporter would not be very hard to write, and that he may even put some work into it.

Also, I’m (still?) not very sold with some of the git standard practice of throwing away parts of your history regularly. We’ll see about that.

Finally, one feature of bzr I would love to see in git is indented formatting for non-mainline revisions in log output (for git, in --topo-order mode only). This is most needed when you’re not rewriting your history for submission to mainline, I’ll reckon. Compare —date-order to —topo-sort to —topo-sort with —indent.

Update: For this —indent thing, one could use tig, which after pressing g offers a sort of tree view in a curses-based interfaces. Somebody had mentioned this on IRC, and Peter Baumann kindly mentioned again over e-mail after reading this entry.

Posted Wed, 05 Mar 2008 12:18:51 +0000 Tags: git

I’ve decided to blog about films whenever there are in my backlog five films I’d like to mention or talk about. I’ll also mention that, when I moved to ikiwiki, I set up a films.rss feed, and some other stuff. Now:

  • A History of Violence: short and incredible. Has flaws but I still give it 4.5/5. I’ll check more of Cronenberg (I loved, ages ago, M. Butterfly and Dead Ringers).

  • Bent: gays, nazis, camp. Intense but not overly rough. Mick Jagger plays a drag singer named Greta.

  • Elsa y Fred: terrific love story between two elderly people. Magnificent China Zorrilla. Ignore if you can’t stand romance or Argentinian.

  • Martian Child: entertaining, has children and dogs, never ever ever ever ever give up.

  • No Country for Old Men: oooh. All my friends hated it and told me: “you are going to love it”. And Bardem really steals the show. More below.


You may want to skip this part if you haven’t seen No Country for Old Men, though I won’t be spoiling much. My friends watched it some weeks ago, and I did yesterday (I refused to go with them to a dubbed session).

One of them told me that she had disliked it very much because of the uneasiness she got from it, about how human life can result so worthless for people, and so on. Chatting a bit more, we came to the conclusion that I watch these films differently.

Basically, I can unplug the empathy off from a film whenever (simplifying a bit) violence or cruelty reaches a certain level, and just consider it an entertainment completely unrelated to reality. Sort of, anyway. And I don’t think I could enjoy (some) films as much if I didn’t.

For me, No Country for Old Men had no message in it, and had a single story line: following close the path of a creature portrayed by Bardem, that (maybe not) strangely enough managed to keep me hooked to the screen, not minding the low pace, and finding the end (minus the dreaming bits) very appropriate.

Posted Sun, 02 Mar 2008 17:19:27 +0000 Tags:

I use the enhanced commentify script from vim.org to easily comment and decomment parts of code. It knows about comment delimiters in a ton of languages, and it’s generally nice.

Lately, I’ve been a bit annoyed about commenting several lines with different indent levels. In particular, given for example this snippet:

  def foo():
      if duck.is_hungry():
          grab_food()
          feed_duck()

If one instructs the script to comment the three last lines, the result is:

  def foo():
      # if duck.is_hungry():
          # grab_food()
          # feed_duck()

When what I would like is:

  def foo():
      # if duck.is_hungry():
      #     grab_food()
      #     feed_duck()

There is one variable one can set to achieve this behavior: EnhCommentifyUseBlockIndent. However, it only works when commenting from visual mode. From normal mode (what I normally use — that is, going to e.g. line 2 above, and pressing 3,c), it doesn’t work, because from normal mode the commenting function does not receive the block, it just gets called three times, once per line.

To solve this, the solution I found was to create a custom command that accepts a range, and calls the function exactly once, for the whole block.

In particular, this is all my enhanced commentify configuration from ~/.vimrc:

  let EnhCommentifyPretty = "yes"
  let EnhCommentifyUserBindings = "yes"
  let EnhCommentifyRespectIndent = "yes"
  let EnhCommentifyUseBlockIndent = "yes"

  " The MyEnhancedCommentify bit is needed because the normal nmap just
  " calls EnhancedCommentify() <count> times, thus UseBlockIndent can't
  " work.
  nmap <Leader>c :MyEnhancedCommentify<CR>
  vmap <Leader>c <Plug>VisualTraditional
  command! -range MyEnhancedCommentify 
      \ call EnhancedCommentify('', 'guess', <line1>, <line2>)
Posted Sun, 02 Mar 2008 11:28:54 +0000

To make sure we achieve that, we are building them in an oldstable chroot.

My eyes stare at that sentence in disbelief. Eddy, I’m sure it must be working out for you nicely (otherwise you wouldn’t blog about it), but could you at least be so kind as to include a disclaimer saying this method is not guaranteed to work, and why? (eg. soname bumps). TIA, WTF, HAND.

Posted Thu, 28 Feb 2008 20:28:10 +0000

Bus line #23 here starts in Mutxamel, goes through San Juan, reaches the Hospital, and then goes all the way to Alicante.

Many months ago already, a new bus line was created: 34L. This line shares parts of its way with #23, namely from Mutxamel to the Hospital. After that, they diverge.

After all this time, still today (and every other day too) many people mistakenly take 34L thinking it is #23.

And it’s not as if the buses don’t carry a big yellow-on-black sign with their number...

Posted Mon, 18 Feb 2008 17:59:44 +0000

With /usr/bin/screen -dm you can start a screen non-interactively, eg. from cron, passing the command to run and its arguments as normal arguments:

  @reboot    screen -dm rtorrent -p 12345-12346

However, I wanted to start from cron a screen that would run various commands, each in its own window. AFAIK you can’t do this with a simple invocation, but you can prepare a custom screenrc file that defines which commands to run, with the screen command. For example:

  % cat ~/.screenrc_foo
  escape "^Oo"
  startup_message off
  hardstatus alwayslastline "%w"

  screen 0 command0 -x -y
  screen 1 command1 -z -w
  screen -t windowname 2 command2
  screen -t windowname 3 sh -c 'cd ~/quux && ./wrapper.sh'

Then you start it from cron like this:

  @reboot    screen -dm -c ~/.screenrc_foo

Thanks to Luca Capello and Romain Francoise in #debian-devel for the tip.

Update: Laurence J. Lane points on IRC the -X option to screen, so you could do without the screenrc file and do it like this:

  % screen -dmS NAME command0 -x -y
  % screen -S NAME -X screen command1 -z -w
  % screen -S NAME -X screen -t windowname command2
  ...
Posted Sat, 16 Feb 2008 10:58:38 +0000

I’m obviously not discovering the Americas here, given the sheer amount of research, theory and whatnot one can find for this topic, but I need to vent. Also, please excuse my terminology and my bias.

In Spain we have two main political parties, the one that advertises itself as the rightish-center option, but is sliiiightly more to the right than that (PP), and the one that wears socialism in its name, but is sliiiightly less to the left than that (PSOE). Then there are some minority parties, like the nationalists, and United Left (IU).

So, ideally, my ballot à-la-Debian would always be:

  [1] IU
  [2] PSOE
  [4] PP
  [3] None of the above

But sadly you can’t vote like that in the real world (?), and can only pick one. Without a fscking second round. So every election I’m left wandering in the cold land of tactical voting.

One last interesting bit: when talking about my wishes for a two round system with a good friend, who also happens to be a PP fanboy, he said: “But with that system PP would never govern!” And I think there’s some truth to that.

Posted Thu, 14 Feb 2008 19:14:35 +0000

OK, blogging this because I would have found it very useful today if somebody else had. Hopefully the title is enough to get love from the search engines.

  import readline

  def raw_input_with_default(prompt, default):
      def pre_input_hook():
          readline.insert_text(default)
          readline.redisplay()

      readline.set_pre_input_hook(pre_input_hook)
      try:
          return raw_input(prompt)
      finally:
          readline.set_pre_input_hook(None)
Posted Thu, 14 Feb 2008 17:42:37 +0000 Tags: python

Christian, watch out while “just” running iconv. I’ve encountered in the past changelog files with parts in iso-8859-1, and parts in utf-8...

Posted Mon, 04 Feb 2008 20:30:58 +0000

Links in Markdown can be done in a couple ways. First, similarly to HTML links, where you place the link next to the anchor text, like this:

  I am a [Debian](http://www.debian.org) Developer.

Or, if you feel this clutters your paragraphs too much, you can choose an alternate syntax, which I prefer (particulary handy for very long links):

  I am a [Debian][] Developer. Bla bla bla...

    [debian]: http://www.debian.org

There is however a gotcha with this alternate syntax, namely, anchor text with spaces in them. This works fine:

  I study Computer Science in [this University][].

    [this University]: http://www.ua.es

But this does not:

  Some years ago, I started studying Computer Science in [this
  University][]. Bla bla bla...

    [this University]: http://www.ua.es

This actually happens quite a lot when formatting the paragraphs in the editor, which made this otherwise-pleasant syntax almost a no-go for me.

(Well, to be honest you could use it like this, but still:

  Some years ago, I started studying Computer Science in [this
  University][uni]. Bla bla bla...

    [uni]: http://www.ua.es

)


There is a beta version of Markdown in experimental that almost fixes the problem. This version introduces a new but similar syntax for links: you can omit the second pair of empty brackets. And when using that newer syntax, there is code in the program to change newlines into a space when looking for the link definition. It is not applied to the code path of the old syntax, though, which is a pity.

This is all explained in bug #459885, with a patch as well (that applies both to 1.0.1 and 1.0.2). You can find packages with that patch applied here.

Posted Sat, 02 Feb 2008 10:44:45 +0000

I had a couple of annoyances with suspend in my laptop, namely that the screen would not lock prior to suspending (this seems to be #407224), and that sound would not work after resume (this seems to be an ALSA driver bug; muting and unmuting Master and PCM solves the issue).

For this latter problem, I just wanted to drop a script somewhere to do the mute/unmute dance on resume automatically, but I was a bit lost as to where to put it. (Or, rather, I thought I’d be a bit lost even if I investigated.)

Anyway, I recently moved to pm-utils from powersaved, since that’s what my kpowersave recommends first, and not only now my screen gets locked properly, but there is somewhat clear documentation as to where to put such scripts: /etc/pm/sleep.d. So I now have there a script like:

  case "$1" in
      thaw|resume)
          amixer -q sset Master mute
          amixer -q sset Master unmute

          amixer -q sset PCM mute
          amixer -q sset PCM unmute
      ;;
      *)
      ;;
  esac

I only miss one thing: in my old suspend to disk scheme, the computer would change to a console where progress about the operation would be reported. Now it’s just a blank console. Guess it’s time to investigate again. (But overall I’m happy about the move.)

Posted Sat, 02 Feb 2008 10:15:08 +0000

Debian meetings are fun, there is no doubt, but they are also magic, because things happen that would not happen otherwise. I had this Debian Enhancement Proposals idea in my mind since late August 2006, but I had let it rot for various reasons. During the Extremadura QA meeting last December, some conversation happened that made my head pop out the idea, run it past some people, find the energy and, together with Lars and Zack, produce a draft.

So, the bottom line of this post is: go to meetings and participate, or sponsor/organize them if you can, because there’s not telling what can come out of them!

Posted Wed, 16 Jan 2008 19:00:46 +0000

Aw, listening to the two first songs mentioned in the previous post almost makes me cry. The songs, here and here.

(Notice the subtle but precious difference between his “in anyone else”, and hers.)

Posted Wed, 16 Jan 2008 12:58:52 +0000 Tags:

Juno was totally worth my time, I gave it 5/5 stars. When having a prospective look at it, it didn’t seem I would enjoy it much, but I decided to trust Movielens on this one, and that payed off.

Long story short, Juno is a sixteen year old girl that gets pregnant, and then a very appealing movie happens. Then a slightly questionable (rushed?) end comes, but I enjoyed that part the most. I liked the general tone of the movie, and the two youngsters were adorable.

The soundtrack was awesome as well. I loved the song on the opening titles, All I want is you by Barry Louis Polisar (listen here), and the one in the last scene, Anyone else but you from The Moldy Peaches, but performed by the actors themselves.

Update (2008-01-16): Mention track titles in the last paragraph.

Update 2 (2008-01-16): After listening to the soundtrack today, I can’t but highlight Kimya Dawson’s songs, particularly: Tire Swing, Loose Lips, and Tree Hugger.

Posted Tue, 15 Jan 2008 22:53:35 +0000 Tags:

(Disclaimer: I’ve decided to blog this mainly to get it off my mind. I’m not claiming it’s viable or appropriate, nor that the tool would be up to the job, or anything else. Heck, I’m not even involved with debian-www at all, but don’t we all love to share happy ideas.)

The other day, when trying to think of a possible Summer of Code project to undertake this year, I thought that working on migrating (by making a parallel copy, see below) www.debian.org and wiki.debian.org to be ikiwiki-powered could be one, and see how it goes.

Me, I think that having www.debian.org use a markup language, and have wiki.debian.org (or www.debian.org/wiki) live in a real VCS (us being Debian people, after all) would be two big pluses.

The www instance would be only editable via the repository, either by the current group or DD-wide, and would have stuff like htmlscrubber disabled. And the wiki would be another setup/instance, with the normal setup for an ikiwiki wiki setup, backed up by a real e.g. Subversion repository open to all DDs, and possibly contributors at request. I believe that would be very very cool. Plus web edits as usual.

This could also be used as a fresh start, and maybe as an opportunity to accomplish the long-awaited re-design of the site: if this job is done by making a live paralell copy, able to update itself from the current webml repository, and MoinMoin as well, it would give an interesting playground for experimenting, and could be adopted later on, when it’s truly polished, if ever.

Posted Sat, 12 Jan 2008 13:22:18 +0000

When talking in Spanish these days, particularly on IRC, but increasingly more in e-mail and even speech, I like being free to draw words from English, either because there isn’t or I can’t think of a Spanish word or expression to mean the same, or (many times) just because I find the result aesthetically more pleasing (!). Some people, of course, find this practice horrendous and something to be ashamed of, but alas, so do some others about other practices in my life, so, there.

Last night with friends, I used the form refraineado, which would be the Spanish participle for the English verb refrain. One of these friends, who did not know the English verb at all, said: “ITYM refrenado?” As it happens, both verbs obviously (?) share the same roots, and they mean the same. This one time, though, I didn’t know the (relatively rare?) Spanish one, so that makes up for a bit of an excuse, but reality is that I cannot promise I will use refrenado and not refraineado the next time I need to use it.

Oh well.

Posted Sat, 12 Jan 2008 10:20:11 +0000

When piping something to procmail, which comes from, say, crm114, be sure it has a From_ line, or it will not be correctly appended to mailboxes (procmail won’t add the From_ line itself).

One way of adding this line is invoking procmail via formail, as in formail -ds procmail.

Posted Thu, 10 Jan 2008 17:48:36 +0000

After some romantic films these past days to match my mood, and to celebrate I got back on track today, I watched Glengarry Glen Ross this evening. I was expecting a lot, and a lot I got, albeit not equally divided across the duration of the film.

In the first part, it outstands the brief but intense appearence of Alec Baldwin (youtube link). It is funny because I normally peek at movies several times days before watching them, and normally at intervals of 10 minutes, which is what mplayer gives you for PgUp and PgDown. And at minute 10, I always got the memorable “You can’t close the leads you’re given, you can’t close shit, you are shit! Hit the bricks, pal, and beat it, ‘cause you are going out.” quote by Alec. (Minute 2:16 in the above Youtube link, or here.)

After that it’s was just okayish for me, until minute 48 arrived, and then I could not take my eyes off the screen, not even once to check irc (and, well, that’s just unusual on me), until minute 89 (out of a 96 minute movie). For those who’ve seen it, that’d be the whole while in which the policeman is in the office.

Anyway, give it a go if you’d like, and be sure to check this trailer after you have.

On other news, and all the romantic stuff above which I really enjoyed notwithstanding, I loved El día de la bestia. Pure awesome, but watch at your own risk!

Posted Tue, 08 Jan 2008 22:31:00 +0000 Tags:

Until today, my workflow for handling debian/changelog was:

  % dch -i -D UNRELEASED
    (or dch -v X -D UNRELEASED)
  % dch -t
  ...
  % dch -t
  % dch -r

The first call opens a new changelog entry with distribution set to UNRELEASED, then each dch -t call adds successive changelog lines (the -t makes dch leave the trailer line untouched, which I find very useful, since it reduces noise in diffs, particulary in multi-maintainer packages), and finally dch -r changes the distribution from UNRELEASED to unstable, and updates the trailer line.

While preparing this blog entry, which was about dch -t only, recommending it for everybody, I found that the above workflow is nicely automated for you if you use --release-heuristic changelog, or set DEBCHANGE_RELEASE_HEURISTIC=changelog in ~/.devscripts. Automated as in, just running dch will open a new entry if appropriate (that is, if the latest entry is not UNRELEASED), or will add new lines defaulting to -t. So the workflow now is:

  % dch
    (or dch -v X)
  % dch
  ...
  % dch
  % dch -r

Kudos to Guillem and Joey for #435980 and #448795, and the devscripts maintainers, of course.

Posted Fri, 28 Dec 2007 11:46:04 +0000

This year, instead of preparing the traditional soup for dinner I’ve been preparing every Christmas Eve for circa 10 years, we spent the night at the hospital instead.

My father had surgery in his bowel on the 18th, and stayed at the hospital until today. Mom and Teresa would spend the day with him there, and I would be there during the nights.

The surgery, though unexpected, went without complications, and dad has been recovering slowly but steady, and was finally sent home today.

Posted Wed, 26 Dec 2007 15:33:10 +0000 Tags:

I’m glad to have found a new maintainer for Amarok, since I now obviously use Minirok to reproduce music. From the work I’ve seen him do in other packages and in Amarok recently, Modestas is competent and diligent, I’m sure Amarok users will know to appreciate that!

Posted Tue, 25 Dec 2007 20:10:34 +0000

As many others, I’ve moved this blog to ikiwiki. In fact, I’ve moved my whole 3-page website to ikiwiki, and it only felt natural to migrate the blog as well (I may miss hobix’s webpage, though).

Anyway, this gives me a bit more flexibility when creating the RSS feeds, so I’ve now created a separate feed for Planet Debian (which won’t have only Debian-related content, mind you), and left the old RSS URL to include all posts, e.g. some more personal ones, or some that I’d find unsuitable for the planet. If you’re interested, here is the full feed.

I run ikiwiki in my laptop to generate static html, and rsync the generated output to the webserver. I have a Bazaar branch in my laptop as well, but it doesn’t interact with ikiwiki in any way. Finally, I’m very grateful that Joey committed this minutes after me mentioning on IRC, and I’m very grateful as well to whoever wrote the typography plugin.

Migrating the old blog wasn’t hard, just tedious and boring, particularly since I didn’t want to keep using Textile, but migrate to Markdown. I switched off usedirs to keep old URLs working (I’d rather not mess with redirections), and used the date option of the meta plugin, so that the “Posted” information for old entries when inlining would be accurate. This still left the “Last modified” timestamp in the individual pages wrong, so I just used a script that would change the mtime of the entries in the filesystem to their creation time.

One wart I’ve found is that I’m very used to having both a filename and a title for each entry, and have the filename just present in the navigation bar of the browser, and the title shown in big inside the page. You can do this in ikiwiki by using the title option of the meta plugin, and giving a H1 element in the entry content. However, this makes the H1 show in the RSS feed, which I had always noticed in Zack’s blog, and always found inconvenient. Oh well. It also makes for the same title to appear twice in the default [[inline]] page; to solve it, I just hide with CSS the H1 there — zack, e.g., does not use [[meta title]], and aligns the permalink to the right.

Update: So I was washing the dishes and it struck me: maybe with a conditional! And, effectively, it is possible, given that there is a convenient included test. So now I start my entries with:

  [[meta title="This is the long title"]]
  \[[if test="!included()"
       then="# This is the long title"]]

Yay!

Update (2007-12-27): Lars does it differently, by only providing \[[meta title]], and modifying the page template to include:

  <h1><TMPL_VAR TITLE></h1>

Update (2007-12-29): I finally decided, at least for now, that is cleaner not having the title duplicated in two lines, and went with a template. I didn’t want the <h1>title</h1> bit in all pages, though, and Joey pointed out that I could use a different template for blog entries using the pagetemplate plugin.

Posted Tue, 25 Dec 2007 19:53:11 +0000

So it’s time for movie recommendations again. This one time, beware, a love story, touchingly told: The Notebook.

Posted Sun, 23 Dec 2007 11:35:50 +0000 Tags:

Quite often I’ll feel the urge to listen to a particular song, and you could say it’s one of my pleasures of life the ability to do so. Having a big music collection helps, but for when it doesn’t, I’m glad Nacho introduced me to goear.com.

Posted Thu, 13 Dec 2007 22:41:31 +0000

After more than one year using unison to synchronize most of $HOME between my laptop and desktop, I discovered yesterday that unison can propagate file modification time, which does not by default. Just pass -times (or set times = true in the configuration file).

The first sync with -times results in a huge conflicts with “revprops” being changed in both sides. I resolved all of them in favour of the less recent file (there’s a menu option for that in unison-gtk). But boy did it take long to sync all files.

Posted Tue, 11 Dec 2007 16:36:07 +0000

Looking purely by chance at the front package of Freshmeat the other day, I discovered mlocate, a new implementation of locate whose main feature is that it reuses the existing updatedb database when creating a new one, which makes updatedb faster and less intensive on the hard drive. (I suppose it stores an mtime of each directory, and only re-reads directory contents if the filesystem is newer.)

As with slocate, mlocate’s updatedb is meant to be run as root, and the created database is mode 0640 root:mlocate, with the locate binary being setgid mlocate then.

After some discussion in debian-devel, it was decided that mlocate was suitable for Priority: standard, once findutils’ locate was split out to a separate pakcage. So, give it a go.

Posted Sat, 08 Dec 2007 13:16:13 +0000

Among the benefits that distributed version control systems have brought us, I would like to mention a very small one, that may often go unnoticed, but that I think it’s actually pretty cool: attribution. With DVCS, it’s now normal to have each change attributed at VCS level to the person which made the change.

For this, normally the author has to publish a branch, or maybe send an “enriched patch” or bundle that contains meta-data, or revision information. If they send a plain diff, though, the VCS may still offer a way to credit them, by putting their name in the “author” field. For both Git and Bazaar, this is done with the --author option for commit.

Posted Sat, 01 Dec 2007 09:51:14 +0000

I’m in Merida for the QA meeting, and the Spanish speaking people here (Ana and me), plus Holger, were asked by the organization to give a talk in the University.

During Q&A after the talk, one teacher mentioned that, after having received several talks about Debian by various people, she was a bit disappointed that they all resulted so DD-centric, as if all that could matter was becoming an official Developer.

I promised her that in future talks I would make very explicit that even the smallest contributions are welcome in Debian, be them bug reports of a tiny patch, and that I would blog encouraging other speakers to do the same, if they’re not doing it already.

Posted Thu, 29 Nov 2007 19:40:06 +0000

So, uhm, somebody around here must have felt inspired by the French, because this very morning I noticed in the bus a note announcing a strike starting tomorrow. It will last a week.

The disagreement seems to come from a difference in salaries between the workers of the company that connects Alicante with nearby towns, La Alcoyana, and the company that runs buses within the city, Masatusa. Accoring to this article (in Spanish), in La Alcoyana they earn up to a 40% less. This seems to happen because Alicante’s Town Council is responsible for transports within town, but it’s the Regional Government that regulates how La Alcoyana should operate.

They say they will keep a 60% of the buses, which sounds like a lot to me (how much is it in France, Christian?). We’ll see how it goes.

Posted Thu, 15 Nov 2007 20:06:51 +0000

Back when I had a computer 24/7 at home, I would irc from there, using irssi inside screen. Using the laptop at home worked fine, since there was no noticeable lag when typing, and I wasn’t away from home that often, so lag in such occasions was acceptable.

Later on, I changed flats and the 24/7 computer could no longer run 24/7, so I moved irssi to a remote computer. Used as I was to no lag at all, this turned out too painful. I ended up with one remote irssi to read backlog, and one local irssi from the laptop, joining and parting as I turned it on and off, or changed networks. This was, er, suboptimal.

Finally, Holger recommended me using an IRC proxy, ctrlproxy in particular. Basically you run it in any 24/7 computer, and then your irc client (not necessarily irssi, mind you) connects to it, instead of directly to the irc server. On connect, ctrlproxy sends you backlog since the last time you quit (but this can be disabled), and after that is transparent.

For me, there’s no looking back, since I hate lag when typing, and I didn’t want to be joining and parting all the time. If you don’t mind lag, or always connect from networks with very low latency, well, consider yourself lucky.

Posted Wed, 14 Nov 2007 12:33:16 +0000

There doesn’t seem to exist record of the day Piero della Francesca was born. If Wikipedia admitted unscientific evidence, though, I’d submit my playlist for today:

Posted Thu, 08 Nov 2007 19:58:02 +0000

I’d like to make somewhat more visible what some of you already know, that I have bipolar disorder. I was diagnosed a bit more than a year ago.

I’m doing this mainly because I think visibility matters. First and most important, because in my experience it can be helpful and comforting to hear about other people whose names you recognize that can relate to your situation. And second, in case it helps a tiny bit in detabooizing mental ilnesses and their drugs. (But fortunately geek circles seem to need less of that than other, more prejudiced environments.)

On a more personal note, I can’t but be grateful after six months of straight euthymia, during which I’ve regained control of my life, written code, attended events, and retaken long term projects. I also feel, after many years, less fearful of the future.

And finally, let me add I can’t imagine having made through it without one particular friend, who doesn’t even read this blog. Should everybody be so lucky.

Posted Tue, 23 Oct 2007 16:34:42 +0100

I’m reading Lo raro es vivir by Carmen Martín Gaite, borrowed from the Library of my University. Somebody decided to amend this copy of the book with sundry fixes to the author’s grammar and spelling. Except that, of course, none are needed, and whoever made these changes can’t actually read (confusing unusual but valid constructs with not valid grammar), and doesn’t seem to have a clue of what an alternate spelling is, either. Joy.

But maybe this post is only an excuse to recommend The Orphanage, this year’s Spain’s submission to the Best Foreign Language Film Category (which I really enjoyed!), and to point to Urban Dictionary re today’s xkcd.

Posted Wed, 17 Oct 2007 20:26:10 +0100 Tags:

Posted Thu, 11 Oct 2007 22:08:26 +0100

Thanks, Adrian, for recommending Dark City, I really enjoyed it.

Of the films I’ve watched lately, I enjoyed Bound the most.

Posted Sat, 06 Oct 2007 17:29:08 +0100 Tags:

I’m looking (or I’m desperate) for an RSS reader which differentiates between new and unread articles, and can show a count that only includes new articles for each feed. My current reader, Akregator, sort of fulfills the first requirement, but not the second.

If you know of one, please let me know. I’m willing to give it a try even if it’s written for another desktop environment than my own, or in a language that I don’t like.

If I can’t find one, I will try to go back to rss2email and Mutt. But I really, really, really dislike the management of feeds with rss2email. I would love to have it read a simple text file where feeds are listed in groups, each group has a keyword to add as an email header, and I’m free to add/delete/move feeds in the text file with changes being effective in the next r2e run. Any suggestions on this side?

Posted Mon, 24 Sep 2007 19:22:28 +0100

After three years effectively away from classes due to health issues sometimes, and the need for a full time job some others, I’ve returned to University today. I’m not particularly motivated, but not particularly demotivated either. My attitude is, mostly, “okay, let’s get this done already”.

Posted Mon, 24 Sep 2007 15:50:22 +0100

In Spain, the voice of Lieutenant Colonel Anton Grubitz, the bad guy in The Lives of Others, is the voice of Ross Geller, from Friends. That is so rude.

Posted Fri, 14 Sep 2007 10:06:59 +0100 Tags:

I’m looking for a website that can recommend appropriate movies for me to watch, both in the “you will most probably like this one based on your current taste” sense, and in the “it may be interesting for you to explore and give this one a try” one.

I have a pretty strong opinion on how it should work: I feed it a long list (as complete as possible) of movies I’ve watched over the years, with timestamps if available, and the system gives me in return a subset of them for me to rate. That is, the system performs an analysis on the input, and determines what additional information it needs in order to form a picture of myself as a movie watcher. And by “rating” I don’t mean just assigning a single numeric score, but expressing opinion on various relevant aspects: how much did you enjoy it? How badly do you want to see similar films? Did you feel uneasy with the level of violence / nudity / other, or rather on the contrary? To name a few.

I’m very disappointed that all movie recommendations sites I can find require for me to choose which movies to rate, and just give me a numeric scale to do so. Not only I’m finding it a daunting task deciding what to rate, but I also have the feeling it’ll result in a biased profile, and that a single numeric scale can’t be enough to reflect all the aspects in a person’s movie personality.

So far, the most promising site I’ve found is MovieLens, which is developed by a research group at the University of Minnesota. From what I’ve seen it works, but I’m unconvinced that having me decide what to rate will give the best results.

So, can somebody comment about the sanity of the model proposed here, and (ideally!) tell me it’s implemented somewhere?

Posted Mon, 10 Sep 2007 21:26:12 +0100 Tags:

I have written a new music player to fulfill my needs, and I’ve dubbed it Minirok. It is written in Python, uses KDE libraries, and GStreamer as a backend. It is also heavily modelled after Amarok, with the look and feel being pretty much identical, but with a reduced set of features.

The main deal is that there is no collection built from tags: only a tree view of the filesystem, which I sorely missed in Amarok. Because of this, most probably only folk whose collection is already structured as a tree at the filesystem level will find it enjoyable.

Version 0.6 was released yesterday, and is already in Debian. Check out the screenshots, and feel free to provide feedback.

P.S.: I am aware that minirok means miniskirt in Dutch.

Posted Wed, 05 Sep 2007 09:11:00 +0100
    export GREP_COLORS="fn=:ln=:bn=:se="

Take care,

Posted Fri, 31 Aug 2007 17:45:44 +0100

I really believe we should not require repacking the original tarball to strip non-free but distributeable stuff, as long as that non-free stuff is not installed in the resulting binary packages, nor used in any parts of the building process.

Posted Tue, 31 Jul 2007 22:02:36 +0100

Sometimes one has to debug why a package is uninstallable, or some other apt problem, in other architectures than their own. This can be done by running apt with that other architecture in its configuration. I use this function to help me:

  fakeapt() {
      root='/var/tmp/fakeapt'
      dist="$1"
      shift
      arch="$1"
      shift
      apt-get \
          -o APT::Get::List-Cleanup="false" \
          -o Dir::Cache=$root \
          -o Dir::State=$root \
          -o Dir::State::status=$root/status.empty \
          -o Dir::Etc::SourceList=$root/sources.list.$dist \
          -o APT::Architecture=$arch \
          "$@"
  }

And then one can run it like this (it’s a bit long, but that’s how one goes to find out why a package is uninstallable, recursively adding each broken package in the run):

  % fakeapt sid hppa update
  % fakeapt sid hppa install -s kdebase
    The following packages have unmet dependencies:
      kdebase: Depends: kdebase-kio-plugins (>= 4:3.5.7-2) but it is not going to be installed
  % fakeapt sid hppa install -s kdebase-kio-plugins
    The following packages have unmet dependencies:
      kdebase-kio-plugins: Depends: libopenexr2c2a (>= 1.2.2) but it is not going to be installed
  % fakeapt sid hppa install -s kdebase-kio-plugins libopenexr2c2a
    The following packages have unmet dependencies:
      kdebase-kio-plugins: Depends: kdelibs4c2a (>= 4:3.5.7-1) but it is not going to be installed
  % fakeapt sid hppa install -s kdebase-kio-plugins libopenexr2c2a kdelibs4c2a
    The following packages have unmet dependencies:
      kdelibs4c2a: Depends: libopenexr2ldbl (>= 1.2.2) but it is not going to be installed
  % fakeapt sid hppa install -s kdebase-kio-plugins libopenexr2c2a kdelibs4c2a libopenexr2ldbl
    The following packages have unmet dependencies:
      libopenexr2ldbl: Conflicts: libopenexr2c2a but 1.2.2-4.3 is to be installed

A bit of initialization is needed:

  % mkdir -p /var/tmp/fakeapt/{archives,lists}/partial
  % touch /var/tmp/fakeapt/status.empty
  % for d in testing sid; do
      echo deb http://ftp.XX.debian.org/debian $d main >/var/tmp/fakeapt/sources.list.$d
  done
Posted Sat, 28 Jul 2007 12:13:18 +0100

One and not uncommon way of granting privileges or positions to somebody else is waiting until it’s obvious it’s time to. As in, for example: “Oh, you don’t have commit access already? Here, let’s fix that.” Or: “Oh, you’re not a release assistant already? Here, have fun.” It’s not useful, however, when there aren’t any people spontaneously jumping into doing some of the required work.

Anyway, the point of this post was to say that I can imagine myself applying this method in some non-free-software areas of my life as well: “Oh, we’re not married already? Here, let’s fix that... tomorrow.”

Posted Tue, 24 Jul 2007 14:35:30 +0100

If you use quilt to manage your patches, particularly in Debian packages, you may be interested in reading this. If you just want to try it, here’s my ~/.quiltrc:

  QUILT_PATCH_OPTS="--unified-reject-files"
  QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
  QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"

  QUILT_PATCHES="debian/patches"
  QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"

Of these, I would recommend everybody to use --no-timestamps, both in diff, but more importantly in refresh. It omits timestamps in the resulting diff, which helps when doing debdiff and else. And -p ab which makes diff headers read --- a/foo and +++ b/foo instead of using the directory name, which for debian packages always changes since it contains the version. I find the other one, --no-index, also useful, but that’s probably a matter of taste; it omits the SVN-like “Index” header.

--color=auto should probably also be there; it’s just like in ls, it colors diff output if stdout is a terminal. If you don’t like the default quilt colors, you may want to try the QUILT_COLORS option above. Or just adjust it to your needs; figuring out the name of each color item took a bit of digging, so you may find it useful even if you don’t like my colors.

Finally, I’ve found that setting QUILT_PATCHES to debian/patches is useful to have quilt work even on a clean tree where there is no patches symlink in the toplevel directory. --unified-reject-files produces reject files in unified format, which I find more readable.

I hope somebody finds some of this useful. :-)

Update (2007-09-06): Add bit about -p ab.

Posted Wed, 18 Jul 2007 11:30:46 +0100

During DebConf7 in Edinburgh, a dak BOF was held. Several topics were covered, one of them being staging areas. It was an interesting discussion, during which I had a recurring thought: that staging areas should be between testing and unstable, and not behind unstable (like experimental is), like everybody suggested. By the time I decided to share this aloud, though, the discussion was already over.

Posted Mon, 02 Jul 2007 19:43:27 +0100

During the landing of my flight back to Alicante, I had my powered off laptop lying on my legs. A stewardess approached me and asked me to place it on the bag in the seat in front of me.

I looked at her, and said: “Does not fit.”

Posted Mon, 25 Jun 2007 01:58:32 +0100

So Debconf7 has come to an end, and I’m pretty sure this has been my best Debconf so far. Although I did not manage to attend many talks and discussions, and did not socialize as much as I would’ve wanted with the people I did not already know (does Mao count as socializing?), I’ve on the other hand felt good throughout all its duration, which is great.

On the productivity side, I think I’ve done okay. Strangely enough it’s not been Debian the main target of my hack hours, God only knows why. Instead, I made a couple of contributions to Bazaar, one of the new generation distributed version control systems. But I’m sure my Debian work will gain momentum in the near future, so no worries.

Finally, I must say I’m in debt with a bunch of people who thought it was worth having me attend, and brought me here when it seemed it was too late. I’m very grateful for that, really.

As always, thanks to the orga team for their terrific work, and hope to make it to Argentina next year.

Update 1: Forgot to say, I went to the Genderfuck party in The Forest. It was pretty cool, and a first.

Update 2: Brittish Airways lost my luggage (and I seem not to be alone in this).

P.S.: I think I’ve got the Debconf flu. \o/

Posted Mon, 25 Jun 2007 01:49:22 +0100

One feature I’ve always found terribly useful for team maintained packages are commit emails. They help you know what’s going on without need for extra communication (eg. that somebody started packaging a new releases), and they are useful when there are new maintainers, because their work can be easily reviewed. Centralized version control systems like CVS or Subversion make possible and easy to have such messages sent automatically upon commit, so all fits nicely.

Enter distributed version control systems; particularly those like Bazaar that can push over dumb protocols like SFTP: it is not possible to have the server do something (send an email) when new revisions are commited. One has to resort to solutions like bzr-email, where each individual commiter configures a plugin to send out the email from their machines when they commit. The result IME is that, either nobody does that, or not everybody does. Either way, no cookie.

So I decided to bite the bullet here at DebConf, and write a tool to solve this problem: a program that monitors the branches in the machine where they are hosted, and sends emails for new revisions. The result is here. If you’d like to use it for an Alioth project, you just need to do:

  alioth% /var/lib/gforge/chroot/home/users/adeodato/bzr-hookless-email/alioth_helper.sh $PROJECT_NAME -d

(And ensure that the process does not die, or gets restarted when it does. I guess I could add code for that in the helper script, hm.)

Posted Thu, 21 Jun 2007 21:19:58 +0100
  % python2.5 -c 'from __future__ import braces'
    File "<string>", line 1
  SyntaxError: not a chance
Posted Tue, 05 Jun 2007 12:59:02 +0100

I’ve been always dissatisfied with the sort_browser=date option in Mutt, particularly when dealing with maildirs. For me, the reasonable behavior is to sort by the newest entry under the new/ directory, so that reverse sorting places the maildirs with most recent mails first.

There is a patch by Dale Woolridge to address this issue, but since it only looks at the mtime of the new/ directory, once new mail has been read in a maildir, it still stays on the top of the list.

So for me, the solution was to write an external program that would sort the list of maildirs by the date of the most recent new file, and have mutt read that list. Maybe you find it useful as well.

Posted Wed, 16 May 2007 20:55:49 +0100

The original vi (or, at least, nvi) had multi-level undo. Only, you don’t access it with the intuitive uuu, but with u...

Posted Thu, 19 Apr 2007 21:10:29 +0100

And then, I shall not be less verbose, but danes, dalton, montxo, and pablo.

LT: Najwa, My own shout

Posted Thu, 31 Aug 2006 08:29:53 +0100

So appart from being happy just by being awake, these three last days have also brought a lot of surprises. I’ll mention a couple.

First, my mind is with a mental activity level quite high, not unknown to me, but never experienced with this intensity and duration combined. I now need tools to accommodate to this. My gut feeling is that ikiwiki and maybe vim-outliner are going to suite me perfect. If that’s finnally the case, Joey Hess gets my gratitude for both (author, referrer).

Secondly, I’m running an experiment with my sleep patterns that I was planning on not talking here about until at least a week from starting. But the details have changed a bit, and IRC just gave me the chance to reduce my two planned paragraphs description with a two-line one, so I’ll take it:

    [dato] it's 22pm, I'm about to have dinner, and the fact that the sun is rising
           doesn't bother me at all
  
Posted Wed, 30 Aug 2006 06:14:13 +0100

I’ve enjoyed tears of joy many times in my life, always triggered by the happyness of my loved ones. Today, they were for me, my tears.

I have noone to thank for these past three days, but life itself. I don’t know how long this will last, either, but I am not scared.

NR: Miguel Delibes, Pegar la hebra. (As Joaquín Sabina would put it, “this is what I wear a hat for.”)

Posted Wed, 30 Aug 2006 03:25:22 +0100
    [LarstiQ] gar, why does firefox assume ftp when the host starts with ftp
    * dato hugs konq.
    [LarstiQ] dato: is it possible in konqueror to bind 'ttp://' to 'http://'?
    [dato] LarstiQ, yes
    [dato] Complete Abuse Of The Software (TM), but works
    [dato] LarstiQ: know about web shortcuts? map shortcut 'ttp' to 'http://\{@}'
  
_NP_: Mala Rodríguez, _Tengo un trato_
Posted Fri, 04 Aug 2006 23:13:26 +0100

Steve McIntyre talks about this puzzle, but I think he wants this one instead.

NP: Madeleine Peyroux, You’re gonna make me lonesome when you go

Posted Fri, 14 Jul 2006 00:40:10 +0100

I’ve recently had to use Tailor to migrate a couple Subversion repositories to Bazaar-NG. I tend to be quite (too?) perfectionist with this kind of stuff, so I jus