Useful LaTeX packages: bibliography

This entry is part 1 of 4 in the series LaTeX packages

I’m going to post a short series of entries on LaTeX packages I found useful while preparing the examination copy of my PhD thesis. Largely this is just so that there’s a reference if my wiki page goes away, but also because I think many people use LaTeX the way I use it, that is, I got wedded to a bunch of packages 10 years ago and never really looked around for more recent stuff.

Today’s entry is a pretty slow start: the bibliography packages I used are pretty standard.

natbib

This is one of the most sophisticated and widely used packages for Harvard-style references (ie, “(Surname, Year)” rather than “[1]” style references).

usepackage[round]{natbib}
bibliographystyle{plainnat}

Inside your text use citep for a reference in parentheses “(Surname, Year)”, and citet for a in-text reference “Surname (Year)”. Its important to note that the plain cite command is equivalent to citet, which you may not expect.

You can use citeauthor to get just “Surname” and citeyear to get just “Year”.

bibentry

This is a useful add-on to natbib, which allows you to insert full bibliography entries into the body of your text. This is useful in the declaration portion of a thesis (where you say something like “this thesis incorporates revised versions of the following published articles”).

usepackage{bibentry}
nobibliography*

Then later on when you want to insert a full bibliography entry into the middle of your text:

bibentry{citationkey}

Product review: Shoeboxed

Update February 2017: this service is now known as Squirrel Street, and their smallest monthly pricing is significantly higher than it was in 2012. However much of the review still applies.

Original review:

I’ve been using Shoeboxed now for long enough to review it, I think.

Problem: as with every adult household, we have lots of incoming documents like bills and super statements and similar, and the high initial overhead on deciding whether and where to store them, plus re-sorting them later and so on has never been something we’ve been on top of. Come tax time, in particular, we were usually opening piles of envelopes and hoping for the best.

In 2007 or 2008 we started scanning and shredding a lot of things, but that still left going through and labelling the scans as a problem, plus when I went on maternity leave in 2010 we didn’t have access to a sheet-feed scanner anymore and got behind and never caught up. Back to the “giant unsorted pile of paper” solution.

There are a few services that accept mail on behalf of people and send scans (Pass the Post, Keeping You Posted) but these tend to be quite expensive if you want them to handle all your mail, and also there’s still a time-critical decision step (scan it or send it to me). It tends to be aimed at travellers or businesses. It was annoying enough though that every few months I hit the search engines and eventually lit on Shoeboxed.

What Shoeboxed does:

  1. accepts documents either sent by mail (not one at a time, many in a big envelope) to a US or AU postal address, or uploaded
  2. scans the physical document if any
  3. does data entry for the major data within (for bills, say, the sender and the total)
  4. makes them available after logging in on their website
  5. makes them available over an API to other services like bookkeeping websites

What Shoeboxed doesn’t do:

  1. directly accept individual physical mail on your behalf (they do have a service where you can get online receipts sent to them, I haven’t used it)
  2. full OCR of the scanned documents

There’s a very very limited Free plan involving uploading (not mailing) up to 5 documents a month for OCR plus unlimited uploads if you do your own data entry. The next plan up in Australia, which we’re on, is $20 a month, and includes all the features I listed

Impressions:

  1. overall, it pretty much does what we want: gets paper out of our house and into an easily searchable online form with scans available
  2. because it isn’t fully OCRed I still have to go through non-bills in order to note what they are, eg, a mail from childcare could be a fee change or a newsletter or a note about illness and if I need to find it in a year I’d have to search on the name and look through them all
  3. the processing speed on the Lite plan (contents of envelopes appear on the website in 3–5 days) has been a bit annoying on occasion, I’ve found myself scanning really time-critical documents and uploading them
  4. the processing speed on uploaded scans is great, the data entry is usually done within the hour
  5. the usage reporting doesn’t incorporate the bonus scans one gets by doing things like signing up for an annual plan, or answering demographic surveys. Very annoying!

For our needs, it’s definitely an improvement over our home-rolled solution. We’re scrambling to get 250 documents to them before our annual purchase bonus expires.

Copyright hell: larrakins and astrologers

This article originally appeared on Hoyden About Town.

