The Youth Hostel
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Reuben, Thomas
I will discuss how it took me nearly 25 years to produce a 40-page book: the writing, typesetting and binding of my mock–mock-epic poem The Youth Hostel, and how this led to my hacking on LaTeX font support, taking over the maintainership of psutils, becoming a Debian Maintainer, and working for Google. On the way, I found that the opposites of Larry Wall's cardinal virtues of the programmer can also be virtuous.
 Welcome, everyone, to the last session of the day. Next up is Ruben Thomas, who will be talking about the challenges in type setting probably, and getting your writings to come out beautiful on paper. Welcome. Thank you very much. I'll try not to keep you too long from your dinner. So I'll just say a few words about myself to try to explain what might be otherwise a rather perplexing talk. Even after you've read the introductory slide, I have what one might describe as something of a portfolio career. My main employer currently is the Roman Catholic Church. I sing in the choir of Westminster Cathedral in London. And before that, I spent the previous 30 years working for a spin-off, which was nationalised by the English government about 500 years ago, the Church of England. I studied computer science at Cambridge University. And just before that, I was fortunate enough at high school to have compulsory historical and literary studies, even though I mostly specialised in scientific subjects. But you'll see in a moment how that comes into the subject of the work I'm about to describe. So just to give you a quick outline of the talk, I've already given you some personal context. I'm then going to talk about a short, well, not quite so short, poem that I wrote many years ago. The bulk of the talk is about some technical matters that arose as a result of trying to typeset this poem in a particular way, which led me first into latex, and then into various parts of the free software universe. And then I'll end up by going a little bit philosophical and talking about how this relates to Larry Wool's cardinal virtues of the programmer, and also a word about proprietary software. So the central subject of this talk is a poem I wrote. It's not a very long poem. It's about 272 lines long, which is a lot shorter than, I don't know, the Odyssey. So a book of 40 pages, which so far, and I think I'm nearly finished, has taken me almost 24 years to write. And it's a satirical mock epic, which is almost entirely true, but footnoted, prefaced, and with a publishus forward that I've made up, which is a slightly unusual way around. And of course, the first question that one might reasonably ask after seeing that summary is, what on earth does this have to do with free software, even though it's obviously a fascinating subject for a talk? Well, of course, like all computer scientists by education, I decided I would typeset this work with Leytec, and it's a moderately complicated bit of typesetting with 26 different packages. And in particular, some challenges in the actual nitty gritty of the typesetting, the fine detail with some unsupported glyphs that Leytec doesn't normally have to deal with to draw, because in some cases, they didn't even exist in the fonts, to typeset, and of course, to print. And this was all because I was basing my book design, as indeed the style of the poetry, which makes it up, on an 18th century model, which we'll come to in a moment. And that left me with quite a lot of hacking to do. But first, this is how it came about. This is me about 24 years ago, as you can see already thinking deeply about how on Earth I get to typeset this poem that I haven't yet started to write. And that was the year that I started my university education at Cambridge University, and I spent a lot of my time in this place, which is the chapel of St John's College, where we would sing even song, which is an English invention. It's a sort of mash-up of the Catholic offices of the hours of Vespers in the late afternoon and Complin in the late evening. And it sort of meets halfway, sort of about just before suppertime, conveniently, so that in the old days, when all the men in college, because of course, until 1982, there were only men in the college, which coincidentally was the year I went there to sing as a boy ten years before I started as an undergraduate. But anyway, in those days, all the men would have to go to even song every day. It was mandatory, so there's enough seating there for about 150 scholars, and then they would go to hall and have their dinner. Well, by the time I was there, the choir often outnumbered the worshippers, and we looked something like that. Coincidentally, this picture was taken while I was in the choir, but I'm the only member of the choir not in it. I must have been away that day. But the actual poem was inspired by quite a different location. We used to tour frequently to the Netherlands, and it was in the winter of 1992 that we made one particular tour, the first of my time as an undergraduate, which made a lasting impression on me. And it was in particular when we stayed in a youth hostel that, as far as I can remember, looked something like this, although I have to say in the interests of strict truth, the fact that this particularly youth hostel is not in the Netherlands, it's just a picture that seemed about right. So that was one part of the inspiration, and then the other part is historical. This is the title page of a work by Alexander Pope, the 18th century English poet, called the Danciad. So this is a mock epic. It is a sort of satire based on the Iliad, Homer's Iliad, and it was pretty much an attack by Pope on all the rivals, other poets, journalists, critics of his day whom he detested. And he wrote it with a great many notes, which he claimed to be by someone called Scribleris, but were in fact all written by him. So this is where we begin to see where I got my idea for my own work. And as you can see, this is a, if I, maybe with a little bit of assistance from a zoom function here. Yes. That's, oh, no, that's not, that's not, that's not, that's the opposite of assistance. That's, there we go. So, oh, 1729, there we go. So this is a 1729 edition, which thanks to the wonders of modern technology, one can find on, in the internet archive. No, yes, good. This is, this is really where all the fuss began, the long S. So this will be familiar to German speakers, of course, in a somewhat restricted form. But historically, this is really, you might almost say a Greek thing, or at least it comes to us in the same form in modern Greek. So here we have a terminal sigma, terminal lowercase sigma, which has a more than a passing resemblance to the modern S. And here we have a non-terminal, which can be an initial or medial sigma, so anywhere but the middle of the word, anywhere but the end of the word, which doesn't bear any resemblance to a long S, but it has exactly the same function. So until the late 18th century, English was tight set with two different S's. And so here's a couple of examples where you can see that in the capital, or at the end of a word, it looks pretty familiar. And all the rest of the time, it looks rather like an F. Only again, if I can hopefully this time slightly more, yes, here we are. So if you look at it very carefully, you'll see that it's not quite an F, because the bar only sticks out on the left. Now I didn't want to have to type these all manually. Indeed, at the time I started typesetting it, the book, I didn't even really have that option because although you now have a Unicode code point and some fonts, which even have the long S in the right position, I didn't. So I started typesetting the book in 1998. I finished writing it in 1997. So that took me a mere five years. Then the real fun began. And at that point, there was a package PA-Caslon, which had been written a couple of years earlier, which used the Adobe-Caslon font, which comes, if you get all the expert sets, with long S's. And it had sufficient rules for when to use Wichess and used various bits of Arcane tech magic so that you could type in an ordinary text and it would work out where to use Wichess. So that was nice. But then, unfortunately, as I said, typesetting took me quite a long time. And by late 2012, when it was time to do what I thought at the time was a final printing, the package PA-Caslon no longer existed. But I also discovered that I needed some extra glyphs. So hang on, what's this about final? Because this is 2016 now, and I already admitted that I still haven't finished this book. Well, I had to have made three attempts in total to finish this book. And here was my first. My first attempt was to have a dinner. And here are some of the people who came to the dinner, a lot of whom feature, in some sense, in the book, because they were all on that original tour back in 1992. So this dinner was held in 2013 in the Wordsworth room, appropriately enough, a room in St. John's College named after William Wordsworth, who was, of course, an English poet, who wrote rather more than I did, of rather better quality in a much shorter time, I might say. So that was great fun. But unfortunately, it didn't actually make me finish the book. I was able to supply everyone with proofs, and I got many useful corrections. But I did not come out with a finished product. And there is the dean of college reading a bit about him, while I'm carefully studying the proof in the background. So I had this defunct font package, which I rather needed to typeset my book. And this is 2012, and of course, by then, we had Lua Tech, which has pretty good support for open type fonts, including all sorts of extra features, like alternate glyphs and historical ligatures and ligatures of other sorts. So why didn't I just use that? Well, I had a go, but I couldn't get it to work. And I'll probably get back to that one day, because I probably ought to be up to date with my font technology. So I went back to my PostScript fonts and the ancient font-inst package for LeyTech and PDFTech. And I hacked around with the various tools that one has for turning PostScript fonts into TechFont metric files and TechVirtual font files, and was able, in the end, to reverse engineer the original package, for which I also was able to get in contact with its author, and even he'd lost the source code. So he was very helpful and sympathetic. But unfortunately, I had to do that. And of course, I had to have a play with TechFont encodings. In fact, there's enough material here for another talk, which really should have been given about 12 years ago, because really one shouldn't be doing this sort of thing anymore, as I say. We should be using OpenType. But I couldn't get it to work in this case. But 2016 is not the time to give a talk about TechFont packages and font encodings. So I'm only going to hint at that. So I mentioned a moment ago that I needed some extra glyphs. So let's just see what was actually going on there. Actually, it's a bit hard to do on a beamer because of the resolution. One day, just before the dinner I mentioned, I had my proofs on my screen at a very high resolution. And I noticed something, which I'm going to make you all notice, by the power of hypnotism, because I don't think it's actually detectable on this lay resolution display. But if you look very carefully, then you will see that in this SSI, sorry, SSI ligature, in the word succession, the upper ligature is the one that I drew. Well I say drew. I really just took apart the original characters and put them back together into a new ligature. And then the lower one has a slightly more bulbous end to the second long S. And the reason for that is that the font, the typographers at Adobe did a, it would be unfair to say they were being lazy because what they did was actually very clever. They set up the metrics of the font so that if you had a double S ligature, this is actually a double long S ligature, and then you put it next to an I, the dot of the I would overlap the end of the S and look pretty good unless an obsessive Englishman happened to take a magnifying glass to it at about 800% in his PDF viewer. So obviously, since I wanted to make a physical book, which would have to, that would be it, I'm not going to go through the process more than once, that I had to improve on that. So obviously I busted out Font Forge, which at the time was the only really sort of comprehensive free software font editor. That's no longer the case actually, but it's still pretty good. So this is my first side project. So in January 2013, I first did a little bit of work on Font Forge. I'd been using it to try to understand why I was having trouble with OpenType, in particular the historical features. And I just happened to look at some of its source code and found a comment that was a bit misleading. So I clarified the comment. So that was my first mistake, it turns out. In July, I've reconstructed the history from looking at the commit logs for Font Forge. In July 2013, I went a bit further and I actually touched the code for the first time, and I did a little bit of tidying up. And then the next year, by which time I'd already used Font Forge to draw my two extra glyphs, a long double SI and a long double SL, beautiful. But then one day in 2014, I opened Font Forge and I found that the entire interface was using GNU Unifont, which is a wonderful font of last resort, which has a glyph every single Unicode code point, and they update it every time there's a new version of Unicode. But you really don't want it in your user interface. And the reason that this had happened was because of a mistaken bit of configuration in Font Forge's resources. So I fixed that, and after that, it was all downhill. I found myself doing all sorts of general code cleanup and simplification in Font Forge that had nothing to do with anything I was actually using it for. And then a couple of months later, Dave Crossland, who is a great and energetic advocate and activist for Free Fonts, invited me to work on Metapolator, which is something completely different. So it needs a different window. I should just quickly, this is really a sort of advertising break. I should just say that if you're at all interested in amazing things you can do with fonts these days, you should definitely have a look at Metapolator. This is metapolator.com. It's still somewhat of a prototype, but the basic idea is that you can have two fonts. Here we have a Roboto Slab Lite and Roboto Slab Bold, which you probably can't quite see because there are tiny letters there. But what you should be able to see is if I move this slider, it changes the font. And it's actually generating that on the fly. And in general, Metapolator is a set of technologies for making font families that are essentially parametric, rather like, you may think, since I've been talking about tech and latech throughout this talk, the original computer modern fonts. But updated in such a way that they're easier to use for typographers who today are probably less used, like Donald Nooth, to actually programming their fonts in a sort of dialective list or meta font or whatever. And instead would rather have something a bit more graphical. So there's Metapolator, which I should also say is involved. It was conceived originally by Simon Egley, the user interface by Peter Siking, and has mostly been programmed by the indefatigable Lassifista. So back to late 2012, a more urgent problem I had just before this dinner, which was supposed to be my way of finishing the book, was that I couldn't actually print the book, which is for a document that is supposed to be printed and bound and available for people to handle was a bit of a disaster. That turned out to be because of a bug in the PDF printing stack at the time, at least in the current, whatever, was the current version of Ubuntu. That would probably have been precise at the time since it was late 2012. And that was not something I had the ability to fix in a couple of days. So I thought I'd use a clever workaround, which was instead to print from PostScript. And PSutils is an excellent suite of programs for manipulating PostScript. And so I thought I would use them to get my PostScript pages and arrange them in a book that I could print neatly as a booklet that people could have at the dinner. Unfortunately, it turned out that at that point PSutils had a bug when printing N up. So you want to print, in my case, something like A5 pages on an A4 sheet, which I'll then fold in to make a booklet in a fairly obvious way. So I fixed the bug. And then I had another bad moment because I noticed that the package was no longer maintained upstream. So I got to work. I added all the patches that Debian had put in over the years. I rewrote a lot of the documentation. I rewrote the build system. I used lib paper everywhere so that you could use human readable paper sizes like A4 and B5 rather than having to give dimensions in points or millimeters or something like that. And I also managed to simplify the code somewhat. I mean, the upshot in the end was I became the maintainer of PSutils. So accidentally while writing a book, that's six months of employment working on Metapolator. And I've suddenly acquired the maintainership of a free software package. Oops. And also there was one more last minute bug, which was that after all this duplex printing of PostScript didn't work. So I had to manually duplex having spent a great deal of money on a printer with a duplex unit. So I just mentioned lib paper, which was at the time a Debian specific library for describing paper sizes. Very simple. You just have a list of paper sizes and their dimensions in various units. It might be millimeters or points or inches depending on the natural unit for the paper size. So you'd probably describe A4 in millimeters and US letter size in inches. For example, that was worked by Yves Arrouill and Adrien Bonk. But it was unmaintained for several years by the time I got my hands on it. You can see where this is going. So it was an optional dependency of PSutils at the time. PSutils was a portable package. Lib paper was only intended for Debian. But I thought, well, it would be nice if it didn't have to be optional. So again, I applied all the Debian patches. Yes, there were Debian patches, even though it was a Debian native package. I added more paper sizes. There are, of course, nice lists that you can find in places like Wikipedia. And it was actually surprising that you might think that there'd be pretty much infinite number of paper sizes. And there probably is in reality. But I could only find about, I don't know, 30 or 40 by searching various places on the internet. I updated the build system, removed KNR-C support, because the program was written long enough ago that it still supported pre-ANSI compilers, rewrote the documentation, simplified configuration, as you can see, the list goes on and on. Oh, one nice thing was actually that on modern GNU Linux systems, it turns out that you can get the default paper size for a particular locale. From a non-standard locale setting, LC underscore paper. Although, unfortunately, it's only in integral numbers, which is unfortunate because not all paper sizes are expressible. It's an integral number of millimeters, in particular, US letter size. But that's another story. But anyway, it's nice because now you don't actually need to configure a default paper size. If assuming you're using your locale's default, which is going to be the case for 99.9% of users, you can just read that from the system. Oh, and I rewrote it in Perl. Now, hang on. This is a C library. What's going on here? Well, there were a few things I wanted to achieve here. For verification, I managed to get this package, which does a pretty trivial job, right? Taking a list of paper size names and dimensions, and you can match dimensions to a size or find this dimensions from a size. That's all you really want to do, plus have per user settings and a system default. That was nearly 50, well, getting on for 1,500 lines of code in C. I reduced it to about 150 in Perl. Obviously, I got rid of lots of bugs because everyone knows that if you delete code, you remove bugs as well. Made it accessible from other languages because the previous, because lib paper really was just a C library. If you wanted to access it from any other language, you had to write, you had to use a binding to the C library. Now, of course, you have the opposite problem that you have a small executable, which is very easy to use for most languages, because you just run it with some command line arguments and you get back a result. That's not a thing that's quite easy to do in C, so I'll say how I solved that problem in a moment. At the same time, keep it portable because I think, again, it's a reasonable assumption that if you are running on a particular computer system, a program that needs to ask the user about paper sizes, you've probably got Perl installed. Later, I decided to write PSutils in Perl 2, but I'm not going to tell that story today, so don't worry. Then finally, on this nested dive, I've gone from wanting to print a book to maintaining PSutils to pretty much maintaining lib paper and rewriting it. Now, I'd like to share this work with other people and inflict it on the rest of the world. So I thought that if I wanted to get paper into Debian and also help update PSutils in Debian, then I'd better actually become a Debian maintainer, because it wasn't something that anyone else is going to be interested in with two basically unmaintained packages. And for non-specialists in the room, I should say Debian maintainer is not the same thing as a Debian developer. So in other words, not somebody with a vote on important matters and high-level access. This is basically a sort of supervised access to Debian only. So at this point, I should just make an acknowledgment to Wookie for seconding my Debian maintainer application and Dmitry John-Ledkov for signing my GPG key twice because of confusion over how long it had to be. I don't know, I just seem to attract bugs sometimes. That one was just a bug where two different places in the Debian Wookie had different information on how long a maintainer key had to be. This work is still ongoing. If you are interested in very old paper-based things, then I'm hoping to get it into Debian unstable in the next few months. So that sort of takes us up to the end of 2014 also. Every year later, I still hadn't finished the book. So I thought I should have another go. The next go was this talk because I thought, well, if I had to give a talk, which it would be nice to actually show a book, then I'll have to finish the book, right? Well, it almost worked. More on that later. But I'm sorry that if you read my summary and we're hoping to see an actual book, then I don't have one today. But nearly. So usually one looks into the morals of a project when you're sure it's absolutely over. And I'm going to provide some evidence that I think I have got sufficiently close to the end that I can do that now. And as I was thinking back on it, it occurred to me that this has something to do with the cardinal virtues of the programmer as laid out famously by Larry Wall in his book, Programming Pearl. Yes, Programming Pearl, the camel book anyway. So for those who are slightly rusty in their memory of Programming Pearl, the three cardinal virtues of the program are laziness, impatience, and hubris. And we'll just look at how those pertain to this project one by one. So I'm a great believer in going back to the sources, checking that you have remembered correctly what you mean by a term that's important. So I've actually found the quote from the second edition of Programming Pearl. Laziness is defined by Larry Wall and his co-authors as the quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote. So you don't have to answer so many questions about it, hence the first great virtue of a programmer. Well, as far as what I've tried to do with the various projects I've described, I would say I have tried to be lazy, although I can say also that it didn't feel like that at the time. I'm not sure quite how you'd apply this virtue to poetry. Arguably from a poetic point of view, I've done a ridiculous amount of work other than actually writing words. But I think anyone in the audience who is familiar with procrastinating will recognize the temptation to get involved in side projects. So second virtue, impatience. So again, quoting from Programming Pearl, the anger when you feel when the computer is being lazy, which is a nice bit of recursion, this makes you write programs that don't just react to your needs but actually anticipate them. So I would argue that, again, a large part of the work I did on the typesetting of the long S was precisely with this in mind. There are all sorts of rules. There's a wonderful blog post I used, which you will find if you search for Rules for Long S, where someone actually went and looked at a great number of old books and deduced, because nobody as far as we can tell ever really wrote it down, deduced the rules for when you use a long S and when you use a short S. Because although what I said at the beginning is basically true, that you use the long S everywhere except at the end of a word and the short S at the end of a word, it turns out there are quite a few exceptions whether to do with particular letters, such as you think the short S before a B or a K, and there are also rules about what you have to do with hyphenation and all that sort of thing. So it's really not the sort of thing you want to do manually, choosing between the two versions of the letter. You really want the computer to do it, and hence you want the computer to not be lazy and do all the work for you. On the other hand, I did wait an awfully long time for the support to be written in the first place, and then I waited so long that it became obsolete again. And you could argue that that's a bit too much patience. Finally hubris. So programming Pearl again, it says of hubris, the quality that makes you write and maintain programs that other people won't want to say bad things about. Well, it's interesting to read that because I actually thought that it meant something a bit different, which proves that over the years you can easily forget the original sense of a text that you read. Because I think often people use refer to hubris as a shorthand for it's sometimes a good idea to do something new. But that's not really what Larry Wolz is saying here at all. So apologies for contradicting the published talk abstract in the sense that actually having read that again, I have to say that I don't think I've gone against that at all. Although possibly other people won't want to say bad things about. Well, if nobody else uses the programs, then of course they're not going to say bad things about it. So possibly not writing programs that are so obscure that nobody wants to say bad things about them. I wouldn't necessarily advise that. I said it also at the beginning, I would say a word about proprietary code. Now the only proprietary code I've actually mentioned in this talk is the Adobe Castlon font. And I would just say that I think that does count as code. Well, I mean, apart from anything else from a practical point of view, of course, software fonts as opposed to old fashioned pieces of metal do actually come under copyright law rather than just design law. And so although Adobe Castlon was issued in 1990 and I think 1992 it was updated, it still won't be out of copyright until the Disney Corporation finally fails to persuade the US Congress to extend the copyright on Mickey Mouse's ears. So in other words, it's still in copyright and will be for a very long time. But despite that pain in the neck, sometimes proprietary code is all there is and you have to kind of try and work with it. The biggest, the most obvious example in this case being that I needed to make some changes to the font, I needed some extra glyphs. And of course, I can't distribute those extra glyphs. So what I do in the Adobe Castlon latex package, which I contributed my long S support to, is I simply give hints on how you might use a font editor to recreate the glyphs if you want. And if you don't put in that effort, then you can still have all the extra long S support without my two extra ligatures and that's fine. So it degrades nicely. Of course, one nice thing, at least if you're thinking long term, is that in any particular case you can beat proprietary code in a sense by share patience because eventually the copyright will run out. Although often, of course, one dies before that point, which is sad. And of course, realistically, I would love to have a free alternative to Adobe Castlon. I only used it because I couldn't find a free typeface that had an 18th century style and was actually drawn. I found several that had just been quite nicely scanned from books so that if you wanted to make a book that looked as though it was made in the 18th century, rather than just in an 18th century style, they would be fine. And of course, with full support for the long S, say with all the extra ligatures. So if anyone knows of such a thing, I'd love to hear about it. So at the end of any epic, well, at the end of almost any poem, at least from the 18th century, you have to have a moral. So I've got several from my last 24 years of experience with this project. First, I think I've just said proprietary code is a pain and fonts are more engineering than art, which is why they come under the heading of code. Waiting often helps. So I've given some examples where it helps. I've given some examples where it helped, didn't actually help because too much waiting can be a bad thing. But it was amazing how many of my little type setting problems were solved by packages that were written long, long after I started the project. I think there's some value in allowing your passions, as I say, to mutate. So this is, of course, one way to cope if you're waiting. It's another way to cope if you're procrastinating. But the fact that I enjoyed both writing poetry, making a book, and also hacking on various bits of free software, I think made the overall experience rather more interesting. And even, as I said earlier, with my work on Metapolite, or even resulted in some employment, which is a bit of an odd thing for something to come out of trying to imitate an 18th century poet. So that was that sort of fun and for profit there. And then on a programming side, old code, I said here, old code repays new effort. And I think, of course, most code repays effort. If you put effort into improving, maintaining, extending code, you usually expect to get something out of that other than just the enjoyment of doing it. But I think old code has some particular advantages because, as I say below, abandoned projects, especially those started years ago, are often simple and small. They're not fast-moving targets. So stepping up to help with them can be very easy because there's maybe one maintainer left or no maintainers at all. So you don't have to engage with lots of process. And you can just start by fixing a few small things. I think you saw the pattern in the various projects I was involved in. It mostly started with a small fix and then turned into something larger. Although as I think I've also illustrated, it can end with you taking on perhaps a rather more responsibility than you might have intended. That might be a good thing, too. But I think there's quite a lot of code like that. So if you look at any system, especially one based on free software, you'll find that most of the effort is at the bleeding edge, I think. And with a few exceptions, such as, say, the Linux kernel itself, there's not so much effort right in the core. There's a lot of code that doesn't perhaps need a great deal of effort. It's quite happy. But on the other hand, an awful lot of long-standing bugs that are annoying people that have kind of fossilized, that have familiar workarounds, but why not go and fix one or two of them, make the world a slightly less, a slightly more reduced friction of the free software world? And finally, of course, not forgetting that there are other things than code, which is sort of where I started. So my final attempt to finish the book, I came up with just before, just in the last few weeks, just as I was starting to write this talk. And in the end, the most effective way to finish it proved to be not to finish it. So as I said at the close to the beginning, the main aim of the typesetting project was to have a physical book that's actually sewn into signatures, which are small numbers of pages folded together, and that you then sew together into a larger book and bind in leather, perhaps, or in cloth. And I realized that, of course, in the 18th century, where every page had to be laboriously set with metal type by hand, you probably had to print all the books in a print run from the same set pages. But in the 21st century, where I'm doing my in-printing, that's the one bit I'm sort of keeping 21st century technology, with a laser printer, it doesn't really matter. And so now, I just decided, well, if I didn't have any dreadful errors, I could just carry on tweaking the text every time I print out a new copy. But rather than throwing the copy away, I can keep it and make it into a slightly different book so that if you remember that photograph of all the people who were at that dinner three years ago, each of whom paid in their ticket price for a copy of the book, they'll all now be getting slightly different versions of the book, which I hope will amuse them. So as of Friday, well, that's yesterday, isn't it? Gosh, sorry, I've been travelling quite a lot in the last few days. But as of yesterday, I had five copies sitting on my desk at home, ready to go to the binder, and I hope to accelerate some more and get up to more like 25, which is how many I'm going to have bound next week. And so I should have in that set about six or seven different editions, all in the first print run, which is a nice 21st century thing to be able to do. So I just thought I'd give you a flavour of what I've actually produced. And I'm going to give it to you in two forms, because I think I've just about got enough time. I haven't seen one of those cards yet, and I'm just now seeing that I have 15 minutes left, which is definitely long enough for this and one or two questions. I'm going to show you what it looks like and read you what you can see as well. There's the poetry, not the footnotes. So I don't know if you can see these numbers, but we're at line 240, which is quite close to the end. I did describe the poem as a mock, mock epic, because, well, if we go back to the original, of course, an epic, we might expect to be several books long and certainly several thousand lines and on a very serious subject like wars between gods or heroes or that sort of thing and involve lots of ships and horses and swords and that sort of thing. And then a mock epic, like the mock epic of popes that I showed you, the duncead, is still quite a long thing. The duncead comes in three books and is still well over a thousand lines long and is not actually about gods, but it's sort of about pretend gods, like the goddess Dullness, for example, and the duncead ends with a wonderful scene, which you would quite easily recreate in this room if only you had a... Is there a light switch? Is this a light switch? Oh, yes, that'll work, yes. Okay, so here we go. The last two lines of the duncead. Thy hand, great Anarch, let the curtain fall and universal darkness bury all. End, you see. So that's how that goes. So it has a certain something. It's very much following the sort of scale of epic poetry, even if by introducing characters such as the goddess Dullness, it's not being entirely serious. So hence the mock. Well in the youth hostel, the action takes place over a single night. The choir arrives at the youth hostel, they stay the night there, and in the morning they leave again. And not a great deal actually happens. And so hence mock, mock epic. It's smaller, it's less serious. And here's the scene where the choir, having spent the night in the youth hostel, and having waited with some trepidation for their coach to arrive to take them onto their next venue, finally, they're sitting there in the, you have to imagine a somewhat sort of drab day in December in the Netherlands. Not that drab days in December are the exclusive preserve or even a defining feature of the Netherlands, just that this happens, this just happened to be one of those days. And sitting there with suitcases and that sort of thing in this youth hostel in which incidentally we were the only people staying. It's been made open especially for us in the middle of December, it's not really the time of year for youth hostels. And here's what happens. But stay, far off is heard a tiny hum, no louder than a fly, when it does strum with brittle wings the air. Is more a sound of purpose, does not miss a beat or varying its tone. Indeed it swells, it grows. The choir begins to heed, till suddenly a small boy does exclaim, Tis Rex, Tis Rex. Is it? It is, the same, I should insert here that Rex was the coach driver. Such rapid embarkation do we see, as if the singers minded were to flee and rather than a coach, the desperate choir boarded instead a chariot of fire. Now like a charioteer Rex yells, hold tight, and with a roar it zooms out of sight. Man, woman, boy, most solemnly they swore, from that day forth youth hostels, to a pour as nature doth a vacuum, and to find them lodging of a more commodious kind. First, in Holandsebyslos, leafy bowers, then midst fair puttons, bottle banks and flowers, they tarried. In the future who can say, in what Arcadian palaces they'll stay, in what palatial arcades they may find nightly relief from Toring's daily grind. But now our tale is told, our yarn is spun. It is time to call an end to fun, for we must find a moral, that we may as much in spirit as in heart be gay. Nor mere good humour from our verse derive, but holy learning that our souls may thrive. Fear not if thirst you fall, but like the dove, strive ere to seek those things which are above, where Christ sits, there may all we upward tend, and at the last to him in heaven ascend. And rather appropriately for that somewhat heavenly pointing ending, those last lines were actually written on an aeroplane. And imagine the cabin crew's surprise when I rang the bell when they came, instead of asking for a cup of water or something like that, I asked them, what's the name of this plane? Because I noticed that it's conventional when you're in this position of finishing a work on board a boat or a plane, rather than signing it with a place, you sign it with the name of the vessel. So there it is, Virgin Atlantic Rainbow Lady, September 16, 1997. And I just want to say some extra acknowledgments, as well as everyone I thanked already during the talk for their various bits of people, help, various bits of people, that sounds awful. Sorry, I just want to say a big thank you to Frostconn 11 for having me, and in particular for the immense hospitality that making this, that the organizers have shown, making coming here extremely easy as well as very pleasant. And to Der Peter for suggesting that I apply to tell this tale in this talk in the first place, which I told him in a pub in Cambridge last November, and he stopped me. And I thought it was just because he was, maybe it was because he was terribly bored, but I thought it was just that. He said, oh, you should come to Frostconn and talk about that. So if you have any, if I have a tool peaked your interest in seeing how this turns out, then do follow, of course, this is an S, SC3D, and I always tweet with a hashtag youth hostel whenever I have anything to say about that, so you don't have to read everything else I say. And I hope I'll actually have a finished version very soon. And although I, as I said, the focus was very much on making a real physical book in the first instance, I've also put quite a lot of effort into the PDF version. I will continue to improve on that as the paper version is finished, and it will become a more purely electronic work. There is actually a murder mystery hidden in the footnotes, which I haven't alluded to because there wasn't any time, but that's that. So if anyone has any questions, I'd be delighted to take them in the five minutes remaining. The one question I'm hearing is, can we go now? Yes! Yes, please. Have a wonderful time. Oh, sorry. I'm sorry. Sorry. Hi. Will your text be available to the public at some point? Yes. So there's, sorry, the question, I wasn't sure whether that was amplified. The question was, will the text be available to the public? That is one reason, one additional reason to follow the project is that it will be, in fact, the final version of the slides, which I'll make available through the conference site as well for ease of finding, will have a link to some version of the text. Yes. Yes, absolutely. Yes, absolutely, yes, indeed, that's largely the point of the electronic version is to have a version that I can share with everyone who didn't come to a dinner three years ago and won't have a physical copy. And indeed, the murder mystery I alluded to is not, is only hinted at in this book. That's the topic of my next work, which by extrapolation will be available in about 50 years. Is that all? You've been a wonderful audience. Thank you very much. Thank you. Thank you.
 Welcome, everyone, to the last session of the day.  Next up is Ruben Thomas, who will be talking about the challenges in type setting probably,  and getting your writings to come out beautiful on paper.  Welcome.  Thank you very much.  I'll try not to keep you too long from your dinner.  So I'll just say a few words about myself to try to explain what might be otherwise  a rather perplexing talk.  Even after you've read the introductory slide, I have what one might describe as something  of a portfolio career.  My main employer currently is the Roman Catholic Church.  I sing in the choir of Westminster Cathedral in London.  And before that, I spent the previous 30 years working for a spin-off, which was nationalised  by the English government about 500 years ago, the Church of England.  I studied computer science at Cambridge University.  And just before that, I was fortunate enough at high school to have compulsory historical  and literary studies, even though I mostly specialised in scientific subjects.  But you'll see in a moment how that comes into the subject of the work I'm about to  describe.  So just to give you a quick outline of the talk, I've already given you some personal  context.  I'm then going to talk about a short, well, not quite so short, poem that I wrote many  years ago.  The bulk of the talk is about some technical matters that arose as a result of trying to  typeset this poem in a particular way, which led me first into latex, and then into various  parts of the free software universe.  And then I'll end up by going a little bit philosophical and talking about how this relates  to Larry Wool's cardinal virtues of the programmer, and also a word about proprietary software.  So the central subject of this talk is a poem I wrote.  It's not a very long poem.  It's about 272 lines long, which is a lot shorter than, I don't know, the Odyssey.  So a book of 40 pages, which so far, and I think I'm nearly finished, has taken me almost  24 years to write.  And it's a satirical mock epic, which is almost entirely true, but footnoted, prefaced, and  with a publishus forward that I've made up, which is a slightly unusual way around.  And of course, the first question that one might reasonably ask after seeing that summary  is, what on earth does this have to do with free software, even though it's obviously  a fascinating subject for a talk?  Well, of course, like all computer scientists by education, I decided I would typeset this  work with Leytec, and it's a moderately complicated bit of typesetting with 26 different packages.  And in particular, some challenges in the actual nitty gritty of the typesetting, the  fine detail with some unsupported glyphs that Leytec doesn't normally have to deal with  to draw, because in some cases, they didn't even exist in the fonts, to typeset, and of  course, to print.  And this was all because I was basing my book design, as indeed the style of the poetry,  which makes it up, on an 18th century model, which we'll come to in a moment.  And that left me with quite a lot of hacking to do.  But first, this is how it came about.  This is me about 24 years ago, as you can see already thinking deeply about how on Earth  I get to typeset this poem that I haven't yet started to write.  And that was the year that I started my university education at Cambridge University, and I spent  a lot of my time in this place, which is the chapel of St John's College, where we would  sing even song, which is an English invention.  It's a sort of mash-up of the Catholic offices of the hours of Vespers in the late afternoon  and Complin in the late evening.  And it sort of meets halfway, sort of about just before suppertime, conveniently, so that  in the old days, when all the men in college, because of course, until 1982, there were  only men in the college, which coincidentally was the year I went there to sing as a boy  ten years before I started as an undergraduate.  But anyway, in those days, all the men would have to go to even song every day.  It was mandatory, so there's enough seating there for about 150 scholars, and then they  would go to hall and have their dinner.  Well, by the time I was there, the choir often outnumbered the worshippers, and we looked  something like that.  Coincidentally, this picture was taken while I was in the choir, but I'm the only member  of the choir not in it.  I must have been away that day.  But the actual poem was inspired by quite a different location.  We used to tour frequently to the Netherlands, and it was in the winter of 1992 that we made  one particular tour, the first of my time as an undergraduate, which made a lasting  impression on me.  And it was in particular when we stayed in a youth hostel that, as far as I can remember,  looked something like this, although I have to say in the interests of strict truth, the  fact that this particularly youth hostel is not in the Netherlands, it's just a picture  that seemed about right.  So that was one part of the inspiration, and then the other part is historical.  This is the title page of a work by Alexander Pope, the 18th century English poet, called  the Danciad.  So this is a mock epic.  It is a sort of satire based on the Iliad, Homer's Iliad, and it was pretty much an attack  by Pope on all the rivals, other poets, journalists, critics of his day whom he detested.  And he wrote it with a great many notes, which he claimed to be by someone called Scribleris,  but were in fact all written by him.  So this is where we begin to see where I got my idea for my own work.  And as you can see, this is a, if I, maybe with a little bit of assistance from a zoom  function here.  Yes.  That's, oh, no, that's not, that's not, that's not, that's the opposite of assistance.  That's, there we go.  So, oh, 1729, there we go.  So this is a 1729 edition, which thanks to the wonders of modern technology, one can  find on, in the internet archive.  No, yes, good.  This is, this is really where all the fuss began, the long S.  So this will be familiar to German speakers, of course, in a somewhat restricted form.  But historically, this is really, you might almost say a Greek thing, or at least it comes  to us in the same form in modern Greek.  So here we have a terminal sigma, terminal lowercase sigma, which has a more than a passing  resemblance to the modern S. And here we have a non-terminal, which can be an initial or  medial sigma, so anywhere but the middle of the word, anywhere but the end of the word,  which doesn't bear any resemblance to a long S, but it has exactly the same function.  So until the late 18th century, English was tight set with two different S's.  And so here's a couple of examples where you can see that in the capital, or at the end  of a word, it looks pretty familiar.  And all the rest of the time, it looks rather like an F. Only again, if I can hopefully this  time slightly more, yes, here we are.  So if you look at it very carefully, you'll see that it's not quite an F, because the  bar only sticks out on the left.  Now I didn't want to have to type these all manually.  Indeed, at the time I started typesetting it, the book, I didn't even really have that  option because although you now have a Unicode code point and some fonts, which even have  the long S in the right position, I didn't.  So I started typesetting the book in 1998.  I finished writing it in 1997.  So that took me a mere five years.  Then the real fun began.  And at that point, there was a package PA-Caslon, which had been written a couple of years earlier,  which used the Adobe-Caslon font, which comes, if you get all the expert sets, with long  S's.  And it had sufficient rules for when to use Wichess and used various bits of Arcane tech  magic so that you could type in an ordinary text and it would work out where to use Wichess.  So that was nice.  But then, unfortunately, as I said, typesetting took me quite a long time.  And by late 2012, when it was time to do what I thought at the time was a final printing,  the package PA-Caslon no longer existed.  But I also discovered that I needed some extra glyphs.  So hang on, what's this about final?  Because this is 2016 now, and I already admitted that I still haven't finished this book.  Well, I had to have made three attempts in total to finish this book.  And here was my first.  My first attempt was to have a dinner.  And here are some of the people who came to the dinner, a lot of whom feature, in some  sense, in the book, because they were all on that original tour back in 1992.  So this dinner was held in 2013 in the Wordsworth room, appropriately enough, a room in St.  John's College named after William Wordsworth, who was, of course, an English poet, who wrote  rather more than I did, of rather better quality in a much shorter time, I might say.  So that was great fun.  But unfortunately, it didn't actually make me finish the book.  I was able to supply everyone with proofs, and I got many useful corrections.  But I did not come out with a finished product.  And there is the dean of college reading a bit about him, while I'm carefully studying  the proof in the background.  So I had this defunct font package, which I rather needed to typeset my book.  And this is 2012, and of course, by then, we had Lua Tech, which has pretty good support  for open type fonts, including all sorts of extra features, like alternate glyphs and  historical ligatures and ligatures of other sorts.  So why didn't I just use that?  Well, I had a go, but I couldn't get it to work.  And I'll probably get back to that one day, because I probably ought to be up to date  with my font technology.  So I went back to my PostScript fonts and the ancient font-inst package for LeyTech and  PDFTech.  And I hacked around with the various tools that one has for turning PostScript fonts into  TechFont metric files and TechVirtual font files, and was able, in the end, to reverse  engineer the original package, for which I also was able to get in contact with its author,  and even he'd lost the source code.  So he was very helpful and sympathetic.  But unfortunately, I had to do that.  And of course, I had to have a play with TechFont encodings.  In fact, there's enough material here for another talk, which really should have been  given about 12 years ago, because really one shouldn't be doing this sort of thing anymore,  as I say.  We should be using OpenType.  But I couldn't get it to work in this case.  But 2016 is not the time to give a talk about TechFont packages and font encodings.  So I'm only going to hint at that.  So I mentioned a moment ago that I needed some extra glyphs.  So let's just see what was actually going on there.  Actually, it's a bit hard to do on a beamer because of the resolution.  One day, just before the dinner I mentioned, I had my proofs on my screen at a very high  resolution.  And I noticed something, which I'm going to make you all notice, by the power of hypnotism,  because I don't think it's actually detectable on this lay resolution display.  But if you look very carefully, then you will see that in this SSI, sorry, SSI ligature,  in the word succession, the upper ligature is the one that I drew.  Well I say drew.  I really just took apart the original characters and put them back together into a new ligature.  And then the lower one has a slightly more bulbous end to the second long S. And the  reason for that is that the font, the typographers at Adobe did a, it would be unfair to say  they were being lazy because what they did was actually very clever.  They set up the metrics of the font so that if you had a double S ligature, this is actually  a double long S ligature, and then you put it next to an I, the dot of the I would overlap  the end of the S and look pretty good unless an obsessive Englishman happened to take a  magnifying glass to it at about 800% in his PDF viewer.  So obviously, since I wanted to make a physical book, which would have to, that would be it,  I'm not going to go through the process more than once, that I had to improve on that.  So obviously I busted out Font Forge, which at the time was the only really sort of comprehensive  free software font editor.  That's no longer the case actually, but it's still pretty good.  So this is my first side project.  So in January 2013, I first did a little bit of work on Font Forge.  I'd been using it to try to understand why I was having trouble with OpenType, in particular  the historical features.  And I just happened to look at some of its source code and found a comment that was a  bit misleading.  So I clarified the comment.  So that was my first mistake, it turns out.  In July, I've reconstructed the history from looking at the commit logs for Font Forge.  In July 2013, I went a bit further and I actually touched the code for the first time, and I  did a little bit of tidying up.  And then the next year, by which time I'd already used Font Forge to draw my two extra  glyphs, a long double SI and a long double SL, beautiful.  But then one day in 2014, I opened Font Forge and I found that the entire interface was  using GNU Unifont, which is a wonderful font of last resort, which has a glyph every single  Unicode code point, and they update it every time there's a new version of Unicode.  But you really don't want it in your user interface.  And the reason that this had happened was because of a mistaken bit of configuration  in Font Forge's resources.  So I fixed that, and after that, it was all downhill.  I found myself doing all sorts of general code cleanup and simplification in Font Forge  that had nothing to do with anything I was actually using it for.  And then a couple of months later, Dave Crossland, who is a great and energetic advocate and  activist for Free Fonts, invited me to work on Metapolator, which is something completely  different.  So it needs a different window.  I should just quickly, this is really a sort of advertising break.  I should just say that if you're at all interested in amazing things you can do with fonts these  days, you should definitely have a look at Metapolator.  This is metapolator.com.  It's still somewhat of a prototype, but the basic idea is that you can have two fonts.  Here we have a Roboto Slab Lite and Roboto Slab Bold, which you probably can't quite  see because there are tiny letters there.  But what you should be able to see is if I move this slider, it changes the font.  And it's actually generating that on the fly.  And in general, Metapolator is a set of technologies for making font families that are essentially  parametric, rather like, you may think, since I've been talking about tech and latech throughout  this talk, the original computer modern fonts.  But updated in such a way that they're easier to use for typographers who today are probably  less used, like Donald Nooth, to actually programming their fonts in a sort of dialective  list or meta font or whatever.  And instead would rather have something a bit more graphical.  So there's Metapolator, which I should also say is involved.  It was conceived originally by Simon Egley, the user interface by Peter Siking, and has  mostly been programmed by the indefatigable Lassifista.  So back to late 2012, a more urgent problem I had just before this dinner, which was supposed  to be my way of finishing the book, was that I couldn't actually print the book, which  is for a document that is supposed to be printed and bound and available for people  to handle was a bit of a disaster.  That turned out to be because of a bug in the PDF printing stack at the time, at least  in the current, whatever, was the current version of Ubuntu.  That would probably have been precise at the time since it was late 2012.  And that was not something I had the ability to fix in a couple of days.  So I thought I'd use a clever workaround, which was instead to print from PostScript.  And PSutils is an excellent suite of programs for manipulating PostScript.  And so I thought I would use them to get my PostScript pages and arrange them in a book  that I could print neatly as a booklet that people could have at the dinner.  Unfortunately, it turned out that at that point PSutils had a bug when printing N up.  So you want to print, in my case, something like A5 pages on an A4 sheet, which I'll then  fold in to make a booklet in a fairly obvious way.  So I fixed the bug.  And then I had another bad moment because I noticed that the package was no longer maintained  upstream.  So I got to work.  I added all the patches that Debian had put in over the years.  I rewrote a lot of the documentation.  I rewrote the build system.  I used lib paper everywhere so that you could use human readable paper sizes like A4 and  B5 rather than having to give dimensions in points or millimeters or something like that.  And I also managed to simplify the code somewhat.  I mean, the upshot in the end was I became the maintainer of PSutils.  So accidentally while writing a book, that's six months of employment working on Metapolator.  And I've suddenly acquired the maintainership of a free software package.  Oops.  And also there was one more last minute bug, which was that after all this duplex printing  of PostScript didn't work.  So I had to manually duplex having spent a great deal of money on a printer with a duplex  unit.  So I just mentioned lib paper, which was at the time a Debian specific library for describing  paper sizes.  Very simple.  You just have a list of paper sizes and their dimensions in various units.  It might be millimeters or points or inches depending on the natural unit for the paper  size.  So you'd probably describe A4 in millimeters and US letter size in inches.  For example, that was worked by Yves Arrouill and Adrien Bonk.  But it was unmaintained for several years by the time I got my hands on it.  You can see where this is going.  So it was an optional dependency of PSutils at the time.  PSutils was a portable package.  Lib paper was only intended for Debian.  But I thought, well, it would be nice if it didn't have to be optional.  So again, I applied all the Debian patches.  Yes, there were Debian patches, even though it was a Debian native package.  I added more paper sizes.  There are, of course, nice lists that you can find in places like Wikipedia.  And it was actually surprising that you might think that there'd be pretty much infinite  number of paper sizes.  And there probably is in reality.  But I could only find about, I don't know, 30 or 40 by searching various places on the  internet.  I updated the build system, removed KNR-C support, because the program was written long  enough ago that it still supported pre-ANSI compilers, rewrote the documentation, simplified  configuration, as you can see, the list goes on and on.  Oh, one nice thing was actually that on modern GNU Linux systems, it turns out that you can  get the default paper size for a particular locale.  From a non-standard locale setting, LC underscore paper.  Although, unfortunately, it's only in integral numbers, which is unfortunate because not  all paper sizes are expressible.  It's an integral number of millimeters, in particular, US letter size.  But that's another story.  But anyway, it's nice because now you don't actually need to configure a default paper  size.  If assuming you're using your locale's default, which is going to be the case for 99.9% of  users, you can just read that from the system.  Oh, and I rewrote it in Perl.  Now, hang on.  This is a C library.  What's going on here?  Well, there were a few things I wanted to achieve here.  For verification, I managed to get this package, which does a pretty trivial job, right?  Taking a list of paper size names and dimensions, and you can match dimensions to a size or  find this dimensions from a size.  That's all you really want to do, plus have per user settings and a system default.  That was nearly 50, well, getting on for 1,500 lines of code in C. I reduced it to about  150 in Perl.  Obviously, I got rid of lots of bugs because everyone knows that if you delete code, you  remove bugs as well.  Made it accessible from other languages because the previous, because lib paper really was  just a C library.  If you wanted to access it from any other language, you had to write, you had to use  a binding to the C library.  Now, of course, you have the opposite problem that you have a small executable, which is  very easy to use for most languages, because you just run it with some command line arguments  and you get back a result.  That's not a thing that's quite easy to do in C, so I'll say how I solved that problem  in a moment.  At the same time, keep it portable because I think, again, it's a reasonable assumption  that if you are running on a particular computer system, a program that needs to ask the user  about paper sizes, you've probably got Perl installed.  Later, I decided to write PSutils in Perl 2, but I'm not going to tell that story today,  so don't worry.  Then finally, on this nested dive, I've gone from wanting to print a book to maintaining  PSutils to pretty much maintaining lib paper and rewriting it.  Now, I'd like to share this work with other people and inflict it on the rest of the world.  So I thought that if I wanted to get paper into Debian and also help update PSutils in  Debian, then I'd better actually become a Debian maintainer, because it wasn't something  that anyone else is going to be interested in with two basically unmaintained packages.  And for non-specialists in the room, I should say Debian maintainer is not the same thing  as a Debian developer.  So in other words, not somebody with a vote on important matters and high-level access.  This is basically a sort of supervised access to Debian only.  So at this point, I should just make an acknowledgment to Wookie for seconding my Debian maintainer  application and Dmitry John-Ledkov for signing my GPG key twice because of confusion over  how long it had to be.  I don't know, I just seem to attract bugs sometimes.  That one was just a bug where two different places in the Debian Wookie had different  information on how long a maintainer key had to be.  This work is still ongoing.  If you are interested in very old paper-based things, then I'm hoping to get it into Debian  unstable in the next few months.  So that sort of takes us up to the end of 2014 also.  Every year later, I still hadn't finished the book.  So I thought I should have another go.  The next go was this talk because I thought, well, if I had to give a talk, which it would  be nice to actually show a book, then I'll have to finish the book, right?  Well, it almost worked.  More on that later.  But I'm sorry that if you read my summary and we're hoping to see an actual book, then  I don't have one today.  But nearly.  So usually one looks into the morals of a project when you're sure it's absolutely  over.  And I'm going to provide some evidence that I think I have got sufficiently close to  the end that I can do that now.  And as I was thinking back on it, it occurred to me that this has something to do with the  cardinal virtues of the programmer as laid out famously by Larry Wall in his book, Programming  Pearl.  Yes, Programming Pearl, the camel book anyway.  So for those who are slightly rusty in their memory of Programming Pearl, the three cardinal  virtues of the program are laziness, impatience, and hubris.  And we'll just look at how those pertain to this project one by one.  So I'm a great believer in going back to the sources, checking that you have remembered  correctly what you mean by a term that's important.  So I've actually found the quote from the second edition of Programming Pearl.  Laziness is defined by Larry Wall and his co-authors as the quality that makes you go  to great effort to reduce overall energy expenditure.  It makes you write labor-saving programs that other people will find useful and document  what you wrote.  So you don't have to answer so many questions about it, hence the first great virtue of  a programmer.  Well, as far as what I've tried to do with the various projects I've described, I would  say I have tried to be lazy, although I can say also that it didn't feel like that at  the time.  I'm not sure quite how you'd apply this virtue to poetry.  Arguably from a poetic point of view, I've done a ridiculous amount of work other than  actually writing words.  But I think anyone in the audience who is familiar with procrastinating will recognize  the temptation to get involved in side projects.  So second virtue, impatience.  So again, quoting from Programming Pearl, the anger when you feel when the computer  is being lazy, which is a nice bit of recursion, this makes you write programs that don't just  react to your needs but actually anticipate them.  So I would argue that, again, a large part of the work I did on the typesetting of the  long S was precisely with this in mind.  There are all sorts of rules.  There's a wonderful blog post I used, which you will find if you search for Rules for  Long S, where someone actually went and looked at a great number of old books and deduced,  because nobody as far as we can tell ever really wrote it down, deduced the rules for  when you use a long S and when you use a short S.  Because although what I said at the beginning is basically true, that you use the long S  everywhere except at the end of a word and the short S at the end of a word, it turns  out there are quite a few exceptions whether to do with particular letters, such as you  think the short S before a B or a K, and there are also rules about what you have to do with  hyphenation and all that sort of thing.  So it's really not the sort of thing you want to do manually, choosing between the  two versions of the letter.  You really want the computer to do it, and hence you want the computer to not be lazy  and do all the work for you.  On the other hand, I did wait an awfully long time for the support to be written in the  first place, and then I waited so long that it became obsolete again.  And you could argue that that's a bit too much patience.  Finally hubris.  So programming Pearl again, it says of hubris, the quality that makes you write and maintain  programs that other people won't want to say bad things about.  Well, it's interesting to read that because I actually thought that it meant something  a bit different, which proves that over the years you can easily forget the original sense  of a text that you read.  Because I think often people use refer to hubris as a shorthand for it's sometimes a  good idea to do something new.  But that's not really what Larry Wolz is saying here at all.  So apologies for contradicting the published talk abstract in the sense that actually having  read that again, I have to say that I don't think I've gone against that at all.  Although possibly other people won't want to say bad things about.  Well, if nobody else uses the programs, then of course they're not going to say bad things  about it.  So possibly not writing programs that are so obscure that nobody wants to say bad things  about them.  I wouldn't necessarily advise that.  I said it also at the beginning, I would say a word about proprietary code.  Now the only proprietary code I've actually mentioned in this talk is the Adobe Castlon  font.  And I would just say that I think that does count as code.  Well, I mean, apart from anything else from a practical point of view, of course, software  fonts as opposed to old fashioned pieces of metal do actually come under copyright law  rather than just design law.  And so although Adobe Castlon was issued in 1990 and I think 1992 it was updated, it still  won't be out of copyright until the Disney Corporation finally fails to persuade the US  Congress to extend the copyright on Mickey Mouse's ears.  So in other words, it's still in copyright and will be for a very long time.  But despite that pain in the neck, sometimes proprietary code is all there is and you have  to kind of try and work with it.  The biggest, the most obvious example in this case being that I needed to make some changes  to the font, I needed some extra glyphs.  And of course, I can't distribute those extra glyphs.  So what I do in the Adobe Castlon latex package, which I contributed my long S support to,  is I simply give hints on how you might use a font editor to recreate the glyphs if you  want.  And if you don't put in that effort, then you can still have all the extra long S support  without my two extra ligatures and that's fine.  So it degrades nicely.  Of course, one nice thing, at least if you're thinking long term, is that in any particular  case you can beat proprietary code in a sense by share patience because eventually the copyright  will run out.  Although often, of course, one dies before that point, which is sad.  And of course, realistically, I would love to have a free alternative to Adobe Castlon.  I only used it because I couldn't find a free typeface that had an 18th century style and  was actually drawn.  I found several that had just been quite nicely scanned from books so that if you wanted to  make a book that looked as though it was made in the 18th century, rather than just in an  18th century style, they would be fine.  And of course, with full support for the long S, say with all the extra ligatures.  So if anyone knows of such a thing, I'd love to hear about it.  So at the end of any epic, well, at the end of almost any poem, at least from the 18th  century, you have to have a moral.  So I've got several from my last 24 years of experience with this project.  First, I think I've just said proprietary code is a pain and fonts are more engineering  than art, which is why they come under the heading of code.  Waiting often helps.  So I've given some examples where it helps.  I've given some examples where it helped, didn't actually help because too much waiting  can be a bad thing.  But it was amazing how many of my little type setting problems were solved by packages that  were written long, long after I started the project.  I think there's some value in allowing your passions, as I say, to mutate.  So this is, of course, one way to cope if you're waiting.  It's another way to cope if you're procrastinating.  But the fact that I enjoyed both writing poetry, making a book, and also hacking on various  bits of free software, I think made the overall experience rather more interesting.  And even, as I said earlier, with my work on Metapolite, or even resulted in some employment,  which is a bit of an odd thing for something to come out of trying to imitate an 18th century  poet.  So that was that sort of fun and for profit there.  And then on a programming side, old code, I said here, old code repays new effort.  And I think, of course, most code repays effort.  If you put effort into improving, maintaining, extending code, you usually expect to get  something out of that other than just the enjoyment of doing it.  But I think old code has some particular advantages because, as I say below, abandoned projects,  especially those started years ago, are often simple and small.  They're not fast-moving targets.  So stepping up to help with them can be very easy because there's maybe one maintainer  left or no maintainers at all.  So you don't have to engage with lots of process.  And you can just start by fixing a few small things.  I think you saw the pattern in the various projects I was involved in.  It mostly started with a small fix and then turned into something larger.  Although as I think I've also illustrated, it can end with you taking on perhaps a rather  more responsibility than you might have intended.  That might be a good thing, too.  But I think there's quite a lot of code like that.  So if you look at any system, especially one based on free software, you'll find that  most of the effort is at the bleeding edge, I think.  And with a few exceptions, such as, say, the Linux kernel itself, there's not so much effort  right in the core.  There's a lot of code that doesn't perhaps need a great deal of effort.  It's quite happy.  But on the other hand, an awful lot of long-standing bugs that are annoying people that have kind  of fossilized, that have familiar workarounds, but why not go and fix one or two of them,  make the world a slightly less, a slightly more reduced friction of the free software  world?  And finally, of course, not forgetting that there are other things than code, which is  sort of where I started.  So my final attempt to finish the book, I came up with just before, just in the last  few weeks, just as I was starting to write this talk.  And in the end, the most effective way to finish it proved to be not to finish it.  So as I said at the close to the beginning, the main aim of the typesetting project was  to have a physical book that's actually sewn into signatures, which are small numbers of  pages folded together, and that you then sew together into a larger book and bind in leather,  perhaps, or in cloth.  And I realized that, of course, in the 18th century, where every page had to be laboriously  set with metal type by hand, you probably had to print all the books in a print run  from the same set pages.  But in the 21st century, where I'm doing my in-printing, that's the one bit I'm sort  of keeping 21st century technology, with a laser printer, it doesn't really matter.  And so now, I just decided, well, if I didn't have any dreadful errors, I could just carry  on tweaking the text every time I print out a new copy.  But rather than throwing the copy away, I can keep it and make it into a slightly different  book so that if you remember that photograph of all the people who were at that dinner  three years ago, each of whom paid in their ticket price for a copy of the book, they'll  all now be getting slightly different versions of the book, which I hope will amuse them.  So as of Friday, well, that's yesterday, isn't it?  Gosh, sorry, I've been travelling quite a lot in the last few days.  But as of yesterday, I had five copies sitting on my desk at home, ready to go to the binder,  and I hope to accelerate some more and get up to more like 25, which is how many I'm  going to have bound next week.  And so I should have in that set about six or seven different editions, all in the first  print run, which is a nice 21st century thing to be able to do.  So I just thought I'd give you a flavour of what I've actually produced.  And I'm going to give it to you in two forms, because I think I've just about got enough  time.  I haven't seen one of those cards yet, and I'm just now seeing that I have 15 minutes  left, which is definitely long enough for this and one or two questions.  I'm going to show you what it looks like and read you what you can see as well.  There's the poetry, not the footnotes.  So I don't know if you can see these numbers, but we're at line 240, which is quite close  to the end.  I did describe the poem as a mock, mock epic, because, well, if we go back to the original,  of course, an epic, we might expect to be several books long and certainly several  thousand lines and on a very serious subject like wars between gods or heroes or that sort  of thing and involve lots of ships and horses and swords and that sort of thing.  And then a mock epic, like the mock epic of popes that I showed you, the duncead, is  still quite a long thing.  The duncead comes in three books and is still well over a thousand lines long and is not  actually about gods, but it's sort of about pretend gods, like the goddess Dullness,  for example, and the duncead ends with a wonderful scene, which you would quite easily recreate  in this room if only you had a...  Is there a light switch?  Is this a light switch?  Oh, yes, that'll work, yes.  Okay, so here we go.  The last two lines of the duncead.  Thy hand, great Anarch, let the curtain fall and universal darkness bury all.  End, you see.  So that's how that goes.  So it has a certain something.  It's very much following the sort of scale of epic poetry, even if by introducing characters  such as the goddess Dullness, it's not being entirely serious.  So hence the mock.  Well in the youth hostel, the action takes place over a single night.  The choir arrives at the youth hostel, they stay the night there, and in the morning they  leave again.  And not a great deal actually happens.  And so hence mock, mock epic.  It's smaller, it's less serious.  And here's the scene where the choir, having spent the night in the youth hostel, and having  waited with some trepidation for their coach to arrive to take them onto their next venue,  finally, they're sitting there in the, you have to imagine a somewhat sort of drab day  in December in the Netherlands.  Not that drab days in December are the exclusive preserve or even a defining feature of the  Netherlands, just that this happens, this just happened to be one of those days.  And sitting there with suitcases and that sort of thing in this youth hostel in which  incidentally we were the only people staying.  It's been made open especially for us in the middle of December, it's not really the time  of year for youth hostels.  And here's what happens.  But stay, far off is heard a tiny hum, no louder than a fly, when it does strum with  brittle wings the air.  Is more a sound of purpose, does not miss a beat or varying its tone.  Indeed it swells, it grows.  The choir begins to heed, till suddenly a small boy does exclaim, Tis Rex, Tis Rex.  Is it?  It is, the same, I should insert here that Rex was the coach driver.  Such rapid embarkation do we see, as if the singers minded were to flee and rather than  a coach, the desperate choir boarded instead a chariot of fire.  Now like a charioteer Rex yells, hold tight, and with a roar it zooms out of sight.  Man, woman, boy, most solemnly they swore, from that day forth youth hostels, to a pour  as nature doth a vacuum, and to find them lodging of a more commodious kind.  First, in Holandsebyslos, leafy bowers, then midst fair puttons, bottle banks and flowers,  they tarried.  In the future who can say, in what Arcadian palaces they'll stay, in what palatial arcades  they may find nightly relief from Toring's daily grind.  But now our tale is told, our yarn is spun.  It is time to call an end to fun, for we must find a moral, that we may as much in spirit  as in heart be gay.  Nor mere good humour from our verse derive, but holy learning that our souls may thrive.  Fear not if thirst you fall, but like the dove, strive ere to seek those things which  are above, where Christ sits, there may all we upward tend, and at the last to him in  heaven ascend.  And rather appropriately for that somewhat heavenly pointing ending, those last lines  were actually written on an aeroplane.  And imagine the cabin crew's surprise when I rang the bell when they came, instead of  asking for a cup of water or something like that, I asked them, what's the name of this  plane?  Because I noticed that it's conventional when you're in this position of finishing a work  on board a boat or a plane, rather than signing it with a place, you sign it with the name  of the vessel.  So there it is, Virgin Atlantic Rainbow Lady, September 16, 1997.  And I just want to say some extra acknowledgments, as well as everyone I thanked already during  the talk for their various bits of people, help, various bits of people, that sounds  awful.  Sorry, I just want to say a big thank you to Frostconn 11 for having me, and in particular  for the immense hospitality that making this, that the organizers have shown, making coming  here extremely easy as well as very pleasant.  And to Der Peter for suggesting that I apply to tell this tale in this talk in the first  place, which I told him in a pub in Cambridge last November, and he stopped me.  And I thought it was just because he was, maybe it was because he was terribly bored,  but I thought it was just that.  He said, oh, you should come to Frostconn and talk about that.  So if you have any, if I have a tool peaked your interest in seeing how this turns out,  then do follow, of course, this is an S, SC3D, and I always tweet with a hashtag youth hostel  whenever I have anything to say about that, so you don't have to read everything else  I say.  And I hope I'll actually have a finished version very soon.  And although I, as I said, the focus was very much on making a real physical book in the  first instance, I've also put quite a lot of effort into the PDF version.  I will continue to improve on that as the paper version is finished, and it will become  a more purely electronic work.  There is actually a murder mystery hidden in the footnotes, which I haven't alluded  to because there wasn't any time, but that's that.  So if anyone has any questions, I'd be delighted to take them in the five minutes remaining.  The one question I'm hearing is, can we go now?  Yes!  Yes, please.  Have a wonderful time.  Oh, sorry.  I'm sorry.  Sorry.  Hi.  Will your text be available to the public at some point?  Yes.  So there's, sorry, the question, I wasn't sure whether that was amplified.  The question was, will the text be available to the public?  That is one reason, one additional reason to follow the project is that it will be,  in fact, the final version of the slides, which I'll make available through the conference  site as well for ease of finding, will have a link to some version of the text.  Yes.  Yes, absolutely.  Yes, absolutely, yes, indeed, that's largely the point of the electronic version is to  have a version that I can share with everyone who didn't come to a dinner three years ago  and won't have a physical copy.  And indeed, the murder mystery I alluded to is not, is only hinted at in this book.  That's the topic of my next work, which by extrapolation will be available in about 50  years.  Is that all?  You've been a wonderful audience.  Thank you very much.  Thank you.  Thank you.
Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_0_4655.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_4656_5999.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_6000_6191.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_6192_6527.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_6528_6587.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_6588_6995.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_6996_7571.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_7572_8027.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_8028_8591.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_8592_10247.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_10248_10847.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_10848_10895.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_10896_11411.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_11412_11927.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_11928_12143.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_12144_13355.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_13356_13439.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_13440_16319.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_16320_16439.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_16440_22391.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_22392_28715.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_28716_29159.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_29160_29579.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_29580_30335.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_30336_30407.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_30408_30803.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_30804_31103.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_31104_31187.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_31188_31355.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_31356_32015.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_32016_38759.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_38760_39527.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_39528_41075.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_41076_41783.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_41784_41843.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_41844_42863.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_42864_46619.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_46620_47147.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_47148_47567.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_47568_48527.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_48528_50399.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_50400_59927.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_59928_62687.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_62688_62891.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_62892_63407.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_63408_63779.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_63780_64247.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_64248_64883.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_64884_65171.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_65172_65651.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_65652_66335.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_66336_67535.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_67536_67859.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_67860_68207.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_68208_68339.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_68340_68471.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_68472_71195.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_71196_71423.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_71424_71903.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_71904_72911.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_72912_76727.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_76728_77639.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_77640_77879.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_77880_78023.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_78024_78383.png Reuben_Thomas__The_Youth_Hostel_d8F9sxs9BfI_78384_78778.png