From adms1 at cts.com Wed Apr 7 12:35:09 1999 From: adms1 at cts.com (adms1) Date: Thu Aug 5 00:20:57 2004 Subject: Update! Message-ID: <199904071035090850.0425624C@smtp.cts.com> ~sdpm~ I have been working to get the web page up. Several times I have had to contact the main guys at pm.org to get the DNS set. It looks like it is going to happen soon. So, the web page will be available in the next couple days from san-diego.pm.org and SanDiego.pm.org. Remember, our next meeting is April, 14th, 7:30pm The location is at Starbucks in San Diego. The address is Genesse Plaza, 4227 Genesee Avenue, San Diego, CA 92117, (619) 278-6017 You can get a map via http://maps.yahoo.com/py/maps.py?Pyt=Tmap&addr=4227+Genesee+Avenue&csz=92117 Look forward to seeing all of you there. -Garrett ps There are 8 of us now! ~sdpm~ From adms1 at cts.com Wed Apr 7 15:40:58 1999 From: adms1 at cts.com (adms1) Date: Thu Aug 5 00:20:57 2004 Subject: Web Page Up Message-ID: <199904071340580074.04CF7FFD@smtp.cts.com> ~sdpm~ The web page is up. It is located at http://SanDiego.pm.org and http://san-diego.pm.org. Let me know any suggestions or changes that need to be made. I have also emailed ComputorEdge about listing us in their User Groups section. -Garrett ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human. From stevenhenderson at prodigy.net Tue Apr 13 08:06:13 1999 From: stevenhenderson at prodigy.net (Steven T. Henderson) Date: Thu Aug 5 00:20:57 2004 Subject: greetings all! Message-ID: <005201be85ae$6912dc40$8221d2cc@computer.san.rr.com> in our last meeting, it was decided that i would share what i know about code reviews. the others thought i might be able to pass along some of the experience i have gleened. we'll see. i want to keep things simple so we will be reviewing a section of Perl code that prints out a calendar feature of a simple app that i wrote. to give you some context, check out: http://www.stevenhenderson.com/demo to give you context of the code, i have attached: 1. review.txt -- actual code snippet to be reviewed 2. demo.zip -- full source code to demo app if you check out the demo app at the URL above, this function is responsible for printing out the 'month' table located in the bottom frame. this was written some time ago and is likely riddled with bugs, should make for a good review! please print out the review.txt and bring it with you. i will try and remember to bring extra copies, but i don't have a printer so i gotta run to kinkos. i have been looking through my old documents and could not find a short and concise description of this process, so i will just wing it for your benefit below. CODE REVIEW DEFINED: a code review is a short (always less than 1 hour) meeting involving developers interested in improving programming code quality. it can be viewed as a 'peer review' your code is analyzed by others in your development group as well as other programmers outside your group. WHY: the goals for the code review is simple: to improve code quality and avoid potential bugs. the main purpose is to find bugs in the code you are reviewing, but other benefits include learning logic & process strategies from people smarter than yourself. WHO: reviewers: anyone interested in the code review. generally they are part of your development team and sooner or later integrate with your module. a 'floater', or person not involved with your project should be invited as they often can see the forrest through the trees and can bring a new perspective to the table. reviewie: person hosting the meeting and who's code is under scrutiny. thus there must be at least two developers attending, and as many as 10. however, be cautioned that any number of five is generally unpreductive as it is too hard to keep the review on track. WHAT: everyone invited should be provided both electronic and hard copy of the code to be reviewed. this printed hardcopy should be brought to the code review and should be formatted in a standard way (depends on the company). the code review begins with a quick q&a and then proceeds to pick the code apart line-by-line. the meeting proceeds as every line is 'checked off'; ie: everyone agrees that the line is ok and no potential problems are lurking. very important: these sessions should move along as quickly as possible and NOT focus on stupid problems such as: . misspelled comments. . formatting style (should be standardize within the company anyway). . variable name choice (unless its a bug or confusing) remember that you only have 1 hour to get through the entire code segment. additionally, it is equally important that the reviewie does not get defensive when people criticize thier code. this is harder than it sounds when you are under the microscope, but egos must be left at the door! WHEN: a code review must take place before any ship-critical code is complete. generally they should occur as often as peoples schedules will allow. i found them much more benificial to have several smaller code reviews more often than wait to have a huge monolithic block of code to be reviewed. (note: in my last team, we had a conf. room scheduled every thursday at 1:00pm. there were 5 of us and we would alternate a code review every week. this kept things small and we dreaded CR's a lot less). WHERE: any type of meeting place that can hold the invited parties. obviously its best to keep distractions to a minimum making confrence rooms ideal, but CR's can be held anywhere. i found attendence to my code reviews improved when i held them in the cafeteria and advertised snacks would be provided. don't be defensive. -------------- next part -------------- A non-text attachment was scrubbed... Name: demo.zip Type: application/x-zip-compressed Size: 21446 bytes Desc: not available Url : http://mail.pm.org/archives/san-diego-pm/attachments/19990413/cfc7aacb/demo.bin -------------- next part -------------- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # FUNCTION: dPrintMonth # # Systematic printing of HTLM table defining a month/year pair. # # params # $_[0] = month to be printed, format: mm # $_[1] = year to be printed, format: yyyy # # returns # none. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sub dPrintMonth { # Param is passed as mm,yyyy my($date_month) = $_[0]; my($date_year) = $_[1]; # TODO: perform some checking here # determine week number that starts the month my($tmp_week) = 1; my($tmp_cnt); my($tmp_str); # Next extract day/week info from date struct my($prim_month); my($prim_day); my($prim_year); my($end_month); my($end_day); my($end_year); my($tmp_flag) = 0; my($tmp_day) = 0; # Boldly print requested begining month print "