People who support a reasonable balance between encouraging creation of artistic works by allowing creators to profit from them, and the interests of wider society in benefiting from the free availability of creative works (or even of facts) aren’t having a good day.

Larrikin vs Australian Music

Skud has covered this over at Save Aussie Music:

Today EMI Australia lost their High Court appeal against Larrikin Music in the Kookaburra/Land Down Under case…

Leaving aside the problems with the copyright system, let’s just take a moment to look at Larrikin, the folk music label that holds the rights to “Kookaburra”. Larrikin was founded in 1974 by Warren Fahey, and sold to Festival Records in 1995. Festival, owned by Murdoch, was shut down and its assets sold to Warner Music Australia in 2005, for a mere $12 million.

Larrikin was home to a number of Australian artists, among them Kev Carmody, Eric Bogle, and Redgum

Kev Carmody, one of Australia’s foremost indigenous musicians, released four albums on Larrikin and Festival between 1988 and 1995, none of which are available on iTunes nor readily available as CDs (based on a search of online retailers). …

Warner bought Larrikin Records’ assets — two decades of Australian music — not because they want to share the music with the public, but to bolster their intellectual property portfolio, in the hope that one day they’ll be able to sue someone for using a riff or a line of lyrics that sounds somewhat like something Redgum or Kev Carmody once wrote. They do this at the expense of Australian music, history, and culture.

Lauredhel covered the case earlier at Hoyden too, focussing on whether the claim of infringement stands up to a legal layperson’s listen test and musical analysis: You better run, you better take cover.

Astrologers versus software creators and users

Have you ever selected your timezone from a list which lists them like this: “Australia/Sydney”, “Europe/London”? Then you’ve used the zoneinfo database.

Timezones are complicated. You can’t work out what timezone someone is in based purely on their longitude, have a look at this map to see why. Timezones are highly dependent on political boundaries. On top of that, daylight savings transitions are all over the map (as it were). Some countries transition in an unpredictable fashion set by their legislature each year. Sometimes a sufficiently large event (such as the Sydney Olympics in 2000) causes a local daylight savings transition to happen earlier or later than that government’s usually predictable algorithm.

Therefore computer programs rely heavily on having a giant lookup table of timezones and daylight saving transitions. Data is needed both for the present, so that your clock can be updated, and for the past, so that the time of events ranging from blog entries to bank transactions can be correctly reported.

A great deal of software, including almost all open source software, relies on the freely available database variously called the tz database, the zoneinfo database or the Olson database.

Arthur David Olson (the “Olson” in “Olson database”) announced yesterday:

A civil suit was filed on September 30 in federal court in Boston; I’m a defendant; the case involves the time zone database.

The ftp server at elsie.nci.nih.gov has been shut down.

The mailing list will be shut down after this message.

The basis of the suit is that the zoneinfo database credits The American Atlas as a source of data, and The American Atlas has been purchased by astrology company Astrolabe Inc, who assert that the use of the data is an infringement of their copyright. Whether this is true is apparently highly arguable (in the US it seems to hinge on whether it’s a list of facts, which aren’t copyrightable) but in the meantime the central distribution point of the data is gone. And it could be a long meantime.

Now, people still have copies of the database (if you run Linux you probably do yourself). However, the source of updates has been removed, which means it will be out of date within a few weeks, and the community that created the updates has been fractured. Various people are doing various things, including a defence fund, a fork of the mailing list, and discussions about re-creating or resurrecting the data in other places. All a great waste of many creative people’s time and money, gain to society from Astrolabe’s action yet to be shown.

More information:

Update (Oct 17): ICANN takes over zoneinfo database

On 14th October the Internet Corporation for Assigned Names and Numbers (ICANN), which manages key Internet resources (notably, the global pool of IPv4 and IPv6 addresses) on behalf of the US government, put out a press release (PDF) announcing that they were taking over the zoneinfo database:

The Internet Corporation for Assigned Names and Numbers (ICANN) today took over operation of an Internet Time Zone Database that is used by a number of major computer systems.

ICANN agreed to manage the database after receiving a request from the Internet Engineering Task Force (IETF).

The database contains time zone code and data that computer programs and operating systems such as Unix, Linux, Java, and Oracle rely on to determine the correct time for a given location. Modifications to the database occur frequently throughout the year…

