From miles at assyrian.org.uk Fri Jul 8 13:38:31 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Fri, 8 Jul 2011 21:38:31 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question Message-ID: Hi everyone, I've got a script, which I of course wrote in Perl. I now want to re-use some code from it in another script, so I've started to do what I should have done in the first place and factored the guts out into a library. That library needs to be visible to the calling scripts: what's the best way of ensuring this? Currently, my situation is this: 1) The scripts live in a git repo in ~/src/monkey/simga. 2) The module lives in ~/src/monkey/simga/lib/Sim/GA.pm. 3) Tests... yeah, that would be a good idea. 4) ~/lib/perl5/Sim is a symlink to ~/src/monkey/simga/lib/Sim. 5) ~/bin contains symlinks to the scripts. 6) ~/lib/perl5 is added to PERL5LIB by my .bashrc. 7) Similarly, ~/bin is added to PATH. [It''s a genetic algorithm that simulates an embedded processor running benchmarks as its fitness function, in order to tune compiler parameters. Hence "Sim::GA", and my angry tweets about genetic quanta and simulators that think the way to handle SIGTERMs is to drop into a debug prompt. ~/src/monkey started out as a directory for small throwaway scripts: as was probably inevitable, it's where most of my code now lives.] This situation is no doubt terrible in even more ways than I've worked out for myself. Surely there must be a Better Way. So, how do you all handle this situation? What awesome tools should I be using to manage my dists? What should I read to better understand how Perl dists are meant to work? TIA, Miles. From robrwo at gmail.com Sat Jul 9 02:53:59 2011 From: robrwo at gmail.com (Robert Rothenberg) Date: Sat, 9 Jul 2011 10:53:59 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: If it's your own workstation, then why not just install the Perl modules using MakeMaker or Mobule::Build? (The are usually installed in /usr/local, so won't interfere with your distro's Perl modules or core ones.) Otherwise, there are ways to install libraries in a local ~/lib directory. Search Google. http://search.cpan.org/~stbey/LocalModInstall-1.0/LocalModInstall.pl may also be useful. On Fri, Jul 8, 2011 at 9:38 PM, Miles Gould wrote: > Hi everyone, > > I've got a script, which I of course wrote in Perl. I now want to > re-use some code from it in another script, so I've started to do what > I should have done in the first place and factored the guts out into a > library. That library needs to be visible to the calling scripts: > what's the best way of ensuring this? > > Currently, my situation is this: > > 1) The scripts live in a git repo in ~/src/monkey/simga. > 2) The module lives in ~/src/monkey/simga/lib/Sim/GA.pm. > 3) Tests... yeah, that would be a good idea. > 4) ~/lib/perl5/Sim is a symlink to ~/src/monkey/simga/lib/Sim. > 5) ~/bin contains symlinks to the scripts. > 6) ~/lib/perl5 is added to PERL5LIB by my .bashrc. > 7) Similarly, ~/bin is added to PATH. > > [It''s a genetic algorithm that simulates an embedded processor > running benchmarks as its fitness function, in order to tune compiler > parameters. Hence "Sim::GA", and my angry tweets about genetic quanta > and simulators that think the way to handle SIGTERMs is to drop into a > debug prompt. ~/src/monkey started out as a directory for small > throwaway scripts: as was probably inevitable, it's where most of my > code now lives.] > > This situation is no doubt terrible in even more ways than I've worked > out for myself. Surely there must be a Better Way. So, how do you all > handle this situation? What awesome tools should I be using to manage > my dists? What should I read to better understand how Perl dists are > meant to work? > > TIA, > Miles. > _______________________________________________ > Edinburgh-pm mailing list > Edinburgh-pm at pm.org > http://mail.pm.org/mailman/listinfo/edinburgh-pm > From perl at aaroncrane.co.uk Sun Jul 10 11:16:51 2011 From: perl at aaroncrane.co.uk (Aaron Crane) Date: Sun, 10 Jul 2011 19:16:51 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: Miles Gould wrote: > This situation is no doubt terrible in even more ways than I've worked > out for myself. Surely there must be a Better Way. So, how do you all > handle this situation? I do the following: 1. My ~/usr is under revision control.[1] 2. ~/usr/bin contains private scripts ? things that aren't worth open-sourcing, for one reason or another. 3. ~/usr/bin/usrdeploy is a program that symlinks dotfiles from ~/usr/etc into ~. 4. My ~/.bash_profile (installed from ~/usr/etc/bash/profile) adds ~/usr/bin (and other directories as needed) to $PATH. 5. Some of the scripts in ~/usr/bin use libraries from ~/usr/lib. Those that do begin with the incantation `use FindBin; use lib "$FindBin::Bin/../lib;"`, so they automatically find the nearby libraries.[3] 6. ~/usr/t contains some tests, which I can run with `cd ~/usr && prove -l t`.[4] Note that nothing is added to $PERL5LIB or similar, or indeed to anything other than $PATH; this makes such variables available for use by any insane piece of software that wants to blindly overwrite them for its own nefarious purposes. Item (5) in my list means that it's important for ~/usr/bin to be in $PATH directly, rather than having its contents symlinked into (say) ~/bin. If that weren't the case, FindBin would pick the ../lib relative to the symlinked directory, which presumably doesn't contain the necessary libraries. That could be fixed by symlinking ~/usr/lib into ~/bin, but I'm not convinced that doing so would be a useful change. In general, my approach to ~/usr implies that anything I want to use in my personal environment must be either run directly from ~/usr, or installed system-wide; further, my preferences mean that "installed system-wide" typically means "installed as a Debian package". That was a reasonable decision when I made it in 2003, but it does have a deficiency: in practice, it's too hard to extend my environment with random wee things (from Github, CPAN, etc) that aren't big or well-known enough to have Debian packages. (This would perhaps also be a problem for your various things in ~/src/monkey, if you wanted to adopt my approach.) My vague plan is to extend usrdeploy to handle such things, but I haven't got there yet. > What awesome tools should I be using to manage > my dists? What should I read to better understand how Perl dists are > meant to work? I'm not quite sure what you're asking there. I take it you don't mean things like Dist::Zilla? Also, I'm eagerly following Miyagawa's work on Carton, which looks like it may help enormously with the "aggregating third-party software" part of the problem: https://github.com/miyagawa/carton [1] That's been true for nearly eight years by now, and doing that was one of the best decisions I've ever made. Every motivation for using revision control for software development also applies to your dotfiles. And in addition, note that every change you make to your dotfiles is in practice tried out on the machine where you first discovered a need for it, before being rolled out to everywhere else you log in. That is, dotfile development is almost always "concurrent", in the sense used by CVS. So pseudo-revision-control ? tarball archiving or similar ? just doesn't work well. Not to mention that, given only a Git client, a minute or so is long enough to bring up my personal environment on a new account: `git clone me at myserver.example.com:git/usr.git && usr/bin/usrdeploy`, followed by logging out and back in again. [2] It's a little more complicated than that; some dotfiles are effectively templated to take OS differences into account, and some have to be copied so that they can be mode 600 as required by the program that uses them, and so on. But that's the basic idea. [3] This may not be entirely reliable in some weird situations, because FindBin is designed to do almost exactly the wrong thing: it prays that the full pathname to the script is in argv[0] (false in some circumstances and on some OSes), or if not, that the script was found in one of the directories in $PATH (which is clearly ridiculous). This is particularly bizarre given that Perl knows full well the name of any file it's reading, and provides it in both `__FILE__` and `(caller $n)[1]`. The correct approach is more like use Path::Class qw; use lib file(__FILE__)->dir->subdir('lib')->stringify; but that relies on having Path::Class installed before I can run any script that uses one of my own libraries (and I do use this setup on the very occasional servers where I don't have root access, so this matters to me). Since Perl ships with FindBin, and it mostly works fine in most situations I care about, this is a reasonable trade-off for me. If Perl had __DIR__ to go along with __FILE__, or it shipped with Dir::Self, or I cared less about being able to bootstrap some of my tools without installing any extra software, the trade-off would change. [4] Using the `-l` option means my test scripts don't need the FindBin incantation. -- Aaron Crane ** http://aaroncrane.co.uk/ From miles at assyrian.org.uk Mon Jul 11 03:57:27 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Mon, 11 Jul 2011 11:57:27 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: On Sun, Jul 10, 2011 at 7:16 PM, Aaron Crane wrote: > Miles Gould wrote: >> This situation is no doubt terrible in even more ways than I've worked >> out for myself. Surely there must be a Better Way. So, how do you all >> handle this situation? > > I do the following: > > 1. My ~/usr is under revision control.[1] Aha! I'd thought you kept ~ under revision control, which I'm reluctant to do. Having a private ~/usr makes a lot more sense to me. How do you handle machine-specific configuration? Do you source `hostname`.bashrc from your main .bashrc or something? >> What awesome tools should I be using to manage >> my dists? What should I read to better understand how Perl dists are >> meant to work? > > I'm not quite sure what you're asking there. ?I take it you don't mean > things like Dist::Zilla? I'm not sure - my map of the toolscape is largely blank. Am I right in thinking that Dist::Zilla solves the problem "I have a git repo, and I want to turn it into a tarball with embedded Makefile.PL that can be uploaded to CPAN and/or installed"? I did look into it for the Oyster hackathon, but the volume of documentation overflowed my input buffers. [FWIW: I don't have root access to the machine concerned - at least, I don't have root access to all the machines concerned.] Miles From perl at aaroncrane.co.uk Mon Jul 11 04:43:14 2011 From: perl at aaroncrane.co.uk (Aaron Crane) Date: Mon, 11 Jul 2011 12:43:14 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: Miles Gould wrote: > On Sun, Jul 10, 2011 at 7:16 PM, Aaron Crane wrote: >> 1. My ~/usr is under revision control.[1] > > Aha! I'd thought you kept ~ under revision control, which I'm > reluctant to do. Me too. That's always sounded... awkward to me. > Having a private ~/usr makes a lot more sense to me. > How do you handle machine-specific configuration? Do you source > `hostname`.bashrc from your main .bashrc or something? Yep, pretty much. $ tail -5 ~/.bash_profile ## Machine-specific configuration f=~/usr/etc/bash/rc.$HOSTNAME [ -f $f ] && . $f : # Ensure $? is 0 Except that, in practice, it's years since I actually needed to put anything in one of those. Where possible, it seems better to autodetect the right behaviour rather than picking it based on mere hostname. For example, I use Emacs on my main computer, so I want $EDITOR to be emacsclient (to open files in my running Emacs instance). But I don't like Emacs over a plain tty, so on servers I want $EDITOR to be vim. That decision could be made on a per-host basis, but I prefer to set $EDITOR to be ~/usr/bin/e, a script which execs emacsclient (if it exists and there's a running Emacs) or vim (if it exists), or vi (as a fallback). >> I'm not quite sure what you're asking there. ?I take it you don't mean >> things like Dist::Zilla? > > I'm not sure - my map of the toolscape is largely blank. Am I right in > thinking that Dist::Zilla solves the problem "I have a git repo, and I > want to turn it into a tarball with embedded Makefile.PL that can be > uploaded to CPAN and/or installed"? I did look into it for the Oyster > hackathon, but the volume of documentation overflowed my input > buffers. I haven't used it, but my understanding is that its target problem space is roughly "I have a Perl dist that I'd like to upload to CPAN", except its target audience probably has a large number of such dists, and it might be "my local darkpan" rather than "CPAN". I gather it does things like automating the update of $VERSION across all the library files in a dist, and regenerating the README from the POD, and all the other little things that you might need to do before pushing a tarball to CPAN. And, yes, if you're using Git, it can automatically commit version-number changes, and tag the repo, and so on. While that's all good stuff, it doesn't seem to be directly related to the problem of "I have some private code that I'd like to easily run out of its Git repo". > [FWIW: I don't have root access to the machine concerned - at least, I > don't have root access to all the machines concerned.] I think that means that, if you want to install things from CPAN (or things that look like CPAN dists even if they aren't on CPAN), you'll want a personal Perl (possibly using perlbrew) and/or local::lib on the machines where you don't have root. (Not that I've used either of them.) -- Aaron Crane ** http://aaroncrane.co.uk/ From miles at assyrian.org.uk Mon Jul 11 05:41:38 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Mon, 11 Jul 2011 13:41:38 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: On Mon, Jul 11, 2011 at 12:43 PM, Aaron Crane wrote: > Except that, in practice, it's years since I actually needed to put > anything in one of those. I have a lot of "cd to $commonly_used_directory" aliases, but the location of $commonly_used_directory can vary on a per-machine basis depending on whether $HOME is local storage or a network share. > I think that means that, if you want to install things from CPAN (or > things that look like CPAN dists even if they aren't on CPAN), you'll > want a personal Perl (possibly using perlbrew) and/or local::lib on > the machines where you don't have root. ?(Not that I've used either of > them.) I tried installing local::lib, but got errors: I could probably get it to work if I turned off my PERL5LIB setting. But it's not clear to me what local::lib offers over setting PERL5LIB and running cpan as an ordinary user, which is how I currently install CPAN modules. Miles From hakim.cassimally at gmail.com Mon Jul 11 06:18:58 2011 From: hakim.cassimally at gmail.com (Hakim Cassimally) Date: Mon, 11 Jul 2011 14:18:58 +0100 Subject: [Edinburgh-pm] Embarrassingly n00bish question In-Reply-To: References: Message-ID: On 11 July 2011 13:41, Miles Gould wrote: > I tried installing local::lib, but got errors: I could probably get it > to work if I turned off my PERL5LIB setting. But it's not clear to me > what local::lib offers over setting PERL5LIB and running cpan as an > ordinary user, which is how I currently install CPAN modules. I think that's effectively it. Though local::lib has support for all the cpan{,p,m,etc} tools so in theory is easier. osf' From cyocum at gmail.com Tue Jul 26 02:29:06 2011 From: cyocum at gmail.com (Chris Yocum) Date: Tue, 26 Jul 2011 10:29:06 +0100 Subject: [Edinburgh-pm] Meeting? Message-ID: <4E2E88E2.2080607@gmail.com> Hi Everyone, I think it is that time of the month again. I was thinking of booking a table. If you are coming, please let me know so I can give them a rough estimate. Thanks!, Chris -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 294 bytes Desc: OpenPGP digital signature URL: From fontani at gmail.com Tue Jul 26 02:40:42 2011 From: fontani at gmail.com (Marco Fontani) Date: Tue, 26 Jul 2011 10:40:42 +0100 Subject: [Edinburgh-pm] Meeting? In-Reply-To: <4E2E88E2.2080607@gmail.com> References: <4E2E88E2.2080607@gmail.com> Message-ID: > I think it is that time of the month again. I was thinking of booking a > table. If you are coming, please let me know so I can give them a rough > estimate. Preemptive volunteering, me likes! I will be there! By the way, are people generally interested in having a barbecue together? Would you rather one during the week, or at the weekend? (when would you be able to make it?) We can discuss this at the meeting if you'd like -marco- --- Marco Fontani Glasgow Perl Mongers - http://glasgow.pm.org/ Bitcoin: 1QA1K3Ghz9AuJ8na6JKJVudEko3WKx1xC2 Join the RackSpace Cloud at: http://www.rackspacecloud.com/277.html -------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 203 bytes Desc: This is a digitally signed message part URL: From perl at minty.org Tue Jul 26 03:19:08 2011 From: perl at minty.org (Murray) Date: Tue, 26 Jul 2011 11:19:08 +0100 Subject: [Edinburgh-pm] Meeting? In-Reply-To: References: <4E2E88E2.2080607@gmail.com> Message-ID: <20110726101907.GB9825@mooker.vm.bytemark.co.uk> On Tue, Jul 26, 2011 at 10:40:42AM +0100, Marco Fontani wrote: > > I think it is that time of the month again. I was thinking of booking a > > table. If you are coming, please let me know so I can give them a rough > > estimate. Sadly, I probably won't, as friends are coming to town. > By the way, are people generally interested in having a barbecue together? > Would you rather one during the week, or at the weekend? (when would you be > able to make it?) One comment : Cumberland has a beer garden, and we can move inside when it gets colder. Also, I setup a poll. It has 2 parts - vote on location & preferred day(s). http://www.doodle.com/pxndpwwzqaqnfhwx You can vote for multiple things - so pick all options you are happy with! If anyone has alternative locations, shout and I'll add, tho note if you delay, you're decreasing your chances! From miles at assyrian.org.uk Tue Jul 26 03:59:36 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Tue, 26 Jul 2011 11:59:36 +0100 Subject: [Edinburgh-pm] Meeting? In-Reply-To: <20110726101907.GB9825@mooker.vm.bytemark.co.uk> References: <4E2E88E2.2080607@gmail.com> <20110726101907.GB9825@mooker.vm.bytemark.co.uk> Message-ID: On Tue, Jul 26, 2011 at 11:19 AM, Murray wrote: > On Tue, Jul 26, 2011 at 10:40:42AM +0100, Marco Fontani wrote: >> > I think it is that time of the month again. ?I was thinking of booking a >> > table. ?If you are coming, please let me know so I can give them a rough >> > estimate. I'm planning to be there. Miles From miles at assyrian.org.uk Tue Jul 26 07:04:13 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Tue, 26 Jul 2011 15:04:13 +0100 Subject: [Edinburgh-pm] Meeting? In-Reply-To: <20110726101907.GB9825@mooker.vm.bytemark.co.uk> References: <4E2E88E2.2080607@gmail.com> <20110726101907.GB9825@mooker.vm.bytemark.co.uk> Message-ID: On Tue, Jul 26, 2011 at 11:19 AM, Murray wrote: >> By the way, are people generally interested in having a barbecue together? >> Would you rather one during the week, or at the weekend? (when would you be >> able to make it?) Are these questions about general Mondays/Tuesdays/etc, or next week specifically? Or some other week? Miles From fontani at gmail.com Tue Jul 26 07:06:17 2011 From: fontani at gmail.com (Marco Fontani) Date: Tue, 26 Jul 2011 15:06:17 +0100 Subject: [Edinburgh-pm] Meeting? In-Reply-To: References: <4E2E88E2.2080607@gmail.com> <20110726101907.GB9825@mooker.vm.bytemark.co.uk> Message-ID: >>> By the way, are people generally interested in having a barbecue together? >>> Would you rather one during the week, or at the weekend? (when would you be >>> able to make it?) > Are these questions about general Mondays/Tuesdays/etc, or next week > specifically? Or some other week? Generally speaking, so that I/we can plan a suitable time later on; say, in August. A potentially suitable date may be the Saturday between the Dynamic Languages conference and the Turing Conference Sunday event (both events at which RMS will speak). If instead many people say they won't do it on a Saturday, we'd have to think a bit more about it ;) -marco- --- Marco Fontani Glasgow Perl Mongers - http://glasgow.pm.org/ Bitcoin: 1QA1K3Ghz9AuJ8na6JKJVudEko3WKx1xC2 Join the RackSpace Cloud at: http://www.rackspacecloud.com/277.html From cyocum at gmail.com Wed Jul 27 01:57:18 2011 From: cyocum at gmail.com (Chris Yocum) Date: Wed, 27 Jul 2011 09:57:18 +0100 Subject: [Edinburgh-pm] Meeting Message-ID: <4E2FD2EE.6030202@gmail.com> Hi Guys, I only have three people (including myself) who have stated an interest in the Cumberland Bar for tomorrow. I don't think this is enough to request a table so if anyone else is coming please let me know. I figure a minyin is 5 in this case. Thanks, Chris -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 294 bytes Desc: OpenPGP digital signature URL: From perl at aaroncrane.co.uk Wed Jul 27 03:32:44 2011 From: perl at aaroncrane.co.uk (Aaron Crane) Date: Wed, 27 Jul 2011 11:32:44 +0100 Subject: [Edinburgh-pm] Meeting In-Reply-To: <4E2FD2EE.6030202@gmail.com> References: <4E2FD2EE.6030202@gmail.com> Message-ID: Chris Yocum wrote: > Cumberland Bar tomorrow I should be there too. -- Aaron Crane ** http://aaroncrane.co.uk/ From cyocum at gmail.com Wed Jul 27 03:38:47 2011 From: cyocum at gmail.com (Chris Yocum) Date: Wed, 27 Jul 2011 11:38:47 +0100 Subject: [Edinburgh-pm] Meeting In-Reply-To: References: <4E2FD2EE.6030202@gmail.com> Message-ID: <4E2FEAB7.70201@gmail.com> Great. Thanks! That's four that I know of. I just need one more person to say they are coming and I will make the call. Chris On 27/07/11 11:32, Aaron Crane wrote: > Chris Yocum wrote: >> Cumberland Bar tomorrow > > I should be there too. > -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 294 bytes Desc: OpenPGP digital signature URL: From miles at assyrian.org.uk Wed Jul 27 05:52:12 2011 From: miles at assyrian.org.uk (Miles Gould) Date: Wed, 27 Jul 2011 13:52:12 +0100 Subject: [Edinburgh-pm] Meeting In-Reply-To: <4E2FD2EE.6030202@gmail.com> References: <4E2FD2EE.6030202@gmail.com> Message-ID: On Wed, Jul 27, 2011 at 9:57 AM, Chris Yocum wrote: > I only have three people (including myself) who have stated an interest > in the Cumberland Bar for tomorrow. ?I don't think this is enough to > request a table so if anyone else is coming please let me know. ?I > figure a minyin is 5 in this case. *Googles for "minyin"* I guess it's no dafter than me saying "outwith", "X needs done", or "aye"... Miles From robrwo at gmail.com Fri Jul 29 04:55:49 2011 From: robrwo at gmail.com (Robert Rothenberg) Date: Fri, 29 Jul 2011 12:55:49 +0100 Subject: [Edinburgh-pm] Meeting In-Reply-To: References: <4E2FD2EE.6030202@gmail.com> Message-ID: <4E329FC5.9050406@gmail.com> On 27/07/11 13:52 Miles Gould wrote: > On Wed, Jul 27, 2011 at 9:57 AM, Chris Yocum wrote: >> I only have three people (including myself) who have stated an interest >> in the Cumberland Bar for tomorrow. I don't think this is enough to >> request a table so if anyone else is coming please let me know. I >> figure a minyin is 5 in this case. > > *Googles for "minyin"* > > I guess it's no dafter than me saying "outwith", "X needs done", or "aye"... Huh? Is there some divine minimum number of attendees required for it to be a sanctified Perl Mongers meeting? From asmith9983 at gmail.com Fri Jul 29 05:05:19 2011 From: asmith9983 at gmail.com (A Smith) Date: Fri, 29 Jul 2011 13:05:19 +0100 Subject: [Edinburgh-pm] Meeting In-Reply-To: <4E329FC5.9050406@gmail.com> References: <4E2FD2EE.6030202@gmail.com> <4E329FC5.9050406@gmail.com> Message-ID: Sorry, the rain caused me to forget it was on last night. Andrew On 29 July 2011 12:55, Robert Rothenberg wrote: > On 27/07/11 13:52 Miles Gould wrote: > > On Wed, Jul 27, 2011 at 9:57 AM, Chris Yocum wrote: > >> I only have three people (including myself) who have stated an interest > >> in the Cumberland Bar for tomorrow. I don't think this is enough to > >> request a table so if anyone else is coming please let me know. I > >> figure a minyin is 5 in this case. > > > > *Googles for "minyin"* > > > > I guess it's no dafter than me saying "outwith", "X needs done", or > "aye"... > > Huh? Is there some divine minimum number of attendees required for it to be > a sanctified Perl Mongers meeting? > _______________________________________________ > Edinburgh-pm mailing list > Edinburgh-pm at pm.org > http://mail.pm.org/mailman/listinfo/edinburgh-pm > -------------- next part -------------- An HTML attachment was scrubbed... URL: