liw.fi

RecentChanges

Recent changes to this wiki:

diff --git a/links.mdwn b/links.mdwn
index 6a986bb..8cfc9ac 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -74,6 +74,7 @@ incarnation of that web page.
 [Jukka Rajala](http://www.jukkar.com/)
 
 **Computer stores:**
+[Ascent](http://www.ascent.co.nz/?x=1)
 [Verkkokauppa](http://www.verkkokauppa.com/)
 [Damicon Kraa](http://www.damicon.fi/)
 [linuxkauppa](http://www.linuxkauppa.fi/)

diff --git a/links.mdwn b/links.mdwn
index cfafbae..6a986bb 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -125,6 +125,7 @@ incarnation of that web page.
 [EBS](http://www.joelonsoftware.com/items/2007/10/26.html)
 [Euler](http://projecteuler.net/index.php?section=about)
 [Meliae](http://jam-bazaar.blogspot.com/2009/11/memory-debugging-with-meliae.html)
+[git tutorial](http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

Re-worded #8 to be an actual rule. Thanks to Richard for pointing it out.
diff --git a/rules.mdwn b/rules.mdwn
index e34ddf9..ddc9a0d 100644
--- a/rules.mdwn
+++ b/rules.mdwn
@@ -4,12 +4,12 @@
 Gibbs, yay.
 
 1. Always copy and paste a URL.
-1. A will-do attitude trumps skills.
-1. Always ask the simple troubleshooting questions first.
-1. Externalize your memory: write things down, always carry a notebook.
-1. Measure, don't guess.
-1. Write flames, but don't send them.
-1. Always write unit tests for error handling.
-1. 100% test coverage is a fallacy, but bugs happen mostly in the parts 
-   without tests.
-1. Don't be late in telling you're late.
+2. A will-do attitude trumps skills.
+3. Always ask the simple troubleshooting questions first.
+4. Externalize your memory: write things down, always carry a notebook.
+5. Measure, don't guess.
+6. Write flames, but don't send them.
+7. Always write unit tests for error handling.
+8. Aim for 100% test coverage. You'll never get there, but bugs mostly happen
+  in the parts without tests.
+9. Don't be late in telling you're late.

diff --git a/rules.mdwn b/rules.mdwn
new file mode 100644
index 0000000..e34ddf9
--- /dev/null
+++ b/rules.mdwn
@@ -0,0 +1,15 @@
+[[!meta title="Rules"]]
+[[!tag article]]
+
+Gibbs, yay.
+
+1. Always copy and paste a URL.
+1. A will-do attitude trumps skills.
+1. Always ask the simple troubleshooting questions first.
+1. Externalize your memory: write things down, always carry a notebook.
+1. Measure, don't guess.
+1. Write flames, but don't send them.
+1. Always write unit tests for error handling.
+1. 100% test coverage is a fallacy, but bugs happen mostly in the parts 
+   without tests.
+1. Don't be late in telling you're late.

diff --git a/tag/talk.mdwn b/tag/talk.mdwn
new file mode 100644
index 0000000..d345936
--- /dev/null
+++ b/tag/talk.mdwn
@@ -0,0 +1,3 @@
+This tag is for talks and presentations I've given.
+
+[[!inline archive=yes feeds=no sort=title pages="link(tag/talk)"]]

diff --git a/linux-anecdotes.mdwn b/linux-anecdotes.mdwn
new file mode 100644
index 0000000..74b64b0
--- /dev/null
+++ b/linux-anecdotes.mdwn
@@ -0,0 +1,282 @@
+[[!meta title="Linux Anecdotes"]]
+[[!tag talk]]
+
+> A look at the history of Linux, as seen by a long
+> time Linux user.  The talk is a series of anecdotes,
+> shy of technical details, and sprinkled with personal
+> memories.
+> 
+> 27 April 1998
+> 
+> This talk was given at the 1998 Linux Expo.
+
+
+## Who I am and why I am here
+
+I seem to have acquired a little bit of reputation in the Linux community,
+despite my efforts in to stay quiet and invisible, so that I don't get
+so many questions from people having trouble with Linux.
+
+Part of my reputation is that I know Linux pretty well. That part is based
+on the time when I and Linus Torvalds---I assume you know Linus---shared
+an office at the University of Helsinki. In reality, I don't know Linux
+all that well. For example, my one stab at kernel programming resulted
+in a bug that took three years to track down and fix, and even then it
+was done by someone hacking OS/2. I'm referring to the sprintf function
+inside the kernel.
+
+I wrote sprintf in the summer of 1991. Linus needed some easy way to print
+messages from the kernel, and did not then know how to use the stdarg
+mechanism to implement variable argument lists to functions. I see
+some people in the audience shaking their heads. Yes, it's true. There
+was a time when Linus didn't know everything. Really. Trust me. I was
+there.
+
+Anyway, I wrote a simple sprintf for Linus, to show him how it was done,
+and he used in the Linux kernel, after some modification. The bug was in
+the handling of an asterisk as the width for an output field. I forgot
+to increment a pointer past the asterisk, so the code had no chance of
+working for this case. No chance at all. This was clear to anyone who
+tried it. Obviously, I didn't, which means that I probably shouldn't be
+employed to write software. In 1994, three years later, one Friedemann
+Baitinger noticed the bug, and sent me a patch.  He was using the
+sprintf while debugging a device driver he was writing for OS/2.
+
+Anyway, back to who I am. I've been a friend of Linus since before
+Linux even existed. We met as first-year students in 1988. When he
+started to write Linux, I naturally followed things with interest and
+some jealosy. Except for sprintf, I didn't really participate, since
+I'm not a hacker, just a wannabe. When Linux and its community grew, I
+took part in various non-technical things that needed doing. For
+example, I helped created the Linux Documentation Project, and
+co-moderated comp.os.linux.announce, also known as cola.
+
+My moderating cola is the reason I'm here. When I had been doing it
+for five years, that is, in last December, I decided to retire from it
+and found a successor. In my farewell note to the group, I jokingly
+said that I wouldn't mind getting a trip around the world, if anyone
+wanted to send me one. It happens that some people don't understand
+jokes, and it seems that Marc Ewing is one of them. He told me I would
+come here to give a talk and he wouldn't take no for an answer. If you
+feel bored now, you know whom to blame.
+
+
+## Linus the god
+
+You all know Linus, at least by reputation. The wonder-child. The
+coding wizard. The hacker god. Well, it wasn't always like that. What
+I'm about to say next may shock the most devout Linuxers in the audience,
+but that's all right. This is a free country, and anyway, I've been
+promised police protection.
+
+I've already told you that Linus didn't always know everything. I'm
+not saying he isn't omniscient now. After all, he might now be a god
+and I'm not lightning-proof. So I'm only going to talk about old
+times. I'm sure he'll forgive me that.
+
+Not only did Linus not know everything about C, he also didn't know
+anything about PC's. In fact, he didn't even have one when I first met
+him. When he bought his first PC, he didn't even start hacking it
+right away. Instead, he played computer games, especially one called
+something like Prince of Persia. I've never understood that part of him.
+I mean, what's a computer game worth if it doesn't simulate
+playing cards? No, give me solitaire, if you want me to play with a
+computer.
+
+Even a few years later, when Linux was already a success, Linus had
+this strange fascination for silly computer games, such as Doom and
+Quake. By then he'd already learned some social skills and knew that one
+just doesn't admit to liking computer games after the age of 12.
+So when he was playin Doom, he used to explain that he was
+debugging and stress testing memory management and the X server.
+
+When Linus decides to learn something, he really learns it, and usually
+quickly. This is why he may now be omniscient. I remember once when we
+were being questioned about some math home work. I happened to know Linus
+hadn't done it. But bold as he was even then, he claimed to have done
+them anyway. As luck would have it, the teacher wanted Linus to present
+his solution to the class. On the way to the blackboard, Linus read the
+problem, then stood in front of the board for a second or two, and went
+on to present a solution that the teacher couldn't understand. Linus
+can be quite annoying like that.
+
+Once, when Linus was abroad at some conference or another, he modified
+my shell setup scripts so that when I logged in, it looked as if I was
+using MS-DOS. That was fun, of course, but it begged for revenge. This
+happened while we were sharing an office at the university, so once
+when Linus went out to get something to drink or something, I created an
+alias for startx for him. My alias first ran the real startx, and then
+printed out a kernel `Oops' message. The first time Linus noticed this
+made him a bit worried, but he logged out and cleared the screen too fast
+to read it, but the second time made him really worried. I'd copied the
+`Oops' message from linux-kernel, and of course it didn't suit Linus's
+kernel at all. He had gotten as far as decoding the message by hand,
+and muttering something like ``Why is it crashing there? It can't crash
+there!'', when I burst out laughing and told him what I'd done. Linus
+was quite relieved and never tried any practical jokes on me again.
+
+
+## The early times
+
+Let's go back to the spring of 1991. In January, Linus bought a PC.
+He'd been using a Sinclair QL before that, which, like much British
+computer stuff, was ingenious and almost unusably different from
+everything else. Like every self-respecting hacker, Linus had written
+some software development tools of his own; an editor and an
+assembler, I think. He'd also modified the QL hardware a bit, to
+replace a broken keyboard, and to add a PC-compatible floppy drive.
+When he bought the PC, he wrote a device driver for the QL so he could
+move stuff from the QL to the PC.
+
+When he got up to speed with the PC, after having played
+enough Prince of Persia, he started learning about programming the PC.
+Especially assembly language programming, since only wimps use high
+level languages. I remember one day when he was quite proud for having
+written a strlen function in assembly. Gee, I was impressed.
+
+As I said, when Linus decides to learn, he really learns. A few weeks
+later he showed me two simple concurrent processes. One printed out
+A's as fast as it could, the other B's. That was much more fun to look
+at than his strlen, but not, I think, immediately as useful.
+
+As time progressed, Linus added keyboard and serial port drivers, so
+that he could use his modem from the PC. Normal people would have used
+one of the dozens of existing terminal emulators, but Linus had to
+write his own. After that, he spent a long time just reading netnews.
+Sorry, I mean of course that he was debugging his terminal emulation code
+by reading netnews. The emulator consisted of two processes, one reading
+the keyboard and writing to the serial port, the other reading the
+serial port and writing to the screen and emulating a terminal.
+
+At some point during this time Linus decided he wanted a Unix-like
+system at home, and the obvious choice back then was Minix, since it was
+the only thing he could afford. As it happened, Linus wasn't very
+happy with Minix, so he kept improving his terminal emulator, and
+modifying it to become more like an operating system. I guess we can
+conclude by now that he succeeded.
+
+The success of Linux wasn't automatic, and things might well have gone
+differently. For example, if the Hurd had been finished a few years
+ago, Linux probably wouldn't exist today. Or the BSD systems might
+have taken over the free operating system marketplace.
+
+However, things went as they did, and Linux prospered. The success has
+resulted in fame and also material rewards for rewards, including
+money. One of the first rewards wasn't money, but virtual
+beer. You may have heard the expression, since it is still used
+somewhat, but these days it is just a general good wish phrase.
+Originally, it had a very concrete meaning. Two guys from Oxford,
+England, calling themselves the Oxford Beer Trolls, wanted to buy
+Linus some beer, but since it was impractical to move either
+themselves, Linus, or the beer physically around, they asked me to
+receive the money via mail, and buy Linus beer with it, and that's
+what happened. So, virtual
+beer really means money, preferably money sent to me.
+
+Alas, people started sending Linus money directly. I'm not
+sure they did it out of gratitude, however, since they usually sent
+personal checks from the US. As Linus quickly learned, Finnish banks
+really, really hate checks. Especially personal checks. Particularly
+personal checks from the US. They invent all sorts of bureaucratic pit-falls
+and rules and fees to make it difficult and expensive to use checks.
+If you want to make trouble for a Finn, send him a personal check from
+the US. And that's not a joke.
+
+Linus also got some other stuff via mail. For example, a pair of 40
+megabyte hard disks. That was really nice, since it meant that Linus
+was finally able to keep some backups. Not that he did, of course.
+One of his well-known quotes is: "Backups are for wimps. Real men
+upload their data to an FTP site and have everyone else mirror it." He
+said that even after dialling his hard disk.
+
+At one point, Linus had implemented device files in /dev, and wanted to
+dial up the university computer and debug his terminal emulation code
+again. So he starts his terminal emulator program and tells it to use

(Diff truncated)
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 8fe8a6e..325fccd 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -4,6 +4,7 @@
 
 #### **See also**
 
+* [[My CV|cv]]
 * [Dimbola](http://dimbola.org/)
 * [Free Thursday](http://free-thursday.pieni.net/)
 * [Kalastuskievari](http://kalastuskievari.fi/)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 519e3ad..af9d078 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -36,6 +36,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [the.scene](http://www.welcometothescene.com/)
 * [Sita Sings the Blues](http://www.sitasingstheblues.com/)
 * [Steal This Film](http://www.stealthisfilm.com/Part2/download.php)
+* [Valkaama](http://www.valkaama.com/)
 
 # Unsorted
 

diff --git a/tag.mdwn b/tag.mdwn
index a1fbeb4..1575299 100644
--- a/tag.mdwn
+++ b/tag.mdwn
@@ -1,3 +1,3 @@
 All tags used on this site:
 
-[[!pagestats pages="tag/*"]] [essay topics ](http://www.mightystudents.com/)
+[[!pagestats pages="tag/*"]]

diff --git a/tag.mdwn b/tag.mdwn
index 1575299..a1fbeb4 100644
--- a/tag.mdwn
+++ b/tag.mdwn
@@ -1,3 +1,3 @@
 All tags used on this site:
 
-[[!pagestats pages="tag/*"]]
+[[!pagestats pages="tag/*"]] [essay topics ](http://www.mightystudents.com/)

diff --git a/links.mdwn b/links.mdwn
index c087043..cfafbae 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -61,6 +61,7 @@ incarnation of that web page.
 
 **User groups:***
 [HUMBUG (Brisbane)](http://www.humbug.org.au/)
+[NZPUG](http://nzpug.org/)
 
 **Upstreams:**
 [Sound Converter](http://soundconverter.berlios.de/)

diff --git a/links.mdwn b/links.mdwn
index bf9a051..c087043 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -59,6 +59,9 @@ incarnation of that web page.
 [Driver check](http://kmuto.jp/debian/hcl/)
 [OpenWRT](http://openwrt.org/)
 
+**User groups:***
+[HUMBUG (Brisbane)](http://www.humbug.org.au/)
+
 **Upstreams:**
 [Sound Converter](http://soundconverter.berlios.de/)
 [moreutils](http://kitenet.net/~joey/code/moreutils/)

diff --git a/cv.mdwn b/cv.mdwn
index 7923ff3..cdb39ed 100644
--- a/cv.mdwn
+++ b/cv.mdwn
@@ -104,6 +104,8 @@ use, with AutoCAD.
   - [Sound Converter](http://soundconverter.berlios.de/), a GUI program
     to convert audio files to other formats. Now maintained and developed
     by Gautier Portet.
+  - Enemies of Carlotta, a mailing list manager. No longer actively
+    developed.
   - isutf8, part of [moreutils](http://kitenet.net/~joey/code/moreutils/),
     a tool for determining if a file is correctly UTF-8 encoded. Written
     to aid my ISO-8859-1 to Unicode transition.

diff --git a/links.mdwn b/links.mdwn
index 6e8f301..bf9a051 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -129,6 +129,7 @@ incarnation of that web page.
 [Tollef's free relay](http://freerelay.err.no/)
 [Taking care of your domain](http://www.ripe.net/ripe/docs/ripe-114.html)
 [self-signed certs](http://sial.org/howto/openssl/self-signed/)
+[iwantmyname](http://iwantmyname.com/)
 
 **General net:**
 [feed validator](http://feedvalidator.org/)

diff --git a/cv.mdwn b/cv.mdwn
index 47ba732..7923ff3 100644
--- a/cv.mdwn
+++ b/cv.mdwn
@@ -115,6 +115,8 @@ use, with AutoCAD.
   - [Obnam](http://braawi.org), a backup program.
 * Linux. I helped start its development in 1991, and have been
   part of the Linux world ever since.
+  - Wrote sprintf, used by kernel logging engine. This is my only kernel
+    code contribution.
   - Moderator of the Usenet newsgroup comp.os.linux.announce 1992-1997
   - Helped start and run the Linux Documentation Project, from 1992
     to about 1997. Wrote the 

diff --git a/cv.mdwn b/cv.mdwn
index 01d09d7..47ba732 100644
--- a/cv.mdwn
+++ b/cv.mdwn
@@ -117,7 +117,9 @@ use, with AutoCAD.
   part of the Linux world ever since.
   - Moderator of the Usenet newsgroup comp.os.linux.announce 1992-1997
   - Helped start and run the Linux Documentation Project, from 1992
-    to about 1997.
+    to about 1997. Wrote the 
+    [Linux System Administrators' Guide](http://tldp.org/guides.html),
+    since taken over by others.
   - [Debian](http://www.debian.org/) development 1996-2009. Now retired.
   - [Ubuntu](http://www.ubuntu.com/) development 2007-2009. Now retired.
 * Photography. I've been an amateur photographer since 2001, but do not

diff --git a/index.mdwn b/index.mdwn
index 048fb36..8b83474 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -10,6 +10,8 @@
 Welcome to my corner of cyberspace, where I display those parts of my
 persona that I wish the public to see.
 
+See my [[CV|cv]].
+
 This site is implemented as a [[!wikipedia Wiki]], using 
 [ikiwiki](http://ikiwiki.info).
 You may edit any page, but please use the discussion page for each

diff --git a/cv.mdwn b/cv.mdwn
new file mode 100644
index 0000000..01d09d7
--- /dev/null
+++ b/cv.mdwn
@@ -0,0 +1,140 @@
+[[!meta title="CV / Lars Wirzenius"]]
+
+## Contact information
+
+    Lars Wirzenius
+    Phone (Finland): +358 50 346 6626
+    Phone (NZ): +64212134174
+    E-mail: liw@liw.fi
+
+## Introduction
+
+I am a computer programmer, and have been programming since 1984.
+
+My main programming languages are C and Python. I know TDD, HTML, 
+TCP/IP, and many other acronyms.
+
+I am an expert in the Linux environment. Linux and Unix environments
+are the only ones I am looking to work in.
+
+I am strongly in favor of free or open source software. 
+I prefer to not use or develop proprietary software. I am looking
+for ways to earn a living and save the world developing free software. 
+I prefer working for a small company rather than a large one.
+
+## Work and training
+
+**Consultant 2005-current.** I've worked on variety of projects for
+several clients. In 2005-2006 I was under contract to improve the
+technical quality of the Debian operating system, and as part of
+that work developed [piuparts](http://piuparts.debian.org/), 
+a package testing tool for checking
+that packages can be installed, upgraded, and removed without 
+problems.
+
+In 2007-2009 I contracted to Canonical, Ltd. to
+do Ubuntu development. As part of that I developed the [Computer
+Janitor](https://launchpad.net/computer-janitor) 
+tool to find unnecessary packages, and do some configuration
+tweaks, such as adding or removing mount options to improve
+performance.
+
+**[Oliotalo](http://www.oliotalo.fi/) 2002-2004.** Oliotalo develops
+applications for machine to machine communication: embedded computers
+are attached to vehicles, waste collectors, or other such machines, and
+communicate wirelessly with a server. This allows remote monitoring and
+telemetry and improves logistics and lowers maintenance costs. I have
+designed and implemented the embedded Lisp interpreter
+[Hedgehog](http://hedgehog.oliotalo.fi/) with which the embedded
+computers are programmed in Oliotalo projects. Using Hedgehog, I have
+developed alone and with others several embedded applications. I have
+also been responsible for Linux system administration for the company.
+
+**pieni.net, 2001-** Started a miniature shell-server ISP on the
+side with two friends.
+
+**Akumiitti Telematics / Keko Technologies 2001-2002.**
+Keko developed a platform for machine to machine communication.
+I designed and implemented an embedded software platform, the KEKO
+Terminal. Keko went bankrupt just as the product was getting
+finished for its first release, but before the product could be used.
+
+**Wapit Ltd 1999-2001.** I was project and team leader for the
+[Kannel](http://www.kannel.org/), an SMS and WAP gateway. Kannel is a
+multithreaded, multiprocess server that can handle high traffic loads. I
+was responsible for architectural design, implementation, and project
+management. Wapit went bankrupt, but Kannel is still in commercial
+production use worldwide.
+
+**Helsinki University of Technology / CS laboratory / [HiBase
+project](http://hibase.cs.hut.fi/) 1997-1999.** HiBase was a research
+project to develop a main memory database and functional programming
+language. The project ended in 2001 when Nokia withdrew funding. I
+participated in its implementation by doing C programming and Linux
+system administration.
+
+**University of Helsinki / Department of Computer Science
+1993-1996.** I was a teaching assistant, helping students with
+homework and checking their answers. I gave one lectured course on
+C programming.
+
+**Translator examination board summer 1990.** I implemented a database
+of official translators with dBase IV.
+
+**University of Helsinki / Department of Computer Science 1988-2002.**
+Student, part-time studies from 1993 onwards on account of working full
+time. Not graduated.
+
+**Extor Oy summer 1988.** I made technical drawings, mainly for sales
+use, with AutoCAD.
+
+
+## Natural languages
+
+* Finnish: native language (mother's side)
+* Swedish: native language (father's side)
+* English: excellent
+* German: very poor
+
+
+## Hobbies
+
+* Free software, 1990-. I develop software as a hobby,
+  although I never publish most of it. Some exceptions:
+  - [Sound Converter](http://soundconverter.berlios.de/), a GUI program
+    to convert audio files to other formats. Now maintained and developed
+    by Gautier Portet.
+  - isutf8, part of [moreutils](http://kitenet.net/~joey/code/moreutils/),
+    a tool for determining if a file is correctly UTF-8 encoded. Written
+    to aid my ISO-8859-1 to Unicode transition.
+  - [CoverageTestRunner](http://code.liw.fi/coverage-test-runner/), 
+    runs Python unit tests and fails them if they
+    don't have full coverage (not counting explicitly excluded parts)
+  - [Dimbola](http://dimbola.org/), a new attempt at a photo manager
+    a la Adobe Lightroom
+  - [Obnam](http://braawi.org), a backup program.
+* Linux. I helped start its development in 1991, and have been
+  part of the Linux world ever since.
+  - Moderator of the Usenet newsgroup comp.os.linux.announce 1992-1997
+  - Helped start and run the Linux Documentation Project, from 1992
+    to about 1997.
+  - [Debian](http://www.debian.org/) development 1996-2009. Now retired.
+  - [Ubuntu](http://www.ubuntu.com/) development 2007-2009. Now retired.
+* Photography. I've been an amateur photographer since 2001, but do not
+  currently publish my pictures anywhere.
+* [Effi](http://effi.org/) is a political organization protecting
+  basic human freedoms; sister organization to the American EFF.
+  Board member 2009.
+* [Alter Ego ry](http://www.helsinki.fi/jarj/ae/) is the role-playing
+  assocation at the University of Helsinki. Board member 2000, 
+  listmaster 2001-2003.
+* [IKI ry](http://www.iki.fi/) is a non-profit association for 
+  providing permanent e-mail and web addresses. 
+  Board member 1996-1998, 2002.
+* OtaDATA ry is an assocation for people interested in computers.
+  Board member 1997, vice president 1998.
+* Usenet news [sfnet hierarchy](http://www.cs.tut.fi/sfnet/) 
+  co-ordinator 1995, in charge of deciding which groups to create.
+* [Spektrum rf](http://www.helsinki.fi/~fyl_spek/) is a student association
+  for computer science, math, physics, and chemistry students at the
+  University of Helsinki. Board member 1994, also other duties 1991-1995.

diff --git a/sidebar.mdwn b/sidebar.mdwn
index 1604789..8fe8a6e 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -7,3 +7,8 @@
 * [Dimbola](http://dimbola.org/)
 * [Free Thursday](http://free-thursday.pieni.net/)
 * [Kalastuskievari](http://kalastuskievari.fi/)
+
+<hr />
+
+All content on this site is copyrighted by
+Lars Wirzenius and possibly other authors (it's a wiki), and licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 Unported License</a>.

diff --git a/tag/program.mdwn b/tag/program.mdwn
index e986d1b..640da19 100644
--- a/tag/program.mdwn
+++ b/tag/program.mdwn
@@ -1,4 +1,3 @@
-This tag is for [research papers](http://www.superiorpapers.com/)
- about computer programs.
+This tag is for computer programs.
 
 [[!inline archive=yes feeds=no sort=title pages="link(tag/program)"]]

minor edit
diff --git a/tag/program.mdwn b/tag/program.mdwn
index 640da19..e986d1b 100644
--- a/tag/program.mdwn
+++ b/tag/program.mdwn
@@ -1,3 +1,4 @@
-This tag is for computer programs.
+This tag is for [research papers](http://www.superiorpapers.com/)
+ about computer programs.
 
 [[!inline archive=yes feeds=no sort=title pages="link(tag/program)"]]

diff --git a/summain.mdwn b/summain.mdwn
index fb59472..a55c631 100644
--- a/summain.mdwn
+++ b/summain.mdwn
@@ -6,4 +6,4 @@ and a checksum of their content for regular files. The manifest can be
 generated for a directory tree at different points in time and compared
 (with diff) to see if something has changed.
 
-* Version control: `bzr get http://code.liw.fi/summain/bzr/`
+* Version control: `bzr get http://code.liw.fi/summain/bzr/trunk/`

diff --git a/summain.mdwn b/summain.mdwn
index 83ec3bc..fb59472 100644
--- a/summain.mdwn
+++ b/summain.mdwn
@@ -6,4 +6,4 @@ and a checksum of their content for regular files. The manifest can be
 generated for a directory tree at different points in time and compared
 (with diff) to see if something has changed.
 
-* Version control (bzr): <http://code.liw.fi/summain/bzr/>
+* Version control: `bzr get http://code.liw.fi/summain/bzr/`

diff --git a/summain.mdwn b/summain.mdwn
new file mode 100644
index 0000000..83ec3bc
--- /dev/null
+++ b/summain.mdwn
@@ -0,0 +1,9 @@
+[[!meta title="Summain"]]
+[[!tag program]]
+
+Summain generates file manifests, which contain metadata about the files,
+and a checksum of their content for regular files. The manifest can be
+generated for a directory tree at different points in time and compared
+(with diff) to see if something has changed.
+
+* Version control (bzr): <http://code.liw.fi/summain/bzr/>

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 6c6fc17..519e3ad 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -57,6 +57,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Ten Sites for Free and Legal Torrents](http://newteevee.com/2007/03/03/ten-sites-for-free-and-legal-torrents/)
 * [30+ List of Computer Science Video Lectures (Over 200 Videos)](http://linkmingle.com/list/30-plus-List-of-Computer-Science-Video-Lectures-Over-200-Videos-video-lectures)
 * [John Goerzen](http://delicious.com/jgoerzen/free%20ebooks)
+* [Computer science e-books](http://mic-ro.com/informatik/ebooks.html)
 
 # Limit to some geographical regions
 

diff --git a/contact.mdwn b/contact.mdwn
index 8d1103c..4f5457c 100644
--- a/contact.mdwn
+++ b/contact.mdwn
@@ -1,12 +1,8 @@
 [[!meta title="Contact information"]]
 
-If I don't know you, I prefer it if you contact me via e-mail: [liw@liw.fi](mailto:liw@liw.fi).
+My public contact data is available as a [vCard](http://files.liw.fi/liw.vcf).
 
-I may also be available on IRC, as `liw` on IRCnet, OFTC, or Freenode.
-But I prefer e-mail as the first method of contact.
-
-I am currently using PGP key 2D9ACC8E, but will soon be switching to
-[5E8511F9](http://files.liw.fi/pgp.txt).
-
-I have a telephone, and a snail-mail address. If I know you, ask for the number
-if you dont' have it already.
+* E-mail: [liw@liw.fi](mailto:liw@liw.fi)
+* PGP: [5E8511F9](http://files.liw.fi/pgp.txt) (old key 2D9ACC8E works)
+* IRC: `liw` on IRCnet, OFTC, and Freenode
+* Telephone for emergencies only: +358 50 346 6626

diff --git a/links.mdwn b/links.mdwn
index f7567d2..6e8f301 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -120,6 +120,7 @@ incarnation of that web page.
 [FUSE](http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/)
 [EBS](http://www.joelonsoftware.com/items/2007/10/26.html)
 [Euler](http://projecteuler.net/index.php?section=about)
+[Meliae](http://jam-bazaar.blogspot.com/2009/11/memory-debugging-with-meliae.html)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/links.mdwn b/links.mdwn
index 6de95b1..f7567d2 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -119,6 +119,7 @@ incarnation of that web page.
 [Sqlite query language](http://www.sqlite.org/lang.html)
 [FUSE](http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/)
 [EBS](http://www.joelonsoftware.com/items/2007/10/26.html)
+[Euler](http://projecteuler.net/index.php?section=about)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 79930cb..6c6fc17 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -8,6 +8,7 @@ or e-mail me at liw@liw.fi. Thanks.
 
 # Books
 
+* [Baen Free Library](http://www.baen.com/library/)
 * [Bookstacks](http://bookstacks.org/)
 * [Computer Programming with GNU Smalltalk](http://www.canol.info/books/computer_programming_using_gnu_smalltalk/computer_programming_using_gnu_smalltalk.zip)
 * [Feedbooks](http://www.feedbooks.com/)

diff --git a/links.mdwn b/links.mdwn
index 3d8abfa..6de95b1 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -118,6 +118,7 @@ incarnation of that web page.
 [Name generator](http://online-generator.com/name-generator/project-name-generator.php)
 [Sqlite query language](http://www.sqlite.org/lang.html)
 [FUSE](http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/)
+[EBS](http://www.joelonsoftware.com/items/2007/10/26.html)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/links.mdwn b/links.mdwn
index b5e1613..3d8abfa 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -187,3 +187,4 @@ incarnation of that web page.
 [Riitele](http://www.tukiasema.net/teemat/artikkeli.asp?docID=59)
 [Pyramid Method](http://calnewport.com/blog/2009/06/03/the-pyramid-method-a-simple-strategy-for-becoming-exceptionally-good)
 [OnStartups Answers](http://answers.onstartups.com/)
+[Nerd handbook](http://www.randsinrepose.com/archives/2007/11/11/the_nerd_handbo.html)

diff --git a/sidebar.mdwn b/sidebar.mdwn
index 99bf306..1604789 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -4,5 +4,6 @@
 
 #### **See also**
 
+* [Dimbola](http://dimbola.org/)
 * [Free Thursday](http://free-thursday.pieni.net/)
 * [Kalastuskievari](http://kalastuskievari.fi/)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index ed15337..79930cb 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -2,9 +2,8 @@
 [[!tag link]]
 
 This is a small list of links to sites with **legal** no-cost ("gratis")
-content. I have not actually verified them, I'm currently just collecting
-links. If you have more, please add them to the discussion page (see end
-of page for link),
+content. I have not actually verified them, I'm just collecting
+links. If you have more, please add them to yourself (this is a wiki),
 or e-mail me at liw@liw.fi. Thanks.
 
 # Books

progbox deleted as it doesn't work right now
diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 500f89b..ed15337 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -46,7 +46,6 @@ or e-mail me at liw@liw.fi. Thanks.
 * [LegalTorrents](http://legaltorrents.com/) (currently in beta)
 * [LegitTorrents](http://www.legittorrents.info/)
 * [Miro](http://www.getmiro.com/)
-* [Progbox](http://www.progbox.co.uk/site/)
 * [Public domain torrents](http://www.publicdomaintorrents.com/)
 * [Revision3](http://revision3.com/)
 * [TorrentFreak](http://www.torrentfreak.com/)

diff --git a/links.mdwn b/links.mdwn
index 72aafbe..b5e1613 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -186,3 +186,4 @@ incarnation of that web page.
 [6 Brainwashing Techniques](http://www.cracked.com/article_16656_6-brainwashing-techniques-theyre-using-on-you-right-now.html)
 [Riitele](http://www.tukiasema.net/teemat/artikkeli.asp?docID=59)
 [Pyramid Method](http://calnewport.com/blog/2009/06/03/the-pyramid-method-a-simple-strategy-for-becoming-exceptionally-good)
+[OnStartups Answers](http://answers.onstartups.com/)

removed
diff --git a/no-www-no-work.mdwn b/no-www-no-work.mdwn
deleted file mode 100644
index 2285381..0000000
--- a/no-www-no-work.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!meta title="No www, no working page"]]
-[[!tag link]]
-
-This page collects web sites that don't work unless you prefix their
-domain with www. In other words, if `http://www.example.com` works
-but `http://example.com` does not, or gives another site,
-then the site is eligible for this list. The exception is if the www-less
-domain does not even exist.
-
-It's convenient if www-less domains work: you can type example.com to
-the browser's URL bar, and it will find the right site. (This works
-if the www-less domain name doesn't resolve to a host. That's why there's
-an exception for that.)
-
-If you have more, please add them here. Thanks.
-
-Kudos to Nakkel for triggering this list.
-
-* <http://isoomena.fi/> (gives some intranet site instead of the mall)
-* <http://onoff.fi/>
-* <http://jarvenpaa.fi/> (takes forever to respond)
-* <http://uusikaupunki.fi/> (different contents from <http://www.uusikaupunki.fi>)
-* <http://tieturi.fi/> (unknown host)
-* <http://nurmijarvi.fi/> (does not respond at all)
-* <http://minedu.fi/> (unknown host)
-* <http://presidentti.fi/> (unknown host)
-* <http://tradeka.fi/> (unknown host)
-* <http://nasa.gov/> (unknown host)
-* <http://harvard.edu/> (unknown host)
-* <http://sokos.fi/> (times out)

diff --git a/links.mdwn b/links.mdwn
index 16cd885..72aafbe 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -63,7 +63,7 @@ incarnation of that web page.
 [Sound Converter](http://soundconverter.berlios.de/)
 [moreutils](http://kitenet.net/~joey/code/moreutils/)
 [coverage.py](http://nedbatchelder.com/code/modules/coverage.html)
-[Dimbola](https://launchpad.net/~dimbola-team)
+[Dimbola](http://dimbola.org)
 
 **People:**
 [Arno Wirzenius](http://www.iki.fi/arno.w/)

diff --git a/free-software-website.mdwn b/free-software-website.mdwn
index 6df81fe..722a7db 100644
--- a/free-software-website.mdwn
+++ b/free-software-website.mdwn
@@ -23,3 +23,5 @@ find the following information:
 This is related to content, not to its presentation. Presentation should
 make it easy to find all the above information, but is otherwise a topic
 too large for this little text.
+
+See also: [How you know your Free or Open Source Software Project is doomed to FAIL](http://spot.livejournal.com/308370.html).

diff --git a/links.mdwn b/links.mdwn
index e41d2c0..16cd885 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -38,10 +38,8 @@ incarnation of that web page.
 **Debian:**
 [debian.org](http://www.debian.org/)
 [debian.fi](http://debian.fi/)
-[iki@qa](http://qa.debian.org/developer.php?login=liw@iki.fi)
 [Manoj Python Policy](http://people.debian.org/~srivasta/manoj-policy/)
 [New Python Policy](http://wiki.debian.org/DebianPython/NewPolicy)
-[DEP5](http://dep.debian.net/deps/dep5/)
 
 **Ubuntu:**
 [cj bugs](https://bugs.launchpad.net/ubuntu/+source/computer-janitor)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index b835cd7..500f89b 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -10,6 +10,7 @@ or e-mail me at liw@liw.fi. Thanks.
 # Books
 
 * [Bookstacks](http://bookstacks.org/)
+* [Computer Programming with GNU Smalltalk](http://www.canol.info/books/computer_programming_using_gnu_smalltalk/computer_programming_using_gnu_smalltalk.zip)
 * [Feedbooks](http://www.feedbooks.com/)
 * [MobileRead's Free eBooks page](http://wiki.mobileread.com/wiki/Free_eBooks)
 * [Project Gutenberg](http://www.gutenberg.org/wiki/Main_Page)

diff --git a/links.mdwn b/links.mdwn
index c2b9670..e41d2c0 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -39,7 +39,6 @@ incarnation of that web page.
 [debian.org](http://www.debian.org/)
 [debian.fi](http://debian.fi/)
 [iki@qa](http://qa.debian.org/developer.php?login=liw@iki.fi)
-[liw@qa](http://qa.debian.org/developer.php?login=liw@liw.fi)
 [Manoj Python Policy](http://people.debian.org/~srivasta/manoj-policy/)
 [New Python Policy](http://wiki.debian.org/DebianPython/NewPolicy)
 [DEP5](http://dep.debian.net/deps/dep5/)

diff --git a/links.mdwn b/links.mdwn
index 05f4752..c2b9670 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -120,6 +120,7 @@ incarnation of that web page.
 [hashes for content-based addressing](http://valerieaurora.org/monkey.html)
 [Name generator](http://online-generator.com/name-generator/project-name-generator.php)
 [Sqlite query language](http://www.sqlite.org/lang.html)
+[FUSE](http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/links.mdwn b/links.mdwn
index 63ca905..05f4752 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -132,6 +132,7 @@ incarnation of that web page.
 **General net:**
 [feed validator](http://feedvalidator.org/)
 [showmyip](http://www.showmyip.com/)
+[pagerank](http://www.prchecker.info/check_page_rank.php)
 
 **Hardware:**
 [UBCD](http://ubcd.sourceforge.net/)

diff --git a/links.mdwn b/links.mdwn
index 786ab51..63ca905 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -119,6 +119,7 @@ incarnation of that web page.
 [Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
 [hashes for content-based addressing](http://valerieaurora.org/monkey.html)
 [Name generator](http://online-generator.com/name-generator/project-name-generator.php)
+[Sqlite query language](http://www.sqlite.org/lang.html)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

Finlit digi library
diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index ad60f65..b835cd7 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -15,6 +15,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Project Gutenberg](http://www.gutenberg.org/wiki/Main_Page)
 * [Projekti Lönnrot](http://www.lonnrot.net/) (in Finnish)
 * [World Digital Library](http://www.wdl.org/)
+* [Finnish Literature Society Digital Library](http://www.finlit.fi/kirjasto/digi/) (in Finnish)
 
 
 # Bands

diff --git a/links.mdwn b/links.mdwn
index 477bb3d..786ab51 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -118,6 +118,7 @@ incarnation of that web page.
 [zsync](http://zsync.moria.org.uk/)
 [Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
 [hashes for content-based addressing](http://valerieaurora.org/monkey.html)
+[Name generator](http://online-generator.com/name-generator/project-name-generator.php)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/links.mdwn b/links.mdwn
index 4065ebc..477bb3d 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -125,6 +125,7 @@ incarnation of that web page.
 [Kundenserver relaytest](http://relaytest.kundenserver.de/)
 [Tollef's free relay](http://freerelay.err.no/)
 [Taking care of your domain](http://www.ripe.net/ripe/docs/ripe-114.html)
+[self-signed certs](http://sial.org/howto/openssl/self-signed/)
 
 **General net:**
 [feed validator](http://feedvalidator.org/)

MobileRead's Free eBooks page added
diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 0eed5a0..ad60f65 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -11,10 +11,12 @@ or e-mail me at liw@liw.fi. Thanks.
 
 * [Bookstacks](http://bookstacks.org/)
 * [Feedbooks](http://www.feedbooks.com/)
+* [MobileRead's Free eBooks page](http://wiki.mobileread.com/wiki/Free_eBooks)
 * [Project Gutenberg](http://www.gutenberg.org/wiki/Main_Page)
 * [Projekti Lönnrot](http://www.lonnrot.net/) (in Finnish)
 * [World Digital Library](http://www.wdl.org/)
 
+
 # Bands
 
 * [Cantata Sangui](http://www.cantatasangui.com/)

diff --git a/links.mdwn b/links.mdwn
index 654a204..4065ebc 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -104,6 +104,7 @@ incarnation of that web page.
 **Programming:**
 [GNOME API](http://library.gnome.org/devel/)
 [PyGTK](http://www.pygtk.org/)
+[Python+gobject](http://web.archive.org/web/20080214201849/http://www.sicem.biz/personal/lgs/docs/gobject-python/gobject-tutorial.html)
 [GNOME platform](http://library.gnome.org/devel/platform-overview/stable/)
 [C-faq](http://c-faq.com/top.html)
 [K&amp;R2 answers](http://users.powernet.co.uk/eton/kandr2/index.html)

diff --git a/links.mdwn b/links.mdwn
index 8e0531a..654a204 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -102,8 +102,9 @@ incarnation of that web page.
 [speedtarrat.fi](http://www.speedtarrat.fi/)
 
 **Programming:**
-[Gnome API](http://library.gnome.org/devel/)
+[GNOME API](http://library.gnome.org/devel/)
 [PyGTK](http://www.pygtk.org/)
+[GNOME platform](http://library.gnome.org/devel/platform-overview/stable/)
 [C-faq](http://c-faq.com/top.html)
 [K&amp;R2 answers](http://users.powernet.co.uk/eton/kandr2/index.html)
 [The C10K problem](http://www.kegel.com/c10k.html)

diff --git a/sidebar.mdwn b/sidebar.mdwn
index 2f1befd..99bf306 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -6,4 +6,3 @@
 
 * [Free Thursday](http://free-thursday.pieni.net/)
 * [Kalastuskievari](http://kalastuskievari.fi/)
-* [Lapaluu](http://pieni.net/lapaluu/)

diff --git a/links.mdwn b/links.mdwn
index 1dbb9ba..8e0531a 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -142,6 +142,7 @@ incarnation of that web page.
 [UPstrap](http://www.upstrap-pro.com/)
 [Argyll](http://www.argyllcms.com/)
 [kamerahuolto](http://www.kamerahuolto.fi)
+[Color management](http://photo.net/learn/digital-photography-workflow/color-management/)
 
 **Online photo printing:**
 [Tunnin kuva](http://www.tunninkuva.fi)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 509010d..0eed5a0 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -26,6 +26,7 @@ or e-mail me at liw@liw.fi. Thanks.
 # Videos, movies
 
 * [Big Buck Bunny](http://www.bigbuckbunny.org/)
+* [Code Rush](http://clickmovement.org/content/code-rush-download)
 * [Internet Archive](http://www.archive.org/details/feature_films)
 * [NerdTV](http://www.pbs.org/cringely/nerdtv/shows/)
 * [the.scene](http://www.welcometothescene.com/)

diff --git a/links.mdwn b/links.mdwn
index 3c55f21..1dbb9ba 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -54,6 +54,7 @@ incarnation of that web page.
 [foundations team bugs](http://qa.ubuntu.com/reports/team-assigned/ubuntu-foundations-assigned-bug-tasks.html)
 [PPA](https://launchpad.net/~liw/+archive)
 [KVM](https://help.ubuntu.com/community/KVM)
+[Debugging Crashes](https://wiki.ubuntu.com/DebuggingProgramCrash)
 
 **Linux:**
 [LWN](http://lwn.net/)

diff --git a/links.mdwn b/links.mdwn
index 3647ad2..3c55f21 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -179,3 +179,4 @@ incarnation of that web page.
 [Ilmastotalkoot](http://ilmastotalkoot.fi/)
 [6 Brainwashing Techniques](http://www.cracked.com/article_16656_6-brainwashing-techniques-theyre-using-on-you-right-now.html)
 [Riitele](http://www.tukiasema.net/teemat/artikkeli.asp?docID=59)
+[Pyramid Method](http://calnewport.com/blog/2009/06/03/the-pyramid-method-a-simple-strategy-for-becoming-exceptionally-good)

diff --git a/contact.mdwn b/contact.mdwn
index abf4652..8d1103c 100644
--- a/contact.mdwn
+++ b/contact.mdwn
@@ -5,5 +5,8 @@ If I don't know you, I prefer it if you contact me via e-mail: [liw@liw.fi](mail
 I may also be available on IRC, as `liw` on IRCnet, OFTC, or Freenode.
 But I prefer e-mail as the first method of contact.
 
+I am currently using PGP key 2D9ACC8E, but will soon be switching to
+[5E8511F9](http://files.liw.fi/pgp.txt).
+
 I have a telephone, and a snail-mail address. If I know you, ask for the number
 if you dont' have it already.

diff --git a/keysigning.mdwn b/keysigning.mdwn
index d78c3bd..1e84538 100644
--- a/keysigning.mdwn
+++ b/keysigning.mdwn
@@ -1,7 +1,7 @@
 [[!meta title="Keysigning principles"]]
 [[!tag article]]
 
-I have recently created a new PGP key (5E8511F9). Here are the principles
+I have recently created a new PGP key ([5E8511F9](http://files.liw.fi/pgp.txt)). Here are the principles
 I will follow when signing other keys with this new key. They do not apply
 to signatures by my older keys.
 

diff --git a/keysigning.mdwn b/keysigning.mdwn
new file mode 100644
index 0000000..d78c3bd
--- /dev/null
+++ b/keysigning.mdwn
@@ -0,0 +1,18 @@
+[[!meta title="Keysigning principles"]]
+[[!tag article]]
+
+I have recently created a new PGP key (5E8511F9). Here are the principles
+I will follow when signing other keys with this new key. They do not apply
+to signatures by my older keys.
+
+1. My signature indicates I have verified the identity of the owner of the key.
+   It does not indicate anything else.
+1. I only sign keys of people I've met before, and can remember without being
+   prompted.
+1. For people I have known for years and have met many times, I do not need
+   government ID.
+1. For other people, I need a passport or a Finnish ID card, since these are
+   the only forms of ID I have any hope of recognizing as valid.
+1. I do not participate in keysigning parties.
+
+I am, however, happy to sign keys under these conditions.

diff --git a/links.mdwn b/links.mdwn
index c927795..3647ad2 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -114,6 +114,7 @@ incarnation of that web page.
 [rsync](http://www.samba.org/rsync/tech_report/)
 [zsync](http://zsync.moria.org.uk/)
 [Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
+[hashes for content-based addressing](http://valerieaurora.org/monkey.html)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)

diff --git a/links.mdwn b/links.mdwn
index 3c3e806..c927795 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -86,7 +86,6 @@ incarnation of that web page.
 [Heather Alexander](http://www.heatherlands.com/)
 [Amazon](http://www.amazon.com/)
 [Amazon UK](http://www.amazon.co.uk/)
-[DataClub](http://www.dataclub.fi/)
 [Pukufirma Lynoure](http://www.lynoure.com/)
 [Rajala](http://www.rajala.fi/)
 [Ruohonjuuri](http://www.bosoy.fi/ruohonjuuri/index.html)

diff --git a/links.mdwn b/links.mdwn
index d737a13..3c3e806 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -114,25 +114,17 @@ incarnation of that web page.
 [Code Coverage Lessons](http://homepage.mac.com/hey.you/lessons.html)
 [rsync](http://www.samba.org/rsync/tech_report/)
 [zsync](http://zsync.moria.org.uk/)
+[Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
 
 **Sysadmin:**
 [passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)
-
-**Mail:**
 [abuse.net relay tester](http://www.abuse.net/relay.html)
 [Kundenserver relaytest](http://relaytest.kundenserver.de/)
 [Tollef's free relay](http://freerelay.err.no/)
-
-**Web:**
-[DOCTYPE](http://www.alistapart.com/articles/doctype/)
-[webtypography.net](http://webtypography.net/)
-
-**IRC:**
-[channel modes](http://www.alien.net.au/irc/chanmodes.html)
+[Taking care of your domain](http://www.ripe.net/ripe/docs/ripe-114.html)
 
 **General net:**
 [feed validator](http://feedvalidator.org/)
-[Taking care of your domain](http://www.ripe.net/ripe/docs/ripe-114.html)
 [showmyip](http://www.showmyip.com/)
 
 **Hardware:**
@@ -142,14 +134,10 @@ incarnation of that web page.
 
 **Photography:**
 [photo.net](http://photo.net/)
-[EOS flash](http://photonotes.org/articles/eos-flash/)
-[RAWpository](http://glasslantern.com/RAWpository/index.php)
 [dcraw](http://www.cybercom.net/~dcoffin/dcraw/)
 [LL](http://www.luminous-landscape.com/)
 [RG](http://www.robgalbraith.com/)
 [TOP](http://theonlinephotographer.com/)
-[Open Source Photography](http://osp.wikidot.com/)
-[Great Battery Shootout](http://www.imaging-resource.com/ACCS/BATTS/BATTS.HTM)
 [UPstrap](http://www.upstrap-pro.com/)
 [Argyll](http://www.argyllcms.com/)
 [kamerahuolto](http://www.kamerahuolto.fi)
@@ -159,9 +147,6 @@ incarnation of that web page.
 [Fotonetti](http://www.fotonetti.fi)
 [Kuvaboxi](http://kuvaboxi.fi/)
 
-**Productivity:**
-[43folders](http://www.43folders.com/)
-
 **Home office:**
 [Stefan Didak's home office](http://www.stefandidak.com/office/)
 [Mitch Haile](http://www.biscade.com/office/)
@@ -187,13 +172,10 @@ incarnation of that web page.
 [Gaiman on defending icky](http://journal.neilgaiman.com/2008/12/why-defend-freedom-of-icky-speech.html)
 
 **Misc:**
-[Crypto-gram](http://www.counterpane.com/crypto-gram.html)
-[RISKS digest](http://catless.ncl.ac.uk/Risks/)
 [pgp pathfinder](http://pgp.cs.uu.nl/)
 [Hacker's Diet: Excercise](http://www.fourmilab.ch/hackdiet/www/chapter1_2_5.html)
 [How not to suck at socializing](http://www.lifehack.org/articles/communication/how-not-to-suck-at-socializing-dos-donts.html)
 [7 ways to overcome social awkwardness](http://www.thesimpledollar.com/2007/06/16/seven-ways-to-overcome-social-awkwardness-that-you-can-practice-anytime/)
-[Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
 [Ilmastotalkoot](http://ilmastotalkoot.fi/)
 [6 Brainwashing Techniques](http://www.cracked.com/article_16656_6-brainwashing-techniques-theyre-using-on-you-right-now.html)
 [Riitele](http://www.tukiasema.net/teemat/artikkeli.asp?docID=59)

diff --git a/links.mdwn b/links.mdwn
index 7ace9e6..d737a13 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -23,18 +23,9 @@ incarnation of that web page.
 [matka.fi](http://www.matka.fi/haku/fi/)
 [liikenteeseen.fi](http://liikenteeseen.fi)
 
-**Movies:**
-[Mine](http://liw.iki.fi/liw/movies.html)
-[IMDB](http://www.imdb.com)
-[Fawlty Towers](http://www.fawltysite.net/)
-[Elonet](http://www.elonet.fi/)
-[Secret Life of Machines](http://www.secretlifeofmachines.com/)
-
 **Books:**
-[Mine](http://liw.iki.fi/liw/books.html)
 [Lspace](http://www.ie.lspace.org)
 [Bujold Nexus](http://www.dendarii.com/)
-[Ursula K. LeGuin](http://www.ursulakleguin.com/)
 [Sherman's Lagoon](http://www.slagoon.com/)
 [Hacker's Delight](http://www.hackersdelight.org/)
 [Programming pearls](http://www.cs.bell-labs.com/cm/cs/pearls/)
@@ -47,9 +38,6 @@ incarnation of that web page.
 **Debian:**
 [debian.org](http://www.debian.org/)
 [debian.fi](http://debian.fi/)
-[release](http://release.debian.org/)
-[ftp-master](http://ftp-master.debian.org/)
-[turmzimmer](http://bts.turmzimmer.net/details.php)
 [iki@qa](http://qa.debian.org/developer.php?login=liw@iki.fi)
 [liw@qa](http://qa.debian.org/developer.php?login=liw@liw.fi)
 [Manoj Python Policy](http://people.debian.org/~srivasta/manoj-policy/)
@@ -66,16 +54,12 @@ incarnation of that web page.
 [foundations team bugs](http://qa.ubuntu.com/reports/team-assigned/ubuntu-foundations-assigned-bug-tasks.html)
 [PPA](https://launchpad.net/~liw/+archive)
 [KVM](https://help.ubuntu.com/community/KVM)
-[team UDSKarmic](https://wiki.ubuntu.com/FoundationsTeam/UDS/May2009)
-[UDSKarmic](https://wiki.ubuntu.com/UDSKarmic)
 
 **Linux:**
 [LWN](http://lwn.net/)
 [decss](http://mjr.iki.fi/decss/)
 [Driver check](http://kmuto.jp/debian/hcl/)
 [OpenWRT](http://openwrt.org/)
-[OpenPrinting DB](http://openprinting.org/printer_list.cgi)
-[Vapaa Suomi](http://www.vapaasuomi.fi/)
 
 **Upstreams:**
 [Sound Converter](http://soundconverter.berlios.de/)
@@ -102,35 +86,25 @@ incarnation of that web page.
 [Heather Alexander](http://www.heatherlands.com/)
 [Amazon](http://www.amazon.com/)
 [Amazon UK](http://www.amazon.co.uk/)
-[Abebooks](http://www.abebooks.com/)
 [DataClub](http://www.dataclub.fi/)
 [Pukufirma Lynoure](http://www.lynoure.com/)
 [Rajala](http://www.rajala.fi/)
-[vertaa.fi](http://www.vertaa.fi/)
-[Mike Johnston](http://www.lulu.com/bearpaw)
-[Dammenberg](http://www.dammenberg.fi/)
 [Ruohonjuuri](http://www.bosoy.fi/ruohonjuuri/index.html)
-[Kaakaopuu](http://www.kaakaopuu.fi/)
 [Varusteleka](http://www.varusteleka.fi/)
 [Fictionwise](https://www.fictionwise.com/)
 [Smashwords](http://www.smashwords.com/)
 
 **Organizations:**
-[IKI](http://www.iki.fi/index.html)
 [EFFI](http://www.effi.org/)
+[IKI](http://www.iki.fi/index.html)
 [Burger Games](http://www.burgergames.com)
 [Vilhelm](http://vilhelm.fi/)
 [speedtarrat.fi](http://www.speedtarrat.fi/)
-[Plusdent](http://www.plusdent.fi/)
-[YTV Sortti](http://www.ytv.fi/FIN/jatehuolto/vastaanotto/sortti_asemat/)
-[EDRI](http://www.edri.org/)
 
 **Programming:**
 [Gnome API](http://library.gnome.org/devel/)
 [PyGTK](http://www.pygtk.org/)
-[Paramiko](http://www.lag.net/paramiko/docs/)
 [C-faq](http://c-faq.com/top.html)
-[C standard](http://www.open-std.org/jtc1/sc22/wg14/)
 [K&amp;R2 answers](http://users.powernet.co.uk/eton/kandr2/index.html)
 [The C10K problem](http://www.kegel.com/c10k.html)
 [Portland Pattern Repository](http://c2.com/cgi/wiki)

diff --git a/links.mdwn b/links.mdwn
index 99e3a22..7ace9e6 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -13,7 +13,6 @@ incarnation of that web page.
 [Aukiolot](http://www.pty.fi/aukiolo2009.html)
 [Sää](http://weather.fi/Suomi/tasmasaa/Espoo)
 [Ukkoset](http://www.vaski.net/thunder/ukkonen2.htm)
-[StackOverflow](http://www.stackoverflow.com/)
 
 **Time tables:**
 [150A](http://aikataulut.ytv.fi/linjat/fi/s150.html)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 7708472..509010d 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -26,6 +26,7 @@ or e-mail me at liw@liw.fi. Thanks.
 # Videos, movies
 
 * [Big Buck Bunny](http://www.bigbuckbunny.org/)
+* [Internet Archive](http://www.archive.org/details/feature_films)
 * [NerdTV](http://www.pbs.org/cringely/nerdtv/shows/)
 * [the.scene](http://www.welcometothescene.com/)
 * [Sita Sings the Blues](http://www.sitasingstheblues.com/)

diff --git a/links.mdwn b/links.mdwn
index fbddddd..99e3a22 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -164,7 +164,6 @@ incarnation of that web page.
 
 **Hardware:**
 [UBCD](http://ubcd.sourceforge.net/)
-[Brother Linux drivers](http://solutions.brother.com/bsc_ph/os/linux/index.html)
 [CUPS/Foomatic for Brother P-touch](http://www.diku.dk/~panic/P-touch/)
 [QL550 on Linux](http://etc.nkadesign.com/Printers/QL550LabelPrinter)
 
@@ -221,7 +220,6 @@ incarnation of that web page.
 [Hacker's Diet: Excercise](http://www.fourmilab.ch/hackdiet/www/chapter1_2_5.html)
 [How not to suck at socializing](http://www.lifehack.org/articles/communication/how-not-to-suck-at-socializing-dos-donts.html)
 [7 ways to overcome social awkwardness](http://www.thesimpledollar.com/2007/06/16/seven-ways-to-overcome-social-awkwardness-that-you-can-practice-anytime/)
-[Stripper marketing](http://www.wisecamel.com/2007/06/20/10-sales-and-marketing-tips-i-learned-from-strippers/)
 [Tarkistusmerkkien laskentamenetelmi&auml;](http://koti.mbnet.fi/~thales/tarkmerk.htm)
 [Ilmastotalkoot](http://ilmastotalkoot.fi/)
 [6 Brainwashing Techniques](http://www.cracked.com/article_16656_6-brainwashing-techniques-theyre-using-on-you-right-now.html)

diff --git a/links.mdwn b/links.mdwn
index 044fef8..fbddddd 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -143,7 +143,7 @@ incarnation of that web page.
 [zsync](http://zsync.moria.org.uk/)
 
 **Sysadmin:**
-[passwordless ssh](http://wiki.hands.com//howto/passphraseless-ssh/)
+[passwordless ssh](http://wiki.hands.com/howto/passphraseless-ssh/)
 
 **Mail:**
 [abuse.net relay tester](http://www.abuse.net/relay.html)

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 95e40be..7708472 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -28,6 +28,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Big Buck Bunny](http://www.bigbuckbunny.org/)
 * [NerdTV](http://www.pbs.org/cringely/nerdtv/shows/)
 * [the.scene](http://www.welcometothescene.com/)
+* [Sita Sings the Blues](http://www.sitasingstheblues.com/)
 * [Steal This Film](http://www.stealthisfilm.com/Part2/download.php)
 
 # Unsorted

diff --git a/links.mdwn b/links.mdwn
index 58e3295..044fef8 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -142,6 +142,9 @@ incarnation of that web page.
 [rsync](http://www.samba.org/rsync/tech_report/)
 [zsync](http://zsync.moria.org.uk/)
 
+**Sysadmin:**
+[passwordless ssh](http://wiki.hands.com//howto/passphraseless-ssh/)
+
 **Mail:**
 [abuse.net relay tester](http://www.abuse.net/relay.html)
 [Kundenserver relaytest](http://relaytest.kundenserver.de/)

diff --git a/links.mdwn b/links.mdwn
index 5f15623..58e3295 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -182,6 +182,7 @@ incarnation of that web page.
 **Online photo printing:**
 [Tunnin kuva](http://www.tunninkuva.fi)
 [Fotonetti](http://www.fotonetti.fi)
+[Kuvaboxi](http://kuvaboxi.fi/)
 
 **Productivity:**
 [43folders](http://www.43folders.com/)

diff --git a/links.mdwn b/links.mdwn
index a261399..5f15623 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -82,6 +82,7 @@ incarnation of that web page.
 [Sound Converter](http://soundconverter.berlios.de/)
 [moreutils](http://kitenet.net/~joey/code/moreutils/)
 [coverage.py](http://nedbatchelder.com/code/modules/coverage.html)
+[Dimbola](https://launchpad.net/~dimbola-team)
 
 **People:**
 [Arno Wirzenius](http://www.iki.fi/arno.w/)

diff --git a/links.mdwn b/links.mdwn
index e620e91..a261399 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -139,6 +139,7 @@ incarnation of that web page.
 [Hsieh hash](http://www.azillionmonkeys.com/qed/hash.html)
 [Code Coverage Lessons](http://homepage.mac.com/hey.you/lessons.html)
 [rsync](http://www.samba.org/rsync/tech_report/)
+[zsync](http://zsync.moria.org.uk/)
 
 **Mail:**
 [abuse.net relay tester](http://www.abuse.net/relay.html)

diff --git a/links.mdwn b/links.mdwn
index c589101..e620e91 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -91,6 +91,7 @@ incarnation of that web page.
 [Verkkokauppa](http://www.verkkokauppa.com/)
 [Damicon Kraa](http://www.damicon.fi/)
 [linuxkauppa](http://www.linuxkauppa.fi/)
+[Mäkisen paja](http://www.atkkierratys.com/)
 
 **Approved content sources:**
 [Equal Dreams](http://www.equaldreams.com/)

diff --git a/index.mdwn b/index.mdwn
index aa55152..048fb36 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -3,7 +3,7 @@
 
 [[!meta title="Welcome"]]
 
-<img href="http://files.liw.fi/lars_ja_orava.jpg"
+<img src="http://files.liw.fi/lars_ja_orava.jpg"
      alt="Photo by Soile Mottisenkangas"
      class="floatTR" />
 

diff --git a/index.mdwn b/index.mdwn
index 14804ea..aa55152 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -3,8 +3,9 @@
 
 [[!meta title="Welcome"]]
 
-[[!img liw-by-soile-madrid.jpg alt="Photo by Soile Mottisenkangas"
-      class="floatTR" link=no]]
+<img href="http://files.liw.fi/lars_ja_orava.jpg"
+     alt="Photo by Soile Mottisenkangas"
+     class="floatTR" />
 
 Welcome to my corner of cyberspace, where I display those parts of my
 persona that I wish the public to see.

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index d0c76a8..95e40be 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -21,6 +21,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Severed Fifth](http://severedfifth.com/)
 * [Turmion kätilöt](http://www.raharecords.com/)
 * [Viola](http://www.violamusicclub.com/)
+* [Wainas](http://www.wainas.net/)
 
 # Videos, movies
 

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index e9a2916..d0c76a8 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -20,6 +20,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Cantata Sangui](http://www.cantatasangui.com/)
 * [Severed Fifth](http://severedfifth.com/)
 * [Turmion kätilöt](http://www.raharecords.com/)
+* [Viola](http://www.violamusicclub.com/)
 
 # Videos, movies
 

diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index 8af3fab..e9a2916 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -13,6 +13,7 @@ or e-mail me at liw@liw.fi. Thanks.
 * [Feedbooks](http://www.feedbooks.com/)
 * [Project Gutenberg](http://www.gutenberg.org/wiki/Main_Page)
 * [Projekti Lönnrot](http://www.lonnrot.net/) (in Finnish)
+* [World Digital Library](http://www.wdl.org/)
 
 # Bands
 

diff --git a/lodju.mdwn b/lodju.mdwn
index d4d5df1..5127838 100644
--- a/lodju.mdwn
+++ b/lodju.mdwn
@@ -1,4 +1,5 @@
 [[!meta title="Lodju"]]
+[[!tag program]]
 
 Once upon a time, I wrote a program to manage my digital photo collection.
 That project died off in about 2004.

diff --git a/lodju.mdwn b/lodju.mdwn
new file mode 100644
index 0000000..d4d5df1
--- /dev/null
+++ b/lodju.mdwn
@@ -0,0 +1,10 @@
+[[!meta title="Lodju"]]
+
+Once upon a time, I wrote a program to manage my digital photo collection.
+That project died off in about 2004.
+
+I am now writing some new tools for the same task, and re-using the name.
+
+I keep the code in bzr:
+
+* <http://code.liw.fi/lodju/bzr/trunk>

diff --git a/links.mdwn b/links.mdwn
index cd2f3d9..c589101 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -63,6 +63,7 @@ incarnation of that web page.
 [liw's bugs](https://bugs.launchpad.net/~liw/+bugs)
 [liw's packages' bugs](https://bugs.launchpad.net/~liw/+packagebugs)
 [ubuntu@launchpad](https://bugs.launchpad.net/ubuntu)
+[ubuntu uploads](https://launchpad.net/ubuntu/jaunty/+queue)
 [foundations team bugs](http://qa.ubuntu.com/reports/team-assigned/ubuntu-foundations-assigned-bug-tasks.html)
 [PPA](https://launchpad.net/~liw/+archive)
 [KVM](https://help.ubuntu.com/community/KVM)

diff --git a/links.mdwn b/links.mdwn
index 4ef6847..cd2f3d9 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -184,10 +184,9 @@ incarnation of that web page.
 
 **Home office:**
 [Stefan Didak's home office](http://www.stefandidak.com/office/)
+[Mitch Haile](http://www.biscade.com/office/)
 [Ring Table](http://www.tmproductions.com/RingTable/)
 [Tame cables](http://www.pcworld.com/article/92925/stepbystep_eight_tips_to_tame_cables.html)
-[GTD with multiple monitors](http://ggtd.wordpress.com/2008/03/11/how-i-gtd-with-multiple-monitors/)
-[Mitch Haile](http://www.biscade.com/office/)
 
 **Travel/transport:**
 [International power and plugs](http://www.dbicorporation.com/internat/intpower.htm)

diff --git a/links.mdwn b/links.mdwn
index 948b8ee..4ef6847 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -139,7 +139,6 @@ incarnation of that web page.
 [rsync](http://www.samba.org/rsync/tech_report/)
 
 **Mail:**
-[Mail-Followup-To](http://cr.yp.to/proto/replyto.html)
 [abuse.net relay tester](http://www.abuse.net/relay.html)
 [Kundenserver relaytest](http://relaytest.kundenserver.de/)
 [Tollef's free relay](http://freerelay.err.no/)

diff --git a/links.mdwn b/links.mdwn
index 9b93732..948b8ee 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -138,22 +138,14 @@ incarnation of that web page.
 [Code Coverage Lessons](http://homepage.mac.com/hey.you/lessons.html)
 [rsync](http://www.samba.org/rsync/tech_report/)
 
-**Computing history:**
-[GUI gallery](http://toastytech.com/guis/)
-[Tietojenk&auml;sittelymuseo](http://www.tietokonemuseo.saunalahti.fi/)
-
 **Mail:**
-[Reply-To](http://www.unicom.com/pw/reply-to-harmful.html)
 [Mail-Followup-To](http://cr.yp.to/proto/replyto.html)
-[IMC](http://www.imc.org/)
 [abuse.net relay tester](http://www.abuse.net/relay.html)
 [Kundenserver relaytest](http://relaytest.kundenserver.de/)
 [Tollef's free relay](http://freerelay.err.no/)
 
 **Web:**
 [DOCTYPE](http://www.alistapart.com/articles/doctype/)
-[100E2R](http://informationarchitects.jp/100E2R/)
-[no-www](http://no-www.org/)
 [webtypography.net](http://webtypography.net/)
 
 **IRC:**
@@ -165,12 +157,10 @@ incarnation of that web page.
 [showmyip](http://www.showmyip.com/)
 
 **Hardware:**
-[UsersManualGuide.com](http://www.usersmanualguide.com/)
 [UBCD](http://ubcd.sourceforge.net/)
 [Brother Linux drivers](http://solutions.brother.com/bsc_ph/os/linux/index.html)
 [CUPS/Foomatic for Brother P-touch](http://www.diku.dk/~panic/P-touch/)
 [QL550 on Linux](http://etc.nkadesign.com/Printers/QL550LabelPrinter)
-[HDD Diet](http://www.digit-life.com/articles2/storage/hddpower.html)
 
 **Photography:**
 [photo.net](http://photo.net/)
@@ -200,19 +190,12 @@ incarnation of that web page.
 [GTD with multiple monitors](http://ggtd.wordpress.com/2008/03/11/how-i-gtd-with-multiple-monitors/)
 [Mitch Haile](http://www.biscade.com/office/)
 
-**Presentations:**
-[Gettysburg PPT](http://www.norvig.com/Gettysburg/making.html)
-[iStockphoto](http://www.istockphoto.com/)
-
 **Travel/transport:**
 [International power and plugs](http://www.dbicorporation.com/internat/intpower.htm)
 [Tiehallinto: v&auml;limatkat](http://alk.tiehallinto.fi/www2/valimatkat/index.htm)
 [Onebag](http://www.onebag.com/)
 [Open Street Map](http://wiki.openstreetmap.org/index.php/Main_Page)
-[TravelTechKit](https://wiki.ubuntu.com/TravelTechKit)
 [Redoxx](http://www.redoxx.com/)
-[Ecobike](http://www.ecobike.fi/)
-[Polkupyöräpaja](http://www.horisontti.net/fi/pyora/polkupyorapaja.html)
 
 **Politics:**
 [Edustajamme.fi](http://blogit.edustajamme.fi/)
@@ -229,10 +212,7 @@ incarnation of that web page.
 [Crypto-gram](http://www.counterpane.com/crypto-gram.html)
 [RISKS digest](http://catless.ncl.ac.uk/Risks/)
 [pgp pathfinder](http://pgp.cs.uu.nl/)
-[Binary SI prefixes](http://physics.nist.gov/cuu/Units/binary.html)
-[anti-McMansion](http://unclutterer.com/2007/05/28/extreme-minimalism-monday-the-anti-mcmansion/)
 [Hacker's Diet: Excercise](http://www.fourmilab.ch/hackdiet/www/chapter1_2_5.html)
-[Asuntojen hintatiedot](http://asuntojen.hintatiedot.fi/)
 [How not to suck at socializing](http://www.lifehack.org/articles/communication/how-not-to-suck-at-socializing-dos-donts.html)
 [7 ways to overcome social awkwardness](http://www.thesimpledollar.com/2007/06/16/seven-ways-to-overcome-social-awkwardness-that-you-can-practice-anytime/)
 [Stripper marketing](http://www.wisecamel.com/2007/06/20/10-sales-and-marketing-tips-i-learned-from-strippers/)

diff --git a/links.mdwn b/links.mdwn
index 9f644c3..9b93732 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -117,7 +117,6 @@ incarnation of that web page.
 [IKI](http://www.iki.fi/index.html)
 [EFFI](http://www.effi.org/)
 [Burger Games](http://www.burgergames.com)
-[Matinkyl&auml;n huolto](http://www.matinkylanhuolto.fi/)
 [Vilhelm](http://vilhelm.fi/)
 [speedtarrat.fi](http://www.speedtarrat.fi/)
 [Plusdent](http://www.plusdent.fi/)

diff --git a/links.mdwn b/links.mdwn
index 23c634c..9f644c3 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -131,21 +131,12 @@ incarnation of that web page.
 [C-faq](http://c-faq.com/top.html)
 [C standard](http://www.open-std.org/jtc1/sc22/wg14/)
 [K&amp;R2 answers](http://users.powernet.co.uk/eton/kandr2/index.html)
-[Recursive Make Considered Harmful](http://miller.emu.id.au/pmiller/books/rmch/)
-[junit](http://junit.sourceforge.net/doc/testinfected/testing.htm)
 [The C10K problem](http://www.kegel.com/c10k.html)
 [Portland Pattern Repository](http://c2.com/cgi/wiki)
 [Pentomino](http://yucs.org/~gnivasch/pentomino/)
 [Kuhn UTF-8 test](http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt)
-[file formats](http://www.wotsit.org/)
-[po4a](http://po4a.alioth.debian.org/)
-[Python templates](http://jtauber.com/2006/05/templates.html)
-[Dictionary of Algorithms and Data Structures](http://www.nist.gov/dads/index.html)
-[revctrl](http://revctrl.org/)
 [Hsieh hash](http://www.azillionmonkeys.com/qed/hash.html)
 [Code Coverage Lessons](http://homepage.mac.com/hey.you/lessons.html)
-[fast network I/O](http://www.and.org/texts/network_io)
-[Bit Twiddling Hacks](http://graphics.stanford.edu/~seander/bithacks.html)
 [rsync](http://www.samba.org/rsync/tech_report/)
 
 **Computing history:**

diff --git a/links.mdwn b/links.mdwn
index 577957c..23c634c 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -194,7 +194,6 @@ incarnation of that web page.
 [Great Battery Shootout](http://www.imaging-resource.com/ACCS/BATTS/BATTS.HTM)
 [UPstrap](http://www.upstrap-pro.com/)
 [Argyll](http://www.argyllcms.com/)
-[DNG](http://en.wikipedia.org/wiki/Digital_Negative_(file_format))
 [kamerahuolto](http://www.kamerahuolto.fi)
 
 **Online photo printing:**

diff --git a/links.mdwn b/links.mdwn
index 9dbec1c..577957c 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -206,7 +206,6 @@ incarnation of that web page.
 
 **Home office:**
 [Stefan Didak's home office](http://www.stefandidak.com/office/)
-[96 home offices](http://www.nerdbusiness.com/blog/top-96-kick-ass-home-office-setups)
 [Ring Table](http://www.tmproductions.com/RingTable/)
 [Tame cables](http://www.pcworld.com/article/92925/stepbystep_eight_tips_to_tame_cables.html)
 [GTD with multiple monitors](http://ggtd.wordpress.com/2008/03/11/how-i-gtd-with-multiple-monitors/)

diff --git a/links.mdwn b/links.mdwn
index b1bfb38..9dbec1c 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -185,29 +185,15 @@ incarnation of that web page.
 **Photography:**
 [photo.net](http://photo.net/)
 [EOS flash](http://photonotes.org/articles/eos-flash/)
-[Vastavalo](http://www.vastavalo.fi/)
-[Fotonetti](http://www.fotonetti.fi/)
 [RAWpository](http://glasslantern.com/RAWpository/index.php)
-[Shutterbug](http://www.shutterbug.com/)
 [dcraw](http://www.cybercom.net/~dcoffin/dcraw/)
 [LL](http://www.luminous-landscape.com/)
 [RG](http://www.robgalbraith.com/)
 [TOP](http://theonlinephotographer.com/)
-[photoworkshop.com](http://www.photoworkshop.com/)
-[Imaging Resource](http://www.imaging-resource.com/)
-[Fred Miranda](http://www.fredmiranda.com/)
-[photography.about.com](http://photography.about.com/)
-[Steve's Digicams](http://www.steves-digicams.com/)
 [Open Source Photography](http://osp.wikidot.com/)
 [Great Battery Shootout](http://www.imaging-resource.com/ACCS/BATTS/BATTS.HTM)
 [UPstrap](http://www.upstrap-pro.com/)
 [Argyll](http://www.argyllcms.com/)
-[Poor Man's Screen Calibration](http://jcornuz.wordpress.com/2007/10/02/poor-mans-screen-calibration/)
-[CinePaint - 16-bit from digital shoot to printout](http://www.behrmann.name/cms/cinepaint/bildbearbeitung/cinepaint_ccorrection.html)
-[Niepce Digital](https://gna.org/projects/niepce/)
-[libiptcdata](http://libiptcdata.sourceforge.net/)
-[Digikam DAM](http://www.gerhard.fr/DAM/)
-[Digikam DAM II](http://www.gerhard.fr/DAM/part2.html)
 [DNG](http://en.wikipedia.org/wiki/Digital_Negative_(file_format))
 [kamerahuolto](http://www.kamerahuolto.fi)
 
@@ -222,10 +208,7 @@ incarnation of that web page.
 [Stefan Didak's home office](http://www.stefandidak.com/office/)
 [96 home offices](http://www.nerdbusiness.com/blog/top-96-kick-ass-home-office-setups)
 [Ring Table](http://www.tmproductions.com/RingTable/)
-[Multi-level desk design](http://www.goatinatree.com/desk/desk.htm)
 [Tame cables](http://www.pcworld.com/article/92925/stepbystep_eight_tips_to_tame_cables.html)
-[iMac desk](http://forums.macrumors.com/showthread.php?s=817a15813e8d9c8de7b2ac0bdb81fb85&t=468690)
-[Custom ergonomic desk](http://sim.plified.com/2008/08/17/how-to-build-a-custom-ergonomic-computer-desk/)
 [GTD with multiple monitors](http://ggtd.wordpress.com/2008/03/11/how-i-gtd-with-multiple-monitors/)
 [Mitch Haile](http://www.biscade.com/office/)
 

diff --git a/links.mdwn b/links.mdwn
index 9764ac1..b1bfb38 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -211,6 +211,10 @@ incarnation of that web page.
 [DNG](http://en.wikipedia.org/wiki/Digital_Negative_(file_format))
 [kamerahuolto](http://www.kamerahuolto.fi)
 
+**Online photo printing:**
+[Tunnin kuva](http://www.tunninkuva.fi)
+[Fotonetti](http://www.fotonetti.fi)
+
 **Productivity:**
 [43folders](http://www.43folders.com/)
 

diff --git a/links.mdwn b/links.mdwn
index b055fc6..9764ac1 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -209,6 +209,7 @@ incarnation of that web page.
 [Digikam DAM](http://www.gerhard.fr/DAM/)
 [Digikam DAM II](http://www.gerhard.fr/DAM/part2.html)
 [DNG](http://en.wikipedia.org/wiki/Digital_Negative_(file_format))
+[kamerahuolto](http://www.kamerahuolto.fi)
 
 **Productivity:**
 [43folders](http://www.43folders.com/)

transition
diff --git a/admin.mdwn b/admin.mdwn
index 50798eb..ce55d70 100644
--- a/admin.mdwn
+++ b/admin.mdwn
@@ -1,17 +1,17 @@
-[[meta title="Administrivia"]]
+[[!meta title="Administrivia"]]
 
 This page has some stuff to help me maintain the site better.
 
-[[inline pages="xxx" feeds=no postform="yes" rootpage="tag" postformtext="Add new tag"]]
+[[!inline pages="xxx" feeds=no postform="yes" rootpage="tag" postformtext="Add new tag"]]
 
 
 # Broken links
 
-[[brokenlinks ]]
+[[!brokenlinks ]]
 
 # Orphan pages
 
-[[orphans pages="* and
+[[!orphans pages="* and
                  !admin and 
                  !images/* and 
                  !favicon.ico and 
diff --git a/company-website.mdwn b/company-website.mdwn
index 2bb494e..a0b5391 100644
--- a/company-website.mdwn
+++ b/company-website.mdwn
@@ -1,5 +1,5 @@
-[[meta title="Company web site checklist"]]
-[[tag checklist]]
+[[!meta title="Company web site checklist"]]
+[[!tag checklist]]
 
 Things a company website should mention, prominently:
 
diff --git a/contact.mdwn b/contact.mdwn
index b520d6a..abf4652 100644
--- a/contact.mdwn
+++ b/contact.mdwn
@@ -1,4 +1,4 @@
-[[meta title="Contact information"]]
+[[!meta title="Contact information"]]
 
 If I don't know you, I prefer it if you contact me via e-mail: [liw@liw.fi](mailto:liw@liw.fi).
 
diff --git a/coverage-test-runner.mdwn b/coverage-test-runner.mdwn
index 63e1832..2f92bce 100644
--- a/coverage-test-runner.mdwn
+++ b/coverage-test-runner.mdwn
@@ -1,5 +1,5 @@
-[[meta title="CoverageTestRunner"]]
-[[tag program]]
+[[!meta title="CoverageTestRunner"]]
+[[!tag program]]
 
 **CoverageTestRunner** is a [Python](http://www.python.org/) module for
 **running unit tests** and failing them if the unit test module does not
diff --git a/coverage-test-runner/bugs.mdwn b/coverage-test-runner/bugs.mdwn
index ad3b5d9..21fcc15 100644
--- a/coverage-test-runner/bugs.mdwn
+++ b/coverage-test-runner/bugs.mdwn
@@ -1,9 +1,9 @@
-[[meta title="Bugs in CoverageTestRunner"]]
+[[!meta title="Bugs in CoverageTestRunner"]]
 
 See also bugs in the [Debian bug tracking system](http://bugs.debian.org/python-coverage-test-runner).
 
-[[inline pages="xxx" feeds=no postform=yes 
+[[!inline pages="xxx" feeds=no postform=yes 
   rootpage="coverage-test-runner/bugs"
   postformtext="Report new bug:"]]
 
-[[inline pages="coverage-test-runner/bugs/* and !discussion"]]
+[[!inline pages="coverage-test-runner/bugs/* and !discussion"]]
diff --git a/coverage-test-runner/bugs/debian-changelog-license-wording.mdwn b/coverage-test-runner/bugs/debian-changelog-license-wording.mdwn
index b8547f8..ce7060a 100644
--- a/coverage-test-runner/bugs/debian-changelog-license-wording.mdwn
+++ b/coverage-test-runner/bugs/debian-changelog-license-wording.mdwn
@@ -1,4 +1,4 @@
-[[meta title="debian/copyright license wording"]]
+[[!meta title="debian/copyright license wording"]]
 
 When the first version of the Debian package was uploaded, its
 debian/copyright file was unclear as to which version of the GPL
diff --git a/extrautils.mdwn b/extrautils.mdwn
index 6d44eb6..7743094 100644
--- a/extrautils.mdwn
+++ b/extrautils.mdwn
@@ -1,4 +1,4 @@
-[[tag program]]
+[[!tag program]]
 
 # Extra utilities for Unix
 
diff --git a/free-software-website.mdwn b/free-software-website.mdwn
index 7ebca9e..6df81fe 100644
--- a/free-software-website.mdwn
+++ b/free-software-website.mdwn
@@ -1,5 +1,5 @@
-[[meta title="Free software web page checklist"]]
-[[tag checklist]]
+[[!meta title="Free software web page checklist"]]
+[[!tag checklist]]
 
 A free software web page (or web site) should make it easy and fast to
 find the following information:
diff --git a/gratis-content.mdwn b/gratis-content.mdwn
index eb9b018..8af3fab 100644
--- a/gratis-content.mdwn
+++ b/gratis-content.mdwn
@@ -1,5 +1,5 @@
-[[meta title="No-cost content"]]
-[[tag link]]
+[[!meta title="No-cost content"]]
+[[!tag link]]
 
 This is a small list of links to sites with **legal** no-cost ("gratis")
 content. I have not actually verified them, I'm currently just collecting
diff --git a/index.mdwn b/index.mdwn
index 327a831..14804ea 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,15 +1,15 @@
-[[meta openid="http://liw.myopenid.com/"
+[[!meta openid="http://liw.myopenid.com/"
        server="http://www.myopenid.com/server"]]
 
-[[meta title="Welcome"]]
+[[!meta title="Welcome"]]
 
-[[img liw-by-soile-madrid.jpg alt="Photo by Soile Mottisenkangas"
+[[!img liw-by-soile-madrid.jpg alt="Photo by Soile Mottisenkangas"
       class="floatTR" link=no]]
 
 Welcome to my corner of cyberspace, where I display those parts of my
 persona that I wish the public to see.
 
-This site is implemented as a [[wikipedia Wiki]], using 
+This site is implemented as a [[!wikipedia Wiki]], using 
 [ikiwiki](http://ikiwiki.info).
 You may edit any page, but please use the discussion page for each
 main page for discussing things. I will, of course, reserve the 
diff --git a/licenses/gpl2.mdwn b/licenses/gpl2.mdwn
index da056f3..e4edc8d 100644
--- a/licenses/gpl2.mdwn
+++ b/licenses/gpl2.mdwn
@@ -1,5 +1,5 @@
-[[meta title="GNU General Public License, version 2"]]
-[[tag license]]
+[[!meta title="GNU General Public License, version 2"]]
+[[!tag license]]
 
 A number of my projects are licensed under the GNU General Public
 License version 2 (GPL2). You can find a copy in the source tree, or
diff --git a/licenses/gpl3.mdwn b/licenses/gpl3.mdwn
index 302121f..16356dc 100644
--- a/licenses/gpl3.mdwn
+++ b/licenses/gpl3.mdwn
@@ -1,5 +1,5 @@
-[[meta title="GNU General Public License, version 3"]]
-[[tag license]]
+[[!meta title="GNU General Public License, version 3"]]
+[[!tag license]]
 
 A number of my projects are licensed under the GNU General Public
 License version 3. You can find a copy in the source tree, or
diff --git a/links.mdwn b/links.mdwn
index 1763912..b055fc6 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -1,5 +1,5 @@
-[[meta title="Link page"]]
-[[tag link]]
+[[!meta title="Link page"]]
+[[!tag link]]
 
 I don't usually use bookmarks for links I want to keep. The reasons for
 this are obscure: back in the early days of the world wide web, I kept
diff --git a/liw-meta.mdwn b/liw-meta.mdwn
index 88a4a8c..edd1d63 100644
--- a/liw-meta.mdwn
+++ b/liw-meta.mdwn
@@ -1,5 +1,5 @@
-[[meta title="liw-meta"]]
-[[tag program]]
+[[!meta title="liw-meta"]]
+[[!tag program]]
 
 I use several computers, and I've set them up in particular ways.
 To make this easier, I want certain programs installed on all of
diff --git a/no-www-no-work.mdwn b/no-www-no-work.mdwn
index 26aa997..2285381 100644
--- a/no-www-no-work.mdwn
+++ b/no-www-no-work.mdwn
@@ -1,5 +1,5 @@
-[[meta title="No www, no working page"]]
-[[tag link]]

(Diff truncated)
diff --git a/links.mdwn b/links.mdwn
index 47ad920..1763912 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -58,6 +58,8 @@ incarnation of that web page.
 [DEP5](http://dep.debian.net/deps/dep5/)
 
 **Ubuntu:**
+[cj bugs](https://bugs.launchpad.net/ubuntu/+source/computer-janitor)
+[um bugs](https://bugs.launchpad.net/ubuntu/+source/update-manager)
 [liw's bugs](https://bugs.launchpad.net/~liw/+bugs)
 [liw's packages' bugs](https://bugs.launchpad.net/~liw/+packagebugs)
 [ubuntu@launchpad](https://bugs.launchpad.net/ubuntu)

diff --git a/sh-assert.mdwn b/sh-assert.mdwn
index 3f19268..55cbaf1 100644
--- a/sh-assert.mdwn
+++ b/sh-assert.mdwn
@@ -33,3 +33,4 @@ out to be a good idea.
 * The .deb should have a cron.daily file that runs scripts in
   /etc/sh-assert.d, using run-parts.
 * Write manual page.
+* Find out if there's another assert(1) out there somewhere.

diff --git a/sh-assert.mdwn b/sh-assert.mdwn
index f1a319a..3f19268 100644
--- a/sh-assert.mdwn
+++ b/sh-assert.mdwn
@@ -23,6 +23,11 @@ Examples:
 I'll flesh this out, and write a manpage and everything, if this turns
 out to be a good idea.
 
+# Code
+
+* Version control: <http://code.liw.fi/sh-assert/bzr/>
+* Tarballs: <http://code.liw.fi/sh-assert/>
+
 # TODO
 
 * The .deb should have a cron.daily file that runs scripts in

diff --git a/sh-assert.mdwn b/sh-assert.mdwn
new file mode 100644
index 0000000..f1a319a
--- /dev/null
+++ b/sh-assert.mdwn
@@ -0,0 +1,30 @@
+[[meta title="Assertions for the shell"]]
+[[tag program]]
+
+C programmers know about **assert(3)**, a macro to verify that some condition
+is true at run time. It is meant for detecting errors in the program logic.
+
+Sometimes a similar thing would be useful at the command line. Thus, I wrote
+a command line program to assert that various conditions are true. My
+immediate use case for this is to verify that all KVM virtual machine
+images on a server of mine are of the qcow2 type. I had a case where one
+of them was of a different type, and this causes some headaches. Now I can
+write a crontab entry that verifies the types. If something breaks, I will
+get e-mail about it.
+
+This is still **extremely pre-alpha**. Anything might change. Nothing is
+documented.
+
+Examples:
+
+    assert equal $USER root
+    assert mime-type-is application/x-qemu-qcow2 /srv/vm/*.img
+
+I'll flesh this out, and write a manpage and everything, if this turns
+out to be a good idea.
+
+# TODO
+
+* The .deb should have a cron.daily file that runs scripts in
+  /etc/sh-assert.d, using run-parts.
+* Write manual page.

diff --git a/links.mdwn b/links.mdwn
index 82b2216..47ad920 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -9,10 +9,8 @@ instead I started keeping a web page with links. This is the current
 incarnation of that web page.
 
 **Frequent:**
-[Wikipedia](http://www.wikipedia.org/)
 [Valuutat](http://www.bof.fi/Stats/default.aspx?r=/tilastot/valuuttakurssit/valuuttakurssit_today_fi)
 [Aukiolot](http://www.pty.fi/aukiolo2009.html)
-[soihtu](http://www.soihtu.org/)
 [Sää](http://weather.fi/Suomi/tasmasaa/Espoo)
 [Ukkoset](http://www.vaski.net/thunder/ukkonen2.htm)
 [StackOverflow](http://www.stackoverflow.com/)
@@ -24,6 +22,7 @@ incarnation of that web page.
 [Reittiopas](http://aikataulut.ytv.fi/reittiopas/fi/)
 [Aikataulut](http://aikataulut.ytv.fi/linjat/fi/)
 [matka.fi](http://www.matka.fi/haku/fi/)
+[liikenteeseen.fi](http://liikenteeseen.fi)
 
 **Movies:**
 [Mine](http://liw.iki.fi/liw/movies.html)

diff --git a/links.mdwn b/links.mdwn
index 3df029e..82b2216 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -66,6 +66,7 @@ incarnation of that web page.
 [PPA](https://launchpad.net/~liw/+archive)
 [KVM](https://help.ubuntu.com/community/KVM)
 [team UDSKarmic](https://wiki.ubuntu.com/FoundationsTeam/UDS/May2009)
+[UDSKarmic](https://wiki.ubuntu.com/UDSKarmic)
 
 **Linux:**
 [LWN](http://lwn.net/)

diff --git a/links.mdwn b/links.mdwn
index 1ab445f..3df029e 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -65,6 +65,7 @@ incarnation of that web page.
 [foundations team bugs](http://qa.ubuntu.com/reports/team-assigned/ubuntu-foundations-assigned-bug-tasks.html)
 [PPA](https://launchpad.net/~liw/+archive)
 [KVM](https://help.ubuntu.com/community/KVM)
+[team UDSKarmic](https://wiki.ubuntu.com/FoundationsTeam/UDS/May2009)
 
 **Linux:**
 [LWN](http://lwn.net/)

diff --git a/links.mdwn b/links.mdwn
index ac07bbd..1ab445f 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -56,6 +56,7 @@ incarnation of that web page.
 [liw@qa](http://qa.debian.org/developer.php?login=liw@liw.fi)
 [Manoj Python Policy](http://people.debian.org/~srivasta/manoj-policy/)
 [New Python Policy](http://wiki.debian.org/DebianPython/NewPolicy)
+[DEP5](http://dep.debian.net/deps/dep5/)
 
 **Ubuntu:**
 [liw's bugs](https://bugs.launchpad.net/~liw/+bugs)

diff --git a/links.mdwn b/links.mdwn
index 595ed12..ac07bbd 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -107,6 +107,7 @@ incarnation of that web page.
 [Kaakaopuu](http://www.kaakaopuu.fi/)
 [Varusteleka](http://www.varusteleka.fi/)
 [Fictionwise](https://www.fictionwise.com/)
+[Smashwords](http://www.smashwords.com/)
 
 **Organizations:**
 [IKI](http://www.iki.fi/index.html)

Search

Wiki actions