$month{$date_month}, $date_year

"; # Print header info print "
"; print ""; print " "; print " "; print " "; print " "; print " "; print " "; print " "; print " "; print " "; while($tmp_week <= 52) { $tmp_date = &GetWeek("$tmp_week.$date_year"); # Extract day values from week ($prim_month, $prim_day, $prim_year, $end_month, $end_day, $end_year) = split(/[\.&]/, $tmp_date); if(("$prim_month" eq "$date_month") || ("$end_month" eq "$date_month")) { # Begin new row for every week print ""; # Print each day of the week in its own cell $tmp_dt = "$prim_month.$prim_day.$prim_year"; for($tmp_cnt = 0; $tmp_cnt < 7; $tmp_cnt++) { # First and last lines may contain days from other months ($tmp_month, $tmp_day, $tmp_year) = split(/[\.&]/, $tmp_dt); if("$tmp_month" eq "$date_month") { # Build date string # $tmp_str = "$short_month{$tmp_month} $tmp_day"; $tmp_str = "$tmp_day"; } else { # Otherwise, don't print the date $tmp_str = ""; } print ""; $tmp_dt = rGetNextDay($tmp_dt); } # And close out this row print ""; $tmp_flag = 1; } else { # Once found, no need to process rest of dates if($tmp_flag) { goto StopProcessing; } } $tmp_week++; } # End this table StopProcessing: print "
MondayTuesdayWednesdayThursdayFridaySaturdaySunday

"; print $tmp_str, "
"; # Check for any reservations if($tmp_str && $res{$tmp_dt}) { my($tmp_name); my($tmp_email); while($res{$tmp_dt}) { ($tmp_name, $tmp_email, $res{$tmp_dt}) = split('\|', $res{$tmp_dt}, 3); # Make sure '@' is transposed $tmp_email =~ s/%([\da-f]{1,2})/pack(C, hex($1))/eig; print "$tmp_name
"; } } print "

"; print "

"; print "
"; print "

"; } From stevenhenderson at prodigy.net Tue Apr 13 11:14:34 1999 From: stevenhenderson at prodigy.net (Steven T. Henderson) Date: Thu Aug 5 00:20:57 2004 Subject: Fw: greetings all! Message-ID: <001201be85c8$b8c00d20$8221d2cc@computer.san.rr.com> ~sdpm~ i guess some of you had problems with my mail attachments . anyway, i have added a download to my website http://www.stevenhenderson.com ), just click on the 'download cabin source' button. i'm hoping everyone can read a ZIP file (i belived there is a LINUX util that can do this). additionally, i am including the source i hope to be reviewed. it should make enough sense even out of context and obviously best viewed with a non-proportional font. see you all wednesday night. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # FUNCTION: dPrintMonth # # Systematic printing of HTLM table defining a month/year pair. # # params # $_[0] = month to be printed, format: mm # $_[1] = year to be printed, format: yyyy # # returns # none. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sub dPrintMonth { # Param is passed as mm,yyyy my($date_month) = $_[0]; my($date_year) = $_[1]; # TODO: perform some checking here # determine week number that starts the month my($tmp_week) = 1; my($tmp_cnt); my($tmp_str); # Next extract day/week info from date struct my($prim_month); my($prim_day); my($prim_year); my($end_month); my($end_day); my($end_year); my($tmp_flag) = 0; my($tmp_day) = 0; # Boldly print requested begining month print "

$month{$date_month}, $date_year

