Recent changes to this wiki:

Comment moderation
diff --git a/posts/backups-2/comment_1_78adc6b14de834113ba2b7563fada9d8._comment b/posts/backups-2/comment_1_78adc6b14de834113ba2b7563fada9d8._comment
new file mode 100644
index 0000000..377c494
--- /dev/null
+++ b/posts/backups-2/comment_1_78adc6b14de834113ba2b7563fada9d8._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmj1eBcQqIuDxuAq51wB0ZxlqmtYTNiQKg"
+ nickname="Gabriel"
+ subject="about git "losing hostory""
+ date="2013-06-17T23:12:43Z"
+ content="""
+Sorry for being a bit pedantic here, but a git reset (to move your branch head to an older comit) doesn't lose history, it just changes what is the official history, the old history is still there, just a little harder to find, git reflog will help you if you just accidentally did such a thing (by showing the history of references you have been), if you want to change that a long time after, it will be harder to recover, but i believe possible, if garbage collector didn't run in the mean time that is (this one *will* lose history, history you probably don't care about).
+
+Great post anyway, debunking misconceptions about backup is great, just as debunking misconceptions about git is :P.
+"""]]

Remove tag draft
diff --git a/posts/backups-2.mdwn b/posts/backups-2.mdwn
index 5bbba31..7717b65 100644
--- a/posts/backups-2.mdwn
+++ b/posts/backups-2.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="If it quacks like a duck: what is a backup?"]]
-[[!tag backups draft]]
+[[!tag backups]]
 
 The purpose of a backup is to allow you to recover from a disaster with
 reasonable cost and effort. If you delete a file you shouldn't have,

Add draft post about backups
diff --git a/posts/backups-2.mdwn b/posts/backups-2.mdwn
new file mode 100644
index 0000000..5bbba31
--- /dev/null
+++ b/posts/backups-2.mdwn
@@ -0,0 +1,80 @@
+[[!meta title="If it quacks like a duck: what is a backup?"]]
+[[!tag backups draft]]
+
+The purpose of a backup is to allow you to recover from a disaster with
+reasonable cost and effort. If you delete a file you shouldn't have,
+or make changes that you shouldn't have, backups are meant to save you
+from having to re-create the file, or undo a large amount of steps.
+
+Speaking very broadly, any copy of your live data is a backup, but this
+is a uselessly broad definition.  For example, if you use an automatic
+synchronisation system such as Dropbox or git-annex, to keep your live
+data in sync between two computers, you could pretend they're backups
+of each other. However, unless the synchronisation also allows you to
+keep a history of file versions, it's not a very good backup. If you
+delete your precious file on one computer, and it gets then deleted on
+the other computer as well, automatically, perhaps in seconds, then the
+backup is not of much use.
+
+Another common assumption is that a RAID array works as a backup. RAID
+is an excellent technology that allows you to combine several hard disks
+so that they protect you against loss of data in case of disk failure.
+If one disk fails, the others have enough data to re-create the data on
+the failed disk, using either full copies (RAID-1) or error correction
+codes (RAID-5, RAID-6). This is not a backup. It doesn't protect you
+against accidental file deletions. There is also no backup history.
+
+A version control system is very much like a backup. It stores copies
+of many of the versions of your project.  However, in most version
+control systems it's fairly easy to make changes that lose history. Ask
+anyone who has used `git reset` to change the tip of the master branch
+to undo a wrong commit or merge, and then accidentally force-pushed
+that to the server. This is arguably a normal, if uncommon use of the
+version control system.  A good backup system will protect you from you
+own mistakes, when you do the kinds of things you're expected to do.
+Version control systems also rarely capture all your data.
+
+When you were five, and made some stuff on the family computer, and
+saved it on a floppy, and then drew a cute little picture of yourself
+on the floppy to make it clear to everyone it was your floppy, and
+not anyone else's, certainly not your bully of your brother's, and
+your mother kept the floppy for decades because of the cute picture,
+then that is also not a backup.  You didn't even know your Mom had
+kept it.
+
+A reasonable backup is one from which you can restore a working copy
+of your data, when you need to, without too much effort or expense,
+compared to the disaster you're experiencing. If the disaster is that you
+deleted a one-page draft outline of the book you want to write someday,
+the disaster is not very severe. The cost of restoring should be low.
+
+If the disaster is that your plans to become the supreme emperor of the
+world, and make all people your slaves, are in a spreadsheet on your
+laptop, and your minions accidentally drove a car over your laptop, and
+you had accidentally not used a Thinkpad as your laptop, the disaster is
+quite severe. Unless you recover the spreadsheet, you'll never be able
+to tell apart the buttons to launch the Moon rocket, to self-destruct
+your HQ, and to switch channels on your TV, and all your work will be in
+vain, and you'll never, ever, ever convince the pretty girl with red hair
+living in the house opposite that she should be interested in you. Also,
+you'll never be able to move away from your parent's house. So, quite
+severe. It will be acceptable to go to quite some effort and expense to
+recover that spreadsheet. It's better if you don't need to, but you will,
+if you have to.
+
+Your backup should also be reasonably up to date. Backing up every
+Christmas is a fine family tradition, but if you don't make a backup also
+on Easter, Midsummer, and Aunt Agatha's birthday sometime in September was
+it, or maybe October, you'll risk losing a whole year's worth of work. A
+year is a long time, and you might never be able to re-do all the work.
+
+Personally, I backup my personal laptop every day to a file server at
+home, and less often to an online backup server. My work laptop gets
+backed up once an hour to the company file server, which gets backed up
+to two backup servers about once a day.
+
+You need to balance the risk of losing data and work, and the expense
+and effort to back up your data. How much is a day's work worth to you,
+or your employer? How much does a backup system cost?
+
+In the next episode, I'll ponder on how many backups are enough.

Remove dead blogs from sidebar
diff --git a/sidebar.mdwn b/sidebar.mdwn
index c531b6f..aeed037 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -20,15 +20,10 @@ Lars Wirzenius
 **Blogs I read**
 
 * [Burger Games Notebook](http://www.burgergames.com/notes/)
-* [Cessu](http://cessu.blogspot.com/)
 * [Coding Horror](http://www.codinghorror.com/blog/)
-* [Dive into Mark](http://diveintomark.org/)
 * [Jyrki Kasvi](http://kasvi.org/)
-* [Lynoure](http://www.lynoure.org/blog/)
 * [The Online Photographer](http://theonlinephotographer.com/)
-* [Presentation Zen](http://www.presentationzen.com/)
 * [The Simple Dollar](http://www.thesimpledollar.com/)
-* [Taijamai](http://taijamai.blogspot.com/)
 * [Unclutterer](http://unclutterer.com/)
 
 <hr />

Comment moderation
diff --git a/posts/backups-1/comment_1_51d2dc23d11646a920367511dddc4e9f._comment b/posts/backups-1/comment_1_51d2dc23d11646a920367511dddc4e9f._comment
new file mode 100644
index 0000000..67f1549
--- /dev/null
+++ b/posts/backups-1/comment_1_51d2dc23d11646a920367511dddc4e9f._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlWo3yhXRnNQhsgO0s2NKtMEPlgrXglHxQ"
+ nickname="Peter"
+ subject="Thank you for this post"
+ date="2013-06-15T12:55:24Z"
+ content="""
+Hi Lars
+
+Thank you for writing this. Ironically my friend brought this up over drinks and got me wondering, while I do store most of my precious files on external hard drives. I don't have a backup for most of these. I have one terabyte for my own personal files but there is no gurantee if it will be safe. I almost need another disk to back up that one in order to breath easy. 
+"""]]

Un-draft
diff --git a/posts/backups-1.mdwn b/posts/backups-1.mdwn
index ff01b89..5491d55 100644
--- a/posts/backups-1.mdwn
+++ b/posts/backups-1.mdwn
@@ -1,5 +1,5 @@
 [[!meta title='''"Um, I know I should": talking about backups''']]
-[[!tag draft backups]]
+[[!tag backups]]
 
 > ... backups? did someone talk about backups? I'm sure I heard someone
 > mention backups here somewhere. Backups! BACKUPS! BACKUPS ARE AWESOME!

Try fixing title quoting again
diff --git a/posts/backups-1.mdwn b/posts/backups-1.mdwn
index 9dc0e54..ff01b89 100644
--- a/posts/backups-1.mdwn
+++ b/posts/backups-1.mdwn
@@ -1,4 +1,4 @@
-[[!meta title="\"Um, I know I should\": talking about backups"]]
+[[!meta title='''"Um, I know I should": talking about backups''']]
 [[!tag draft backups]]
 
 > ... backups? did someone talk about backups? I'm sure I heard someone

Fix meta title quoting
diff --git a/posts/backups-1.mdwn b/posts/backups-1.mdwn
index cdf718d..9dc0e54 100644
--- a/posts/backups-1.mdwn
+++ b/posts/backups-1.mdwn
@@ -1,4 +1,4 @@
-[[!meta title='"Um, I know I should": talking about backups']]
+[[!meta title="\"Um, I know I should\": talking about backups"]]
 [[!tag draft backups]]
 
 > ... backups? did someone talk about backups? I'm sure I heard someone

Draft post about backup terminology
diff --git a/posts/backups-1.mdwn b/posts/backups-1.mdwn
new file mode 100644
index 0000000..cdf718d
--- /dev/null
+++ b/posts/backups-1.mdwn
@@ -0,0 +1,91 @@
+[[!meta title='"Um, I know I should": talking about backups']]
+[[!tag draft backups]]
+
+> ... backups? did someone talk about backups? I'm sure I heard someone
+> mention backups here somewhere. Backups! BACKUPS! BACKUPS ARE AWESOME!
+
+That's a direct quote from my recent IRC history. I find backups
+quite interesting, particularly from an implementation point of view,
+and I may sometimes obsess about them a little bit. This is why I've
+written my own backup software.
+
+I'm unusual: most people find backups boring at best, and tedious most
+of the time. When I talk with people about backups, the usual reaction
+is "um, I know I should". There are a lot of reasons for this. One
+is that backups are a lot like insurance: you have to spend time,
+effort, money, up front, to have any use for them. Another is that the
+whole topic is scary: you have to think about when things go wrong,
+and that puts people off. A third reason is that while there are
+lots of backup tools and methods, it's not always easy. After all,
+backups are about answering the question, "what can I do to keep my
+data safe, whatever happens in the future?".
+
+I've spent a fair bit of the past several years thinking about backups.
+This is the first in a series of blog posts about backups, where
+I share my thinking about the topic. Perhaps it can be of some use
+to others. At least people will poke holes in my delusions.
+
+In this post, I'll define some terminology. I am not a backup scholar,
+and I may have invented some of these terms myself, and they may be
+different from what real sysadmins use. I'll define the words I use,
+so we can understand each other.
+
+**Live data** is the data you work with or keep. It's the files on
+your hard drive: the documents you write, the photos you save, the
+unfinished novels you wish you'd finish.
+
+A **backup** is a spare copy of your live data. If you lose some
+or all of your live data, you can get it back ("**restore**") from
+your backup.  The backup copy is, by practical necessity, older than
+your live data, but if you made the backup recently enough, you won't
+lose much.
+
+Sometimes it's useful to have more than one old backup copy of your
+live data.  You can have a sequence of backups, made at different
+times, giving you a **backup history**. Each copy of your live data
+in your backup history is a **generation**. This lets you retrieve a
+file you deleted a long time ago, but didn't realise you needed until
+now. If you only keep one backup version, you can't get it back,
+but if you keep, say, a daily backup for a month, you have a month
+to realise you need it, before it's lost forever.
+
+The place your backups are stored is the **backup repository**. You can
+use many kinds of **backup media** for backup storage: hard drives,
+tapes, optical disks (DVD-R, DVD-RW, etc), USB flash drives, online
+storage, etc. Each type of medium has different characteristics:
+size, speed, convenicence, reliability, price, which you'll need to
+balance for a backup solution that's reasonable for you.
+
+You may need multiple backup repositories or media, with one of
+them located **off-site**, away from where your computers normally
+live. Otherwise, if you house burns down, you'll lose all your
+backups too.
+
+You need to **verify** that your backups work. It would be awkward to
+go to the effort and expense of making backups and then not be able
+to restore your data when you need to. You may even want to test
+your **disaster recovery** by pretending that all your computer stuff
+is gone, except for the backup media. Can you still recover? You'll
+want to do this periodically, to make sure your backup system keeps
+working.
+
+Most live data is **precious** in that you'll be upset if you lose it.
+Some live data is not precious: your web browser cache probably isn't,
+for example. This distinction can let you limit the amount of data
+you need to back up, which can significantly reduce your backup costs.
+
+There is a very large variety of **backup tools**. They can be
+very simple and manual: you can copy files to a USB drive using
+your file manager, once a blue moon. They can also be very complex:
+enterprise backup products that cost huge amounts of money and come
+with a multi-day training package for your sysadmin team, and which
+require that team to function properly.
+
+You'll need to define a **backup strategy** to tie everything
+together: what live data to back up, to what medium, using what
+tools, what kind of backup history to keep, and how to verify
+that they work.
+
+That's the groundwork. In the next episode, I'll blather about
+what is a backup, and what isn't.
+

Comment moderation
diff --git a/posts/rm-is-too-slow/comment_12_04408bb71cbd8e36cec50cae64d9b662._comment b/posts/rm-is-too-slow/comment_12_04408bb71cbd8e36cec50cae64d9b662._comment
new file mode 100644
index 0000000..3aca2a6
--- /dev/null
+++ b/posts/rm-is-too-slow/comment_12_04408bb71cbd8e36cec50cae64d9b662._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnGHx2VoyQrP7Oe1oXLeJU0nNWbCMk0IvA"
+ nickname="Michael"
+ subject="A solution..."
+ date="2013-06-01T12:48:46Z"
+ content="""
+Hello.
+
+I know this post is old now, but I wanted to show you an rsync trick for deleting large sets of files quickly:
+
+# mkdir empty
+# rsync -a --delete empty/ target_directory/
+
+Done. This should take hours (or less), rather than days.
+
+I hope this helps.
+
+-MC
+"""]]

Comment moderation
diff --git a/posts/wishlist-bugs/comment_1_cebd221dbf27c2ac3bf210374c3b698d._comment b/posts/wishlist-bugs/comment_1_cebd221dbf27c2ac3bf210374c3b698d._comment
new file mode 100644
index 0000000..007ad7d
--- /dev/null
+++ b/posts/wishlist-bugs/comment_1_cebd221dbf27c2ac3bf210374c3b698d._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnVX_teMpJeQkyheivad_1XSCFSjpiWgx8"
+ nickname="Diggory"
+ subject="comment 1"
+ date="2013-05-28T19:03:59Z"
+ content="""
+Good point. I remember Martin Grässlin blogging about not accepting wishlist items on the bug DB (for kwin, forums.kde.org are more appropriate).
+
+But I was wondering the other day: would a wiki work better? That way suggesters would hopefully also organise and nicely summarise suggestions. (Never tried, just an idea.)
+"""]]

Remove draft tag
diff --git a/posts/wishlist-bugs.mdwn b/posts/wishlist-bugs.mdwn
index fac0db1..aacfb84 100644
--- a/posts/wishlist-bugs.mdwn
+++ b/posts/wishlist-bugs.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="On the usefulness of wishlist bugs"]]
-[[!tag draft programming]]
+[[!tag programming]]
 
 Almost every bug tracker for free software projects has a
 section for **wishlist bugs**. Often this results in ever

Fix typo
diff --git a/posts/wishlist-bugs.mdwn b/posts/wishlist-bugs.mdwn
index 9bac84d..fac0db1 100644
--- a/posts/wishlist-bugs.mdwn
+++ b/posts/wishlist-bugs.mdwn
@@ -18,7 +18,7 @@ slowed-down development. It increases the friction of doing
 things in a project.
 
 I have some quite old wishlists for my own projects. I have
-even more wishlists hidden in my own [GTD system][gtdfs].
+even more wishlists hidden in my own [GTD system][gtdfh].
 I am not happy about either, and I'm going to have to do
 something about that.
 

Add draft blog post on wishlist bugs
diff --git a/posts/wishlist-bugs.mdwn b/posts/wishlist-bugs.mdwn
new file mode 100644
index 0000000..9bac84d
--- /dev/null
+++ b/posts/wishlist-bugs.mdwn
@@ -0,0 +1,35 @@
+[[!meta title="On the usefulness of wishlist bugs"]]
+[[!tag draft programming]]
+
+Almost every bug tracker for free software projects has a
+section for **wishlist bugs**. Often this results in ever
+growing lists of wishes, most of which will never be
+fulfilled.
+
+A long list of bugs, even if it is wishlist bugs, is rarely
+useful. It's hard to keep track of what is there, and so
+the information is not kept up to date when things change.
+Even if a wishlist bug gets implemented, the bug is often
+overlooked, and remains on the list.
+
+Joel Spolsky calls this [a software inventory][swinv].
+Carrying a large inventory has costs, and usually results in
+slowed-down development. It increases the friction of doing
+things in a project.
+
+I have some quite old wishlists for my own projects. I have
+even more wishlists hidden in my own [GTD system][gtdfs].
+I am not happy about either, and I'm going to have to do
+something about that.
+
+Just closing all wishlist bugs immediately would be bad
+manners. Keeping them open indefinitely, just in case someone
+will some day decide to look through the list in order to
+hack on something, is wishful thinking: that rarely happens.
+
+So I'm thinking of a compromise: keep wishlist bugs open for
+a while, perhaps a few months, and if nothing is happening to
+them, close them with an apology.
+
+[swinv]: http://www.joelonsoftware.com/items/2012/07/09.html
+[gtdfh]: http://gtdfh.branchable.com/

Comment moderation
diff --git a/posts/obnam-1.4/comment_2_37b564ed9882c38936604dc3bcc2f30e._comment b/posts/obnam-1.4/comment_2_37b564ed9882c38936604dc3bcc2f30e._comment
new file mode 100644
index 0000000..6b0df4b
--- /dev/null
+++ b/posts/obnam-1.4/comment_2_37b564ed9882c38936604dc3bcc2f30e._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ nickname="Lars Wirzenius"
+ subject="Run old version of Obnam from source tree"
+ date="2013-05-07T18:52:01Z"
+ content="""
+Wojtek,
+
+You should be able to run an old version of Obnam from the source tree. Something like
+this should work:
+
+bzr branch -r obnam-0.24 http://code.liw.fi/obnam/bzr/trunk obnam-0.24
+cd obnam-0.24
+python setup.py build_ext -i
+./obnam restore -r $REPOURL --to /path/to/restore
+
+If this doesn't work, could you e-mail the obnam mailing list and we'll sort out
+something that will work for you.
+"""]]

Comment moderation
diff --git a/posts/obnam-1.4/comment_1_19bd485f970fd5d1854d8f4b970fd525._comment b/posts/obnam-1.4/comment_1_19bd485f970fd5d1854d8f4b970fd525._comment
new file mode 100644
index 0000000..3feaffc
--- /dev/null
+++ b/posts/obnam-1.4/comment_1_19bd485f970fd5d1854d8f4b970fd525._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="Wojtek"
+ ip="193.48.154.178"
+ subject="obnam"
+ date="2013-05-07T12:30:51Z"
+ content="""
+I just got a bad present from obnam:)
+I installed it in Dec 2011, and did a large backup chunk on a remote server (relatively large, around 6gb). It's 2013 now, and I have lost my HD in despicable circumstances (nevermind). That data would come in very useful. BUT, obnam 1.1 (I use debian testing) won't read the 'version 4' (yes! it was 2011!) repo. Any other versions of obnam are non-installable (too new python, don't work even with relinking python->python2.6).
+As luck would have it, I also made another, smaller repo (over 1gb). This time it was in version 5. As you can guess, my obnam will also not read it (5 is not 6). The convert5to6 utility explodes when I try to use it.
+
+Is there any way to read (de-code) that data? I could easily download all the chunks (i.e. have them back on my local system), but they're hashed and unreadable... And having your own data (which you badly want) in an unreadable form is a hard experience:)
+
+So, to summarize - versions change, data stays, life is hard.
+Regards
+w
+"""]]