“The Time Zone Database provides an essential service on the Internet and keeping it operational falls within ICANN’s mission of maintaining a stable and dependable Internet,” said Akram Atallah, ICANN’s Chief Operating Officer.

I wonder if ICANN’s not-for-profit status is useful here. Just as Project Gutenberg can make United States public domain texts available globally, even though texts published prior to 1923 are not public domain world-wide, ICANN may present a less tempting target for lawsuits than other possible homes for the zoneinfo database.

Anti-pseudonym bingo

This article originally appeared on Geek Feminism.

People testing the Google+ social network are discussing increasing evidence that, terms of service requirement or not, Google+ wants people to use their legal names much as Facebook does. Skud shares a heads-up from a user banned for using his initials. Then, for example, see discussion around it on Mark Cuban’s stream, Skud’s stream and Sarah Stokely’s blog.

Let’s recap really quickly: wanting to and being able to use your legal name everywhere is associated with privilege. Non-exhaustive list of reasons you might not want to use it on social networks: everyone knows you by a nickname; you want everyone to know you by a nickname; you’re experimenting with changing some aspect of your identity online before you do it elsewhere; online circles are the only place it’s safe to express some aspect of your identity, ever; your legal name marks you as a member of a group disproportionately targeted for harassment; you want to say things or make connections that you don’t want to share with colleagues, family or bosses; you hate your legal name because it is shared with an abusive family member; your legal name doesn’t match your gender identity; you want to participate in a social network as a fictional character; the mere thought of your stalker seeing even your locked down profile makes you sick; you want to create a special-purpose account; you’re an activist wanting to share information but will be in danger if identified; your legal name is imposed by a legal system that doesn’t match your culture… you know, stuff that only affects a really teeny minority numerically, and only a little bit, you know? (For more on the issue in general, see On refusing to tell you my name and previous posts on this site.)

Anyway, in honour of round one million of forgetting about all of this totally, I bring you anti-pseudonymity bingo!
5x5 bingo card with anti-pseudonymity arguments
Text version at bottom of post.

What squares would you add? Continue reading “Anti-pseudonym bingo”

Ask Auntie Hoyden: get your dog outlines here, and other search engine queries

This article originally appeared on Hoyden About Town.

an on-set photo of Katharine Hepburn, with overlaid text reading "Ask A Hoyden?"auntie hoyden

Why, I enjoyed those posts (1, 2, 3) in which Lauredhel tried to answer search queries as questions too! So much so that I show up in this site’s logs looking for them. So today, I too become Auntie Hoyden.

Frankly, it appears to me that most people stop here on their way to I Can Haz Cheezburger (funny cat pictures, captioned cat pictures, supernatural macros funny, funny pics), but they also appear looking for soylent green simpsons, any medicine for truth speak and, in considerable numbers, anal sex diagram. (Which is a bit odd, Google finds plenty of considerably more helpful sites for me on that term.)

But let’s see what I can do for you all today, although my specialities are more in the computer line than the sexual health and breastfeeding line that is traditional for this.

pluralising names

Lauredhel observed in 2008 that there’s a construction in Australian English (among others) that allows you to use things like “the Marys of the world” to mean “people like one particular Mary” rather than necessary literally multiple people named Mary.

But if you’re simply interested in how to add a suffix to a proper noun in order to indicate multiple things with that name, here’s a style guide’s answer.

dog outline png

[Update 2019: freesvg.org or publicdomainvectors.org are currently more searchable than openclipart.org.]

I like openclipart.org for this sort of thing: it’s public domain clipart, take it, use it and modify it without credit. (Not that I don’t also love various Creative Commons licences that do require credit, but dropping that requirement makes using many pieces a lot easier. I’ve seen people who use CC images from Flickr need to put a credits roll at the end of slide presentations.)

Plus! openclipart.org provides SVG as well as PNG. SVG (Scalable Vector Graphics) is a free image format which allows pictures to be scaled up in size without loss of quality, as well as down in size. This is accomplished by describing an image in terms of lines or curves (hence, vectors) rather than in terms of individual coloured dots. It’s not very useful for photos, but it’s great for clipart (and fonts, which are generally described in vectors and thus can be scaled up).

