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