"; # Print header info print "
"; print ""; print " "; print " "; print " "; print " "; print " "; print " "; print " "; print " "; print " "; while($tmp_week <= 52) { $tmp_date = &GetWeek("$tmp_week.$date_year"); # Extract day values from week ($prim_month, $prim_day, $prim_year, $end_month, $end_day, $end_year) = split(/[\.&]/, $tmp_date); if(("$prim_month" eq "$date_month") || ("$end_month" eq "$date_month")) { # Begin new row for every week print ""; # Print each day of the week in its own cell $tmp_dt = "$prim_month.$prim_day.$prim_year"; for($tmp_cnt = 0; $tmp_cnt < 7; $tmp_cnt++) { # First and last lines may contain days from other months ($tmp_month, $tmp_day, $tmp_year) = split(/[\.&]/, $tmp_dt); if("$tmp_month" eq "$date_month") { # Build date string # $tmp_str = "$short_month{$tmp_month} $tmp_day"; $tmp_str = "$tmp_day"; } else { # Otherwise, don't print the date $tmp_str = ""; } print ""; $tmp_dt = rGetNextDay($tmp_dt); } # And close out this row print ""; $tmp_flag = 1; } else { # Once found, no need to process rest of dates if($tmp_flag) { goto StopProcessing; } } $tmp_week++; } # End this table StopProcessing: print "
MondayTuesdayWednesdayThursdayFridaySaturdaySunday

"; print $tmp_str, "
"; # Check for any reservations if($tmp_str && $res{$tmp_dt}) { my($tmp_name); my($tmp_email); while($res{$tmp_dt}) { ($tmp_name, $tmp_email, $res{$tmp_dt}) = split('\|', $res{$tmp_dt}, 3); # Make sure '@' is transposed $tmp_email =~ s/%([\da-f]{1,2})/pack(C, hex($1))/eig; print "$tmp_name
"; } } print "

"; print "

"; print "
"; print "