openclipart.org has hundreds of drawings of dogs. I’m not sure if this person was looking for a silhouette of a dog, which I couldn’t find on a very brief look, or simply a line drawing of a dog, of which there are many. Here’s a cute one.

snuggle otter

Don’t. We love ’em but that doesn’t make them domesticated pets.

mother sprays milk

Does she ever. I breastfeed a ten month old baby. When he was little I had a supply suitable for twins, or perhaps sextuplets, and milk was everywhere. Then things balanced out and we had a nice interlude of not spraying. Then he got a bit more distractible, which resulted on the weekend in him getting a letdown, pulling off and slipping so that he headbutted me in the breast and milk shot out for the best part of a metre.

If anyone else wants to grace the Internet with a milk spray story, feel free.

australia’s prime minister 2010 smiling

On the 25th June 2010, one day after becoming leader of the government and being sworn in as Prime Minister, Julia Gillard smiled in the presence of the US ambassor to Australia, Jeff Bleich. This is important, because it was photographed by embassy staff, and as a work of the US Federal Government, it is thus in the public domain and you can get it from Wikimedia Commons.

anti filter

That’s us!

Can you help out with these?
squirrel give thanks
the worst shoe eveeeer
placenta accreta deathrate
crivens!

larch: migrating mail between IMAP accounts

I recently had to move several gigabytes of email (not my own, work-related) into Google Apps (Gmail). As best I can tell, the way most people do this is that they grit their teeth and they open up a graphical email client and drag folders one-by-one. It’s a one-off job for most people.

There were a couple of reasons I didn’t want to do that. One is that I was on my parents’ DSL connection at the time and pushing gigabytes of data through someone’s DSL is a violation of good guest principles, at least in Australia. The other is that we have over 500 folders in the account I’m talking about: that’s a lot of mouse pain.

Anyway, here’s your answer, if you are in the same position as me. After substantial searching, at least for this kind of tool, I came across larch, which is a Ruby command-line tool for IMAP-to-IMAP moves, most tested on Gmail and essentially designed for the “move my mail archives into Gmail” use-case. It’s much more mature than most of the one-off scripts people have thrown up on the ‘net. It certainly seemed robust over this volume of mail, although I did have to run it a couple of times to get past a few errors (it does not re-copy already copied mail, so re-runs are fast). It deserves more search juice.

If you wanted to keep two accounts permanently in sync, offlineimap would be the tool of choice, although the manual still seems to regard IMAP-to-IMAP syncing as not as robustly tested as its core mode of operation, which is IMAP-to-Maildir.

Creative Commons License
larch: migrating mail between IMAP accounts by Mary Gardiner is licensed under a Creative Commons Attribution 4.0 International License.

Viewing attachments when using mutt remotely

Yes, that’s right, I’m still in the dark ages and do not yet use Gmail for my email. Even though it has IMAP and everything. I still use Mutt.

I almost always use Mutt locally, using offlineimap to sync IMAP folders to local maildirs. This means I don’t usually have the problem of being unable to view non-text attachments. However, for the next little while I’ll be using Mutt on a remote connection.

Don Marti has one solution to this, which assumes that you are accessing the server with Mutt on it via SSH (probably true) and are easily able to create a tunnel to your local machine, which is trivial if you are using a commandline ssh client, but while you can do it with PuTTY I figured it was just annoying enough that I might not bother. (And I doubt you can do it at all with those web-based SSH clients.)

My alternative assumes instead that you have a webserver on the remote machine that has mutt on it. It then just copies the attachment to a web-accessible directory, and tells you the URL where you’ll be able to find the attachment. It’s thus a very trivial script (and I doubt very much it’s the only one out there), but perhaps using mine might save you fifteen minutes over coming up with your own, so here it is:

copy-to-dir.sh (in a bzr git repo)

Sample output is along these lines when you try to view an attachment in Mutt:

View attachment SOMEPDF.pdf at http://example.com/~user/SOMEPDF.pdf Press any key to continue, and delete viewable attachment

