From MichaelRWolf at att.net Mon Mar 1 19:04:45 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon, 1 Mar 2010 19:04:45 -0800 Subject: SPUG: Parsing (or at least matching) C function prototypes Message-ID: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> In order to create an instrumentation layer in his C code, a friend wants to extract function prototypes from his C code. His first try worked with regular expressions. And now his second try also works with regular expressions. His solution may be "good enough", but on the (likely chance) that he calls me again, does anyone know of code that could help *parse* (or at least recognize with mo' bettah regexp's) his C code? Thanks, Michael -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net From bill at celestial.com Mon Mar 1 19:52:20 2010 From: bill at celestial.com (Bill Campbell) Date: Mon, 1 Mar 2010 19:52:20 -0800 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: <20100302035220.GA24872@ayn.mi.celestial.com> On Mon, Mar 01, 2010, Michael R. Wolf wrote: > In order to create an instrumentation layer in his C code, a friend > wants to extract function prototypes from his C code. > > His first try worked with regular expressions. > > And now his second try also works with regular expressions. > > His solution may be "good enough", but on the (likely chance) that he > calls me again, does anyone know of code that could help *parse* (or at > least recognize with mo' bettah regexp's) his C code? The attached perl script is based on a shell script in the book ``Portable C and Unix System Programming'' by J.E. Lapin. I originally wrote this as an exercise as I really didn't understand the incredibly complex ``sed'' scripts in his. This depends on some defines and minor modifications to the C code, marking global variables as ``public'' and static variables as ``private'', and creates a header file containing the appropriate ``external'' lines for all the .c files in its arguments. The defines, which may be generated with the -d option, are basicall these: #define public #define PUBLIC #define private Back in the day when I was doing a lot of C programming, I used this extensively, and it made my life much simpler. Please no harsh comments about my ancient perl script which dates back well over 20 years. It's CBE (Crude But Effective). If anybody is interested in the original cx script, it starts on page 213 of the Lapin book. Bill -- INTERNET: bill at celestial.com Bill Campbell; Celestial Software LLC URL: http://www.celestial.com/ PO Box 820; 6641 E. Mercer Way Voice: (206) 236-1676 Mercer Island, WA 98040-0820 Fax: (206) 232-9186 Skype: jwccsllc (206) 855-5792 The Constitution is a written instrument. As such, its meaning does not alter. That which it meant when it was adopted, it means now. -- SOUTH CAROLINA v. US, 199 U.S. 437, 448 (1905) -------------- next part -------------- : #!/csrel25/bin/perl eval "exec /csrel25/bin/perl -S $0 $*" if $running_under_some_shell; # $Header: /vol/cscvs/lbin/cx,v 2.11 1997/03/01 22:25:59 bill Exp $ # $Date: 1997/03/01 22:25:59 $ # @(#) $Id: cx,v 2.11 1997/03/01 22:25:59 bill Exp $ ( $progname = $0 ) =~ s!.*/!!; # save this very early $USAGE = " # # Usage: $progname [-v] options cfile [cfile...] # # Options Argument Description # -d Generate defines for public/private # -v Verbose # "; sub usage { die join("\n", at _) . "\n$USAGE\n"; } do "getopts.pl"; &usage("Invalid Option") unless do Getopts("dvV"); $suffix = ($verbose = ($opt_v || $opt_V)) ? '' : $$; # $< = $>; # make it ignore taintedness $\ = "\n"; # terminate lines automaticaly with newline if($#ARGV < 0) { print "$USAGE -- No arguments"; exit(1); } $tmpfile = "/tmp/cx$suffix"; # temporary file print STDERR "Tmpfile = $tmpfile" if($verbose); while($_ = shift) { print STDERR "file = $_" if($verbose); ($file = $_) =~ s/\.c$//; $cfile = $file . '.c'; if ( ! -r $cfile ) { # cannot find a .c file for $i. print "$progname: $cfile not found"; exit(1); } ($hfile = $file) =~ s!.*/(.*)$!!; $hfile .= '.h'; if ( -r $hfile ) { # include the .h file with the same name as the .c file $incfile = "#include \"$hfile\""; } else { $incfile = "/* There is no $file.h file */"; } $xfile = $file . '.x'; open(INPUT, "egrep '^\s*public|#\s*if|^#\s*else|^#\s*endif' $cfile |"); open(OUT, "> $tmpfile"); # open output file select(OUT); if ($opt_d) { print "#ifndef public /*{*/"; print "#\tdefine public"; print "#\tdefine PUBLIC"; print "#\tdefine private static"; print "#endif /* } public */\n"; } print "\t/* $xfile -- declarations file for module $file */"; print $incfile; line: while() { chop; rescan: if(/^#\s*if/) { $if_line = $_; # save this line chop($_ = ); # get the next line print STDERR "test1 >$_<" if($verbose); next line if(/^#\s*endif/); # skips if...endif if(/^#\s*else/) { # may be if...else...endif $else_line = $_; chop($_ = ); print STDERR "test2 >$_<" if($verbose); next line if(/^#\s*endif/); # skips if...else...endif print STDERR "else test failed" if($verbose); print $if_line; print $else_line; goto rescan; } print $if_line; # if line matched goto rescan; } if(/public/) { # Change public to extern s/public/extern/; # Remove function paramater lists. unless ( /\bARG[1-9]/ || /\b_PROTO/ || /\b_VARARGS/ ) { print STDERR "input = >$_<" if($verbose); s/\((..*)\)/&get_protos($1)/e; s/\(\)/(void)/g; print STDERR "output = >$_<" if($verbose); } # Remove leftmost array dimension. if (/\[/) { s/]/]CX/; s/\[.*CX/[]/; } # Remove anything trailng a semicolon s/;.*/;/; # Remove Variable Initialization s/\s*=.*/;/; } s/;*$/;/ unless /^#/; # make sure each line is terminated s/\s+/ /g; # replace multiple whitespace. print STDERR "output = >$_<" if($verbose); print; } # if tne new cx file is identical to the old. don't update the old. # if they are different, move the new one onto the old. close(INPUT); close(OUT); if(! -f $xfile || system("cmp -s $xfile $tmpfile > /dev/null")) { system("mv $tmpfile $xfile"); } else { print STDERR "$xfile is up to date"; unlink($tmpfile); } } exit(0); sub get_protos { local($args) = @_; local($_); local(@out); $lpq = '\('; $rpq = '\)'; # $args =~ s/$rpq\s*$lpq$//; print STDERR "args >$args<" if $verbose; for (split(/, */, $args)) { if (!s/(\S+\s*$lpq\**)\s*\w+\s*($rpq.*)/$1$2/) { s/\*([^\*])/* $1/g; # change 'char *cp' -> 'char * cp' s/\s+\S+$//; # drop arg name } push(@out, $_); } '(' . join(', ', @out) . ');'; } __END__ public int (*menucall[]) () = { From bill at celestial.com Mon Mar 1 19:52:20 2010 From: bill at celestial.com (Bill Campbell) Date: Mon, 1 Mar 2010 19:52:20 -0800 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: <20100302035220.GA24872@ayn.mi.celestial.com> On Mon, Mar 01, 2010, Michael R. Wolf wrote: > In order to create an instrumentation layer in his C code, a friend > wants to extract function prototypes from his C code. > > His first try worked with regular expressions. > > And now his second try also works with regular expressions. > > His solution may be "good enough", but on the (likely chance) that he > calls me again, does anyone know of code that could help *parse* (or at > least recognize with mo' bettah regexp's) his C code? The attached perl script is based on a shell script in the book ``Portable C and Unix System Programming'' by J.E. Lapin. I originally wrote this as an exercise as I really didn't understand the incredibly complex ``sed'' scripts in his. This depends on some defines and minor modifications to the C code, marking global variables as ``public'' and static variables as ``private'', and creates a header file containing the appropriate ``external'' lines for all the .c files in its arguments. The defines, which may be generated with the -d option, are basicall these: #define public #define PUBLIC #define private Back in the day when I was doing a lot of C programming, I used this extensively, and it made my life much simpler. Please no harsh comments about my ancient perl script which dates back well over 20 years. It's CBE (Crude But Effective). If anybody is interested in the original cx script, it starts on page 213 of the Lapin book. Bill -- INTERNET: bill at celestial.com Bill Campbell; Celestial Software LLC URL: http://www.celestial.com/ PO Box 820; 6641 E. Mercer Way Voice: (206) 236-1676 Mercer Island, WA 98040-0820 Fax: (206) 232-9186 Skype: jwccsllc (206) 855-5792 The Constitution is a written instrument. As such, its meaning does not alter. That which it meant when it was adopted, it means now. -- SOUTH CAROLINA v. US, 199 U.S. 437, 448 (1905) -------------- next part -------------- : #!/csrel25/bin/perl eval "exec /csrel25/bin/perl -S $0 $*" if $running_under_some_shell; # $Header: /vol/cscvs/lbin/cx,v 2.11 1997/03/01 22:25:59 bill Exp $ # $Date: 1997/03/01 22:25:59 $ # @(#) $Id: cx,v 2.11 1997/03/01 22:25:59 bill Exp $ ( $progname = $0 ) =~ s!.*/!!; # save this very early $USAGE = " # # Usage: $progname [-v] options cfile [cfile...] # # Options Argument Description # -d Generate defines for public/private # -v Verbose # "; sub usage { die join("\n", at _) . "\n$USAGE\n"; } do "getopts.pl"; &usage("Invalid Option") unless do Getopts("dvV"); $suffix = ($verbose = ($opt_v || $opt_V)) ? '' : $$; # $< = $>; # make it ignore taintedness $\ = "\n"; # terminate lines automaticaly with newline if($#ARGV < 0) { print "$USAGE -- No arguments"; exit(1); } $tmpfile = "/tmp/cx$suffix"; # temporary file print STDERR "Tmpfile = $tmpfile" if($verbose); while($_ = shift) { print STDERR "file = $_" if($verbose); ($file = $_) =~ s/\.c$//; $cfile = $file . '.c'; if ( ! -r $cfile ) { # cannot find a .c file for $i. print "$progname: $cfile not found"; exit(1); } ($hfile = $file) =~ s!.*/(.*)$!!; $hfile .= '.h'; if ( -r $hfile ) { # include the .h file with the same name as the .c file $incfile = "#include \"$hfile\""; } else { $incfile = "/* There is no $file.h file */"; } $xfile = $file . '.x'; open(INPUT, "egrep '^\s*public|#\s*if|^#\s*else|^#\s*endif' $cfile |"); open(OUT, "> $tmpfile"); # open output file select(OUT); if ($opt_d) { print "#ifndef public /*{*/"; print "#\tdefine public"; print "#\tdefine PUBLIC"; print "#\tdefine private static"; print "#endif /* } public */\n"; } print "\t/* $xfile -- declarations file for module $file */"; print $incfile; line: while() { chop; rescan: if(/^#\s*if/) { $if_line = $_; # save this line chop($_ = ); # get the next line print STDERR "test1 >$_<" if($verbose); next line if(/^#\s*endif/); # skips if...endif if(/^#\s*else/) { # may be if...else...endif $else_line = $_; chop($_ = ); print STDERR "test2 >$_<" if($verbose); next line if(/^#\s*endif/); # skips if...else...endif print STDERR "else test failed" if($verbose); print $if_line; print $else_line; goto rescan; } print $if_line; # if line matched goto rescan; } if(/public/) { # Change public to extern s/public/extern/; # Remove function paramater lists. unless ( /\bARG[1-9]/ || /\b_PROTO/ || /\b_VARARGS/ ) { print STDERR "input = >$_<" if($verbose); s/\((..*)\)/&get_protos($1)/e; s/\(\)/(void)/g; print STDERR "output = >$_<" if($verbose); } # Remove leftmost array dimension. if (/\[/) { s/]/]CX/; s/\[.*CX/[]/; } # Remove anything trailng a semicolon s/;.*/;/; # Remove Variable Initialization s/\s*=.*/;/; } s/;*$/;/ unless /^#/; # make sure each line is terminated s/\s+/ /g; # replace multiple whitespace. print STDERR "output = >$_<" if($verbose); print; } # if tne new cx file is identical to the old. don't update the old. # if they are different, move the new one onto the old. close(INPUT); close(OUT); if(! -f $xfile || system("cmp -s $xfile $tmpfile > /dev/null")) { system("mv $tmpfile $xfile"); } else { print STDERR "$xfile is up to date"; unlink($tmpfile); } } exit(0); sub get_protos { local($args) = @_; local($_); local(@out); $lpq = '\('; $rpq = '\)'; # $args =~ s/$rpq\s*$lpq$//; print STDERR "args >$args<" if $verbose; for (split(/, */, $args)) { if (!s/(\S+\s*$lpq\**)\s*\w+\s*($rpq.*)/$1$2/) { s/\*([^\*])/* $1/g; # change 'char *cp' -> 'char * cp' s/\s+\S+$//; # drop arg name } push(@out, $_); } '(' . join(', ', @out) . ');'; } __END__ public int (*menucall[]) () = { From andrew at sweger.net Mon Mar 1 20:10:34 2010 From: andrew at sweger.net (Andrew Sweger) Date: Mon, 1 Mar 2010 20:10:34 -0800 (PST) Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: On Mon, 1 Mar 2010, Michael R. Wolf wrote: > In order to create an instrumentation layer in his C code, a friend > wants to extract function prototypes from his C code. > > His first try worked with regular expressions. > > And now his second try also works with regular expressions. Thus the voice spake: Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. More or less from the well know hater of Perl, jwz (whom we respect): http://regex.info/blog/2006-09-15/247 -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From damian at conway.org Mon Mar 1 20:02:16 2010 From: damian at conway.org (Damian Conway) Date: Tue, 2 Mar 2010 15:02:16 +1100 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: <832f158a1003012002y3dd16c42hcc7303f098ae5cf0@mail.gmail.com> > In order to create an instrumentation layer in his C code, a friend wants to > extract function prototypes from his C code. Parse::RecDescent isn't purely regex (and isn't especially fast), but it does come with: http://search.cpan.org/~dconway/Parse-RecDescent-1.964/demo/demo_another_Cgrammar.pl which does a pretty solid job. Your friend might also like to look at the source code of Inline::C, in particular: http://cpansearch.perl.org/src/SISYPHUS/Inline-0.46/C/lib/Inline/C/ParseRegExp.pm or: http://cpansearch.perl.org/src/SISYPHUS/Inline-0.46/C/lib/Inline/C/ParseRecDescent.pm Damian From sthoenna at gmail.com Mon Mar 1 21:05:44 2010 From: sthoenna at gmail.com (Yitzchak Scott-Thoennes) Date: Mon, 1 Mar 2010 21:05:44 -0800 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: <7ee730351003012105p6b704beeveee292338a271e1f@mail.gmail.com> Sorry for initially replying to just you, Michael. On Mon, Mar 1, 2010 at 7:04 PM, Michael R. Wolf wrote: > In order to create an instrumentation layer in his C code, a friend wants to > extract function prototypes from his C code. The usual answer to this problem is: gcc -aux-info foo.prototypes -c foo.c From phil at 2people.org Tue Mar 2 16:38:11 2010 From: phil at 2people.org (Phil Mitchell) Date: Tue, 2 Mar 2010 16:38:11 -0800 Subject: SPUG: standard way for a web app to handle incoming email? Message-ID: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> For my perl/catalyst web app, Bikewise.org, we want to automate the process of receiving updates from users via email. IOW, user sends email to update at bikewise.org and we parse the contents and update the database accordingly. As I sat down to think this through, I realized I have no idea how this is done. The app is hosted on a virtual server, and relies on a separate mail server that's run by my hosting provider. Do I need access to the raw mail files on the server? Is there a standard way to set this up? -- Bikewise: http://www.bikewise.org -------------- next part -------------- An HTML attachment was scrubbed... URL: From skylos at gmail.com Tue Mar 2 16:42:28 2010 From: skylos at gmail.com (Skylos) Date: Tue, 2 Mar 2010 16:42:28 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> References: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <3650cdc01003021642v1a62f2f0qb129dcdd018228b2@mail.gmail.com> You can run a polling daemon that uses Net::SMTP and Net::POP and the like to poll the remote server and download the emails, parse them up. Is that what you mean? On a unix system you can often set up a .forward file consisting of '| program.pl' that will cause the delivery agent to launch the program and pipe the email message to it, but it doesn't sound ike you have the ability to be a program on the mail server. That being the case a remote polling is more in order. Skylos On Tue, Mar 2, 2010 at 4:38 PM, Phil Mitchell wrote: > For my perl/catalyst web app, Bikewise.org, we want to automate the process > of receiving updates from users via email. IOW, user sends email to > update at bikewise.org and we parse the contents and update the database > accordingly. > > As I sat down to think this through, I realized I have no idea how this is > done. The app is hosted on a virtual server, and relies on a separate mail > server that's run by my hosting provider. Do I need access to the raw mail > files on the server? Is there a standard way to set this up? > > -- > Bikewise: http://www.bikewise.org > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > -- "If only I could get rid of hunger by rubbing my belly" - Diogenes -------------- next part -------------- An HTML attachment was scrubbed... URL: From brian at massassi.com Tue Mar 2 16:48:25 2010 From: brian at massassi.com (Brian E. Lozier) Date: Tue, 2 Mar 2010 16:48:25 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> References: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <3ec919521003021648q18cdc563ub89053c9c328662d@mail.gmail.com> There are dozens or more modules on CPAN that can check mail -- depends on how you want to access it, POP3 or IMAP are easiest... not sure why you'd want to parse the files directly. Set up a cron job on your server to periodically check for new messages, parse them, do whatever. If they are submitting pictures or other attachments you need to either get one that decodes or pair it with another module that can decode (search Email::MIME). On Tue, Mar 2, 2010 at 4:38 PM, Phil Mitchell wrote: > For my perl/catalyst web app, Bikewise.org, we want to automate the process > of receiving updates from users via email. IOW, user sends email to > update at bikewise.org and we parse the contents and update the database > accordingly. > As I sat down to think this through, I realized I have no idea how this is > done. The app is hosted on a virtual server, and relies on a separate mail > server that's run by my hosting provider. Do I need access to the raw mail > files on the server? Is there a standard way to set this up? > -- > Bikewise: http://www.bikewise.org > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > ? ? POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > ? ?MEETINGS: 3rd Tuesdays > ? ?WEB PAGE: http://seattleperl.org/ > From cjac at colliertech.org Tue Mar 2 16:58:48 2010 From: cjac at colliertech.org (C.J. Adams-Collier) Date: Tue, 02 Mar 2010 16:58:48 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> References: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <1267577928.8647.24.camel@norseth> I've always liked procmail. Set up a mailbox for the account and have your MDA deliver to procmail. add different procmail rules to fire off different scripts based on the content of the subject, To_ field, From field, etc. http://pm-doc.sourceforge.net/ Cheers, C.J. On Tue, 2010-03-02 at 16:38 -0800, Phil Mitchell wrote: > For my perl/catalyst web app, Bikewise.org, we want to automate the > process of receiving updates from users via email. IOW, user sends > email to update at bikewise.org and we parse the contents and update the > database accordingly. > > > As I sat down to think this through, I realized I have no idea how > this is done. The app is hosted on a virtual server, and relies on a > separate mail server that's run by my hosting provider. Do I need > access to the raw mail files on the server? Is there a standard way to > set this up? > > -- > Bikewise: http://www.bikewise.org > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: From andrew at sweger.net Tue Mar 2 17:01:44 2010 From: andrew at sweger.net (Andrew Sweger) Date: Tue, 2 Mar 2010 17:01:44 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: As far as getting the mail to the server, I'm a fan of using the fetchmail utility that takes care of periodically checking the email account for new messages, retrieving them, and then feeding them to whatever program you write that then parses the message for content. I thought email was dead in this age of twitterdom. On Tue, 2 Mar 2010, Phil Mitchell wrote: > For my perl/catalyst web app, Bikewise.org, we want to automate the process > of receiving updates from users via email. IOW, user sends email to > update at bikewise.org and we parse the contents and update the database > accordingly. > > As I sat down to think this through, I realized I have no idea how this is > done. The app is hosted on a virtual server, and relies on a separate mail > server that's run by my hosting provider. Do I need access to the raw mail > files on the server? Is there a standard way to set this up? > > -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From skylos at gmail.com Tue Mar 2 17:03:43 2010 From: skylos at gmail.com (Skylos) Date: Tue, 2 Mar 2010 17:03:43 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: References: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <3650cdc01003021703q30ddaf2wed81fecebb5b5006@mail.gmail.com> I wonder if there is a way of making the email get exposed as an atom or rss feed, which you could then use a reader automation to poll. Skylos On Tue, Mar 2, 2010 at 5:01 PM, Andrew Sweger wrote: > As far as getting the mail to the server, I'm a fan of using the fetchmail > utility that takes care of periodically checking the email account for new > messages, retrieving them, and then feeding them to whatever program you > write that then parses the message for content. > > I thought email was dead in this age of twitterdom. > > On Tue, 2 Mar 2010, Phil Mitchell wrote: > > > For my perl/catalyst web app, Bikewise.org, we want to automate the > process > > of receiving updates from users via email. IOW, user sends email to > > update at bikewise.org and we parse the contents and update the database > > accordingly. > > > > As I sat down to think this through, I realized I have no idea how this > is > > done. The app is hosted on a virtual server, and relies on a separate > mail > > server that's run by my hosting provider. Do I need access to the raw > mail > > files on the server? Is there a standard way to set this up? > > > > > > -- > Andrew B. Sweger -- The great thing about multitasking is that several > things can go wrong at once. > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > -- "If only I could get rid of hunger by rubbing my belly" - Diogenes -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrew at sweger.net Tue Mar 2 17:06:18 2010 From: andrew at sweger.net (Andrew Sweger) Date: Tue, 2 Mar 2010 17:06:18 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <1267577928.8647.24.camel@norseth> Message-ID: Oh yeah. I'll second the suggestion for procmail. But I usually let fetchmail retrieve the messages from the real mail server and then it hands it off to procmail for intelligent handling. I love procmail. I haven't touched its recipe file in over a year, totally forgot all the work it's doing. (Hey, look! I used "its" and "it's" correctly. Go me.) On Tue, 2 Mar 2010, C.J. Adams-Collier wrote: > I've always liked procmail. Set up a mailbox for the account and have > your MDA deliver to procmail. add different procmail rules to fire off > different scripts based on the content of the subject, To_ field, From > field, etc. > > http://pm-doc.sourceforge.net/ > > Cheers, > > C.J. > > > On Tue, 2010-03-02 at 16:38 -0800, Phil Mitchell wrote: > > For my perl/catalyst web app, Bikewise.org, we want to automate the > > process of receiving updates from users via email. IOW, user sends > > email to update at bikewise.org and we parse the contents and update the > > database accordingly. > > > > > > As I sat down to think this through, I realized I have no idea how > > this is done. The app is hosted on a virtual server, and relies on a > > separate mail server that's run by my hosting provider. Do I need > > access to the raw mail files on the server? Is there a standard way to > > set this up? > > > > -- > > Bikewise: http://www.bikewise.org > > > > _____________________________________________________________ > > Seattle Perl Users Group Mailing List > > POST TO: spug-list at pm.org > > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > > MEETINGS: 3rd Tuesdays > > WEB PAGE: http://seattleperl.org/ > > -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From alwanza at yahoo.com Tue Mar 2 18:32:39 2010 From: alwanza at yahoo.com (Meryll Larkin) Date: Tue, 2 Mar 2010 18:32:39 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <906377.89956.qm@web56008.mail.re3.yahoo.com> Hi Phil, Sorry, I don't think the same way everyone else does and sometimes obvious stuff eludes me and I ask stupid questions..... Why can't you just make the Web app do 2 things at the end of the action: 1. Send the email 2. Update the database (do you still need step 1)? Of course you'd have to validate user input because user communication directly into a database can be dangerous - I see you've done a good job of putting most (but not all) of that on the front end. I guess I'm assuming you wrong the Web app. Is there something I'm missing? Meryll Larkin From alwanza at yahoo.com Tue Mar 2 18:34:34 2010 From: alwanza at yahoo.com (Meryll Larkin) Date: Tue, 2 Mar 2010 18:34:34 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <906377.89956.qm@web56008.mail.re3.yahoo.com> Message-ID: <577504.91448.qm@web56008.mail.re3.yahoo.com> WROTE (not wrong) wrote the web app (apologies). --- On Tue, 3/2/10, Meryll Larkin wrote: > From: Meryll Larkin > Subject: Re: SPUG: standard way for a web app to handle incoming email? > To: spug-list at pm.org, "Phil Mitchell" > Date: Tuesday, March 2, 2010, 6:32 PM > Hi Phil, > > Sorry,? I don't think the same way everyone else does > and sometimes obvious stuff eludes me and I ask stupid > questions..... > > Why can't you just make the Web app do 2 things at the end > of the action: > 1.? Send the email > 2.? Update the database > > (do you still need step 1)? > > Of course you'd have to validate user input because user > communication directly into a database can be dangerous - I > see you've done a good job of putting most (but not all) of > that on the front end. > > I guess I'm assuming you wrong the Web app.? Is there > something I'm missing? > > Meryll Larkin > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > ? ???POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > ? ? MEETINGS: 3rd Tuesdays > ? ? WEB PAGE: http://seattleperl.org/ > From alwanza at yahoo.com Tue Mar 2 18:47:11 2010 From: alwanza at yahoo.com (Meryll Larkin) Date: Tue, 2 Mar 2010 18:47:11 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <906377.89956.qm@web56008.mail.re3.yahoo.com> Message-ID: <981469.63741.qm@web56001.mail.re3.yahoo.com> Maybe I'm assuming too much again.... If the Web app and Database are hosted by the same ISP, the ISP usually provides information about how the Database can be accessed inside a script (at least provides you with your account details - username password, the name/address of database and which modules are available to reach it). If the Web app and Database are not hosted with the same ISP, I could understand you might need to parse the email if the ports you need to communicate directly with the database aren't open between Web app server and DB server. Meryll From skylos at gmail.com Tue Mar 2 20:07:52 2010 From: skylos at gmail.com (Skylos) Date: Tue, 2 Mar 2010 20:07:52 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <981469.63741.qm@web56001.mail.re3.yahoo.com> References: <906377.89956.qm@web56008.mail.re3.yahoo.com> <981469.63741.qm@web56001.mail.re3.yahoo.com> Message-ID: <3650cdc01003022007m4bd2bd90oa3ec492949f3b380@mail.gmail.com> Heh, I think he meant to *receive* email with his application, not send it. "we want to automate the process of receiving updates from users via email" David On Tue, Mar 2, 2010 at 6:47 PM, Meryll Larkin wrote: > Maybe I'm assuming too much again.... If the Web app and Database are > hosted by the same ISP, the ISP usually provides information about how the > Database can be accessed inside a script (at least provides you with your > account details - username password, the name/address of database and which > modules are available to reach it). > > If the Web app and Database are not hosted with the same ISP, I could > understand you might need to parse the email if the ports you need to > communicate directly with the database aren't open between Web app server > and DB server. > > Meryll > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > -- "If only I could get rid of hunger by rubbing my belly" - Diogenes -------------- next part -------------- An HTML attachment was scrubbed... URL: From alwanza at yahoo.com Tue Mar 2 20:32:04 2010 From: alwanza at yahoo.com (Meryll Larkin) Date: Tue, 2 Mar 2010 20:32:04 -0800 (PST) Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3650cdc01003022007m4bd2bd90oa3ec492949f3b380@mail.gmail.com> Message-ID: <226701.24877.qm@web56002.mail.re3.yahoo.com> Thanks David, Oh, email from an email client on the user's desktop! Bigger challenge to parse email contents into a database from the body of an email when you don't know what information you are going to receive and in what order.... Which is why after looking at the webform and seeing what Bikewise.org does with the info I assumed that the email was coming from their own webform. Sorry for my confusion. I agree, I would use procmail to direct the email into somewhere where I could run a script on it. Meryll From phil at 2people.org Tue Mar 2 22:36:43 2010 From: phil at 2people.org (Phil Mitchell) Date: Tue, 2 Mar 2010 22:36:43 -0800 Subject: SPUG: standard way for a web app to handle incoming email? In-Reply-To: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> References: <3d8716b11003021638u46f9eb40t9e2b3b98acffa0@mail.gmail.com> Message-ID: <3d8716b11003022236n6382a64bn5f0b57e02876fddc@mail.gmail.com> You are all awesome! Thank you for all this kind attention -- I apologize for posting and then running off to a late meeting. It looks like the combination of fetchmail and procmail is exactly what I was needing (and good to know about other options, like Net::SMTP, too ...) It's kind of an interesting challenge - we want to make it as frictionless as possible for govt agencies to respond to the hazard report emails that we send out from Bikewise. So we're going to be implementing a very simple "form" that gets submitted simply by replying to the email. If anyone's done something similar and has pearls of wisdom, I'd welcome any tips .. Thanks again! Phil On Tue, Mar 2, 2010 at 4:38 PM, Phil Mitchell wrote: > For my perl/catalyst web app, Bikewise.org, we want to automate the process > of receiving updates from users via email. IOW, user sends email to > update at bikewise.org and we parse the contents and update the database > accordingly. > > As I sat down to think this through, I realized I have no idea how this is > done. The app is hosted on a virtual server, and relies on a separate mail > server that's run by my hosting provider. Do I need access to the raw mail > files on the server? Is there a standard way to set this up? > > -- > Bikewise: http://www.bikewise.org > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > -- Bikewise: http://www.bikewise.org -------------- next part -------------- An HTML attachment was scrubbed... URL: From MichaelRWolf at att.net Thu Mar 4 12:35:33 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Thu, 4 Mar 2010 12:35:33 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge Message-ID: Stephen Wolfram (of Mathematica fame) has created www.WolframAlpha.com, an effort to create a GUI and API "to make all systematic knowledge immediately computable by everyone". - Of course, simple stuff is simple: 2 * 3 ^ 4: http://www.wolframalpha.com/input/?i=%202%20*%203%20 ^%204 - Medium stuff is beautiful: plot sin x cos y: http://www.wolframalpha.com/input/?i=plot+sin+x+cos+y It gets almost ridiculously fun, helpful, and useful... - Generate a CAPTCHA: http://www.wolframalpha.com/input/?i=CAPTCHA+Wolfram+Alpha - Compare screen resolutions: http://www.wolframalpha.com/input/?i=VGA%2C+SVGA%2C+SXGA%2C+QXGA%2C+WXGA - Compare GDP of 3 countries: gdp france, england, australia: http://www.wolframalpha.com/input/?i=gdp%20france%2C%20england%2C%20australia - Pick an afternoon snack: http://www.wolframalpha.com/input/?i=10+peanut+M%26Ms%2C+2+slices+of+swiss+cheese%2C+1+apple There are *loads* of information sources stashed in there in realms that folks like you would be interested in: linguistics, material science, units & measures, computer systems, materials, chemistry, life science. - http://www.wolframalpha.com/examples/ It's rich. Very rich, in deed.... In fact, digging around in the siesmology data, I accidently found out about the Chile earthquake (while looking for Haiti) before it hit print, and when there was only 1 article in the Google cache. - earthquakes 2010 with magnitude > 6.0: http://www.wolframalpha.com/input/?i=earthquakes+2010+with+magnitude+%3E+6.0 Have fun. Report back with your favorite find. Enjoy, Michael P.S. I haven't even looked at the API, but imagine how cool that could be mashed up.... P.P.S. There's also an iPhone app. Great for resolving "bar bets" of the quantatative kind, like why is Tungsten (think W - Wolfram) is a better incandescent filament than copper or iron - http://www.wolframalpha.com/input/?i=tungston%2C+copper%2C+iron -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net From kevin-spug at fink.com Thu Mar 4 12:50:59 2010 From: kevin-spug at fink.com (Kevin Fink) Date: Thu, 4 Mar 2010 12:50:59 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: References: Message-ID: I have a hard time with the UI. They never seem to be able to parse any useful query I come up with. For example, I would love to see a graph of the number of large earthquakes per year over the past 100 years or so. I tried "number of earthquakes > 6.0 per year", "number of earthquakes per year > 6.0", and various other permutations, but couldn't get it to tell me anything useful at all. Kevin On Thu, Mar 4, 2010 at 12:35 PM, Michael R. Wolf wrote: > Stephen Wolfram (of Mathematica fame) has created www.WolframAlpha.com, an > effort to create a GUI and API "to make all systematic knowledge immediately > computable by everyone". > > - Of course, simple stuff is simple: 2 * 3 ^ 4: > http://www.wolframalpha.com/input/?i=%202%20*%203%20^%204 > > - Medium stuff is beautiful: plot sin x cos y: > http://www.wolframalpha.com/input/?i=plot+sin+x+cos+y > > It gets almost ridiculously fun, helpful, and useful... > > - Generate a CAPTCHA: > http://www.wolframalpha.com/input/?i=CAPTCHA+Wolfram+Alpha > - Compare screen resolutions: > http://www.wolframalpha.com/input/?i=VGA%2C+SVGA%2C+SXGA%2C+QXGA%2C+WXGA > - Compare GDP of 3 countries: gdp france, england, australia: > http://www.wolframalpha.com/input/?i=gdp%20france%2C%20england%2C%20australia > - Pick an afternoon snack: > http://www.wolframalpha.com/input/?i=10+peanut+M%26Ms%2C+2+slices+of+swiss+cheese%2C+1+apple > > There are *loads* of information sources stashed in there in realms that > folks like you would be interested in: linguistics, material science, units > & measures, computer systems, materials, chemistry, life science. > > - http://www.wolframalpha.com/examples/ > > It's rich. Very rich, in deed.... > > In fact, digging around in the siesmology data, I accidently found out > about the Chile earthquake (while looking for Haiti) before it hit print, > and when there was only 1 article in the Google cache. > > - earthquakes 2010 with magnitude > 6.0: > http://www.wolframalpha.com/input/?i=earthquakes+2010+with+magnitude+%3E+6.0 > > Have fun. Report back with your favorite find. > > Enjoy, > Michael > > P.S. I haven't even looked at the API, but imagine how cool that could be > mashed up.... > > P.P.S. There's also an iPhone app. Great for resolving "bar bets" of the > quantatative kind, like why is Tungsten (think W - Wolfram) is a better > incandescent filament than copper or iron > - http://www.wolframalpha.com/input/?i=tungston%2C+copper%2C+iron > > -- > Michael R. Wolf > All mammals learn by playing! > MichaelRWolf at att.net > > > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From dbenhur at whitepages.com Thu Mar 4 12:56:55 2010 From: dbenhur at whitepages.com (Devin Ben-Hur) Date: Thu, 4 Mar 2010 12:56:55 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: References: Message-ID: <4B901E97.1000108@whitepages.com> Michael R. Wolf wrote: > Stephen Wolfram (of Mathematica fame) has created www.WolframAlpha.com > Have fun. Report back with your favorite find. One of my favorite polar plots: http://bit.ly/HerbAlpha -- -Devin From MichaelRWolf at att.net Thu Mar 4 15:47:14 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Thu, 4 Mar 2010 15:47:14 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: <4B901E97.1000108@whitepages.com> References: <4B901E97.1000108@whitepages.com> Message-ID: <6D7A0E30-9852-4550-80C0-207E739325E3@att.net> On Mar 4, 2010, at 12:56 PM, Devin Ben-Hur wrote: > Michael R. Wolf wrote: >> Stephen Wolfram (of Mathematica fame) has created >> www.WolframAlpha.com >> Have fun. Report back with your favorite find. > > One of my favorite polar plots: http://bit.ly/HerbAlpha > Nice... And, since I won a caffeine tee shirt at my first SPUG meeting, let's pivot from math to meth... chemically, that is http://www.wolframalpha.com/input/?i=THC%2C+ethanol%2C+caffiene%2C+nicotine%2C+meth P.S. Did you notice that it even corrected my spelling? P.P.S. I just shared WolframAlpha with my local librarian. She kicked back in her chair, flabergasted and said "This is cool. This is kinda like when you used to have the encyclopedia as a kid. This is cool!" It made my day, sharing such a deep information source with another deep information worker. -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net From ryanc at greengrey.org Thu Mar 4 15:54:29 2010 From: ryanc at greengrey.org (Ryan Corder) Date: Thu, 4 Mar 2010 15:54:29 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: References: Message-ID: <20100304235429.GA15957@greengrey.org> On Thu, Mar 04, 2010 at 12:50:59PM -0800, Kevin Fink wrote: | I have a hard time with the UI. They never seem to be able to parse any | useful query I come up with. For example, I would love to see a graph of the | number of large earthquakes per year over the past 100 years or so. I tried | "number of earthquakes > 6.0 per year", "number of earthquakes per year > | 6.0", and various other permutations, but couldn't get it to tell me | anything useful at all. I think, in this case, it has to do with what historical data they have in their databases. One can argue that the data is readily available, but whether or not they've done anything with it is anyone's guess. Case in point, 'earthquakes 2010' returns good results, while 'earthquakes 2009' returns nothing. For reference, 'earthquakes since 1900' caused it to computer for 10 minutes before I cancelled the request. -- Ryan Corder || () ASCII ribbon campaign || /\ against HTML email http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x1CB59D69 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available URL: From cxreg at pobox.com Thu Mar 4 18:05:21 2010 From: cxreg at pobox.com (Dave Olszewski) Date: Thu, 4 Mar 2010 18:05:21 -0800 (PST) Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: References: Message-ID: (reposting from the email that might actually be subscribed to the list) I saw this article last year which puts to words nicely the issues you and I seem to have with it: http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html "The apps are useful and fine and good. The natural-language UI is a monstrous encumbrance, which needs to be taken out back and shot. It won't be." Dave On Thu, 4 Mar 2010, Kevin Fink wrote: > I have a hard time with the UI. They never seem to be able to parse any > useful query I come up with. For example, I would love to see a graph of the > number of large earthquakes per year over the past 100 years or so. I tried > "number of earthquakes > 6.0 per year", "number of earthquakes per year > > 6.0", and various other permutations, but couldn't get it to tell me > anything useful at all. > > Kevin > > On Thu, Mar 4, 2010 at 12:35 PM, Michael R. Wolf wrote: > >> Stephen Wolfram (of Mathematica fame) has created www.WolframAlpha.com, an >> effort to create a GUI and API "to make all systematic knowledge immediately >> computable by everyone". >> >> - Of course, simple stuff is simple: 2 * 3 ^ 4: >> http://www.wolframalpha.com/input/?i=%202%20*%203%20^%204 >> >> - Medium stuff is beautiful: plot sin x cos y: >> http://www.wolframalpha.com/input/?i=plot+sin+x+cos+y >> >> It gets almost ridiculously fun, helpful, and useful... >> >> - Generate a CAPTCHA: >> http://www.wolframalpha.com/input/?i=CAPTCHA+Wolfram+Alpha >> - Compare screen resolutions: >> http://www.wolframalpha.com/input/?i=VGA%2C+SVGA%2C+SXGA%2C+QXGA%2C+WXGA >> - Compare GDP of 3 countries: gdp france, england, australia: >> http://www.wolframalpha.com/input/?i=gdp%20france%2C%20england%2C%20australia >> - Pick an afternoon snack: >> http://www.wolframalpha.com/input/?i=10+peanut+M%26Ms%2C+2+slices+of+swiss+cheese%2C+1+apple >> >> There are *loads* of information sources stashed in there in realms that >> folks like you would be interested in: linguistics, material science, units >> & measures, computer systems, materials, chemistry, life science. >> >> - http://www.wolframalpha.com/examples/ >> >> It's rich. Very rich, in deed.... >> >> In fact, digging around in the siesmology data, I accidently found out >> about the Chile earthquake (while looking for Haiti) before it hit print, >> and when there was only 1 article in the Google cache. >> >> - earthquakes 2010 with magnitude > 6.0: >> http://www.wolframalpha.com/input/?i=earthquakes+2010+with+magnitude+%3E+6.0 >> >> Have fun. Report back with your favorite find. >> >> Enjoy, >> Michael >> >> P.S. I haven't even looked at the API, but imagine how cool that could be >> mashed up.... >> >> P.P.S. There's also an iPhone app. Great for resolving "bar bets" of the >> quantatative kind, like why is Tungsten (think W - Wolfram) is a better >> incandescent filament than copper or iron >> - http://www.wolframalpha.com/input/?i=tungston%2C+copper%2C+iron >> >> -- >> Michael R. Wolf >> All mammals learn by playing! >> MichaelRWolf at att.net >> >> >> >> >> _____________________________________________________________ >> Seattle Perl Users Group Mailing List >> POST TO: spug-list at pm.org >> SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list >> MEETINGS: 3rd Tuesdays >> WEB PAGE: http://seattleperl.org/ >> >> > From MichaelRWolf at att.net Thu Mar 4 18:31:30 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Thu, 4 Mar 2010 18:31:30 -0800 Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: References: Message-ID: <0C0928C6-D100-46AD-A87D-399B52D5B667@att.net> On Mar 4, 2010, at 5:45 PM, Dave Olszewski wrote: > I saw this article last year which puts to words nicely the issues you > and I seem to have with it: > > http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html > > "The apps are useful and fine and good. The natural-language UI is a > monstrous encumbrance, which needs to be taken out back and shot. It > won't be." > > Dave I think it goes to language design. Here's a decades-old quote that goes to the heart of it (and the heart of why Perl6 takes as long as it does) When someone says "I want a programming language in which I need only say what I wish done", give him a lollipop. -- Alan Perlis -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net From cxreg at pobox.com Thu Mar 4 18:46:44 2010 From: cxreg at pobox.com (Dave Olszewski) Date: Thu, 4 Mar 2010 18:46:44 -0800 (PST) Subject: SPUG: WolframAlpha - a great GUI and API for computing everyday knowledge In-Reply-To: <0C0928C6-D100-46AD-A87D-399B52D5B667@att.net> References: <0C0928C6-D100-46AD-A87D-399B52D5B667@att.net> Message-ID: On Thu, 4 Mar 2010, Michael R. Wolf wrote: > > On Mar 4, 2010, at 5:45 PM, Dave Olszewski wrote: > >> I saw this article last year which puts to words nicely the issues you >> and I seem to have with it: >> >> http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html >> >> "The apps are useful and fine and good. The natural-language UI is a >> monstrous encumbrance, which needs to be taken out back and shot. It >> won't be." >> >> Dave > > I think it goes to language design. Here's a decades-old quote that goes to > the heart of it (and the heart of why Perl6 takes as long as it does) > > When someone says > "I want a programming language in which > I need only say what I wish done", give him a lollipop. > -- Alan Perlis I don't see that as applicable. The quote is referring to someone who think their use case is the only one that matters. In the case of W-A, there are situations in which it will not ever do what you want, and that's not just language design, it's fundamentally broken by providing guesswork for a known factor instead of a control. If it doesn't work, you're left wondering if the data is even in there at all, or if it the lousy UI just failed to guess correctly. From andrew at sweger.net Mon Mar 15 20:01:00 2010 From: andrew at sweger.net (Andrew Sweger) Date: Mon, 15 Mar 2010 20:01:00 -0700 (PDT) Subject: SPUG: REMINDER Marche 2010 Seattle Perl Users Group (SPUG) Meeting Message-ID: Yeah, okay. This isn't exactly a reminder. I lied. As you may have read a few weeks ago, Tim has agreed to give a talk at SPUG this month. BUT, in the intervening time I have failed to do all those things that need to be done to make sure things are really happening (like verifying that the speaker is still going to show up, that the meeting room is still a go, get a proper description of the talk assembled, get a bio for the speaker, wrap it all together and send it to the list several times for the people who are still surprised when SPUG day suddenly arrives). But life intervened. Or work I should say. Well, it didn't intervene so much as took over my CPU. That and Formula 1 season started (Semper Ferrari!). So, I may very well be lying below. I'm hoping that everything will align itself and happen more or less as described in the announcement that follows. In other news, I am pre-announcing the April 20th SPUG meeting (after taxes are due) where that hard core hacker, Joshua ben Jore, will talk about what's new in Perl 5.12. This is not a lie. The cake is delicious. March 2010 Seattle Perl Users Group (SPUG) Meeting ==================================================== Topic: The Non-Sanitized Version Speaker: Dr. Tim Maher Meeting Date: Tuesday, 16 March 2010 Meeting Time: 6:30 - 8:30 p.m. Location: Marchex - 520 Pike Street Cost: Admission is free and open to the public Info: http://seattleperl.org/ ==================================================== Tuesday, March 16, is the next meeting of the THE SEATTLE PERL USERS GROUP. This Month's Talk ----------------- Tim's going to talk about Perl. Aside from that, he'll talk about whatever he wants to talk about. Why? Well, lots of reasons! But he did mention, "What I'd most like to do is show some of the less commonly seen programming examples from my book[1], and tell the more "edgy" versions of the stories that my publisher made me tone down for political correctness (e.g., the non-sanitized version of "The Legend of Nexpr")." [1] - http://MinimalPerl.com/ About Dr. Tim Maher ------------------- Dr. Maher has trekked a remarkable path through life. A few examples include singing (twice) with The Persuasions (a cappella), playing and studying the sitar with Nazir Jairazbhoy in India, writing a top-selling book, teaching as professor of psychology at several institutes, and writing and performing "Christmas Break by Rapmaster Scrooge[2]" [2] - http://www.youtube.com/watch?v=W-4WfTT98-0 Pre-Meeting =========== If you are so inclined, please come to the pre-meeting at the nearby Elephant & Castle pub on 5th & Union (see map link below). Come enjoy some friendly conversation and perhaps a favorite beverage (they have a full restaurant too). We can usually be found at the back under the TV near the rear entrance that goes up into the hotel (if you enter through the front doors, just go straight back past the bar). We'll be there from 5:00 pm to 6:19 pm. Meeting Location ================ Marchex 520 Pike Street, Suite 1800 Seattle, WA 98101 The building is just East of Westlake Center. Enter from Pike Street. http://xrl.us/spugmap Due to all of the shopping around us there is plenty of parking available in garages, but it can be hard to find street parking in the evening. There is also a parking garage in the building, but check the rates and closing time (subject to change due to downtown events)! Attendees will need to wait near the elevators in the lobby and a Marchex employee will provide access to the 18th floor where the meeting room is located. If no one shows up to let you in, call (425) 533-2964 to let them know you're in the lobby. See you there! -- Andrew B. Sweger -- The great thing about multitasking is that several things can go wrong at once. From jobs-noreply at seattleperl.org Wed Mar 17 11:11:25 2010 From: jobs-noreply at seattleperl.org (SPUG Jobs) Date: Wed, 17 Mar 2010 11:11:25 -0700 (PDT) Subject: SPUG: JOB: Perl dev, online/mobile advertising, downtown Seattle Message-ID: required skill-set - * 5 years experience in software design and development, preferably with Java, and Ruby on Rails or Perl. * 5 years of experience implementing database-driven, web-based applications with Oracle,MySQL, Postgres, MS SQL, or comparable relational database. * Advanced knowledge of Unix or Linux. * Understanding of OO design, algorithms, data structures, networking, database design & optimization. * Extensive experience with database design and optimization contract or permanent position * Perm, +-100,000$ / year for permanent positions, availability of stock options or other incentive plans * full medical/dental/vision, stock, 401k placement through recruiter, or directly with company? * Direct W-2 vs. 1099 status * W-2 any restrictions on 1099 status: Corporation, etc.? * Nope physical location *Downtown Seattle telecommuting possible? * a bit company's product or service (e.g., e-commerce, grocery shopping, nuclear weapons, pornography, etc.) * Online and Mobile advertising Matt Steckler From MichaelRWolf at att.net Wed Mar 17 16:51:45 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Wed, 17 Mar 2010 16:51:45 -0700 Subject: SPUG: Great SEO ... [Was Re: JOB: Perl dev, online/mobile advertising, downtown Seattle] In-Reply-To: References: Message-ID: <98DA1C4D-F7D5-406C-892A-7E58DF4F842E@att.net> One of the cool side-benefits to this template is that a web search for "nuclear weapons pornography Perl" returns SPUG as the top few spots. Great SEO... ;-{ On Mar 17, 2010, at 11:11 AM, SPUG Jobs wrote: > required skill-set - > * 5 years experience in software design and development, preferably > with > Java, and Ruby on Rails or Perl. > * 5 years of experience implementing database-driven, web-based > applications > with Oracle,MySQL, Postgres, MS SQL, or comparable relational > database. > * Advanced knowledge of Unix or Linux. > * Understanding of OO design, algorithms, data structures, networking, > database design & optimization. > * Extensive experience with database design and optimization > > contract or permanent position > * Perm, +-100,000$ / year > > for permanent positions, availability of stock options or other > incentive > plans > * full medical/dental/vision, stock, 401k > > placement through recruiter, or directly with company? > * Direct > > W-2 vs. 1099 status > * W-2 > > any restrictions on 1099 status: Corporation, etc.? > * Nope > > physical location > *Downtown Seattle > > telecommuting possible? > * a bit > > company's product or service (e.g., e-commerce, grocery shopping, > nuclear > weapons, pornography, etc.) > * Online and Mobile advertising > > Matt Steckler > > > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net From m3047 at m3047.net Thu Mar 18 01:46:24 2010 From: m3047 at m3047.net (Fred Morris) Date: Thu, 18 Mar 2010 00:46:24 -0800 Subject: SPUG: Great SEO ... [Was Re: JOB: Perl dev, online/mobile advertising, downtown Seattle] In-Reply-To: <98DA1C4D-F7D5-406C-892A-7E58DF4F842E@att.net> References: <98DA1C4D-F7D5-406C-892A-7E58DF4F842E@att.net> Message-ID: <201003180046.24881.m3047@m3047.net> On Wednesday 17 March 2010 15:51, Michael R. Wolf wrote: > One of the cool side-benefits to this template is that a web search > for "nuclear weapons pornography Perl" returns SPUG as the top few > spots. > > Great SEO... > > ;-{ > What would you prefer: Young dolphins doing their squish toys wearing underwear (or not)? Young mammals doing things with their phones while looking at young girls doing (ack.. etc. really. no use for amateurs, me)? Sexting middleaged people, who are thinking about where to post a job? People wondering about whether porn is, or is not, the ultimate search engine optimization... and if so, how did it come to supremacy over nuclear weapons... or any kind of weapons held by people pretending to be a) nubile and b) (near)on-line? Web cams. Think about it. That's it? No identity theft? Just good clean/dirty fun? This just doesn't even compete with the bugs I have to answer at my job. Thanks for playing; Michael is your objection political, personal, proxy, or that "someone else might be offended" (but hasn't yet, which is how I learned to live with the bomb)? Bug Status: WORKSFORME Resolution: COMPLETED The nuclear weapons one, I always find that hard to imagine. I don't remember how my present employer answered to that, considering that I did indeed answer a job advert posted here. It begs a question, and the short answer would be "no"; the longer answer would be that your head hurts now. I'm still waiting for the answer to that one which scares me. -- Fred the internet plumber From jobs-noreply at seattleperl.org Sat Mar 20 13:14:20 2010 From: jobs-noreply at seattleperl.org (SPUG Jobs) Date: Sat, 20 Mar 2010 13:14:20 -0700 (PDT) Subject: SPUG: JOB: Senior Perl Software Design Engineer, Marchex Inc. Message-ID: Senior Perl Software Design Engineer - MARCHEX INC. About You We need a Senior Software Design Engineer to join our talented and visionary development team. Our Software Design Engineers act as inventor, product architect, engineer, and can balance forward thinking with what needs to get done now. So we're looking for more than just passion for technology, we also want individuals who can contribute to long lasting solutions, and lead a discussion about architecture and communicate clearly and convincingly to both technical and non-technical stakeholders. About the Product Any business can purchase a phone number to track online advertising / sales calls, but how do you measure the value of X million calls a month? Welcome to Marchex Voicestar! We enable advertisers to track ROI for online advertising, and marketing campaigns using VoIP phone lines to optimize advertising expense both online and offline. We also offer a cost effective way for businesses to measure the value of their calls. Check us out here: www.voicestar.com And here: www.marchex.com About the Role Okay, Marchex Voicestar is a cool, new product, what else would an engineer want to know? Open source technologies such as Perl and telephony stack (learn new technologies!) - Public API - Flexible product (VXML) that allows our clients to build tools on our platform - Product built entirely in-house and all the authors still work here - Small team, and collaborative learning environment. - Share your knowledge and learn from us too. - Work on interesting challenges because we have *big* plans. - Your work will matter because our product gets heavily used and our customers LOVE it! In general, you will be responsible for the design, development, and maintenance of Marchex Voicestar services and applications. This includes all aspects of design, architecture, implementation, maintenance, build management, project management, support, and collaborating with other product teams as needed Your Qualifications Here's what'll get you in the door; the more of these you've got the better: - BS degree in a Computer Science or equivalent experience. - 5+ years experience in software development. - Experience with a variety of SDLCs. - Ability to be flexible and adapt to rapidly changing company and project needs. - Fluency in more than one language such as Perl, Ruby, Java, Python, C. - Understanding of OO design, algorithms, data structures, networking, database design & optimization. - Extensive experience with database design and optimization - Proven ability to quickly learn new technologies. - Expertise in a variety of relevant areas: messaging, VOIP, SIP, TDM, RTP, distributed computing, caching, search engine design, data mining, etc. - Experience working with a development framework (Mason, Rails, Catalyst, JSP, etc) HTML, CSS, JS and Linux is preferred. INTERESTED? Apply Now! Recruiting at marchex.com or JWOLFSTONE at marchex.com Or, Refer a friend. :) From jobs-noreply at seattleperl.org Mon Mar 22 15:46:04 2010 From: jobs-noreply at seattleperl.org (SPUG Jobs) Date: Mon, 22 Mar 2010 15:46:04 -0700 (PDT) Subject: SPUG: JOB: Perl Scripting, Seattle, Contract Message-ID: Keynote Systems, Inc. is looking for a Junior to Mid-Level Perl Programmer for Full-Time Contract work. We are looking for someone to work in our Seattle office, located in the lower Queen Anne neighborhood. The Seattle office develops Keynote's Mobile Device Perspective product, which automates mobile devices (cell phones) to test and monitor mobile networks and applications. We need assistance with development and QA of perl modules and scripts which interact with our mobile devices. Our scripts are written in Perl, using tools we have created (in Perl). The majority of the work will be in the development and scripts using existing tools, but opportunities may exist to develop new tools as well. 6 month contract position (1099) with possible extension Occasional telecommuting ok. Ideal for recent grad or CS student. Qualifications: * Perl experience. * QA and/or some development experience. * Experience with Perl in Windows environment. * Desired but not required: experience in the mobile technologies sector. Please send inquires and resumes to: Fred Parent KDS Team Lead, Mobile Keynote Systems, Inc. 206-802-2007 fred.parent at keynote.com http://www.keynote.com/products/mobile_quality From cjac at colliertech.org Tue Mar 23 10:16:56 2010 From: cjac at colliertech.org (C.J. Adams-Collier) Date: Tue, 23 Mar 2010 10:16:56 -0700 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> Message-ID: <1269364616.8068.3614.camel@calcifer> I bet gcc is pretty good at parsing C... On Mon, 2010-03-01 at 19:04 -0800, Michael R. Wolf wrote: > In order to create an instrumentation layer in his C code, a friend > wants to extract function prototypes from his C code. > > His first try worked with regular expressions. > > And now his second try also works with regular expressions. > > His solution may be "good enough", but on the (likely chance) that he > calls me again, does anyone know of code that could help *parse* (or > at least recognize with mo' bettah regexp's) his C code? > > Thanks, > Michael > -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part URL: From blibbet at gmail.com Tue Mar 23 11:23:51 2010 From: blibbet at gmail.com (Lee Fisher) Date: Tue, 23 Mar 2010 11:23:51 -0700 Subject: SPUG: Parsing (or at least matching) C function prototypes In-Reply-To: <1269364616.8068.3614.camel@calcifer> References: <914D2564-9A2A-4C2D-872C-AD56D0C483F3@att.net> <1269364616.8068.3614.camel@calcifer> Message-ID: <4BA90737.2030107@gmail.com> > I bet gcc is pretty good at parsing C... And with XML output, the results are even easier to use... http://www.gccxml.org/ From andrew at sweger.net Fri Mar 26 07:30:38 2010 From: andrew at sweger.net (Andrew Sweger) Date: Fri, 26 Mar 2010 07:30:38 -0700 (PDT) Subject: SPUG: Google Summer of Code and TPF call for students Message-ID: Hey SPUGers, A message from The Perl Foundation: If you are a college student interested in Open Source software, now is the time to get involved. http://code.google.com/soc/ Each year, Google offers students the opportunity to spend their summer coding on open source projects. You propose a project, and if selected, you're assigned a mentor and provided a $4500 stipend. It is a competitive program to get into, but offers an amazing amount of real-world experience and the ability to get seriously involved in an open source project of your choosing. The Perl Foundation spans a wide variety of projects including Perl 5, Perl 6, and Parrot with many great mentors knowledgeable in areas ranging from language design, virtual machines, and compilers through web and desktop applications. This program is a great chance to get more involved in the Perl community and put a substantial project worth of source code in your portfolio. Applications are due April 9th. http://www.perlfoundation.org/perl5/index.cgi?gsoc From tim at consultix-inc.com Sun Mar 28 12:20:55 2010 From: tim at consultix-inc.com (Tim Maher) Date: Sun, 28 Mar 2010 12:20:55 -0700 Subject: SPUG: Shell/Perl Scripting jobs in Seattle? Message-ID: <20100328192055.GA27760@jumpy.consultix-inc.com> SPUGsters, I noticed that ABIS technologies is recruiting in the Seattle area for jobs requiring UNIX, C, Shell, Perl, and Informix skills. Any guesses as to what company/product is behind these postings? Color me curious, -Tim ============================================================== | Tim Maher, Ph.D. tim(AT)TeachMePerl.com | | SPUG Leader Emeritus spug(AT)TeachMePerl.com | | Seattle Perl Users Group http://www.SeattlePerl.org | | SPUG Wiki Site http://wiki.seattleperl.org | ============================================================== From skylos at gmail.com Sun Mar 28 12:41:55 2010 From: skylos at gmail.com (Skylos) Date: Sun, 28 Mar 2010 12:41:55 -0700 Subject: SPUG: Shell/Perl Scripting jobs in Seattle? In-Reply-To: <20100328192055.GA27760@jumpy.consultix-inc.com> References: <20100328192055.GA27760@jumpy.consultix-inc.com> Message-ID: <3650cdc01003281241k29dd68advda693072a57ddc13@mail.gmail.com> Especially with the subnote 'MicroFocus COBOL' on it. Curious indeed. David On Sun, Mar 28, 2010 at 12:20 PM, Tim Maher wrote: > SPUGsters, > > I noticed that ABIS technologies is recruiting in the Seattle area > for jobs requiring UNIX, C, Shell, Perl, and Informix skills. Any > guesses as to what company/product is behind these postings? > > Color me curious, > -Tim > ============================================================== > | Tim Maher, Ph.D. tim(AT)TeachMePerl.com | > | SPUG Leader Emeritus spug(AT)TeachMePerl.com | > | Seattle Perl Users Group http://www.SeattlePerl.org | > | SPUG Wiki Site http://wiki.seattleperl.org | > ============================================================== > _____________________________________________________________ > Seattle Perl Users Group Mailing List > POST TO: spug-list at pm.org > SUBSCRIPTION: http://mail.pm.org/mailman/listinfo/spug-list > MEETINGS: 3rd Tuesdays > WEB PAGE: http://seattleperl.org/ > -- "If only I could get rid of hunger by rubbing my belly" - Diogenes -------------- next part -------------- An HTML attachment was scrubbed... URL: From MichaelRWolf at att.net Mon Mar 29 13:00:06 2010 From: MichaelRWolf at att.net (Michael R. Wolf) Date: Mon, 29 Mar 2010 13:00:06 -0700 Subject: SPUG: Off Topic - ISP recommendation in Ballard Message-ID: For the second time this year, I'm looking for an ISP in Ballard. Recommendations? Non-starters: Qwest - Monthly during January and February, their technical support told me the same story: the DSLAM had known problems, they knew I was getting unacceptable service. Implication: they didn't care, or didn't care enough to make it a priority. After 2 months of weekly calls, I dropped Qwest. CLEAR - In early March, I started this service. Their marketing sounds nice. It is nice when it works. Mobility sounds good, but was moot for my usage patterns. Many slow days. Unpredictable speed even with their top (unlimited speed) plan which promised 6 MB and "guaranteed" 4 MB. Most of the previous 3 days, I had NO SERVICE. Not just slow or unpredictable -- COMPLETELY CRASHED. I don't need much. I don't do anything "extraordinary", even as a techie. I'm just a plain vanilla customer who wants a consistent speed a little bit faster than normal. 1.5 MB would be OK if it really was 1.5 (or 80% thereof), else 2-6 MB would help for Youtube and Netflix buffering. Thanks. Please reply directly to me. I'll summarize back to group in *one* message to avoid too much OT discussion. Thanks.. -- Michael R. Wolf All mammals learn by playing! MichaelRWolf at att.net