"; } -----Original Message----- From: Steven T. Henderson To: san-diego-pm-list@happyfunball.pm.org Cc: stevenhenderson@prodigy.net Date: Tuesday, April 13, 1999 8:06 AM Subject: greetings all! >in our last meeting, it was decided that i would share what i know about >code reviews. the others thought i might be able to pass along some of the >experience i have gleened. we'll see. > > >i want to keep things simple so we will be reviewing a section of Perl code >that prints out a calendar feature of a simple app that i wrote. to give you >some context, check out: > >http://www.stevenhenderson.com/demo > >to give you context of the code, i have attached: > >1. review.txt -- actual code snippet to be reviewed >2. demo.zip -- full source code to demo app > >if you check out the demo app at the URL above, this function is responsible >for printing out the 'month' table located in the bottom frame. this was >written some time ago and is likely riddled with bugs, should make for a >good review! > >please print out the review.txt and bring it with you. i will try and >remember to bring extra copies, but i don't have a printer so i gotta run to >kinkos. > > >i have been looking through my old documents and could not find a short and >concise description of this process, so i will just wing it for your >benefit below. > > >CODE REVIEW DEFINED: >a code review is a short (always less than 1 hour) meeting involving >developers interested in improving programming code quality. it can be >viewed as a 'peer review' your code is analyzed by others in your >development group as well as other programmers outside your group. > > >WHY: >the goals for the code review is simple: to improve code quality and avoid >potential bugs. the main purpose is to find bugs in the code you are >reviewing, but other benefits include learning logic & process strategies >from people smarter than yourself. > >WHO: >reviewers: anyone interested in the code review. generally they are part of >your development team and sooner or later integrate with your module. a >'floater', or person not involved with your project should be invited as >they often can see the forrest through the trees and can bring a new >perspective to the table. > >reviewie: person hosting the meeting and who's code is under scrutiny. > >thus there must be at least two developers attending, and as many as 10. >however, be cautioned that any number of five is generally unpreductive as >it is too hard to keep the review on track. > > >WHAT: >everyone invited should be provided both electronic and hard copy of the >code to be reviewed. this printed hardcopy should be brought to the code >review and should be formatted in a standard way (depends on the company). >the code review begins with a quick q&a and then proceeds to pick the code >apart line-by-line. > >the meeting proceeds as every line is 'checked off'; ie: everyone agrees >that the line is ok and no potential problems are lurking. > >very important: these sessions should move along as quickly as possible and >NOT focus on stupid problems such as: > . misspelled comments. > . formatting style (should be standardize within the company anyway). > . variable name choice (unless its a bug or confusing) > >remember that you only have 1 hour to get through the entire code segment. >additionally, it is equally important that the reviewie does not get >defensive when people criticize thier code. this is harder than it sounds >when you are under the microscope, but egos must be left at the door! > > >WHEN: >a code review must take place before any ship-critical code is complete. >generally they should occur as often as peoples schedules will allow. i >found them much more benificial to have several smaller code reviews more >often than wait to have a huge monolithic block of code to be reviewed. > >(note: in my last team, we had a conf. room scheduled every thursday at >1:00pm. there were 5 of us and we would alternate a code review every week. >this kept things small and we dreaded CR's a lot less). > > >WHERE: >any type of meeting place that can hold the invited parties. obviously its >best to keep distractions to a minimum making confrence rooms ideal, but >CR's can be held anywhere. i found attendence to my code reviews improved >when i held them in the cafeteria and advertised snacks would be provided. > > > >don't be defensive. > > > > > > > > > > > > > ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human. From comeaujr at sd.conexant.com Thu Apr 15 14:38:35 1999 From: comeaujr at sd.conexant.com (John R. Comeau) Date: Thu Aug 5 00:20:57 2004 Subject: character set question from code review In-Reply-To: <199904071340580074.04CF7FFD@smtp.cts.com> (adms1@cts.com) Message-ID: <199904151938.MAA28305@pirr.sd.conexant.com> ~sdpm~ We did a code review of Steve's dPrintMonth subroutine at our meeting. I did a simple test of a question which was raised. The question was whether \d has the special meeting of matching digits in the [] of a character class. Steve was right; \d does have the special meaning, even in a character class. $string = '123'; $string =~ s/[\d]/x/g; print "$string\n"; # prints xxx -John ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human. From adms at cts.com Fri Apr 16 15:35:49 1999 From: adms at cts.com (Garrett Casey) Date: Thu Aug 5 00:20:57 2004 Subject: SanDiego.pm.org Web Review Message-ID: <199904161335490698.155DB6C4@smtp.cts.com> ~sdpm~ I have updated the web page. Please visit and find any problems!!! http://SanDiego.pm.org -Garrrett ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human. From adms at cts.com Mon Apr 26 12:17:58 1999 From: adms at cts.com (Garrett Casey) Date: Thu Aug 5 00:20:57 2004 Subject: Forward: Job Offer Message-ID: <199904261017580059.23F402F1@smtp.cts.com> ~sdpm~ Hi Garrett, Found your email address on http://san-diego.pm.org/. I run a 20+ person internet company and we use Perl (and some Visual Foxpro). We are looking for some more perl programmers to work on our site http://www.carprices.com. If you know anyone who might be interested, please refer them to us. The job description is listed at http://www.headhunter.net/jobstv/23/j03dd1mjzyntj93823.htm?ShowJob Thanks, --Roy Roy van Beaumont Chief Executive Officer AutoFusion Inc. 619-270-9444 http://www.carprices.com ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human. From adms1 at cts.com Mon Apr 26 19:17:46 1999 From: adms1 at cts.com (adms1) Date: Thu Aug 5 00:20:57 2004 Subject: ImageMagic Question Message-ID: <199904261717460041.2A9ADA15@smtp.cts.com> ~sdpm~ Has anyone worked with ImageMagick before? I wan't to be able to dynamically generate images using PerlMagick (the Image::Magick module). I installed ImageMagick on my FreeBSD machine. I don't have any X Windows system installed. ImageMagick would not compile until I used the configure option "--with-x=no" Once I set that option, it compiled fine. Now when I try to Make PerlMagick I get: In file included from /usr/local/include/magick/magick.h:107, from Magick.xs:77: /usr/local/include/magick/X.h:15: X11/Xos.h: No such file or directory /usr/local/include/magick/X.h:16: X11/Xlib.h: No such file or directory /usr/local/include/magick/X.h:17: X11/Xutil.h: No such file or directory /usr/local/include/magick/X.h:18: X11/Xresource.h: No such file or directory /usr/local/include/magick/X.h:19: X11/Xproto.h: No such file or directory /usr/local/include/magick/X.h:20: X11/Xatom.h: No such file or directory /usr/local/include/magick/X.h:21: X11/Xlocale.h: No such file or directory /usr/local/include/magick/X.h:22: X11/cursorfont.h: No such file or directory /usr/local/include/magick/X.h:23: X11/keysym.h: No such file or directory /usr/local/include/magick/X.h:25: X11/XWDFile.h: No such file or directory *** Error code 1 So it seem that PerlMagick needs X11. I tried looking for a switch similar to the one for ImageMagick but I can't find it. Does anyone know if I can use PerlMagick without X Windows? Has anyone else used the Image::Magick module? -Garrett ~sdpm~ The posting address is: san-diego-pm-list@hfb.pm.org List requests should be sent to: majordomo@hfb.pm.org If you ever want to remove yourself from this mailing list, you can send mail to with the following command in the body of your email message: unsubscribe san-diego-pm-list If you ever need to get in contact with the owner of the list, (if you have trouble unsubscribing, or have questions about the list itself) send email to . This is the general rule for most mailing lists when you need to contact a human.