Comment moderation
diff --git a/posts/license-summary/comment_3_35bbb71ee8095ac847a97c6bcf18ed69._comment b/posts/license-summary/comment_3_35bbb71ee8095ac847a97c6bcf18ed69._comment
new file mode 100644
index 0000000..e9f804c
--- /dev/null
+++ b/posts/license-summary/comment_3_35bbb71ee8095ac847a97c6bcf18ed69._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ nickname="joey"
+ subject="comment 3"
+ date="2013-04-11T00:49:05Z"
+ content="""
+I'd happily use this. Although most of my code has a license already extractable by parsing debian/copyright.
+
+FWIW, =*= is not an unheard of operator in the Haskell world. <http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=(=*=)&start=0> has some examples. A false positive seems unlikely still.
+"""]]
diff --git a/posts/license-summary/comment_4_731c04ef6d9e9af9de057276dc210b54._comment b/posts/license-summary/comment_4_731c04ef6d9e9af9de057276dc210b54._comment
new file mode 100644
index 0000000..f16b418
--- /dev/null
+++ b/posts/license-summary/comment_4_731c04ef6d9e9af9de057276dc210b54._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmmSw-Ag2kOVvMabl5ZaCEgJhrO7lB1M4o"
+ nickname="Ian"
+ subject="SPDX header tags"
+ date="2013-04-11T02:19:42Z"
+ content="""
+This is a good idea if it could be agreed on.  I suggested something very similar for busybox in [1] using SPDX headers.
+
+This would mean that you could do \"make spdx\" or something and get a license file out the other end (see that gitorious branch for some ideas on what was planned).  This would be a great thing for helping people maintain license files.
+
+Bradley Kuhn is probably the person to talk to.  He seems to be the one person that deals with this mostly.
+
+[1] <http://gitorious.org/busybox/busybox/commit/c8da6af43a17778a3e63d2c9465f7b5656f835c5/diffs>
+"""]]

Comment moderation
diff --git a/posts/license-summary/comment_2_cb46ede29824caaaf9c6512055929ef3._comment b/posts/license-summary/comment_2_cb46ede29824caaaf9c6512055929ef3._comment
new file mode 100644
index 0000000..18b2b16
--- /dev/null
+++ b/posts/license-summary/comment_2_cb46ede29824caaaf9c6512055929ef3._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://www-public.telecom-sudparis.eu/~berger_o/"
+ nickname="obergix"
+ subject="In case, SPDX may be interesting"
+ date="2013-04-10T19:21:04Z"
+ content="""
+Hi.
+
+I'm not sure it's on your radar, but in any case, [SPDX](https://spdx.org/) may be interesting, regarding copyright/licensing mentions interoperability.
+
+HtH
+"""]]

Comment moderation
diff --git a/posts/license-summary/comment_1_93372c5e6c1a99d178321bcc22cdfd5f._comment b/posts/license-summary/comment_1_93372c5e6c1a99d178321bcc22cdfd5f._comment
new file mode 100644
index 0000000..d283856
--- /dev/null
+++ b/posts/license-summary/comment_1_93372c5e6c1a99d178321bcc22cdfd5f._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://me.yahoo.com/a/5JtXdrkMpI9.1HoSMGjYVFrsRA--#09a5f"
+ nickname="E"
+ subject="Would be useful"
+ date="2013-04-10T18:42:47Z"
+ content="""
+Macports (a package manager for darwin and os x) allows to distribute packages of built programs. However, licenses sometimes prevent this which drove the maintainers to add a \"license\" field in the portfiles to avoid those problems. The syntax allows for dual license (or) with comma and multiple license (and) with space and also understands + for \"or later version\". See the end of <http://guide.macports.org/#reference.keywords>
+However, it is currently added manually which induces errors and omissions. So a uniform way of specifying licenses would be useful
+"""]]

Remove draft tag
diff --git a/posts/license-summary.mdwn b/posts/license-summary.mdwn
index 779f60e..a22f573 100644
--- a/posts/license-summary.mdwn
+++ b/posts/license-summary.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Machine-parseable embedded license summary information"]]
-[[!tag idea draft]]
+[[!tag idea]]
 
 There is no common way to express license information in each source
 file at the moment. Some people embed license information in each

Break long line
diff --git a/posts/license-summary.mdwn b/posts/license-summary.mdwn
index 0e91ad7..779f60e 100644
--- a/posts/license-summary.mdwn
+++ b/posts/license-summary.mdwn
@@ -40,7 +40,8 @@ I don't have a tool written, but I have a suggestion for the syntax.
      *
      * tl;dr =*= Licenses: GPL-3+ or Expat, and Artistic =*=
      *
-     * Blah. Blah. Blah. Imagine long, boring license texts here.
+     * Blah. Blah. Blah. Imagine long, boring license texts 
+     * here.
      */
 
 The important part is this:

Add license markup blog post draft
diff --git a/posts/license-summary.mdwn b/posts/license-summary.mdwn
new file mode 100644
index 0000000..0e91ad7
--- /dev/null
+++ b/posts/license-summary.mdwn
@@ -0,0 +1,72 @@
+[[!meta title="Machine-parseable embedded license summary information"]]
+[[!tag idea draft]]
+
+There is no common way to express license information in each source
+file at the moment. Some people embed license information in each
+file, others keep it in README or another file at the top of the
+source tree.
+
+Worse, there is no common syntax to express the license information
+in a machine-parseable way. If we had this, we could have tools that,
+for example, tell you if you're trying to merge code that has an
+incompatible license.
+
+Obviously, this kind of thing can never work perfectly. People
+keep inventing new licenses, and it is not possible for a computer
+program to fully understand any license. It is not clear humans
+can do that, either. However, it would be possible to do it to a
+number of well-known licenses, which would help most of the time.
+A classic 20/80 situation.
+
+I would like to suggest a syntax, similar to Emacs's "Hey Emacs"
+modelines, for embedding a **summary** of the license, or licenses,
+for a source file, in such a way that it can be programmatically
+extracted and parsed and analysed. With this syntax, one could then
+write a tool to ensure that all files in a project have the same
+license, or that all licenses are compatible with the project's
+overall license.
+
+Such a tool will, of course, rely on heuristics and assumptions.
+For example, it needs to assume the machine-parseable license
+summary is correct, and rely on a ruleset on what licenses are
+compatible with what licenses. Things can go wrong. That's life.
+Remember, this is aiming at doing the 20% of the work that will
+work 80% of the time, not perfection.
+
+I don't have a tool written, but I have a suggestion for the syntax.
+
+    /*
+     * Copyright 2013 Lars Wirzenius
+     *
+     * tl;dr =*= Licenses: GPL-3+ or Expat, and Artistic =*=
+     *
+     * Blah. Blah. Blah. Imagine long, boring license texts here.
+     */
+
+The important part is this:
+
+    =*= Licenses: GPL-3+ or Expat, and Artistic =*=
+
+The `=*=` prefix and suffix and the word `Licenses` are there to
+make grepping reasonably reliable without too many false positives,
+and to allow comment characters and other text on the same line.
+
+The actual license summary follows the syntax and semantics
+of the [Debian copyright-format 1.0][dep5] specification, which I
+chose because it exists and has had a fair bit of review so far,
+and is reasonably expressive.
+
+The license summaries can be extracted with the following GNU sed
+invocation:
+
+    sed -n '/.*=\*= [Ll]icen[cs]es\?: \(.*\)=\*=.*/s//\1/p'
+
+I allowed various forms of the word license, since it's a word
+that a lot of people will get wrong, and it's easy to catch all
+four common forms.
+
+So, does anyone else think this might be useful? Would you use
+it in your own projects?
+
+[dep5]: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#license-specification
+

Remove links to removed images
diff --git a/posts/trunktees-2013-03-24.mdwn b/posts/trunktees-2013-03-24.mdwn
index 8695431..253deea 100644
--- a/posts/trunktees-2013-03-24.mdwn
+++ b/posts/trunktees-2013-03-24.mdwn
@@ -1,4 +1,5 @@
 [[!meta title="Two new t-shirt designs"]]
+[[!meta dat="Mar 24 14:55 2013 +0000"]]
 [[!tag trunktees]]
 
 I've made two new designs for [Trunk Tees](http://www.cafepress.com/trunktees),
@@ -15,8 +16,6 @@ Here's all the older designs as well:
 [[!img damn-snoflakes.thumb.jpg]]
 [[!img do-not-meddle-regexps.thumb.jpg]]
 [[!img do-or-do-not-there-is-no-spoon.thumb.jpg]]
-[[!img elephants1.thumb.jpg]]
-[[!img elephants1-transparent.thumb.jpg]]
 [[!img happiness-is-a-depilated-yak.thumb.jpg]]
 [[!img head-desk.thumb.jpg]]
 [[!img i-am-awesome.thumb.jpg]]

