=meta link_base /~richardc/talks/siesta # 100 while writing, 1 when released =meta consider_old 100 =head1 Siesta, free at last! =head2 18th August, 2002 =over =item L =head2 24th July, 2003 =over =item Date: Thu, 24 Jul 2003 13:44:43 +0200 From: PAUSE Subject: CPAN Upload: R/RC/RCLAMP/Siesta-0.6.tar.gz The uploaded file Siesta-0.6.tar.gz has entered CPAN as file: $CPAN/authors/id/R/RC/RCLAMP/Siesta-0.6.tar.gz size: 47164 bytes md5: 41cd2abd490f893ef0112113a1c0b41c No action is required on your part =back =head2 Words for snow. =over =item L =item Eskimos only have ~60 words for snow/ice. =item 10 words for ice and snow from Labradoran Inuit 'ice' sikko 'bare ice' tingenek 'snow (in general)' aput 'snow (like salt)' pukak 'soft deep snow' mauja 'snowdrift' tipvigut 'soft snow' massak 'watery snow' mangokpok 'snow filled with water' massalerauvok 'soft snow' akkilokipok =item 49 words for snow and ice from West Greenlandic 'sea-ice' siku (in plural = drift ice) 'pack-ice/large expanses of ice in motion' sikursuit, pl. (compacted drift ice/ice field = sikut iqimaniri) 'new ice' sikuliaq/sikurlaaq (solid ice cover = nutaaq.) 'thin ice' sikuaq (in plural = thin ice floes) 'rotten (melting) ice floe' sikurluk 'iceberg' iluliaq (ilulisap itsirnga = part of iceberg below waterline) '(piece of) fresh-water ice' nilak 'lumps of ice stranded on the beach' issinnirit, pl. 'glacier' (also ice forming on objects) sirmiq (sirmirsuaq = Inland Ice) 'snow blown in (e.g. doorway)' sullarniq 'rime/hoar-frost' qaqurnak/kanirniq/kaniq 'frost (on inner surface of e.g. window)' iluq 'icy mist' pujurak/pujuq kanirnartuq 'hail' nataqqurnat 'snow (on ground)' aput (aput sisurtuq = avalanche) 'slush (on ground)' aput masannartuq 'snow in air/falling' qaniit (qanik = snowflake) 'air thick with snow' nittaalaq (nittaallat, pl. = snowflakes; nittaalaq nalliuttiqattaartuq = flurries) 'hard grains of snow' nittaalaaqqat, pl. 'feathery clumps of falling snow' qanipalaat 'new fallen snow' apirlaat 'snow crust' pukak 'snowy weather' qannirsuq/nittaatsuq 'snowstorm' pirsuq/pirsirsursuaq 'large ice floe' iluitsuq 'snowdrift' apusiniq 'ice floe' puttaaq 'hummocked ice/pressure ridges in pack ice' maniillat/ingunirit, pl. 'drifting lump of ice' kassuq (dirty lump of glacier-calved ice = anarluk) 'ice-foot (left adhering to shore)' qaannuq 'icicle' kusugaq 'opening in sea ice' imarnirsaq/ammaniq (open water amidst ice = imaviaq) 'lead (navigable fissure) in sea ice' quppaq 'rotten snow/slush on sea' qinuq 'wet snow falling' imalik 'rotten ice with streams forming' aakkarniq 'snow patch (on mountain, etc.)' aputitaq 'wet snow on top of ice' putsinniq/puvvinniq 'smooth stretch of ice' manirak (stretch of snow-free ice = quasaliaq) 'lump of old ice frozen into new ice' tuaq 'new ice formed in crack in old ice' nutarniq 'bits of floating' naggutit, pl. 'hard snow' mangiggal/mangikaajaaq 'small ice floe (not large enough to stand on)' masaaraq 'ice swelling over partially frozen river, etc. from water seeping up to the surface' siirsinniq 'piled-up ice-floes frozen together' tiggunnirit 'mountain peak sticking up through inland ice' nunataq 'calved ice (from end of glacier)' uukkarnit 'edge of the (sea) ice' sinaaq =item Source L =back =head2 Words for release =over =item My laptop has 466 words for release. =item 466 Moby Thesaurus words for "release": OK, abandonment, abjuration, absolution, absolve, accord, account, acknowledgment, acquaintance, acquit, acquittal, acquittance, admission, admit, advice, allow, allowance, amnesty, annihilation, announcement, bane, biological death, blue book, boot, bounce, break, break loose, break out, break up, breakout, breakup, briefing, bulletin, bump, bust, can, canceled check, cashier, cast loose, cast off, catharsis, cessation of life, cession, charter, circulate, cleanse, cleanse away, cleansing, clear, clearance, clearing, clinical death, come out with, communication, communique, compurgation, consent, crossing the bar, curtains, cut loose, data, datum, deactivate, deactivation, death, death knell, debrief, debt of nature, decease, decontaminate, defrock, degrade, deliver, deliverance, delivery, demise, demob, demobilization, demobilize, demote, departure, deplume, depose, deprive, destigmatization, destigmatize, destigmatizing, detach, detachment, diaspora, diplomatic immunity, directory, disband, disbandment, disbar, discharge, disculpation, disembarrass, disembroil, disemploy, disengage, disentangle, disintegrate, disintegration, disinvolve, dislodge, dismiss, dismissal, disorganization, disorganize, dispatch, dispensation, dispense, dispense from, dispense with, dispersal, disperse, dispersion, displace, displume, disposal, disposition, disseminate, dissolution, dissolve, distribute, doff, doom, drum out, dumping, dying, ebb of life, emancipate, emancipation, embassy, emergence, emotional release, end, end of life, ending, enlightenment, escape, escapism, eternal rest, evasion, evidence, except, exception, exculpate, exculpation, excuse, exempt, exempt from, exemption, exit, exonerate, exoneration, expel, expiration, express, extinction, extinguishment, extract, extricate, extrication, facts, factual information, familiarization, final summons, finger of death, fire, flight, forgive, forgiveness, forgoing, forswearing, franchise, free, free from, freedom, freeing, furlough, gen, general information, get out, getaway, getting rid of, give absolution, give dispensation from, give leave, give off, give out, give permission, give release, give respite, give the ax, give the gate, give the go-ahead, give the word, giving up, go bail for, go separate ways, going, going off, grant, grant amnesty to, grant bail to, grant immunity, grant remission, grave, guidebook, hand of death, hand out, handout, hard information, immunity, incidental information, info, information, instruction, intelligence, intermission, intermit, issuance, issue, jailbreak, jaws of death, justify, kick, kick upstairs, knell, knowledge, last debt, last muster, last rest, last roundup, last sleep, launch, lay off, leak, leakage, leave, leave go, leaving life, legislative immunity, let, let go, let go free, let loose, let loose of, let off, let out, letter, letting go, liberate, liberation, liberty, license, lifesaving, light, loose, loosen, loosing, loss of life, make available, make possible, make redundant, making an end, manumission, manumit, mention, message, muster out, nonpros, notice, notification, okay, outlet, pardon, parole, part, part company, parting, pass out, passing, passing away, passing over, patent, pension off, perishing, permission, permission to enter, permit, pneumatogram, present, presentation, press release, prisonbreak, privilege, promotional material, proof, publication, publicity, publish, purgation, purge, purge away, purging, put on parole, put out, quash the charge, quietus, quittance, ransom, read out of, recantation, receipt, receipt in full, recover, recovery, redeem, redemption, releasing, relinquish, relinquishment, remise, remission, remit, removal, remove, renunciation, replace, report, reprieve, rescue, rescuing, resign, resignation, respite, rest, retire, retraction, retrieval, retrieve, reward, riddance, sack, sacrifice, salvage, salvation, save, save the necessity, saving, say the word, scatter, sentence of death, separate, separate forcibly, separation, set at large, set free, setting-free, shades of death, shadow of death, shrive, sidelight, sleep, somatic death, spare, special permission, split up, split-up, statement, story, strip, summons of death, superannuate, surcease, surplus, surrender, suspend, suspension, swearing off, take off, tear loose, telegram, the dope, the goods, the know, the scoop, ticket, ticket of admission, transmission, turn off, turn out, unbar, unbind, unbinding, unbolt, unbolting, unbridling, unbuckle, unbuckling, unbutton, uncaging, unchain, unchaining, unclasp, unclutch, undo, unfasten, unfetter, unfettering, unfrock, ungagging, unglue, unhand, unhanding, unharnessing, unhobbling, unknot, unlace, unlashing, unlatch, unlatching, unleash, unleashing, unlock, unlocking, unloose, unloosen, unloosing, unmanacling, unmuzzling, unpenning, unravel, unshackle, unshackling, unsnarl, unstick, unstrap, unstrapping, untangle, untethering, untie, untrussing, untying, unveil, unyoking, vent, verdict of acquittal, vindicate, vindication, voucher, vouchsafe, vouchsafement, waiver, warrant, weigh anchor, white book, white paper, whitewash, withdraw the charge, word, yield, yielding =item So that's the slide titles sorted out =back =head2 Defining features =over =item Dependencies up the wazoo my $build = Siesta::Build ->new( module_name => "Siesta", license => 'perl', scripts => [ 'bin/tequila', 'bin/nacho' ], requires => { 'Test::More' => 0, 'Class::Accessor::Fast' => 0, 'Mail::Address' => 0, 'Email::Simple' => '1.4', 'Email::LocalDelivery' => '0.02', 'DBD::mysql' => 0, 'Class::DBI::BaseDSN' => 0, 'Class::DBI::mysql' => 0, # for live 'Class::DBI::SQLite' => 0, # for test 'File::Path' => 0, 'File::Basename' => 0, 'File::Find::Rule' => 0, 'UNIVERSAL::require' => 0, 'Template' => 0, 'Digest::MD5' => 0, 'Mail::DeliveryStatus::BounceParser' => 0, # Module::Build 0.18 is the first release with # working scripts shebang rewriting 'Module::Build' => '0.18', 'String::ShellQuote' => 0, 'Tie::IxHash' => 0, 'Storable' => 0, 'Apache::Session::File' => 0, }, dynamic_config => 1, sign => 1, ); But that's okay, because L loves that kind of thing. =item Plugin based =back =head2 Modular =over =item Siesta comprises thirty-one modules, and three scripts =item tequila inject the mail into the system =item nacho lots of little bits. commands line control tool =item bandito steals configuration from mailman =item Siesta::Web TT + Template::Plugin::Siesta =back =head2 The basic structure =over L =back =head2 Once more, with feeling =over L =back =head2 How it works =over =item mail arrives at the system, and gets funelled into the system with standard MTA juju. siesta-dev: "|/usr/local/bin/tequila post siesta-dev" =item cat /usr/local/bin/tequila #!/usr/bin/perl -w use strict; use Siesta; use constant debug => 1; eval { Siesta->new->process( action => $ARGV[0], list => $ARGV[1], mail => \*STDIN ); }; if ($@) { # let the MTA know we're deferring. print $@ if debug; exit 20; } __END__ =head1 NAME ... =back =head2 That's all folks =over =item L =item Okay, there might be something more to it that that. =back =head2 A Pipeline =over =item L =item is the mail from a member of the list? =back =head2 Archive =over =item L =item spool to a Maildir always passes. =back =head2 Send =over =item L =item dispatch to members =back =head2 =head2 Inside a plugin =over =item package Siesta::Plugin::SubjectTag; use strict; use Siesta::Plugin; use base 'Siesta::Plugin'; sub description { 'add [list.id] to subject lines'; } sub process { my $self = shift; my $mail = shift; my $subject = $mail->subject || 'no subject'; my $list_name = $self->list->name; $mail->subject("[$list_name] $subject") unless $subject =~ /\[$list_name\]/; return; } 1; __END__ =back =head2 We already have many plugins =over =item MembersOnly Reject/defer non-member posts =item ListHeaders Adds RFC2919 and RFC2396 headers =item Archive Saves messages to a maildir =item SimpleSig Rejects mails with overly long signatures =item ReplyTo Munges the Reply-To header to be the list address =item Send Dispatches the mail to subscribers =back =head2 ReplyTo =over =item We know Reply-To munging is an issue dear to all your hearts. =item So much so that Simon wrote this into version 1.0 of the plugin. # see : # http://www.unicom.com/pw/reply-to-harmful.html # http://www.metasystema.org/essays/reply-to-useful.mhtml # http://thegestalt.org/simon/replytorant.html # http://www.deez.info/sengelha/writings/considered-harmful/ # for various for and against arguments thrashed out by the great # and the good and for why I don't care. Feel free to argue about # this to your hearts content - the monkeys dance for my pleasure. # # DANCE MONKEYS! DANCE! And it's still there now. =item We have a solution =back =head2 Per-user per-list configuration =over =item L =item Yes, that's what we used to call it, and I was always like wuh? And it was like bleep bleep bleep. =back =head2 Back to the pipeline =over =item L =item Let's take a closer look at that orange square. =back =head2 A closer look =over =item L =item Yup, that's an orange square. So let's back up a bit. =back =head2 Not quite so close =over =item L =item You didn't notice the extra plugin was really hiding inside C? =item Send runs those for you, since they're Personal =back =head2 You know what that means =over =item L That's what you get when you google for "Big American Party!" =item Per-user Reply-To munging. =back =head2 Questions? =over =item How many roads must a man walk down, before you can call him a man? =item Sweet. What does mine say? =item Why do things always come in threes? =back =head1 Footer Siesta, free at last! E 2003 Richard Clamp