In order to use it, you need to:

  1. copy the script to the remote machine where you use mutt;
  2. make it executable;
  3. edit it to set the OUTPUTDIR and VIEWINGDIR variables to something that works for your setup;
  4. set up a custom mailcap file much like the one Don Marti gives, that is, put something like this in your ~/.mutt-mailcap:
     text/*; PATH-TO-SCRIPT/copy-to-dir.sh %s application/*; PATH-TO-SCRIPT/copy-to-dir.sh %s image/*; PATH-TO-SCRIPT/copy-to-dir.sh %s audio/*; PATH-TO-SCRIPT/copy-to-dir.sh %s
  5. set mailcap_path = ~/.mutt-mailcap in your ~/.muttrc file.

Something like this probably could work for Pine and other text-based email clients used remotely too, but I’m not sure how because I don’t use them. And if someone wants to document this in a way that assumes less pre-existing knowledge, go ahead.

Also, making your attachments web-accessible means that they are, well, web-accessible. I’ve set up a HTTP Auth-protected directory using https for this, you should think about your own setup too.

Creative Commons License
Viewing attachments when using mutt remotely by Mary Gardiner is licensed under a Creative Commons Attribution 4.0 International License.

Clean up IMAP folders

Per Matt Palmer’s blog entry OfflineIMAP and Deleting Folders users of any mail sorting recipe that creates new mail folders a lot tend to find that over time they accumulate a lot of mail folders for, eg, email lists they are no longer subscribed to. And most IMAP clients will waste time checking those folders for new mail all the time.

Matt wrote:

Now, of course, someone’s going to point me to a small script that finds all of your local empty folders and deletes them locally then issues an IMAP “delete folder” command on the server. But I had fun working all this out, so it’s not a complete waste.

I haven’t quite done this, I’ve just written a script that detects and deletes empty remote folders. (For me, offlineimap does not have the behaviour of creating new remote folders, so I haven’t bothered cleaning up local folders.)

It’s good: it’s speeding up my mail syncs a whole lot, deleting these old folders I haven’t received mail in for about five years. I’ve got full details and the script available for download (as you’d expect, it’s short): Python script to delete empty IMAP folders.

Creative Commons License
Clean up IMAP folders by Mary Gardiner is licensed under a Creative Commons Attribution 4.0 International License.

Headless / commandline Bittorrent

I made noises yesterday that I might learn about BitTorrent. So I tried. (It’s an interesting protocol from the point of view of needing clients to enforce penalties against refusing to upload.) Here’s the paradigm I wanted it to fit into: at, the command scheduler. 95% of my readership will know (intimately) how residential broadband works in Australia, but for those who don’t it is typical to not have unlimited downloads. On a good, just above entry level, plan you might have a limit of about 4GB to 10GB a month. (The entry level plans tend to have a limit of about 512MB or 1GB for only about $10 to $15 less. This is like selling small amounts of an addictive substance. Someone will eventually tell you about Google Earth.) However, it is also very typical to have an off-peak period with a higher, perhaps even unstated, bandwidth cap. (Mine is 48GB in a month, in the midnight to noon period only.)

Since I run a headless server anyway (for mail and music), I vastly prefer to schedule my downloads for when I’m sleeping and bandwidth is cheaper. When I’m going to download something available on the web, I run at midnight and then give the command wget --limit-rate=something -q -c [url] (-c because I’ve usually tested about the first 100K of the download already). In the morning, assuming I’m not downloading an album from a very well known band, my file is there. I therefore wanted to do the same with Bittorrent.

I’ll cut to the chase here: the solution is Transmission‘s command-line tools, particularly transmission-daemon and transmission-remote. The daemon controls all the torrents, and, usefully for my limited download window, they can be stopped and started from the remote command and therefore from cron. The only catch is that these tools seem to have only very recently matured, as in, they don’t exist in Ubuntu 7.10/Gutsy. (It has a transmission-cli package, but the daemon isn’t in it.) The transmission-cli package from Hardy will not install on Gutsy either, but you can backport it without any hassles, assuming you know how to get hold of and build Ubuntu (Debian-style) source packages, which, granted, probably doesn’t apply to 95% of my readership (although it might apply to a majority once we count Planet Linux Australia).

I thought this was worth sharing though, after I spent hours mucking around with BitTorrent (the Python client, not the rebranded µTorrent) and BitTornado, neither of which, even in the headless versions, has much support for such selfish notions as not wanting to run it until such time as it’s good and done (you can send SIGTERM and they do resume cleanly on the next invocation, not exactly champion of the world on design though), and neither of which puts up with this old-fashioned nonsense of wanting to run a process without a controlling tty. BitTorrent doesn’t even have an inkling that you might want to limit download speeds to anything less than maximum (perhaps Bram Cohen has never lived in a house with anyone else who wanted to use his net connection). I ended up looking at Transmission because the GUI version (also apparently very nice) is now Ubuntu’s default BitTorrent client. (Clutch is allegedly a nice web interface for Transmission too, but I haven’t looked at it at all.)

Edit: this post is not a bleg. The last paragraph describes a problem, yes, but this post is about how I’ve solved that problem by discovering Transmission. Please, there’s no need to email me on getting BitTorrent, BitTornado or rTorrent to work in screen or similar. I’ve discovered Transmission, which doesn’t need screen and which is very cron-friendly. This post is intended as a positive review of Transmission, not a request for help. End edit.

Creative Commons License
Headless / commandline Bittorrent by Mary Gardiner is licensed under a Creative Commons Attribution 4.0 International License.

Personal computing history

I’ve enjoyed reading the LWN.net ten-year timeline (1, 2, 3, 4, 5, 6 and perhaps more to come), enough that I wanted to do a short wrap-up of my own computer story. Apparently it’s going around, but I didn’t realise that when I started this.

Approx 1990 My great-uncle died and my great-aunt offered us his computer. I was extremely excited, and assured it was portable, very expensive and top-notch. This didn’t turn out to be exactly true: it had been very expensive and top-notch when he bought it. I didn’t work out when that was, but it was some time in the past. The machine ran MS DOS 2-ish, had no hard drive, and had 2 5.25″ drives. One floppy held the entire operating system.

It was portable in the sense that it was one of the all-in-one designs that Compaq stuck with for so long. It was about the same size as a medium-sized hard suitcase and had a handle so that it could be upended and hauled around.

I learned some variety of BASIC (BASICA, I think) and spent many hours typing out programs that greeted me by name and let me add numbers together. I used it for school assignments for about six months before I discovered that it booted with the Insert key toggled off, so if I made a mistake it was just like a typewriter: I had to re-type everything from the mistake onwards.

I soon ran into what turns out to been a semi-imaginary bugbear of at least the next ten years of my life: I had no ideas for what to program. I realised I could learn from the program that displayed a bee flying around and played ‘Flight of the Bumblebees’ but I couldn’t summon the energy to pick apart 2000! lines! of code!

1993–1998 My parents got a new computer at the end of 1993, another Compaq as it happened. 486, and I believe 4MB of RAM and a 100MB hard drive. This was rather underpowered for the time, I think, but not radically so. I became something of a power user of word processors and the like. My parents were convinced that I was on the verge of destroying their machine. The poverty of our flat file ‘database’ application bugged me no end. When I came across relational databases much later I knew exactly what they were for. Towards the end of high school (I jumped a couple of years in computing studies and took my final exams in Year 10, so I had some exposure to the wider computer culture, however distorted) I desperately wanted to learn C, but what I was going to do with it I didn’t know.

In 1996 I got a copy of Fractint, I have no idea where from. Most likely the World Wide Web, which I used for the first time that same year. (Someone in my computer class logged on for me, went to Yahoo, and typed in ‘girls’ and started surfing for porn. 1996 was a big year in parental outrage at our school.) I even signed up for a Hotmail account. Anyway, not only did I spend hours and hours choosing just the right colours for my fractals, Fractint was my first exposure to the idea of collective, free, software development and I liked it. I read an article about Linux around the same time and liked the sound of that too, but I fundamentally had no idea what it was on about.

In 1999 I started undergrad and was immediately delighted with UNIX, which I considered as super-powered MS-DOS with better doskey. That said, it was at least a year before I learned to drive tar from the man page, and I think at least two years before I learned that see also crontab(5) means typing the command man 5 crontab (now probably my most frequently used man page). I was unimpressed with the university’s webmail system for a long time (I don’t recall why, but undoubtedly it sucked) and read my mail by telnetting to port 110 on the relevant machine. Very recently, someone suggested to me that doing that is an urban myth equivalent to whistling 9600 baud. No, no it isn’t. But it sucks for attachments.

Andrew and I started going out in August of 1999 and soon after that he bought his own desktop and installed Debian on it. He was pleased with my taste when I chose the username ‘mary’. The relationship was young enough that I still deeply cared about his opinions on questions like what is a tasteful user name? (I still use ‘mary’, it’s short. And tasteful.) At the end of the year he moved out of college and an rm -rf accident on my part and reluctance to download a year’s worth of email on his part means that we no longer have copies of about a year’s worth of emails to each other.

I did learn C in 1999, although I somehow missed the square brackets dereferencing syntax for pointer arithmetic and was doing a lot of accessing arrays like this: *(p + 5).

I had a job as a programmer in 2000. That didn’t work out so well, but I did get enough money for my first computer. Andrew downloaded SuSE for me because he wanted to see what it was like. Bad, that’s what, because it only had mutt 0.2 packages. I had to reinstall it and Windows several times each to get them on. (I was playing a lot of Baldur’s Gate at the time, I believe the Infinity engine still sucks under WINE in 2008.) I wrestled with Exim’s documentation for the best part of a day to get it to act as a smarthost, because ‘smarthost’ has nothing to do with the term ‘mail relay’. At the end of the year I registered puzzling.org. It was hosted on a FreeBSD box for a while, using qmail. (This is not why Andrew and I have a lot of user-suffix@puzzling.org addresses rather than user+suffix. That is because we were later hosted on Crossfire‘s machine for a while, and another user on that machine had used qmail style suffixes and asked for them to be set in Postfix. No one has ever let me finish telling this story until now.)

At the beginning of 2001 Andrew and I skipped the second half of a holiday at the beach for the first linux.conf.au. (Not counting CALU, which I don’t consider the ‘zeroth’ linux.conf.au because programmers count offsets from zero, but no one in their right mind counts objects from zero. Miss Manners would agree, I know.) This was an experience that in memory has not been surpassed in terms of pure mystical wonder. Especially Tridge’s hacking the TiVo talk. And Martin Pool’s rsync proxy thing. I think there is something irretrievably lost when you get better understanding of technology. No conference has been the same again. (And I don’t know that since taking up diving I’d be prepared to leave a beach holiday for any conference.) Soon afterwards, although unrelatedly, Andrew and I were living in a big sharehouse with Nicholas, Catie and Mark and Nicholas, I think, prodded me into installing Debian. And then was alarmed when the first apt-get command I ran was to install nmap. At the time, this was how I checked my machines for unnecessary services.

I tutored computer science from 2001–2003, and managed to always be a better programmer than my students. I suspect this was when I finally learned to program respectably. puzzling.org left Crossfire’s hosting after Andrew quit Weblink, was in shared hosting for a while at csoft and then went to various virtual machines and ended up at Linode. I managed to do all this without a complete meltdown a la the Exim smarthost thing. That was saved for trying to get pppoe working based on knowledge equivalent to an oily rag. Put the modem in bridge mode and all will be well.

This is making me feel as if everything I know about computers I had learned by 2003, and actually that’s largely true. I haven’t picked up a new programming language since then other than for specific projects (Perl in 2004, mainly). I switched to Ubuntu from Debian because Andrew was Canonical employee number 10 or 15 or so. I learned how DNS works around about the same time (from the point of view of configuring BIND, I can’t, say, parse the wire format). Things I’ve acquired since then belong to different stories: relationships, diving, travel, language, computational linguistics, experimental methodology, bits and pieces of statistics, some vastly improved life management skills around budgeting, a certain amount of peace that’s come from somewhere I don’t know. Writing. I’m still programming and doing hobbyist sysadmin, but success no longer comes with wow, I can really do this, finally, at last. I expect my stuff to work these days and I can even usually tell you how long it will take. (I remember Andrew claiming to have this skill as early as 1999.) New toolkits are no longer headline news, but if there was one thing I’d like to add to my store of skills it would be the arrogance of the gods that many programmers have as their birthright. Any problem a mere mortal can pose, they can solve. It sounds dreadful, but flip it over. See? It’s like flying.