liw's blog

Photo by Soile Mottisenkangas

Welcome to my web log. See the first post for an introduction. See the archive page for all posts, and comments for a feed of comments only. See also identi.ca.

Undo for mail sending in Evolution

I've just heard that Gmail has undo for sending e-mail. The way it works is that it delays sending the e-mail by, say, a minute, and during that time you can cancel the sending.

This would totally rock in Evolution. You see, Evolution has two key combinations that are unfortunate in their proximity: control-backspace deletes a word, and control-enter sends the e-mail.

Anyone who has written e-mail while angry knows the feeling of deleting words furiously. Consider what will happen if you're deleting an angry, half-written flame with control-backspace, and press control-enter instead...

Undoing sending an e-mail would allow you to recover from that.

Edit: https://bugzilla.gnome.org/show_bug.cgi?id=628007

Debian CUT

Joey Hess had a BOF about Constantly Usable Testing at Debconf10 last week. I like the idea a lot, and here's why: I run Debian's testing distribution on my laptop. I like it to be reasonably up to date with current upstream versions (if only because the lenny versions often don't work with the hardware), but I don't want to take the risk of breakage I get from running Debian unstable.

In fact, I don't want to the take the risk of breakage I get with running Debian testing, either. CUT seems to me to be an opportunity to get the benefits of running testing without most of its risks.

Now, the breakage I'm concerned with isn't the kind of breakage that makes the machine as a whole unusable. I am more worried about the kinds of small changes that will inevitably happen that I can work around, but that require more time and effort I like to spend.

For example, it might be that when upgrading this morning, something changes in Firefox, which requires me to restart that. Or there's a new kernel that requires a reboot. Or the update breaks Evolution, and I'll need to wait for a fix from unstable for a week, or have to backport it myself, perhaps by installing the relevant half-dozen packages directly from unstable.

None of that is a disaster, but it's all a hassle, and it's all a distraction from what I really want to do.

Having resonably frequent pseudo-releases, cuts, based on testing, would mean I only need to worry about things breaking when I upgrade to the next cut release. Meanwhile, I will have months of stress-free Debian use.

I could almost achieve that by only uprading my laptop every few months to whatever happens to be current in testing at that time. However, there's no security support in that case. The big, central, blinking improvement with cut releases (if I understand them correctly) is that I would have security updates if I stay within the cut release. The security update would possibly just require installing the relevant packages and their updated dependencies, but that's good enough.

And that's why I like cut, at least as an idea.

Debconf10

Some of my personal highlights from Debconf10:

  • Branchable. It happened during and at Debconf10, even if it is not directly related to Debian. All free software, though, all the way, and Franklin Street Statement -free as well.
  • Freedom Box.
  • Meeting old friends, and some new people as well. Putting faces and names together.
  • My own talk, of course.
  • Helicopter ride.

Oh yeah, and I decided to re-join Debian, and get a kilt.

Should I re-join Debian?

I've spent the past couple of weeks at Debconf10. As usual, Debconf has a huge motivational effect on me, and I am excited about doing all sorts of things for the project.

I'm still not all that interested in doing distribution development, which is why I retired last year. However, there's the Freedom Box project starting, which is distribution development, and I'm quite excited about it, but on the whole, I don't want to fix other people's bugs, I want to make my own.

Should I re-join Debian? If I do, what would I do?

I could develop tools for Debian to use. That doesn't technically require being a DD, but if I'm doing work for the project, I want voting rights.

I could perhaps do some work on piuparts. Or write various small tools that other people would find useful, and would make their own development go smoother.

(Ideally, I would find people willing to pay me to do that, but I have no idea how to find such people.)

And lest I forget, Debian is my tribe.

Branchable

Joey Hess wrote Ikiwiki, a wiki engine that I really like: it generates static HTML pages whenever possible, and uses a real version control system for keeping track of changes. I have used Ikiwiki for some years now, for my web sites and blogs. It is an extremely versatile tool.

Ikiwiki is not hard to use, but like any service, it requires a bit of attention and effort and skill to set up and keep running.

Joey and I have set up a hosting service for Ikiwiki. We call it Branchable. Branchable makes having an Ikiwiki site easy.

We take freedom seriously. Branchable gives you access to the version control system (git by default) underlying your wiki. You can easily switch to another provider, and you can branch any other wiki on Branchable that allows it. We will not take away your freedom to make more money.

We are now opening it up for a beta period. During the beta, we will offer free accounts to free software projects: any project that signs up during the beta will have a free account after the beta as well.

See also what Joey writes about this.

Keyboard for hire

I've been happily unemployed for a while now. I went to New Zealand with my significant other, and we've been there for some months. Soon we'll be moving somewhere else. I've hacked a lot on Obnam, my backup application. I've taken some photographs. I've generally enjoyed life.

It's getting time to start thinking about making some money again. To kick that off, I wrote down some ideas on my dream job. They are a fantasy, of course—I don't expect to find anything that gives me everything in the list—but it's good to know what the fantasy is, so I can compare possible jobs against it.

My dream job

My dream job is to develop free software I use myself, either alone, or with co-workers with a good attitude towards work, or as part of a true community project (one where the direction of the project is not decided based on corporate interests).

I want to have some freedom in choosing each project, within the constraints of doing business.

I want to have a significant part in the project, and not be just another cog in the wheel. I need to be able to do large, sweeping changes to any part of the project, or its architecture. This may mean I should be on the project from the beginning, though the project may be part of a large one where I have less influence.

The project should be developed, from the start, using tools, technologies and processes that I like and am conviced work well, for example, using sensible languages, TDD, high test coverage, and DVCS.

At least one of schedule or scope should be flexible. There should be room in the schedule to occasionally stop and step back and look at the bigger picture, or to go out on a walk to think deep thoughts about what is going on.

The work should be challenging, and should teach me new things. It should let me build on existing knowledge and experience.

The job would involve me in just one project at a time. Multitasking between projects is so much less productive than concentrating on one project that it frustrates me to switch frequently.

Projects should be shortish, up to a few months. Larger projects should be broken down into shorter ones.

Work should be done at home, or in a quiet office with private rooms, or rooms for small teams.

There should be no NDAs, all development should be in public, and no copyright assignments should be required.

The employer should not use software patents at all.

Management should concentrate on providing a good working environment, and sufficient resources to do good work, and should not try to micro-manage me or my team.

I should be compensated reasonably well. I should have at least five weeks of vacation per year. If work requires me to be away from home during weekends, or travel on weekends, those days should count as work and be compensated in some way.

I would like my employer to send me to one or two interesting conferences each year, perhaps even to give presentations about my work. One of the conferences should be Debconf, the yearly Debian conference.

I must be able to other things in my free time, at least if they don't directly compete with what the employer has me do at work. This includes being a Debian developer, if I choose to do so.

Ways of earning money

The other thing I've been thinking about is ways of earning money. Here's a brief list:

  • Get a traditional job.
  • Do consulting jobs. I am bad at finding them, though. Some such jobs would be interesting, others not so much. Perhaps the ideal form of this would be to have a few companies hire me to do things like piuparts development, or other tool development for Debian or Ubuntu.
  • Sell free software development in small units. For example, if there were a lot of people interested in Obnam, they could buy an hour's or day's worth of development at a time. This would let me work on things I'm most interested in, as long as they're popular.
  • Set up an online service of some kind to generate revenue. Ads are passé, so it'd probably have to be a subscription based service.

There's more things, but those are at the top of my list right now.

Obnam version 0.13

I just pushed out release 0.13 of Obnam, my backup utility, and 0.13 of the Python btree library it uses.

  • Bug fix: a mistake in 0.12 caused checkpoints to happen after each file after the first checkpoint. Now they happen at the right intervals again.
  • Upload speed is now displayed during backups.
  • Obnam now tells the kernel that it shouldn't cache data it reads or writes. It is not likely that data being backed up is going to be needed again any time soon, so there's no point in caching it. (The posix_fadvise call is used for this.)
  • New --lru-size option sets size of LRU cache for nodes in memory. The obnam default is large enough to suit large backups. This uses more memory, but is faster than btree's small default of 100.

Obnam and btree versions 0.12

I've just published version 0.12 of Obnam, my backup program, and 0.12 of btree, the B-tree implementation it uses. Then I published obnam 0.12.1 on i386, to fix a problem with the Debian packages that did not affect my amd64 build.

From the Obnam NEWS file:

  • NOTE: This version makes incompatible changes to the way data is stored on-disk. Backups made with older versions are NOT supported. Sorry.
  • The run-benchmark script has dropped some smaller sizes (they're too fast to be interesting), and adds a 10 GiB test size.
  • Various speed optimizations. Most importantly, the way file metadata (results of lstat(2)) are encoded has changed. This is the incompatible change from above. It's much faster now, though.
  • Preliminary support for using SFTP for the backup store added. Hasn't been used much yet, so might well be very buggy.

Btree has had a bit of speed optimization too.

KD:n Maanselkä: pienpuolueiden toiminta lopetettava

Kristillisdemokraattisen puolueen viestintäjohtaja, Asmo Maanselkä, haluaa, että pienpuolueet lopettavat toimintansa. Hän esittää tätä mielipidekirjoituksessa Keskisuomalainen-lehdessä:

[m]arginaalin tulisi kunnioittaa enemmistön arvoja ja pitäisi ymmärtää jättää suomalainen valtakulttuuri rauhaan.

Hyvin pieni osa suomalaisista on KD:n jäsen tai äänestää heitä, joten KD on katsottava marginaalipuolueeksi ja sen tulisi, Maanselän mukaan, lopettaa tomintansa.

Sama pätee tietysti kaikkia pienpuolueita, mutta hyvänä ihmisenä Maanselkä haluaa toki ensin puhdistaa oman pesänsä, ennen kuin rupeaa vaatimaan muilta mitään.

Obnam version 0.11, btree version 0.11

I've just uploaded the new version 0.11 of my backup program Obnam version 0.11, and the new version 0.11 of my B-tree implementation as well, which Obnam requires. See http://braawi.org/obnam/ and http://liw.fi/btree/ for more info on the two.

My personal apt archive has amd64 packages; I am working on getting i386 packages out as well.