Remove unnecessary images
diff --git a/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg b/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg
deleted file mode 100644
index 57bf7c7..0000000
Binary files a/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-03-24/elephants1.thumb.jpg b/posts/trunktees-2013-03-24/elephants1.thumb.jpg
deleted file mode 100644
index 26c45b7..0000000
Binary files a/posts/trunktees-2013-03-24/elephants1.thumb.jpg and /dev/null differ

Undraft
diff --git a/posts/trunktees-2013-03-24.mdwn b/posts/trunktees-2013-03-24.mdwn
index c606946..8695431 100644
--- a/posts/trunktees-2013-03-24.mdwn
+++ b/posts/trunktees-2013-03-24.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Two new t-shirt designs"]]
-[[!tag trunktees draft]]
+[[!tag trunktees]]
 
 I've made two new designs for [Trunk Tees](http://www.cafepress.com/trunktees),
 my Cafepress store.

Draft post
diff --git a/posts/trunktees-2013-03-24.mdwn b/posts/trunktees-2013-03-24.mdwn
new file mode 100644
index 0000000..c606946
--- /dev/null
+++ b/posts/trunktees-2013-03-24.mdwn
@@ -0,0 +1,26 @@
+[[!meta title="Two new t-shirt designs"]]
+[[!tag trunktees draft]]
+
+I've made two new designs for [Trunk Tees](http://www.cafepress.com/trunktees),
+my Cafepress store.
+
+[[!img centralized-system.thumb.jpg]]
+[[!img dot-star.thumb.jpg]]
+
+Thank you to Richard Braakman for suggesting the `.*` one.
+
+Here's all the older designs as well:
+
+[[!img all-my-predictions-will-be-wrong.thumb.jpg]]
+[[!img damn-snoflakes.thumb.jpg]]
+[[!img do-not-meddle-regexps.thumb.jpg]]
+[[!img do-or-do-not-there-is-no-spoon.thumb.jpg]]
+[[!img elephants1.thumb.jpg]]
+[[!img elephants1-transparent.thumb.jpg]]
+[[!img happiness-is-a-depilated-yak.thumb.jpg]]
+[[!img head-desk.thumb.jpg]]
+[[!img i-am-awesome.thumb.jpg]]
+[[!img i-changed-everything.thumb.jpg]]
+[[!img internet-may-contain-nuts.thumb.jpg]]
+[[!img speed-is-a-feature.thumb.jpg]]
+
diff --git a/posts/trunktees-2013-03-24/all-my-predictions-will-be-wrong.thumb.jpg b/posts/trunktees-2013-03-24/all-my-predictions-will-be-wrong.thumb.jpg
new file mode 100644
index 0000000..f3f6f44
Binary files /dev/null and b/posts/trunktees-2013-03-24/all-my-predictions-will-be-wrong.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/centralized-system.thumb.jpg b/posts/trunktees-2013-03-24/centralized-system.thumb.jpg
new file mode 100644
index 0000000..8afd5cc
Binary files /dev/null and b/posts/trunktees-2013-03-24/centralized-system.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/damn-snoflakes.thumb.jpg b/posts/trunktees-2013-03-24/damn-snoflakes.thumb.jpg
new file mode 100644
index 0000000..0af0606
Binary files /dev/null and b/posts/trunktees-2013-03-24/damn-snoflakes.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/do-not-meddle-regexps.thumb.jpg b/posts/trunktees-2013-03-24/do-not-meddle-regexps.thumb.jpg
new file mode 100644
index 0000000..19a5874
Binary files /dev/null and b/posts/trunktees-2013-03-24/do-not-meddle-regexps.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/do-or-do-not-there-is-no-spoon.thumb.jpg b/posts/trunktees-2013-03-24/do-or-do-not-there-is-no-spoon.thumb.jpg
new file mode 100644
index 0000000..1af9070
Binary files /dev/null and b/posts/trunktees-2013-03-24/do-or-do-not-there-is-no-spoon.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/dot-star.thumb.jpg b/posts/trunktees-2013-03-24/dot-star.thumb.jpg
new file mode 100644
index 0000000..392c62a
Binary files /dev/null and b/posts/trunktees-2013-03-24/dot-star.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg b/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg
new file mode 100644
index 0000000..57bf7c7
Binary files /dev/null and b/posts/trunktees-2013-03-24/elephants1-transparent.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/elephants1.thumb.jpg b/posts/trunktees-2013-03-24/elephants1.thumb.jpg
new file mode 100644
index 0000000..26c45b7
Binary files /dev/null and b/posts/trunktees-2013-03-24/elephants1.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/happiness-is-a-depilated-yak.thumb.jpg b/posts/trunktees-2013-03-24/happiness-is-a-depilated-yak.thumb.jpg
new file mode 100644
index 0000000..5b35de0
Binary files /dev/null and b/posts/trunktees-2013-03-24/happiness-is-a-depilated-yak.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/head-desk.thumb.jpg b/posts/trunktees-2013-03-24/head-desk.thumb.jpg
new file mode 100644
index 0000000..51bd07b
Binary files /dev/null and b/posts/trunktees-2013-03-24/head-desk.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/i-am-awesome.thumb.jpg b/posts/trunktees-2013-03-24/i-am-awesome.thumb.jpg
new file mode 100644
index 0000000..507cca4
Binary files /dev/null and b/posts/trunktees-2013-03-24/i-am-awesome.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/i-changed-everything.thumb.jpg b/posts/trunktees-2013-03-24/i-changed-everything.thumb.jpg
new file mode 100644
index 0000000..9c1f241
Binary files /dev/null and b/posts/trunktees-2013-03-24/i-changed-everything.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/internet-may-contain-nuts.thumb.jpg b/posts/trunktees-2013-03-24/internet-may-contain-nuts.thumb.jpg
new file mode 100644
index 0000000..2a94d7c
Binary files /dev/null and b/posts/trunktees-2013-03-24/internet-may-contain-nuts.thumb.jpg differ
diff --git a/posts/trunktees-2013-03-24/speed-is-a-feature.thumb.jpg b/posts/trunktees-2013-03-24/speed-is-a-feature.thumb.jpg
new file mode 100644
index 0000000..31a7b13
Binary files /dev/null and b/posts/trunktees-2013-03-24/speed-is-a-feature.thumb.jpg differ

