Composed in August
Composed in August by pdcawley
A compare and contrast day today. I’m not sure when Jon Boden recorded Now Westlin’ Winds for his Folk Song a Day project. I recorded this as the clock ticked over from July to August in our kitchen (it was only after I’d gone to bed that I realised that if I’d been able to record a song down there, I couldn’t’ve remembered to set the dishwasher off). I’ve been singing this for nearly 20 years now. The words are by Robert Burns, the tune appears to be traditional, and I got it from Lady of Autumn, by Beggar’s Velvet.
I’ve just looked through the track listing of that album on iTunes and realised that, of 13 tracks, I still sing six of them. Most of them aren’t traditional, so I’ll need to get Dave’s permission before I can record any of them for this project, but if you’re at all interested in the English harmony singing tradition, you should definitely lay your hands on the album. Beggar’s Velvet were Dave Webber and Anni Fentiman and Charley and Cathy Yarwood, and very good they were too.
Cathy’s now Cathy Barclay and singing with Ailsa Mackenzie and Alison Younger in the reformed (after 17 years) Bryony. They still sounded fabulous (albeit a couple of semitones lower) when they sang at my aunt’s 60th birthday last week. Another band you should seek out.
Palms of Victory/The Wayworn Traveller
Palms of Victory/The Wayworn Traveller by pdcawley
This got uploaded to soundcloud a couple of weeks ago, but I uploaded it late on the Sunday before OSCON and then forgot to post something here as well. Anyway, this is a belting old hymn that I first heard sung by a chap called Derek, when I was living in Northampton and going to the “Soles and ’Eels” folk club. I finally got the words down from a fabulous recording, done for a Fellside anniversary compilation, by the combined forces of Swan Arcade, the Watersons and (seemingly) everyone who ever recorded for Fellside.
A tale of two languages 23
While I was at OSCON I found myself chatting with various non-perl and ex-perl folks and many of them had the same impression of Perl as a great language for hacking out short scripts to get stuff done, right now and possibly under severe time pressure. For these people, those scripts would very rapidly become unmaintainable. And it’s easy to see why they came to that conclusion. Perl was originally designed and implemented by a systems administrator as a tool to make his every day tasks easier so there are a bunch of shortcuts and defaults that do exactly that – make Larry’s life in 1987 easier. Which is great when you’re whipping up a script to meet an immediate demand, but horrendously cryptic when you look at it later.
This is a perfectly valid way of looking at a language that I’ll call ‘desperate perl’. Desperate Perl scripts tend to be written by folks who don’t necessarily know all of Perl and who certainly don’t know all of its ecosystem. The scripts are often written to a tight deadline and to handle a specific task. They certainly weren’t written with even half an eye to maintenance. And they live on. Boy, do they live on. There are CGI scripts written in 1995 that are still in every day use, never mind that they’re buggy, insecure and well nigh impossible to maintain, still these zombies shamble on, colouring the opinion of everyone who ever has to deal with them.
If there’s one thing we’ve learned from this, it’s that code is forever. When we were young, we did stupid things, but we grew up and everyone but our nearest and dearest (who have the good grace never to mention it) forgets that, once upon a time, we set fire to the living room rug while playing with matches/ate cornflakes with HP sauce/had a brief flirtation with the young Conservatives/had a brief flirtation with a young Conservative. We are forgiven.
Not Perl.
Perl’s reputation as a language that’s fine for writing short scripts, but which rapidly becomes unmaintainable once you try and write larger systems is bestowed upon it by people who looked at formmail.pl once and ran screaming into the night (a not unreasonable response).
But Desperate Perl isn’t the only language in the binary. Large scale programming with Perl uses, or should use, a different subset of the language. A key indicator that you’re looking at large scale Perl is when the script or library starts with something along the lines of:
#!/usr/bin/perl use strict; use warnings;
or, if it’s a library:
package Whatever; use Moose;
There are other signifiers, but the important thing is that the code is written in strict compliant Perl. use strict crops up so often that the recent crop of modern (or enlightened if you prefer) perl modules, like Moose, turn it on by default. Indeed, if you’re using Perl 5, version 12 and you begin your code with use 5.12.0, Perl turns on strictures as well as enabling all the new features of the language.
We’ve had strict and warnings since forever and they’ve been strongly recommended for everything longer than about two lines since forever too. Those of us who program in Perl for a living get rather annoyed by the ‘Desperate Perl’ blinkers worn, however unwittingly, by so many outside our community. We write our code in a subtly different language. We write tests first, we have done for years. We write clean, maintainable, object oriented code. Nowadays we use Moose to help us with that; Perl’s out of the box OO features are, let us say, idiosyncratic – Moose makes our lives better.
Large Scale Perl is about more than just what’s in the distribution. Large Scale Perl has a wider culture than just the contents of the distribution. It’s about learning to use the CPAN and the CPAN toolchain. When I start to work on anything perl related that I expect to live for more than I couple of minutes, I start by doing:
$ mkdir ProjectName $ cd ProjectName $ mkdir t lib $ $EDITOR t/initial.t
Because I’m writing large scale perl, my modules go under lib, my tests go under t, any scripts I expect to install in my path go in script and they don’t have a .pl suffix. I lay my code out this way because, well, that’s just how it’s done. I run my tests from the project directory by doing prove -l ./t and, when I realise I have something that’s worth distributing (or deploying to the staging server), I add a Module::Install based Makefile.PL that lists my prerequisites, the scripts to install and various bits of metadata. By now, this is second nature – many clever people over the years have come to a collective decision about what a good Perl project looks like and they’ve written a fabulous toolchain for me as well.
If I distribute my work through the CPAN, there’s a large community of CPANTesters who will attempt to build my module and run its tests on a bewildering variety of platforms, and they’ll send me bug reports when those tests fail (bug reports which I can opt out of as well). Any documentation I write will be nicely formatted and accessible through search.cpan.org along with links to sites that’ll draw me a tree of all the modules mine depends on and, if it becomes adopted by the community, nice lists of all the modules that depend on mine as well. My module will get its own section in rt.cpan.org so there’s a standard place for people to report bugs.
Large Scale Perl comes with an entourage. Tools like Perl::Critic can check my code for bad style, Try::Tiny helps me get exception handling (which is annoyingly tricky when you attempt to get it right barehanded) right, Devel::NYTProf helps me work out why it’s running slower than I expected. The list goes on.
But, all the world sees is Desperate Perl. Search for “Perl Tutorial” on google and the first few hits are horrendously out of date – when I checked, the number one hit was all about perl 4. Apparently, O’Reilly’s biggest selling Perl title is the new edition of Learning Perl, which was published in 2008 and is a cracking tutorial. But the second biggest Perl title is Programming Perl which is ten years old this month. It covers Perl 5 version 6.0. I’m not even sure you can still build perl 5.6.2 – released more than 6 years ago – on modern systems. I certainly can’t imagine why you might want to. Programming Perl is a great book, but there are things it discusses that aren’t just deprecated, they’ve been recognized for the clusterfuck they were and excised from the language with extreme prejudice. As a community, we could really use a new edition. It would seem to make sense for someone to take the job on. A computer book that’s still selling 10 years after its first publication, 8 years after the language it documents, 5.6 was superceded by 5.8 looks like an ideal candidate for a new edition to me.
But then, a glance at the release dates of major Perl versions shows us why O’Reilly might hesitate to revise the book. 5.6 got released in March 2000, 5.8 in July 2002, 5.10 in… December 2007, 5.10.1 (which might have been better named as 5.12.0, given how much got changed/fixed) in August 2009, 5.12 in April 2010. That 5 year gap is the sort of thing that might give any publisher pause. Still, the new strategy of releasing regularly and often is starting to bed in. It’s getting easier to write perldelta.pod for each release and Jesse Vincent seems to be doing an excellent job of getting new release managers trained up and generally destressing the business of releasing a new perl. Who knows, by this time next year the perl release process may be no more difficult than releasing a module to CPAN. We do write good tools after all.
Reliable, regular releases with no big surprises are the sort of thing that gives programmers and organizations confidence that we’re here for the long haul. We perl programmers know that all sorts of good things were happening on the CPAN in the long gap between 5.8 and 5.10, but as good as it is, CPAN’s not as visible as the version number on the binary.
Hmm… I appear to have rambled some way from my starting point. Which probably means its time to stop. If I’m spared, I might manage to rustle up some kind of conclusion in a later post. Just remember, there are at least two perls: Desperate Perl, and Large Scale Perl. Both are excellent languages in their spaces, but you can’t (or shouldn’t) draw conclusions about one based on observations of the other.
Little Musgrave
What can you say about Little Musgrave (Child 81 for those who care about such things)? It’s old. Apparently it’s quoted from by Beaumont and Fletcher in their 1611 play ‘Knight of the Burning Pestle’.
It’s no Barbara Allen or Lord Randell, but judging by the number of variants in Bronson, it’s one of the more popular ballads, either as Little Musgrave or Mattie Groves. In one version he becomes “Little Moth Grone”, which has a glorious, if garbled, set of words.
The version I sing is taken pretty much straight from Pete
Morton’s version on Trespass, Pete’s 1999 album of traditional material, which is well worth seeking out.
Come Write Me Down
Come Write Me Down by pdcawley
Everybody knows Come Write Me Down, and everyone got it from the Copper family of Rottingdean, who deserve a blog entry far longer than I feel like typing on an iPhone.
The last verse isn’t from the Coppers though – there’s no smut in the Coppers’ Book – Gill heard Bill Elliott singing it and he credits his grandfather, Jack Elliott. The Elliotts of Birtley are worth a longer blog entry too, or seek out Pete Wood’s book on them.
It does feel odd to hear this without any harmonies. Come Write Me Down is so well known that folk club audiences don’t just join in on the repeats, they join in with the verses too. Which makes it a very good “first song ever” to sing out. If you’re a bit nervous or you forget a line your audience will carry you through.
False True Love
Right, this is the ‘real’ song for today.
I got this from the singing of Cath Tyler, who used to be Cath Oss for those of you who remember Cordelia’s Dad.
Like so many of the songs I sing, the motivation to learn this came from a single line “I ain’t got a moment of time”. I don’t know why it should be this particular line – in a song chock full of fantastic images – that hooked me the first time I heard Cath sing it in the bar of the Cumberland Arms in Byker, but I’ve been listening to and meaning to learn it for years. (You can buy Cath’s version here).
Then, on Tuesday, I stuck it on “repeat track” on my iPhone, and sang it out (very roughly with a ‘wrong’ tune) at Sharps that night and again at the Green Note Cafe’s Open Mic night on Wednesday (with something far closer to the actual tune). I sang it into the iPhone this morning and here it is for your listening pleasure. Consider this an early draft. I’ve got the words and tune pretty solidly now, all that remains is the long process of bedding in. In a few years time it’ll feel more like something of mine and less like something I borrowed from Cath.
How can I keep from Singing
How Can I Keep From Singing by pdcawley
Think of this as something of a bonus track. It's not strictly in my repertoire (I had a lyric sheet in front of me while I sang. Shame on me!) but it sits well with the sentiments of my last post. This version comes from the singing of my wife, Gill Cawley, who started singing it around the time she realised she'd learned it by osmosis. It's somewhat cut down and differs from the original 1861 lyrics, which you'll find on the wikipedia page for the song.
Rules of Engagement 4
If you’re interested in the repertoire project, here’s my current rules of engagement for recording for it:
- One Song
- One Mic
- One Take (by which I mean no comping or overdubs, not “only one attempt”)
So far, everything has been recorded using FiRe, a dead simple field recording app on the iPhone/iPad and uploaded pretty much directly from the phone to SoundCloud, though I am thinking of switching to using my BandCamp account because, although the player may not be as pretty, the site is free. SoundCloud keeps nagging me to switch to a paid account if I want to do things like make everything downloadable or see more advanced player statistics. Very annoying.
What else? Oh yes, I’m doing this for fun. If I have to fill in a tax return, PRS, MCPS or other annoying form then it stopped being fun. All the recordings will remain free to download and are released under the Creative Commons BY-NC-SA. The songs and tunes themselves will be traditional or, where an author is known, in the public domain.
You’re free to sing them or do anything else you like with them without any reference to me or the sources I credit (but it is considered sporting to credit) and I wholeheartedly encourage you to do so. Listening to music is a mere shadow of the pleasures of making it and the great thing about singing is that we’re born with all the equipment we need to do it.
Find a song you like, either from my repertoire project, Jon Boden’s A Folk Song A Day project or a favourite recording and start to sing. It doesn’t matter if you’ve never sung before. It doesn’t matter that a music ‘teacher’ may have told you not to sing. It doesn’t matter that you never, ever, want to sing where anyone can hear you.
Just sing. Loudly. You may hate the sound of your voice, your pitching may be all over the place, you may lack confidence. So what? We fix these things through mindful practice, not by deciding that we’re no good. Just sing.