Draft post about Obnam 1.4
diff --git a/posts/obnam-1.4.mdwn b/posts/obnam-1.4.mdwn
new file mode 100644
index 0000000..1121b80
--- /dev/null
+++ b/posts/obnam-1.4.mdwn
@@ -0,0 +1,55 @@
+[[!meta title="Obnam 1.4 (backup software) release"]]
+[[!tag announcement obnam larch]]
+
+I've just pushed out the release files for [Obnam version
+1.4](http://liw.fi/obnam/), my backup application, and [Larch,
+my B-tree library](http://liw.fi/larch/), which Obnam uses.
+They are available via my home page (http://liw.fi/). Since Debian is
+frozen, I am not uploading packages to Debian, but .deb files are
+available from my [personal apt repository](http://liw.fi/code/)
+for intrepid explorers. (I will be uploading to Debian again after the
+freeze. I am afraid I'm too lazy to upload to experimental, or do
+backports. Help is welcome!)
+
+From the Obnam NEWS file:
+
+* The``ls` command now takes filenames as (optional) arguments, instead
+  of a list of generations. Based on patch by Damien Couroussé.
+* Even more detailed progress reporting during a backup.
+* Add --fsck-skip-generations option to tell fsck to not check any
+  generation metadata.
+* The default log level is now INFO, instead of DEBUG. This is to be
+  considered a quantum leap in the continuing rise of the maturity level
+  of the software. (Actually, the change is there just to save some
+  disk space and I/O for people who don't want to be involved in Obnam
+  development and don't want to have massive log files.)
+* The default sizes for the `lru-size` and `upload-queue-size` settings
+  have been reduced, to reduce the memory impact of Obnam.
+* `obnam restore` now reports transfer statistics at the end, similarly
+  to what `obnam backup` does. Suggested by "S. B.".
+
+Bug fixes:
+
+* If listing extended attributes for a filesystem that does not support
+  them, Obnam no longer crashes, just silently does not backup extended
+  attributes. Which aren't there anyway.
+* A bug in handling stat lookup errors was fixed. Reported by
+  Peter Palfrader. Symptom: `AttributeError: 'exceptions.OSError'
+  object has no attribute 'st_ino'` in an error message or log file.
+* A bug in a restore crashing when failing to set extended attributes
+  on the restored file was fixed. Reported by "S. B.".
+* Made it clearer what is happening when unlocking the repository due to
+  errors, and fixed it so that a failure to unlock is also an error.
+  Reported by andrewsh.
+* The dependency on Larch is now for 1.20121216 or newer, since that is
+  needed for fsck to work.
+* The manual page did not document the client name arguments to the
+  `add-key` and `remove-key` subcommands. Reported by Lars Kruse.
+* Restoring symlinks as root would fail. Reported and fixed by
+  David Fries.
+* Only set ssh user/port if explicitily requested, otherwise let ssh
+  select them.  Reported by Michael Goetze, fixed by David Fries.
+* Fix problem with old version of paramiko and chdir. Fixed by Nick Altmann.
+* Fix problems with signed vs unsigned values for struct stat fields.
+  Reported by Henning Verbeek.
+

Comment moderation
diff --git a/posts/ttystatus-0.22/comment_2_ac1c186d3895001a4fe7ee8b6f460196._comment b/posts/ttystatus-0.22/comment_2_ac1c186d3895001a4fe7ee8b6f460196._comment
new file mode 100644
index 0000000..8c41d4d
--- /dev/null
+++ b/posts/ttystatus-0.22/comment_2_ac1c186d3895001a4fe7ee8b6f460196._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ nickname="Lars Wirzenius"
+ subject="PyPI bye-bye"
+ date="2013-03-14T07:35:19Z"
+ content="""
+Thanks for reminding me. I don't want to maintain information about my packages on multiple sites, and having stale information on PyPI is obviously bad, so I've now removed all of my stuff from PyPI.
+"""]]

Un-draft
diff --git a/posts/cliapp-1.20130313.mdwn b/posts/cliapp-1.20130313.mdwn
index 00d58c6..c307809 100644
--- a/posts/cliapp-1.20130313.mdwn
+++ b/posts/cliapp-1.20130313.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="cliapp 1.20130313 released (Python command line utility framework)"]]
-[[!tag cliapp announcement draft]]
+[[!tag cliapp announcement]]
 
 I've just released, to [code.liw.fi][code], version 1.20130313 of
 [cliapp][cliapp], my Python framework for Unix-like command line

Add draft post
diff --git a/posts/cliapp-1.20130313.mdwn b/posts/cliapp-1.20130313.mdwn
new file mode 100644
index 0000000..00d58c6
--- /dev/null
+++ b/posts/cliapp-1.20130313.mdwn
@@ -0,0 +1,61 @@
+[[!meta title="cliapp 1.20130313 released (Python command line utility framework)"]]
+[[!tag cliapp announcement draft]]
+
+I've just released, to [code.liw.fi][code], version 1.20130313 of
+[cliapp][cliapp], my Python framework for Unix-like command line
+programs. It contains the typical stuff such programs need to do, such
+as parsing the command line for options, and iterating over input
+files.
+
+[code]: http://code.liw.fi/debian/pool/main/p/python-cliapp/
+[cliapp]: http://liw.fi/cliapp/
+
+Version 1.20130313
+------------------
+
+* Add `cliapp.Application.compute_setting_values` method. This allows
+  the application to have settings with values that are computed after
+  configuration files and the command line are parsed.
+* Cliapp now logs the Python version at startup, to aid debugging.
+* `cliapp.runcmd` now logs much less during execution of a command. The
+  verbose logging was useful while developing pipeline support, but has
+  now not been useful for months.
+* More default settings and options have an option group now, making
+  `--help` output prettier.
+* The `--help` output and the output of the `help` subcommand now only
+  list summaries for subcommands. The full documentation for a subcommand
+  can be seen by giving the name of the subcommand to `help`.
+* Logging setup is now more overrideable. The `setup_logging` method
+  calls `setup_logging_handler_for_syslog`, 
+  `setup_logging_handler_for_syslog`, or
+  `setup_logging_handler_to_file`, and the last one calls
+  `setup_logging_format` and `setup_logging_timestamp` to create the
+  format strings for messages and timestamps. This allows applications
+  to add, for example, more detailed timestamps easily.
+* The process and system CPU times, and those of the child processes,
+  and the process wall clock duration, are now logged when the memory
+  profiling information is logged.
+* Subcommands added with `add_subcommand` may now have aliases.
+  Subcommands defined using `Application` class methods named `cmd_*`
+  cannot have aliases.
+* Settings and subcommands may now be hidden from `--help` and `help`
+  output. New option `--help-all` and new subcommand `help-all` show
+  everything.
+* cliapp(5) now explains how `--generate-manpage` is used. Thanks to
+  Enrico Zini for the suggestion.
+* New function `cliapp.ssh_runcmd` for executing a command remotely
+  over ssh. The function automatically shell-quotes the argv array
+  given to it so that arguments with spaces and other shell meta-characters
+  work over ssh.
+* New function `cliapp.shell_quote` quotes strings for passing as shell
+  arguments.
+* `cliapp.runcmd` now has a new keyword argument: `log_error`. If set to
+  false, errors are not logged. Defaults to true.
+
+Bug fixes:
+
+* The process title is now set only if `/proc/self/comm` exists.
+  Previously, on the kernel in Debian squeeze (2.6.32), setting the
+  process title would fail, and the error would be logged to the
+  terminal. Reported by William Boughton.
+* A setting may no longer have a default value of None.

Comment moderation
diff --git a/posts/ttystatus-0.22/comment_1_393924e734b20681377da14b669be6b5._comment b/posts/ttystatus-0.22/comment_1_393924e734b20681377da14b669be6b5._comment
new file mode 100644
index 0000000..579258e
--- /dev/null
+++ b/posts/ttystatus-0.22/comment_1_393924e734b20681377da14b669be6b5._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://gedmin.as/"
+ nickname="Marius Gedminas"
+ subject="PyPI love?"
+ date="2013-03-13T09:34:42Z"
+ content="""
+You say ttystatus 0.22 is out, but https://pypi.python.org/pypi/ttystatus still shows 0.12.  And it doesn't have any downloadable files there (which means that tools like pip have to crawl multiple websites to find the archive, which is slower and less reliable).
+
+Would you please upload the latest release to PyPI ('python setup.py sdist register upload', assuming you've a setup.py -- I'd check, but I can't find a web-browseable VCS link anywhere).
+
+Also, just a suggestion: including a \"screenshot\" of the output on the main page (or the PyPI page, or both) would do wonders to entice users.
+"""]]

Un-draft
diff --git a/posts/ttystatus-0.22.mdwn b/posts/ttystatus-0.22.mdwn
index 94ccf55..767eed0 100644
--- a/posts/ttystatus-0.22.mdwn
+++ b/posts/ttystatus-0.22.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="ttystatus 0.22 (terminal status and progress reporting for Python)"]]
-[[!tag ttystatus announcement draft]]
+[[!tag ttystatus announcement]]
 
 I've just released version 0.22 of [ttystatus][ttystatus], my Python
 library for showing progress reporting and status updates on

Add link to code
diff --git a/posts/ttystatus-0.22.mdwn b/posts/ttystatus-0.22.mdwn
index dbfd470..94ccf55 100644
--- a/posts/ttystatus-0.22.mdwn
+++ b/posts/ttystatus-0.22.mdwn
@@ -7,6 +7,8 @@ terminals, for (Unix) command line programs. Output is automatically
 adapted to the width of the terminal: truncated if it does not fit,
 and re-sized if the terminal size changes.
 
+Available on [code.liw.fi][code] only, due to the Debian freeze.
+
 Version 0.22, released 2013-03-12
 ---------------------------------
 
@@ -14,3 +16,4 @@ Version 0.22, released 2013-03-12
   at once.
 
 [ttystatus]: http://liw.fi/ttystatus/
+[code]: http://code.liw.fi/debian/pool/main/p/python-ttystatus/
\ No newline at end of file

Draft blog post
diff --git a/posts/ttystatus-0.22.mdwn b/posts/ttystatus-0.22.mdwn
new file mode 100644
index 0000000..dbfd470
--- /dev/null
+++ b/posts/ttystatus-0.22.mdwn
@@ -0,0 +1,16 @@
+[[!meta title="ttystatus 0.22 (terminal status and progress reporting for Python)"]]
+[[!tag ttystatus announcement draft]]
+
+I've just released version 0.22 of [ttystatus][ttystatus], my Python
+library for showing progress reporting and status updates on
+terminals, for (Unix) command line programs. Output is automatically
+adapted to the width of the terminal: truncated if it does not fit,
+and re-sized if the terminal size changes.
+
+Version 0.22, released 2013-03-12
+---------------------------------
+
+* When the terminal size changes, ttystatus will now update the display
+  at once.
+
+[ttystatus]: http://liw.fi/ttystatus/

Un-draft
diff --git a/posts/trunktees-daniel.mdwn b/posts/trunktees-daniel.mdwn
index c92a67f..36af5d0 100644
--- a/posts/trunktees-daniel.mdwn
+++ b/posts/trunktees-daniel.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Daniel and the shaved yak"]]
-[[!tag trunktees draft]]
+[[!tag trunktees]]
 
 [Daniel][daniel] bought a [Trunk Tees][t] "Happiness is a depilated
 yak" hoodie. [See the picture][pic]! (Won't embed it, since it's

Add draft of post about Daniel's hoodie photo
diff --git a/posts/trunktees-daniel.mdwn b/posts/trunktees-daniel.mdwn
new file mode 100644
index 0000000..c92a67f
--- /dev/null
+++ b/posts/trunktees-daniel.mdwn
@@ -0,0 +1,10 @@
+[[!meta title="Daniel and the shaved yak"]]
+[[!tag trunktees draft]]
+
+[Daniel][daniel] bought a [Trunk Tees][t] "Happiness is a depilated
+yak" hoodie. [See the picture][pic]! (Won't embed it, since it's
+on Google Plush, sorry.)
+
+[daniel]: http://www.digital-scurf.org/
+[t]: http://www.cafepress.com/trunktees
+[pic]: https://plus.google.com/photos/109098675742430569483/albums/posts/5849596588365769986

Comment moderation
diff --git a/posts/scroll-wheel-emulation/comment_5_025b06fb2cbc04cde454facf08acc3e6._comment b/posts/scroll-wheel-emulation/comment_5_025b06fb2cbc04cde454facf08acc3e6._comment
new file mode 100644
index 0000000..bb219de
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_5_025b06fb2cbc04cde454facf08acc3e6._comment
@@ -0,0 +1,27 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmlM84p9JC11T8q9vbXpuIQZ9W6TvzDHgo"
+ nickname="Raf"
+ subject="hotplug solution"
+ date="2013-03-12T17:42:27Z"
+ content="""
+Hi all,
+
+Can someone recommend a good way to achieve a similar result while an USB trackball is plugged in?
+
+I have an old trackball which only has two buttons and I would like to emulate a third one with them. This is trivial with:
+
+    xinput --set-prop \"Kensington      Kensington USB/PS2 Orbit\" \"Evdev Middle Button Emulation\" 1
+
+However so far I'm running it manually whenever I plug the device.
+
+What I require is:
+
+1. The command/script needs to be run when I plug the device in.
+2. I don't use a display manager and treat X as yet another program simply using 'startx' whenever I need to.
+3. I could add it to my .xsession, however the trackball is not always plugged in when I start X, nor do I want it to be most of the time.
+4. For the reasons above, it cannot be a simple udev rule.
+5. I don't use GNOME or any other heavy DM so this needs to be very light and WM agnostic.
+6. To sum it up, it only needs to run in X and only when I plug the trackball in - no polling every n seconds.
+
+Thank you in advance for any pointers.
+"""]]
diff --git a/posts/scroll-wheel-emulation/comment_6_fefbd767eb55d14fb24aa66ebf943f51._comment b/posts/scroll-wheel-emulation/comment_6_fefbd767eb55d14fb24aa66ebf943f51._comment
new file mode 100644
index 0000000..b842a11
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_6_fefbd767eb55d14fb24aa66ebf943f51._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="http://gedmin.as/"
+ nickname="Marius Gedminas"
+ subject="You can use symbolic names instead of numbers"
+ date="2013-03-12T11:36:59Z"
+ content="""
+$ cat ~/bin/enable-wheel-emulation
+
+    #!/bin/sh
+    xinput set-int-prop 'TPPS/2 IBM TrackPoint' 'Evdev Wheel Emulation' 8 1
+    xinput set-int-prop 'TPPS/2 IBM TrackPoint' 'Evdev Wheel Emulation Button' 8 2
+
+should work on every Thinkpad model that has a trackpoint.  I used it on a T61 for a while.
+
+Incidentally, I get this out of the box on Ubuntu 12.10, and I don't remember setting it up anywhere (no snippets in /etc/X11/xorg.conf.d/, no ~/.config/autostart/*, no ~/.xsession.
+"""]]

Comment moderation
diff --git a/posts/scroll-wheel-emulation/comment_4_683385cb86b79bd49f1720209c3b674a._comment b/posts/scroll-wheel-emulation/comment_4_683385cb86b79bd49f1720209c3b674a._comment
new file mode 100644
index 0000000..3021aaa
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_4_683385cb86b79bd49f1720209c3b674a._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnCxvrQmQCQpuOQeLHr04pePLHPu-QfKcM"
+ nickname="White"
+ subject="Why so complex ?"
+ date="2013-03-12T09:08:15Z"
+ content="""
+I’m using the same property to enable mouse emulation on a logitech trackball, but with a rather simpler script :
+
+    #!/bin/sh
+    trackballFound=`xinput --list |grep \"Logitech USB Trackball\" |wc -l`
+    if [ $trackballFound = \"1\" ] ; then
+        xinput --set-prop \"Logitech USB Trackball\" \"Evdev Wheel Emulation\" 1
+        xinput --set-prop \"Logitech USB Trackball\" \"Evdev Wheel Emulation Axes\" 6 7 4 5
+        xinput --set-prop \"Logitech USB Trackball\" \"Evdev Wheel Emulation Button\" 9
+    fi
+
+As a side note, for external devices, it is very convenient to use the dconf property org.gnome.settings-daemon.peripherals.input-devices.hotplug-command to apply these settings automatically when device is plugged.
+"""]]

Comment moderation
diff --git a/posts/scroll-wheel-emulation/comment_3_83b355372596f498ef914435a5ff0d94._comment b/posts/scroll-wheel-emulation/comment_3_83b355372596f498ef914435a5ff0d94._comment
new file mode 100644
index 0000000..d499ab6
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_3_83b355372596f498ef914435a5ff0d94._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://rul.myopenid.com/"
+ ip="190.188.67.128"
+ subject="comment 2"
+ date="2013-03-11T23:42:34Z"
+ content="""
+Both Lars and Sebastian solutions work like a charm on a Thinkpad T430.  
+"""]]

Comment moderation
diff --git a/posts/scroll-wheel-emulation/comment_2_b0c02302350dca1909e12f363ee172c3._comment b/posts/scroll-wheel-emulation/comment_2_b0c02302350dca1909e12f363ee172c3._comment
new file mode 100644
index 0000000..b68bb0a
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_2_b0c02302350dca1909e12f363ee172c3._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkSWhyImxA1Mm5oFgtbNFTldi-GI6fYmHg"
+ nickname="Adam"
+ subject="windows support"
+ date="2013-03-12T07:09:50Z"
+ content="""
+I was very upset when I discovered, after years of using this feature on ThinkPads, that middle click and scroll are not supported both at once on Windows.
+
+Fortunately, there is a utility which makes it possible: [tpmiddle](http://users.v-lo.krakow.pl/~mwrobel/programs/tpmiddle.html)
+"""]]

Comment moderation
diff --git a/posts/scroll-wheel-emulation/comment_1_4bd49ac49f4eb41531f0d9b15c23d884._comment b/posts/scroll-wheel-emulation/comment_1_4bd49ac49f4eb41531f0d9b15c23d884._comment
new file mode 100644
index 0000000..263872f
--- /dev/null
+++ b/posts/scroll-wheel-emulation/comment_1_4bd49ac49f4eb41531f0d9b15c23d884._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk-gartud1g-6rxjqSOJOTZDq3_aezzuzo"
+ nickname="Sebastian"
+ subject="permanent setup"
+ date="2013-03-11T21:43:36Z"
+ content="""
+I added the following file on my notebook (also an X200s) to reach the same goal:
+
+$ cat /usr/share/X11/xorg.conf.d/20-thinkpad-trackpoint.conf
+
+	Section \"InputClass\"
+		Identifier	\"ThinkPad TrackPoint\"
+		MatchProduct	\"TPPS/2 IBM TrackPoint\"
+		MatchDevicePath	\"/dev/input/event*\"
+		Option		\"EmulateWheel\"		\"true\"
+		Option		\"EmulateWheelButton\"	\"2\"
+		Option		\"XAxisMapping\"		\"6 7\"
+		Option		\"YAxisMapping\"		\"4 5\"
+	EndSection
+
+-- Sebastian
+"""]]

Undraft
diff --git a/posts/scroll-wheel-emulation.mdwn b/posts/scroll-wheel-emulation.mdwn
index 7c94d48..6a17be3 100644
--- a/posts/scroll-wheel-emulation.mdwn
+++ b/posts/scroll-wheel-emulation.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Thinkpad X200s scroll wheel emulation"]]
-[[!tag linux draft]]
+[[!tag linux]]
 
 [Daniel](http://www.digital-scurf.org/) told me how to set up
 scroll wheel emulation on a Thinkpad. Presumably it works on

Draft post about scroll wheel emulation
diff --git a/posts/scroll-wheel-emulation.mdwn b/posts/scroll-wheel-emulation.mdwn
new file mode 100644
index 0000000..7c94d48
--- /dev/null
+++ b/posts/scroll-wheel-emulation.mdwn
@@ -0,0 +1,31 @@
+[[!meta title="Thinkpad X200s scroll wheel emulation"]]
+[[!tag linux draft]]
+
+[Daniel](http://www.digital-scurf.org/) told me how to set up
+scroll wheel emulation on a Thinkpad. Presumably it works on
+other systems as well, but the magic numbers for xinput
+may be different.
+I wrote a script to set it up, and configure my GNOME session
+to run it upon login.
+
+The result: pressing the middle mouse button and moving the
+trackpoint up/down or left/right results in the applications
+receiving events as if a scroll wheel had been used.
+
+Very, very handy. Thanks, Daniel.
+
+
+    #!/bin/sh
+
+    set -eu
+
+    id=$(xinput list | sed -n '/TPPS\/2 IBM TrackPoint/s/.*id=\([0-9]\+\).*/\1/p')
+    emu=$(xinput list-props "$id" | 
+        sed -n '/Evdev Wheel Emulation (/s/.*(\([0-9]\+\)).*/\1/p')
+    but=$(xinput list-props "$id" | 
+        sed -n '/Evdev Wheel Emulation Button (/s/.*(\([0-9]\+\)).*/\1/p')
+    axs=$(xinput list-props "$id" | 
+        sed -n '/Evdev Wheel Emulation Axes (/s/.*(\([0-9]\+\)).*/\1/p')
+    xinput set-int-prop "$id" "$emu" 8 1
+    xinput set-int-prop "$id" "$but" 8 2
+    #xinput set-int-prop "$id" "$axs" 8 6 7 4 5

Comment moderation
diff --git a/posts/gedit-makefiletab3/comment_3_223990b4530f9b393a4a54a6727e432a._comment b/posts/gedit-makefiletab3/comment_3_223990b4530f9b393a4a54a6727e432a._comment
new file mode 100644
index 0000000..a3e0e84
--- /dev/null
+++ b/posts/gedit-makefiletab3/comment_3_223990b4530f9b393a4a54a6727e432a._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkXVkZv3a1RYxLObnrdTQ4wKuczXyhfM1o"
+ nickname="Paolo"
+ subject="comment 3"
+ date="2013-03-10T15:37:03Z"
+ content="""
+The ViewActivateble allows activate/deactivate to be called for each view. Anyway, the plugin looks ok and it is fair enough that you do not want to put more work into it.
+
+I do not think you will need to fix the plugin for 3.8 apart from changing that line to \"python3\"
+"""]]

Comment moderation
diff --git a/posts/gedit-makefiletab3/comment_2_86044d036922e0af2de44c2268db37c1._comment b/posts/gedit-makefiletab3/comment_2_86044d036922e0af2de44c2268db37c1._comment
new file mode 100644
index 0000000..253231c
--- /dev/null
+++ b/posts/gedit-makefiletab3/comment_2_86044d036922e0af2de44c2268db37c1._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ nickname="Lars Wirzenius"
+ subject="comment 2"
+ date="2013-03-10T15:21:00Z"
+ content="""
+I don't know what ViewActivatable is for, or how to use it. The Python plugin how-to might explain it, if I read it very carefully and did some experimentation, but I have no particular interest in that. I merely needed this plugin to work again, since I needed to edit a Makefile today.
+
+I have to fix it again in the near future? This fills me with no joy, sorry.
+"""]]

Comment moderation
diff --git a/posts/gedit-makefiletab3/comment_1_00139ec17c0e98d7c937d30c2c4dd827._comment b/posts/gedit-makefiletab3/comment_1_00139ec17c0e98d7c937d30c2c4dd827._comment
new file mode 100644
index 0000000..f7646aa
--- /dev/null
+++ b/posts/gedit-makefiletab3/comment_1_00139ec17c0e98d7c937d30c2c4dd827._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkXVkZv3a1RYxLObnrdTQ4wKuczXyhfM1o"
+ nickname="Paolo"
+ subject="comment 1"
+ date="2013-03-10T14:26:39Z"
+ content="""
+Great to know you are using gedit!
+
+Anything in particular that is missing from the docs? This is the main documentation for writing plugins https://live.gnome.org/Gedit/PythonPluginHowTo
+
+From a quick glance I think that implemeting the ViewActivatable interface could make the plugin easier since you would not need to track tab switching manually.
+
+Also keep in mind that for the upcoming 3.8 version you will need to switch the \"Loader\" line the .plugin file to python3
+
+
+"""]]

creating tag page tag/gedit
diff --git a/tag/gedit.mdwn b/tag/gedit.mdwn
new file mode 100644
index 0000000..60f7fe9
--- /dev/null
+++ b/tag/gedit.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged gedit"]]
+
+[[!inline pages="tagged(gedit)" actions="no" archive="yes"
+feedshow=10]]

Announce makefiletab3
diff --git a/posts/gedit-makefiletab3.mdwn b/posts/gedit-makefiletab3.mdwn
new file mode 100644
index 0000000..ddcae59
--- /dev/null
+++ b/posts/gedit-makefiletab3.mdwn
@@ -0,0 +1,16 @@
+[[!meta title="Makefiletab plugin for Gedit 3"]]
+[[!tag gedit announcement]]
+
+Mickaël Delahaye has a [plugin for Gedit 2 to
+force off spaces-instead-of-tabs for
+Makefiles](http://whilefalse.com/gedit-makefiletab/).
+
+I wrote a similar plugin for Gedit 3, since all the APIs have changed.
+
+The source is at git://git.gitano.org.uk/personal/liw/makefiletab3
+(no .deb as of this time).
+
+I probably did something really stupid in the plugin code, since I
+have no idea how plugins should really be written: I wasn't very
+illuminated by the documentation.
+

Comment moderation
diff --git a/posts/saving-the-world-by-coding/comment_1_22434024524dd791e7fc864a04275baf._comment b/posts/saving-the-world-by-coding/comment_1_22434024524dd791e7fc864a04275baf._comment
new file mode 100644
index 0000000..f0a775c
--- /dev/null
+++ b/posts/saving-the-world-by-coding/comment_1_22434024524dd791e7fc864a04275baf._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://openid.stackexchange.com/user/2eeca722-8d1c-41fe-8fda-13af7eaff6ae"
+ nickname="Diggory"
+ subject="Saving the world?"
+ date="2013-03-09T21:17:45Z"
+ content="""
+I agree that protecting our right to privacy is important for democracy. Besides government blocking of certain websites (which must be somewhat less bad than private sector lobbying), there are the twin issues that ISPs can track every server you visit and that \"cloud\" services are mostly offered by a small number of providers, putting information about a large number of people in a small number of places. Is not being tracked important? It's not a rhetorical question. Police track people in the physical world sometimes, though clearly less often. It's not a clear issue exactly what the rights of citizens should be, but I think part of the solution has to be political, not just technology.
+
+As a British citizen living in Switzerland, I disagree that the UK is close to an ideal democracy, however. Why exactly it has settled to a mostly two-party system where citizens have little more choice than \"left wing\" or \"right wing\" politics I don't understand. Switzerland has the [Volksinitiative](https://de.wikipedia.org/wiki/Volksinitiative_%28Schweiz%29) for example, which is somewhat more effective than writing to your MP.
+"""]]
diff --git a/posts/saving-the-world-by-coding/comment_2_47b291da6d464c60da97bde10eccac28._comment b/posts/saving-the-world-by-coding/comment_2_47b291da6d464c60da97bde10eccac28._comment
new file mode 100644
index 0000000..e7aeb04
--- /dev/null
+++ b/posts/saving-the-world-by-coding/comment_2_47b291da6d464c60da97bde10eccac28._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkVDp3eKknfA9e8wduMzUkbFoeLKQVnH4o"
+ nickname="Martin"
+ subject="Mainstream media coverage"
+ date="2013-03-09T21:01:54Z"
+ content="""
+No worries, globe is slowly but surely opening its eyes wide (linked article is actually well-written for such a mainstream tech portal). Though I hope it won't be too late.
+
+1.| http://www.theverge.com/2013/3/7/4036040/cypherpunks-julian-assange-wikileaks-encryption-surveillance-dystopia
+
+PS: Finally someone using trackball. (=
+"""]]

Re-tag and publish
diff --git a/posts/saving-the-world-by-coding.mdwn b/posts/saving-the-world-by-coding.mdwn
index e8c2e5d..2eb04fc 100644
--- a/posts/saving-the-world-by-coding.mdwn
+++ b/posts/saving-the-world-by-coding.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Can the world be saved by coding?"]]
-[[!tag draft free-software]]
+[[!tag free-software politics obnam]]
 
 I love programming. I was born to code. I want to save the world by
 writing code.

Add blog draft
diff --git a/posts/saving-the-world-by-coding.mdwn b/posts/saving-the-world-by-coding.mdwn
new file mode 100644
index 0000000..e8c2e5d
--- /dev/null
+++ b/posts/saving-the-world-by-coding.mdwn
@@ -0,0 +1,76 @@
+[[!meta title="Can the world be saved by coding?"]]
+[[!tag draft free-software]]
+
+I love programming. I was born to code. I want to save the world by
+writing code.
+
+I feel very strongly about software freedom. As I get older, and my
+eyes open to see more of the evil in the world, I become more
+concerned about freedom in general.
+
+Software freedom is, at least traditionally, about permission use,
+study, modify, and re-distribute software. The Free Software Foundation
+expresses this as [the four essential freedoms][four]. Debian expanded
+on that, and produced the [Debian Free Software Guidelines][dfsg].
+
+This is no longer enough. It is not enough to have all the freedom
+when you using your own computer, to have the source code to every
+bit of code that runs on your hardware. We live in the era of the
+Internet. Much of what we use computers for involves communication
+over the Internet, and the Internet is being actively used to
+curtail the freedom of people.
+
+For example, governments and corporations do large-scale surveillance
+of everyone, by eavesdropping on private communications, gathering
+enormous databases of personal data, and by analysing everything they
+can in order to find patterns and make conclusions both at the statistical
+level and about individuals. This ruins privacy. Without privacy,
+democracy cannot survive.
+
+Another example: in the name of various strawmen, such as terrorism,
+copyright violations, drugs, and child pornography, governments
+and corporations are collaborating in limiting private people's
+communications. I'm a Finnish citizen living in the UK. Both countries
+are among the closest ones to an ideal democractic nation state. Both
+countries arbitrarily block access to websites based on lists provided
+by private organisations, assuming that those organisations produce
+accurate lists of sites that contain copyright violations. As a result,
+both countries blocked, for example, a site where musical artists
+promoted their own works, bypassing the large media corporations that
+fund the list-making organisation.
+
+These issues transcend software freedom, though they interact with it.
+Software freedom is a necessary requirement for freedom, in a world
+where almost everything is done with, or controlled by, the use
+of computers.  Software freedom is not enough to prevent censorship
+or surveillance: even if all the software in the world were free,
+including the national firewalls of China, Finland, and the UK, this
+would not prevent those countries from censoring and surveilling their
+citizens.  The firewall would run free software, but that does not give
+the citizens the freedom to disable, or modify, the firewall systems.
+
+Fixing these issues is not a coding task. It is a job for politics,
+and it is going to take a long time, I fear. In the mean time, is
+there something a hacker can do to improve things?
+
+My main hobby project is [Obnam][obnam], my backup program.  Does that
+help people to protect their freedom? I think it does, in a small way:
+Obnam supports online, encrypted backups (and de-duplication even
+for encryption is used), which means they can make backups to servers
+anywhere on the Internet without having to fear their data gets read
+and analysed by hostile entities such as their own government, other
+governments, large corporations, or criminals. Obviously this does
+not help them if their government prohibits the use of encryption,
+or requires key escrow, or mandates backdoors to all encryption
+methods. But it's a step in the right direction.
+
+I don't claim Obnam will save the world, but a million small such
+steps by a thousand individual hackers, even without any particular
+organisation or guidance, will make a big impact.
+
+What step can you take?
+
+[dfsg]: http://www.debian.org/social_contract#guidelines
+[four]: https://www.gnu.org/philosophy/free-sw.html
+[obnam]: http://liw.fi/obnam/
+

creating tag page tag/maria-eveliina
diff --git a/tag/maria-eveliina.mdwn b/tag/maria-eveliina.mdwn
new file mode 100644
index 0000000..646c7f2
--- /dev/null
+++ b/tag/maria-eveliina.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged maria-eveliina"]]
+
+[[!inline pages="tagged(maria-eveliina)" actions="no" archive="yes"
+feedshow=10]]

creating tag page tag/kickstarter
diff --git a/tag/kickstarter.mdwn b/tag/kickstarter.mdwn
new file mode 100644
index 0000000..cf11305
--- /dev/null
+++ b/tag/kickstarter.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged kickstarter"]]
+
+[[!inline pages="tagged(kickstarter)" actions="no" archive="yes"
+feedshow=10]]

Undraft and add some more tags
diff --git a/posts/maria-eveliina-kickstarter-2.mdwn b/posts/maria-eveliina-kickstarter-2.mdwn
index 2c54962..3a84ef8 100644
--- a/posts/maria-eveliina-kickstarter-2.mdwn
+++ b/posts/maria-eveliina-kickstarter-2.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Kickstarter: Maria Eveliina"]]
-[[!tag draft announcement]]
+[[!tag announcement kickstarter maria-eveliina]]
 
 Soile, my beloved, is running a second Kickstarter campaign to
 fund her first feature-length movie, Maria Eveliina.

Add draft of blog post
diff --git a/posts/maria-eveliina-kickstarter-2.mdwn b/posts/maria-eveliina-kickstarter-2.mdwn
new file mode 100644
index 0000000..2c54962
--- /dev/null
+++ b/posts/maria-eveliina-kickstarter-2.mdwn
@@ -0,0 +1,15 @@
+[[!meta title="Kickstarter: Maria Eveliina"]]
+[[!tag draft announcement]]
+
+Soile, my beloved, is running a second Kickstarter campaign to
+fund her first feature-length movie, Maria Eveliina.
+
+This time, she and her producer are seeking funding to pay an
+editor to do the final, professional cut of the movie. They've
+found a professional editor who'd like to work on the project,
+but need some payment.
+
+The [Kickstarter page][x] explains more. It also has a "Back
+this project" button if you feel so inclined.
+
+[x]: http://www.kickstarter.com/projects/mariaeveliina/maria-eveliina-a-documentary-film-in-post-producti

Remove draft tag
diff --git a/posts/hands-off-libraries.mdwn b/posts/hands-off-libraries.mdwn
index 0555622..37c5f10 100644
--- a/posts/hands-off-libraries.mdwn
+++ b/posts/hands-off-libraries.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Public libraries bad for authors and publishers?"]]
-[[!tag rant piracy libraries books draft]]
+[[!tag rant piracy libraries books]]
 
 [Brett points][brett] at a [Guardian article on Terry Deary][guardian]
 and his opinion that libraries are no longer relevant. In fact, Mr. Deary

creating tag page tag/libraries
diff --git a/tag/libraries.mdwn b/tag/libraries.mdwn
new file mode 100644
index 0000000..f649073
--- /dev/null
+++ b/tag/libraries.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged libraries"]]
+
+[[!inline pages="tagged(libraries)" actions="no" archive="yes"
+feedshow=10]]

creating tag page tag/piracy
diff --git a/tag/piracy.mdwn b/tag/piracy.mdwn
new file mode 100644
index 0000000..2dda6b4
--- /dev/null
+++ b/tag/piracy.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged piracy"]]
+
+[[!inline pages="tagged(piracy)" actions="no" archive="yes"
+feedshow=10]]

Fixes and more text
diff --git a/posts/hands-off-libraries.mdwn b/posts/hands-off-libraries.mdwn
index 5df38a9..0555622 100644
--- a/posts/hands-off-libraries.mdwn
+++ b/posts/hands-off-libraries.mdwn
@@ -1,5 +1,5 @@
-[[!meta title="Libraries bad for authors and publishers?"]]
-[[!tag rant draft]]
+[[!meta title="Public libraries bad for authors and publishers?"]]
+[[!tag rant piracy libraries books draft]]
 
 [Brett points][brett] at a [Guardian article on Terry Deary][guardian]
 and his opinion that libraries are no longer relevant. In fact, Mr. Deary
@@ -67,6 +67,14 @@ kind of cultural products without paying for them.
    them as well, and they're just as important as children, as far
    as the marketing ploy is concerned.
 
+It's a bit sad that bookshops are dying out. Public libraries have,
+however, nothing to do with it. Online booksellers are usually
+cheaper, and have vastly larger catalogues, and that's a much more
+likely culprit. Also, bookshops have no intrinsic right to exist:
+they're middle-men who make a living by making it more convenient
+for customers to get what they want, and if they get out-competed,
+that's business life.
+
 Now, I neglected above to consider the possibility of buying used books.
 The reason for that is that media companies, and their lobbying
 organisations, would like to make selling of used books, music
@@ -84,7 +92,7 @@ and that we can let Mr. Deary live alone in his little horrible
 hallucination.
 
 [brett]: http://www.sommitrealweird.co.uk/blog/2013/02/13/public-libraries/
-[guardian]: http://www.sommitrealweird.co.uk/blog/2013/02/13/public-libraries/
+[guardian]: http://www.guardian.co.uk/books/2013/feb/13/libraries-horrible-histories-terry-deary
 [cory]: http://craphound.com/pc/donate/
 [sony]: http://arstechnica.com/gaming/2013/01/examining-sonys-internet-free-method-for-blocking-used-game-sales/
 

Add draft of new post
diff --git a/posts/hands-off-libraries.mdwn b/posts/hands-off-libraries.mdwn
new file mode 100644
index 0000000..5df38a9
--- /dev/null
+++ b/posts/hands-off-libraries.mdwn
@@ -0,0 +1,90 @@
+[[!meta title="Libraries bad for authors and publishers?"]]
+[[!tag rant draft]]
+
+[Brett points][brett] at a [Guardian article on Terry Deary][guardian]
+and his opinion that libraries are no longer relevant. In fact, Mr. Deary
+goes further: he thinks libraries are destroying the book business by
+preventing authors, publishers, and bookshops from getting paid.
+
+From the article:
+
+> As one of the most popular library authors – his books were borrowed
+> more than 500,000 times during 2011/12 – Deary will have received
+> the maximum amount possible for a writer from the Public Lending Right
+> scheme, which gives authors 6.2p every time one of their books is
+> borrowed, up to a cap of £6,600. "If I sold the book I'd get 30p per
+> book. I get six grand, and I should be getting £180,000. But never
+> mind my selfish author perception – what about the bookshops? The
+> libraries are doing nothing for the book industry. They give nothing
+> back, whereas bookshops are selling the book, and the author and the
+> publisher get paid, which is as it should be. What other entertainment
+> do we expect to get for free?" he asked.
+
+He's making several of the same false claims that people in the
+media business always make whenever they see people enjoying any
+kind of cultural products without paying for them.
+
+1. Every loan from a library is not a lost sale. More than 500 thousand
+   loans does not mean 500 thousand lost sales. When borrowing a book
+   is free, people will do it even if they aren't sure if they're going
+   to like a book.
+   
+   The cheapest book by Mr. Deary I Amazon UK is £4.27 when sold
+   as new by amazon (I'll ignored used books for the moment). The
+   threshold for buying a book at that price is much, much higher
+   than borrowing on for free.
+2. Letting people have stuff for free does not automatically mean
+   they won't pay for other stuff. Indeed, they may well pay for the
+   very stuff they got for free. See the several experiments to let
+   customers set their own price for music, books, or computer games,
+   or the success [Cory Doctorow][cory] has letting people download
+   e-books of his novels for free, and then letting people donate one
+   or more hardcopies of the book to schools and libraries. This is
+   not a model that will work well for everyone, but it proves the
+   point: charging people money for each copy is not necessary to
+   make good profit.
+   
+   In fact, studies of "Internet pirates", or people who download
+   music and movies (and books) more or less illegally from the
+   Internet, show that such people tend to spend more money on
+   music and movies (and books!) than the average person. That's
+   not something the publishers want to talk about, or hear. (I am
+   talking here about real research, not the propganda material that
+   lobbying organisations produce.)
+3. Why would people buy a book in the first place? They need to know
+   they'll like it, but more importantly, they need to like reading
+   in the first place. See point 1: if books cost any amount of money,
+   the threshold for getting one is high. If you don't have easy,
+   convenient access to books when you're a child, you're unlikely to
+   be a reader of books when you're an adult. Public libraries are
+   the perfect way to give people access to a wide variety of literature.
+   In fact, they're about the most perfect marketing ploy in the history
+   of media: the libraries pay for the books, and they pay each time they
+   loan out a book, and every time a new future customer is brainwashed
+   that much more into getting more stuff in the future.
+   
+   Libraries are not just for children, of course. Adult readers use
+   them as well, and they're just as important as children, as far
+   as the marketing ploy is concerned.
+
+Now, I neglected above to consider the possibility of buying used books.
+The reason for that is that media companies, and their lobbying
+organisations, would like to make selling of used books, music
+recordings, movies, and computer games not happen anymore. For example, 
+[Sony][sony], and files patents for, stopping people from playing
+used games on its game consoles, even without Internet access.
+
+Mr. Deary seems to be following the MPAA and RIAA checklist
+on how to talk about those evil people who enjoy something
+without paying for it every time. It can't be long before he starts
+asking for a ban on selling used books.
+
+Let's hope, however, that reality and facts and sense win this time,
+and that we can let Mr. Deary live alone in his little horrible
+hallucination.
+
+[brett]: http://www.sommitrealweird.co.uk/blog/2013/02/13/public-libraries/
+[guardian]: http://www.sommitrealweird.co.uk/blog/2013/02/13/public-libraries/
+[cory]: http://craphound.com/pc/donate/
+[sony]: http://arstechnica.com/gaming/2013/01/examining-sonys-internet-free-method-for-blocking-used-game-sales/
+

Remove titles from sidebar
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 4486fe9..c531b6f 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -13,11 +13,11 @@ Lars Wirzenius
 
 [[Tags|tag]]
 
-#### **See also**
+**See also**
 
 * [Main site](http://liw.fi/)
 
-#### **Blogs I read**
+**Blogs I read**
 
 * [Burger Games Notebook](http://www.burgergames.com/notes/)
 * [Cessu](http://cessu.blogspot.com/)

Remove draft tag
diff --git a/posts/fosdem-2013.mdwn b/posts/fosdem-2013.mdwn
index 305912b..114be91 100644
--- a/posts/fosdem-2013.mdwn
+++ b/posts/fosdem-2013.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Baserock talk at FOSDEM"]]
-[[!tag draft fosdem baserock talk]]
+[[!tag fosdem baserock talk]]
 
 I and Rob Taylor will be giving a talk about [Baserock][br] at
 [FOSDEM][f] this year. Baserock is a new method for developing

Replace fosdem link with correct one
diff --git a/posts/fosdem-2013.mdwn b/posts/fosdem-2013.mdwn
index e28ab9b..305912b 100644
--- a/posts/fosdem-2013.mdwn
+++ b/posts/fosdem-2013.mdwn
@@ -10,5 +10,5 @@ The talk is scheduled in the Embedded and mobile devroom
 on Saturday, at 14:00. There will be a demo.
 
 [br]: http://wiki.baserock.org/
-[f]: https://fosdem.org/2013/schedule/speaker/lars_wirzenius/
+[f]: https://fosdem.org/2013/schedule/event/baserock_embedded_linux/
 [ct]: http://www.codethink.co.uk/

Fix links more
diff --git a/posts/fosdem-2013.mdwn b/posts/fosdem-2013.mdwn
index addb4af..e28ab9b 100644
--- a/posts/fosdem-2013.mdwn
+++ b/posts/fosdem-2013.mdwn
@@ -9,6 +9,6 @@ creating at [Codethink][ct].
 The talk is scheduled in the Embedded and mobile devroom
 on Saturday, at 14:00. There will be a demo.
 
-[br](http://wiki.baserock.org/)
-[f](https://fosdem.org/2013/schedule/speaker/lars_wirzenius/)
-[ct](http://www.codethink.co.uk/)
+[br]: http://wiki.baserock.org/
+[f]: https://fosdem.org/2013/schedule/speaker/lars_wirzenius/
+[ct]: http://www.codethink.co.uk/

Fix reference links
diff --git a/posts/fosdem-2013.mdwn b/posts/fosdem-2013.mdwn
index 680b5f4..addb4af 100644
--- a/posts/fosdem-2013.mdwn
+++ b/posts/fosdem-2013.mdwn
@@ -1,14 +1,14 @@
 [[!meta title="Baserock talk at FOSDEM"]]
 [[!tag draft fosdem baserock talk]]
 
-I and Rob Taylor will be giving a talk about [Baserock] at
-[FOSDEM] this year. Baserock is a new method for developing
+I and Rob Taylor will be giving a talk about [Baserock][br] at
+[FOSDEM][f] this year. Baserock is a new method for developing
 embedded Linux systems, and one such system, which we are
-creating at [Codethink].
+creating at [Codethink][ct].
 
 The talk is scheduled in the Embedded and mobile devroom
 on Saturday, at 14:00. There will be a demo.
 
-[Baserock](http://wiki.baserock.org/)
-[FOSDEM](https://fosdem.org/2013/schedule/speaker/lars_wirzenius/)
-[Codethink](http://www.codethink.co.uk/)
+[br](http://wiki.baserock.org/)
+[f](https://fosdem.org/2013/schedule/speaker/lars_wirzenius/)
+[ct](http://www.codethink.co.uk/)

Add draft of blog post
diff --git a/posts/fosdem-2013.mdwn b/posts/fosdem-2013.mdwn
new file mode 100644
index 0000000..680b5f4
--- /dev/null
+++ b/posts/fosdem-2013.mdwn
@@ -0,0 +1,14 @@
+[[!meta title="Baserock talk at FOSDEM"]]
+[[!tag draft fosdem baserock talk]]
+
+I and Rob Taylor will be giving a talk about [Baserock] at
+[FOSDEM] this year. Baserock is a new method for developing
+embedded Linux systems, and one such system, which we are
+creating at [Codethink].
+
+The talk is scheduled in the Embedded and mobile devroom
+on Saturday, at 14:00. There will be a demo.
+
+[Baserock](http://wiki.baserock.org/)
+[FOSDEM](https://fosdem.org/2013/schedule/speaker/lars_wirzenius/)
+[Codethink](http://www.codethink.co.uk/)

Cancel post, it's pointless without images
diff --git a/posts/trunktees-2013-01.mdwn b/posts/trunktees-2013-01.mdwn
deleted file mode 100644
index be5a526..0000000
--- a/posts/trunktees-2013-01.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!meta title="More t-shirt designs"]]
-[[!tag advertisment trunktees draft]]
-
-I made some more designs for my Cafepress shop,
-[Trunk tees](http://www.cafepress.co.uk/trunktees)
-([US](http://www.cafepress.com/trunktees)).
-
-Here's a few of the designs.
-
-[[!img all-my-predictions-will-be-wrong.thumb.jpg]]
-[[!img damn-snoflakes.thumb.jpg]]
-[[!img happiness-is-a-depilated-yak.thumb.jpg]]
-[[!img i-am-awesome.thumb.jpg]]
-[[!img i-changed-everything.thumb.jpg]]
-[[!img internet-may-contain-nuts.thumb.jpg]]

Remove images, they're too much work to get right today
diff --git a/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg b/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg
deleted file mode 100644
index 9243b5a..0000000
Binary files a/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg b/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg
deleted file mode 100644
index 61cde74..0000000
Binary files a/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg b/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg
deleted file mode 100644
index 4a2bf33..0000000
Binary files a/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/head-desk.thumb.jpg b/posts/trunktees-2013-01/head-desk.thumb.jpg
deleted file mode 100644
index 1631dd3..0000000
Binary files a/posts/trunktees-2013-01/head-desk.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/i-am-awesome.thumb.jpg b/posts/trunktees-2013-01/i-am-awesome.thumb.jpg
deleted file mode 100644
index dab54d6..0000000
Binary files a/posts/trunktees-2013-01/i-am-awesome.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/i-changed-everything.thumb.jpg b/posts/trunktees-2013-01/i-changed-everything.thumb.jpg
deleted file mode 100644
index 35cd73b..0000000
Binary files a/posts/trunktees-2013-01/i-changed-everything.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg b/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg
deleted file mode 100644
index 48543f7..0000000
Binary files a/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg and /dev/null differ

Resize images
diff --git a/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg b/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg
index 942e318..9243b5a 100644
Binary files a/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg and b/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg b/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg
index ac39abe..61cde74 100644
Binary files a/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg and b/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg b/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg
index 9313b2e..4a2bf33 100644
Binary files a/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg and b/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/head-desk.thumb.jpg b/posts/trunktees-2013-01/head-desk.thumb.jpg
index 0d21418..1631dd3 100644
Binary files a/posts/trunktees-2013-01/head-desk.thumb.jpg and b/posts/trunktees-2013-01/head-desk.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/i-am-awesome.thumb.jpg b/posts/trunktees-2013-01/i-am-awesome.thumb.jpg
index 540e7a7..dab54d6 100644
Binary files a/posts/trunktees-2013-01/i-am-awesome.thumb.jpg and b/posts/trunktees-2013-01/i-am-awesome.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/i-changed-everything.thumb.jpg b/posts/trunktees-2013-01/i-changed-everything.thumb.jpg
index 337207a..35cd73b 100644
Binary files a/posts/trunktees-2013-01/i-changed-everything.thumb.jpg and b/posts/trunktees-2013-01/i-changed-everything.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg b/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg
index 4d3afe9..48543f7 100644
Binary files a/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg and b/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg differ

Remove extra images
diff --git a/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg b/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg
deleted file mode 100644
index 6cb7008..0000000
Binary files a/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg b/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg
deleted file mode 100644
index 27798ed..0000000
Binary files a/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg b/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg
deleted file mode 100644
index c067af7..0000000
Binary files a/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/elephants1.thumb.jpg b/posts/trunktees-2013-01/elephants1.thumb.jpg
deleted file mode 100644
index 0d02d43..0000000
Binary files a/posts/trunktees-2013-01/elephants1.thumb.jpg and /dev/null differ
diff --git a/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg b/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg
deleted file mode 100644
index 1c79ed8..0000000
Binary files a/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg and /dev/null differ

Draft post on new t-shirt designs
diff --git a/posts/trunktees-2013-01.mdwn b/posts/trunktees-2013-01.mdwn
new file mode 100644
index 0000000..be5a526
--- /dev/null
+++ b/posts/trunktees-2013-01.mdwn
@@ -0,0 +1,15 @@
+[[!meta title="More t-shirt designs"]]
+[[!tag advertisment trunktees draft]]
+
+I made some more designs for my Cafepress shop,
+[Trunk tees](http://www.cafepress.co.uk/trunktees)
+([US](http://www.cafepress.com/trunktees)).
+
+Here's a few of the designs.
+
+[[!img all-my-predictions-will-be-wrong.thumb.jpg]]
+[[!img damn-snoflakes.thumb.jpg]]
+[[!img happiness-is-a-depilated-yak.thumb.jpg]]
+[[!img i-am-awesome.thumb.jpg]]
+[[!img i-changed-everything.thumb.jpg]]
+[[!img internet-may-contain-nuts.thumb.jpg]]
diff --git a/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg b/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg
new file mode 100644
index 0000000..942e318
Binary files /dev/null and b/posts/trunktees-2013-01/all-my-predictions-will-be-wrong.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg b/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg
new file mode 100644
index 0000000..ac39abe
Binary files /dev/null and b/posts/trunktees-2013-01/damn-snoflakes.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg b/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg
new file mode 100644
index 0000000..6cb7008
Binary files /dev/null and b/posts/trunktees-2013-01/do-not-meddle-regexps.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg b/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg
new file mode 100644
index 0000000..27798ed
Binary files /dev/null and b/posts/trunktees-2013-01/do-or-do-not-there-is-no-spoon.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg b/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg
new file mode 100644
index 0000000..c067af7
Binary files /dev/null and b/posts/trunktees-2013-01/elephants1-transparent.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/elephants1.thumb.jpg b/posts/trunktees-2013-01/elephants1.thumb.jpg
new file mode 100644
index 0000000..0d02d43
Binary files /dev/null and b/posts/trunktees-2013-01/elephants1.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg b/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg
new file mode 100644
index 0000000..9313b2e
Binary files /dev/null and b/posts/trunktees-2013-01/happiness-is-a-depilated-yak.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/head-desk.thumb.jpg b/posts/trunktees-2013-01/head-desk.thumb.jpg
new file mode 100644
index 0000000..0d21418
Binary files /dev/null and b/posts/trunktees-2013-01/head-desk.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/i-am-awesome.thumb.jpg b/posts/trunktees-2013-01/i-am-awesome.thumb.jpg
new file mode 100644
index 0000000..540e7a7
Binary files /dev/null and b/posts/trunktees-2013-01/i-am-awesome.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/i-changed-everything.thumb.jpg b/posts/trunktees-2013-01/i-changed-everything.thumb.jpg
new file mode 100644
index 0000000..337207a
Binary files /dev/null and b/posts/trunktees-2013-01/i-changed-everything.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg b/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg
new file mode 100644
index 0000000..4d3afe9
Binary files /dev/null and b/posts/trunktees-2013-01/internet-may-contain-nuts.thumb.jpg differ
diff --git a/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg b/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg
new file mode 100644
index 0000000..1c79ed8
Binary files /dev/null and b/posts/trunktees-2013-01/speed-is-a-feature.thumb.jpg differ

Undraft
diff --git a/posts/obnam-1.3.mdwn b/posts/obnam-1.3.mdwn
index 01f4976..16af880 100644
--- a/posts/obnam-1.3.mdwn
+++ b/posts/obnam-1.3.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Obnam 1.3 (backup software) and other releases"]]
-[[!tag draft announcement obnam larch cliapp]]
+[[!tag announcement obnam larch cliapp]]
 
 I've just pushed out the release files for [Obnam version
 1.3](http://liw.fi/obnam/), my backup application, as well as [Larch,

Draft Obnam 1.3 release announcement
diff --git a/posts/obnam-1.3.mdwn b/posts/obnam-1.3.mdwn
new file mode 100644
index 0000000..01f4976
--- /dev/null
+++ b/posts/obnam-1.3.mdwn
@@ -0,0 +1,88 @@
+[[!meta title="Obnam 1.3 (backup software) and other releases"]]
+[[!tag draft announcement obnam larch cliapp]]
+
+I've just pushed out the release files for [Obnam version
+1.3](http://liw.fi/obnam/), my backup application, as well as [Larch,
+my B-tree library](http://liw.fi/larch/), and [cliapp, my Python
+framework for command line applications](http://liw.fi/cliapp/). They
+are available via my home page (http://liw.fi/). Since Debian is
+frozen, I am not uploading packages to Debian, but .deb files are
+available from my [personal apt repository](http://liw.fi/code/)
+for the intrepid. (I will be uploading to Debian again after the
+freeze. I am afraid I'm too lazy to upload to experimental, or do
+backports. Help is welcome!)
+
+From the Obnam NEWS file:
+
+* When creating files in the backup repository, Obnam tries to avoid NFS
+  synchronisation problems by first writing a temporary file and then
+  creating a hardlink to the actual filename. This works badly on filesystems
+  that do not allow hard links, such as VFAT. If creating the hardlink
+  fails, Obnam now further tries to use the `open(2)` system call with
+  the `O_EXCL` flag to create the target file. This should allow things
+  to work with both NFS and VFAT.
+* More detailed progress reporting during the backup.
+* Manual page now covers the diff subcommand. Patch by Peter Valdemar Mørch.
+* Speed optimisation patch for backing up files in inode numbering order,
+  from Christophe Vu-Brugier.
+* A setuid or setgid bit is now not restored if Obnam is not used by root
+  or the same user as the owner of the restored file.
+* Many new settings to control "obnam fsck", mainly to reduce the amount
+  of checking being done in order to make it faster. However, fsck is
+  has lost some features (checks), which will be added back in a future
+  release.
+* More frequent fsck progress reporting. Some speed optimisations to fsck.
+
+Bug fixes for Obnam:
+
+* Empty values for extended attributes are now backed up correctly.
+  Previously they would cause an infinite loop.
+* Extended attributes without values are now ignored. This is different
+  from attributes with empty values. Reported by Vladimir Elisseev.
+* An empty port number in sftp URLs is now handled correctly. Found based
+  on report by Anton Shevtsov.
+* A bad performance bug when backing up full systems (starting from the
+  filesystem root directory) has been fixed. At the beginning of each
+  generation, Obnam removes any directories that are not part of the
+  current backup roots. This is necessary so that if you change the
+  backup roots, the old stuff doesn't hang around forever. However, when
+  the backup root is the filesystem root, due to the now-fixed bug Obnam
+  would first remove everything, and then back it up all over again. This
+  "worked", but was quite slow. Thanks to Nix for reporting the problem.
+* Obnam now runs GnuPG explicitly with the "no text mode" setting, to override
+  a "text mode" setting in the user's configuration. The files Obnam encrypts
+  need to be treated as binary, not text files. Reported by Robin Sheat.
+* A shared B-tree concurrency bug has been fixed: If another instance of
+  Obnam was modifying a shared B-tree, Obnam would crash and abort a backup,
+  possibly leaving lock files lying around. Now a failure to look up a chunk
+  via its checksum is ignored, and the backup continues.
+* Bugs in how Python OSError exceptions were being raises have been fixed.
+  Error messages should now be somewhat clearer.
+* Unset or wrongly set variable "full" fixed in "obnam diff". Reported
+  by ROGERIO DE CARVALHO BASTOS and patched by Peter Valdemar Mørch.
+* Setuid and setgid bits are now restored correctly, when restore happens
+  as root. Reported by Pavel Kokolemin.
+* Obnam now complains if no backup roots have been specfied.
+
+NEWS for Larch:
+
+* Make fsck progress reporting be a bit more fine grained.
+
+NEWS for cliapp:
+
+* Options in option groups are now included in manual page SYNOPSIS and
+  OPTIONS sections.
+* `--log=syslog` message format improvement by Daniel Silverstone.
+  No longer includes a timestamp, since syslog adds it anyway. Also,
+  the process name is now set on Linux.
+* Make the default subcommand argument synopsis be an empty string, instead
+  of None. Reported by Sam Thursfield.
+* Meliae memory dumping support has been fixed. Reported by Joey Hess.
+* Memory profiling reports can now be done at minimum intervals in
+  seconds, rather than every time the code asks for them. This can
+  reduce the overhead of memory profiling quite a lot.
+* If there are any subcommands, cliapp now adds a subcommand called `help`,
+  unless one already exists.
+* For every boolean setting foo, there will no be a --no-foo option to be
+  used on the command line.
+

Undraft
diff --git a/posts/trunktees.mdwn b/posts/trunktees.mdwn
index 55dbe34..bd5346a 100644
--- a/posts/trunktees.mdwn
+++ b/posts/trunktees.mdwn
@@ -1,10 +1,11 @@
 [[!meta title="Made some t-shirt designs"]]
-[[!tag advertisment trunktees draft]]
+[[!tag advertisment trunktees]]
 
 I enjoy funny and geeky t-shirts. For some time, I've been collecting
 ideas of my own, and now I've implemented them as
 [Trunk tees](http://www.cafepress.co.uk/trunktees)
 ([US](http://www.cafepress.com/trunktees)), a Cafepress shop.
+I'll add more over time.
 
 [[do-not-meddle-regexps.jpg]]
 

Fix markup
diff --git a/posts/trunktees.mdwn b/posts/trunktees.mdwn
index bcbc32d..55dbe34 100644
--- a/posts/trunktees.mdwn
+++ b/posts/trunktees.mdwn
@@ -3,7 +3,7 @@
 
 I enjoy funny and geeky t-shirts. For some time, I've been collecting
 ideas of my own, and now I've implemented them as
-[Trunk tees][http://www.cafepress.co.uk/trunktees)
+[Trunk tees](http://www.cafepress.co.uk/trunktees)
 ([US](http://www.cafepress.com/trunktees)), a Cafepress shop.
 
 [[do-not-meddle-regexps.jpg]]

Resize image
diff --git a/posts/trunktees/do-not-meddle-regexps.jpg b/posts/trunktees/do-not-meddle-regexps.jpg
index 0d1c227..4b14ad6 100644
Binary files a/posts/trunktees/do-not-meddle-regexps.jpg and b/posts/trunktees/do-not-meddle-regexps.jpg differ

creating tag page tag/trunktees
diff --git a/tag/trunktees.mdwn b/tag/trunktees.mdwn
new file mode 100644
index 0000000..bd29748
--- /dev/null
+++ b/tag/trunktees.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged trunktees"]]
+
+[[!inline pages="tagged(trunktees)" actions="no" archive="yes"
+feedshow=10]]

creating tag page tag/advertisment
diff --git a/tag/advertisment.mdwn b/tag/advertisment.mdwn
new file mode 100644
index 0000000..a1e2c7e
--- /dev/null
+++ b/tag/advertisment.mdwn
@@ -0,0 +1,4 @@
+[[!meta title="pages tagged advertisment"]]
+
+[[!inline pages="tagged(advertisment)" actions="no" archive="yes"
+feedshow=10]]

Fix name
diff --git a/posts/trunktees.mdwn b/posts/trunktees.mdwn
index 2522711..bcbc32d 100644
--- a/posts/trunktees.mdwn
+++ b/posts/trunktees.mdwn
@@ -3,7 +3,7 @@
 
 I enjoy funny and geeky t-shirts. For some time, I've been collecting
 ideas of my own, and now I've implemented them as
-[Trunktees][http://www.cafepress.co.uk/trunktees)
+[Trunk tees][http://www.cafepress.co.uk/trunktees)
 ([US](http://www.cafepress.com/trunktees)), a Cafepress shop.
 
 [[do-not-meddle-regexps.jpg]]

Add draft post of trunktees shop
diff --git a/posts/trunktees.mdwn b/posts/trunktees.mdwn
new file mode 100644
index 0000000..2522711
--- /dev/null
+++ b/posts/trunktees.mdwn
@@ -0,0 +1,10 @@
+[[!meta title="Made some t-shirt designs"]]
+[[!tag advertisment trunktees draft]]
+
+I enjoy funny and geeky t-shirts. For some time, I've been collecting
+ideas of my own, and now I've implemented them as
+[Trunktees][http://www.cafepress.co.uk/trunktees)
+([US](http://www.cafepress.com/trunktees)), a Cafepress shop.
+
+[[do-not-meddle-regexps.jpg]]
+
diff --git a/posts/trunktees/do-not-meddle-regexps.jpg b/posts/trunktees/do-not-meddle-regexps.jpg
new file mode 100644
index 0000000..0d1c227
Binary files /dev/null and b/posts/trunktees/do-not-meddle-regexps.jpg differ

Undraft
diff --git a/posts/tools-2012.mdwn b/posts/tools-2012.mdwn
index 7122ca5..d9e5e79 100644
--- a/posts/tools-2012.mdwn
+++ b/posts/tools-2012.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Tools I use"]]
-[[!tag productivity personal draft]]
+[[!tag productivity personal]]
 
 For my own later reference, here are the main tools I use.
 

Add draft of tools blog post
diff --git a/posts/tools-2012.mdwn b/posts/tools-2012.mdwn
new file mode 100644
index 0000000..7122ca5
--- /dev/null
+++ b/posts/tools-2012.mdwn
@@ -0,0 +1,55 @@
+[[!meta title="Tools I use"]]
+[[!tag productivity personal draft]]
+
+For my own later reference, here are the main tools I use.
+
+Computers
+---------
+
+* Lenovo Thinkpad X200s with 8 GiB RAM, 500 GB spinning hard disk.
+    - it now 3.5 years since I bought the laptop; it is still working well
+    - I've replaced the hard disk, the battery (twice), and added 4 GB RAM
+* Two 1 TB USB drives for backup, USB powered.
+
+Software
+--------
+
+* Debian GNU/Linux, wheezy (testing).
+    - Baserock at work, but it's not yet quite there for my free time
+      hacking
+* GNOME 3, with gnome-shell.
+* Gedit for writing text, plus vi when gedit is not an option.
+* Python, C, and shell/sed/awk/etc for programming.
+    - learning Haskell
+* Bzr and git for version control.
+    - I like bzr, but the world has chosen git, so I use it for my new 
+      projects, and will eventually be migrating my old projects to it
+    - git hosting is trickier than bzr hosting, so I don't plan on doing that
+      myself; using gitorious.org for it for the time being, but not all
+      that happy with it
+* KVM with libvirt and virt-manager for virtualization.
+    - I have a network of VM guests for running a CI system
+* Firefox for web browsing.
+    - I really like having MAFF
+* offlineimap and mutt for e-mail.
+* Rhythmbox for playing music.
+* XChat for IRC.
+* Liferea for RSS/Atom feeds.
+
+Mobile devices
+--------------
+
+* Google Nexus One phone, with Android 2.something.
+    - the hardware is too old to get newer Android versions, but it works
+      fine and I care to upgrade
+* A Kindle keyboard, from 2010.
+
+Online services
+----------------
+
+* Google Calendar.
+* Branchable (ikiwiki) for my websites.
+* identi.ca for microblogging, though I've mainly given up on that.
+    - microblogs are abysmal for discussions
+* A (shared) physical server rented from Hetzner.de, for off-site backups.
+

Comment moderation
diff --git a/posts/tar-replacement/comment_7_7331cf3f25c229d4ca956f9804609692._comment b/posts/tar-replacement/comment_7_7331cf3f25c229d4ca956f9804609692._comment
new file mode 100644
index 0000000..65cc174
--- /dev/null
+++ b/posts/tar-replacement/comment_7_7331cf3f25c229d4ca956f9804609692._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmzMJifLtM19U-hPPXhCNEyxJ3gnpl0rL4"
+ nickname="Nicola"
+ subject="Dar (Disk ARchive) file format"
+ date="2012-10-25T22:07:43Z"
+ content="""
+The [Dar (Disk ARchive)](http://dar.linux.free.fr/) backup program defines [its own file format](http://dar.linux.free.fr/doc/Notes.html#archive_structure).
+"""]]

Undraft
diff --git a/posts/floss-weekly-baserock.mdwn b/posts/floss-weekly-baserock.mdwn
index e71165e..0b65189 100644
--- a/posts/floss-weekly-baserock.mdwn
+++ b/posts/floss-weekly-baserock.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Intervewed on FLOSS Weekly about Baserock"]]
-[[!tag baserock draft]]
+[[!tag baserock]]
 
 My boss, Rob Taylor, and I were interviewed on today's episode of
 [FLOSS Weekly](http://twit.tv/show/floss-weekly/230) about 

Draft post on floss weekly inteview
diff --git a/posts/floss-weekly-baserock.mdwn b/posts/floss-weekly-baserock.mdwn
new file mode 100644
index 0000000..e71165e
--- /dev/null
+++ b/posts/floss-weekly-baserock.mdwn
@@ -0,0 +1,6 @@
+[[!meta title="Intervewed on FLOSS Weekly about Baserock"]]
+[[!tag baserock draft]]
+
+My boss, Rob Taylor, and I were interviewed on today's episode of
+[FLOSS Weekly](http://twit.tv/show/floss-weekly/230) about 
+[Baserock](http://wiki.baserock.org/).

Comment moderation
diff --git a/posts/obnam-1.2/comment_4_030316c74133d9312677546a98e0ff50._comment b/posts/obnam-1.2/comment_4_030316c74133d9312677546a98e0ff50._comment
new file mode 100644
index 0000000..6cb3328
--- /dev/null
+++ b/posts/obnam-1.2/comment_4_030316c74133d9312677546a98e0ff50._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawknF1s9Uk1gPVjmtTSRMDMprsVKc36j2mc"
+ nickname="Ricky"
+ subject="comment 4"
+ date="2012-10-09T06:59:14Z"
+ content="""
+Thank you for this new release. It is good to read that the backup format did not change. Thus I can use it on top of my old backups.
+You could also consider uploading it to experimental while we are in freeze for Wheezy.
+"""]]

Added a comment: Same encryption for all
diff --git a/posts/obnam-1.2/comment_3_6ce21c2cd0f721f49af2ec50566c946c._comment b/posts/obnam-1.2/comment_3_6ce21c2cd0f721f49af2ec50566c946c._comment
new file mode 100644
index 0000000..ee5ad9d
--- /dev/null
+++ b/posts/obnam-1.2/comment_3_6ce21c2cd0f721f49af2ec50566c946c._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ ip="92.41.251.237"
+ subject="Same encryption for all"
+ date="2012-10-08T17:54:16Z"
+ content="""
+Sandra,
+
+no, I haven't considered making different levels of encryption for different users. I don't see the point.
+However, the Obnam plugin architecture allows someone else to implement that if they want to.
+"""]]

Comment moderation
diff --git a/posts/obnam-1.2/comment_2_2e0d4301e8a8745f82eecc1e1b1d3c40._comment b/posts/obnam-1.2/comment_2_2e0d4301e8a8745f82eecc1e1b1d3c40._comment
new file mode 100644
index 0000000..3db8f1f
--- /dev/null
+++ b/posts/obnam-1.2/comment_2_2e0d4301e8a8745f82eecc1e1b1d3c40._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="vi"
+ ip="192.194.76.42"
+ subject="Obnam"
+ date="2012-10-08T16:16:12Z"
+ content="""
+Thank, You!
+For yet another backup system ;)
+
+Sorry, for my English :(
+ 
+
+"""]]

Comment moderation
diff --git a/posts/obnam-1.2/comment_1_0975aad9029431c6fc2b3e66da34a931._comment b/posts/obnam-1.2/comment_1_0975aad9029431c6fc2b3e66da34a931._comment
new file mode 100644
index 0000000..49c21a7
--- /dev/null
+++ b/posts/obnam-1.2/comment_1_0975aad9029431c6fc2b3e66da34a931._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlZJ_IobBcPBh18QWJxAUfyCpRu0SkaXxI"
+ nickname="Sandra"
+ subject="Allow for weaker encryption?"
+ date="2012-10-08T10:10:22Z"
+ content="""
+GPG is good to protect from NSA or if your data is really secret.
+
+In my case, my data is not all the secret and I don't worry about NSA, but I still encrypt in case the drives get stolen.
+
+Have you considered to allow for weaker and therefore faster encryption for those that just want to protect against thieves that steal for hardware and not software?
+
+Sort of an enterprise level and home level encryption option.
+
+
+"""]]

Undraft
diff --git a/posts/obnam-1.2.mdwn b/posts/obnam-1.2.mdwn
index e21a14f..15e9b81 100644
--- a/posts/obnam-1.2.mdwn
+++ b/posts/obnam-1.2.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="Obnam 1.2 (backup software)"]]
-[[!tag draft obnam announcement]]
+[[!tag obnam announcement]]
 
 I've just made release 1.2 of [Obnam](http://liw.fi/obnam/),
 my backup program. The NEWS file entry:
@@ -31,5 +31,5 @@ Bug fixes:
 
 This release has been uploaded to my own apt repository on 
 [code.liw.fi](http://liw.fi/code/), for squeeze and unstable. Due to
-the Debian freeze, I am not uploading this to Debian at this time.
-
+the Debian freeze, I am not uploading this to Debian at this time,
+though some changes may eventually be uploaded there.

Draft obnam 1.2
diff --git a/posts/obnam-1.2.mdwn b/posts/obnam-1.2.mdwn
new file mode 100644
index 0000000..e21a14f
--- /dev/null
+++ b/posts/obnam-1.2.mdwn
@@ -0,0 +1,35 @@
+[[!meta title="Obnam 1.2 (backup software)"]]
+[[!tag draft obnam announcement]]
+
+I've just made release 1.2 of [Obnam](http://liw.fi/obnam/),
+my backup program. The NEWS file entry:
+
+* Added a note to `--node-size` that it only affects new B-trees.
+  Thanks, Michael Brown.
+* New `obnam diff` subcommand to show differences (added/removed/modified
+  files) between two generations, by Peter Valdemar Mørch.
+* `obnam backup` now logs the names of files that are getting backed up
+  at the INFO level rather than DEBUG.
+* The command synopsises for backup, restore, and verify commands now
+  make it clearer that Obnam only accepts directories, not individual
+  files, as arguments. (For now.)
+* The output from the `show` plugin can now be redirected with the
+  `--output=FILE` option. Affected subcommands: `clients`, `generations`,
+  `genids`, `ls`, `diff`, `nagios-last-backup-age`.
+
+Bug fixes:
+
+* Notify user of errors during backups.
+* The SFTP plugin now manages to deal with repository paths starting 
+  with `/~/` which already exist without crashing.
+* Character and block device nodes are now restored correctly.
+  Thanks to Martin Dummer for the bug report.
+* The symmteric key for a toplevel repository directory is re-encrypted
+  when a public key is added or removed to the toplevel using the
+  `add-key` or `remove-key` subcommands.
+* Manual page typo fix. Thanks, Steve Kemp.
+
+This release has been uploaded to my own apt repository on 
+[code.liw.fi](http://liw.fi/code/), for squeeze and unstable. Due to
+the Debian freeze, I am not uploading this to Debian at this time.
+

Comment moderation
diff --git a/posts/strncpy/comment_12_082434413ef6e0b84a7103e14ce2e4e7._comment b/posts/strncpy/comment_12_082434413ef6e0b84a7103e14ce2e4e7._comment
new file mode 100644
index 0000000..450eb6d
--- /dev/null
+++ b/posts/strncpy/comment_12_082434413ef6e0b84a7103e14ce2e4e7._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://www.omnifarious.org/~hopper/"
+ nickname="Omnifarious"
+ subject="I disagree with part of what you're saying"
+ date="2012-10-04T16:44:13Z"
+ content="""
+Randomly truncated strings are indeed irritating and generally result in bugs. But buffer overflows result in far worse issues. It is better to have a failure mode of randomly truncated strings than it is to have a failure mode that results in an almost certain security vulnerability.
+
+But you are correct about strncpy having its own pitfalls and problems and being far from ideal.
+"""]]

Added a comment: Obnam de-duplication documentation
diff --git a/posts/obnam-1.1/comment_4_f866f6ed3e6231a8a59799bdf2315184._comment b/posts/obnam-1.1/comment_4_f866f6ed3e6231a8a59799bdf2315184._comment
new file mode 100644
index 0000000..41b616d
--- /dev/null
+++ b/posts/obnam-1.1/comment_4_f866f6ed3e6231a8a59799bdf2315184._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ ip="87.194.100.189"
+ subject="Obnam de-duplication documentation"
+ date="2012-09-30T08:37:15Z"
+ content="""
+I am afraid your assumptions of how Obnam works are rather mistaken. I hope the above page is illuminating. See <http://liw.fi/obnam/ondisk/> for a description of the Obnam on-disk data structures. It should clarify how de-duplication happens.
+
+If you have further questions, please use the Obnam mailing list.
+"""]]

Comment moderation
diff --git a/posts/obnam-1.1/comment_3_8532150efa0b3b71ad5c1fbcac79946b._comment b/posts/obnam-1.1/comment_3_8532150efa0b3b71ad5c1fbcac79946b._comment
new file mode 100644
index 0000000..91e4bd4
--- /dev/null
+++ b/posts/obnam-1.1/comment_3_8532150efa0b3b71ad5c1fbcac79946b._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="http://slated.wordpress.com/"
+ nickname="slated"
+ subject="Just out of curiosity..."
+ date="2012-09-29T23:36:22Z"
+ content="""
+Could you explain in plain English (my Python sucks) the basic methodology you're using to calculate, compare and store deltas, as I'm interested in learning more about this process, with a view to experimenting with different approaches to minimize overhead and improve speed (if possible)?
+
+Without knowing the details, I suspect any deduplication method entails an unavoidably expensive overhead, since even unmodified sources (mtime) may contain blocks duplicated in new targets, and naturally the only way you can know is by checking both (which is why my daily backup took nearly as long as the full/initial backup).
+
+Perhaps limiting deduplication to individual files might help, because then you could ignore anything that hadn't been modified, only store the per-file deltas on modified files, and new files in full without deduplication (until later modified). This is less space-efficient but much faster. As it stands, I believe you're deduplicating the entire data set en mass, in a series of small, unique chunks, which necessitates checking the entire data set each time, comparing each chunk to all the others in the data set. Correct me if I'm wrong, this is just my initial impression.
+
+Are you comparing the actual data or just the hashes? Are you using a catalogue/database or working directly on the data? What sort algorithm are you using? Would any of this benefit from being rewritten in C + inline assembler? Are you making use of threads and/or SMP? These are all factors that affect speed.
+
+This isn't a subject I've previously given much thought, but you've piqued my interest. It seems like an interesting challenge.
+"""]]

Added a comment: Obnam speed
diff --git a/posts/obnam-1.1/comment_2_793f9eba748dd5b1904f8830b9fd14fa._comment b/posts/obnam-1.1/comment_2_793f9eba748dd5b1904f8830b9fd14fa._comment
new file mode 100644
index 0000000..35f2f3e
--- /dev/null
+++ b/posts/obnam-1.1/comment_2_793f9eba748dd5b1904f8830b9fd14fa._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://liw.fi/"
+ ip="87.194.100.189"
+ subject="Obnam speed"
+ date="2012-09-29T07:44:10Z"
+ content="""
+Yes, Obnam is slow in many situations. On the other hand, it's fast in other situations. My work laptop (around 200 gigabytes of data, up to gigabytes of delta) usually takes about two minutes to make a daily backup to another machine in the office. The speed of Obnam backups is not simply based on the size of data, but also on number of files, and probably other factors.
+
+The speed issue is also well-known, and something I acknowlege. I decided to make Obnam be correct before being fast.
+
+The important thing is not whether you use Obnam, but that you have a working backup system.
+"""]]

Comment moderation
diff --git a/posts/obnam-1.1/comment_1_a60959230be4222fba8da281f5fa1d34._comment b/posts/obnam-1.1/comment_1_a60959230be4222fba8da281f5fa1d34._comment
new file mode 100644
index 0000000..668bc3a
--- /dev/null
+++ b/posts/obnam-1.1/comment_1_a60959230be4222fba8da281f5fa1d34._comment
@@ -0,0 +1,28 @@
+[[!comment format=mdwn
+ username="http://slated.wordpress.com/"
+ nickname="slated"
+ subject="Nice idea but..."
+ date="2012-09-29T02:28:21Z"
+ content="""
+I've been a dump/restore user for years, but with the arrival of filesystems like btrfs I found myself looking for alternatives, which brought me to obnam.
+
+While I love the idea of deduplication, the fact is my time is more precious than my disk space, and unfortunately obnam is just far too slow to be useful.
+
+For example, I just dumped a 75GB (used) ext4 filesystem from an LVM2 snapshot, four times, twice with dump (level 0 and 1 respectively) and twice with obnam (first full then a diff the next day). The results were disappointing to say the least.
+
+The level 0 dump, from about two months ago, took about 6.5 hours (slow netbook and USB2 backup drive). Today's level 1 dump took 55 minutes for a diff of about 11GB.
+
+By comparison, yesterday's full (i.e. first) obnam backup took 8 hours on the same machine to the same USB2 drive, and today's diff, which comprised a whopping total of 50MB, took a staggering ... 5.5 hours.
+
+Seriously, 5.5 hours ... for 50MB?!?!?
+
+Sorry, dump may be getting a bit long in the tooth, and it doesn't do delta deduplication (only the complete changed file), but at least the backup time is proportional to the size of the diff, which means most of the time it completes in just a few minutes.
+
+I can put up with long monthly backups and the protracted (but very rare) restores, for the sake of spending less time and computer resources on consistently long daily backups.
+
+In fact, I just realised that if I were to try to backup my 2TB media drive using obnam, I wouldn't be able to do daily backups at all, because it'd take more than 24 hours to do each backup, even if the daily diff was only a few MB!
+
+I'm going back to ext* filesystems and sticking with dump.
+
+Thanks anyway.
+"""]]