From scratchcomputing at gmail.com Tue May 1 18:11:17 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Tue, 1 May 2007 18:11:17 -0700 Subject: [Pdx-pm] Fwd: Re: I need your logo for BarCamp Portland ASAP Message-ID: <200705011811.17624.ewilhelm@cpan.org> Raven, This is the best image to which I have access. If there is a better source, it is hiding on somebody's hard drive. http://pdx.pm.org/res/img/tshirt2004.jpg If somebody on the list has sources for a better/bigger/vector logo, please get them to Raven. Thanks, Eric ---------- Forwarded Message: ---------- Subject: Re: I need your logo for BarCamp Portland ASAP Date: Tuesday 01 May 2007 05:34 pm From: Raven Zachary To: Randall Lucas Cc: Eric Wilhelm Hi Eric, We really need that logo sometime today for printing deadlines tomorrow. Any hope? On Apr 30, 2007, at 4:55 PM, Randall Lucas wrote: > Hi Raven, Eric: > > I think the Portland Perl Mongers are getting PR credit for this, > and I think Eric can best point you to a logo for the venerable > mongers. > > Failing that, perhaps we could generalize one of the O?Reilly or > perl.org camel logos. Let me know if you need further help on this. > > Best, > > Randall > > > On 4/30/07 4:44 PM, "Raven Zachary" > > wrote: >> Randall, >> >> We are going to print a large sponsor banner at the entrance to >> the facility and on several posters throughout the venue. Can you >> please send me a high-resolution, resizeable logo image file for >> print, such as a PSD, AI, EPS, TIFF, or super high-res JPG? We >> would use these same images for the t-shirts, if we as a group >> decide to do this. >> >> I need these logos ASAP! >> >> Any questions? Please contact me by email or phone anytime! Thank >> you. >> >> Raven Zachary >> Research Director, Open Source >> The 451 Group >> >> 503.334.1810 (main) / 503.484.6963 (mobile) / 866.388.4422 (fax) >> ravenzachary (AOL / Yahoo / MSN IM + Skype) >> raven.zachary at the451group.com (email) >> http://blogs.the451group.com/opensource/ (blog) >> >> ** The 451 Group - Analyzing the business of enterprise IT >> innovation ** > > -- > lucas at voyagercapital.com - 206-438-1822 Raven Zachary Research Director, Open Source The 451 Group 503.334.1810 (main) / 503.484.6963 (mobile) / 866.388.4422 (fax) ravenzachary (AOL / Yahoo / MSN IM + Skype) raven.zachary at the451group.com (email) http://blogs.the451group.com/opensource/ (blog) === Join us at our upcoming event for ISV and app-dev executives === Software Business Transformation Summit 2007 Parallel Evolution -- Software to Services and Channels to Ecosystems June 4-6 -- JW Marriott -- San Francisco, CA http://www.swbizsummit.com/ ------------------------------------------------------- -- A counterintuitive sansevieria trifasciata was once literalized guiltily. --Product of Artificial Intelligence --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Tue May 1 20:42:51 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Tue, 1 May 2007 20:42:51 -0700 Subject: [Pdx-pm] Fwd: Re: I need your logo for BarCamp Portland ASAP In-Reply-To: <72466377-8376-4592-8959-86BE472D33B6@sonofhans.net> References: <200704301742.01482.ewilhelm@cpan.org> <72466377-8376-4592-8959-86BE472D33B6@sonofhans.net> Message-ID: <200705012042.52172.ewilhelm@cpan.org> # from Randall Hansen # on Tuesday 01 May 2007 07:11 pm: >attached is a high-resolution LZW-compressed CMYK TIFF. ?it's the ? >same image we used for the tshirts a few years ago. Thanks Randall, that is awesome. Raven, let me know if you have any trouble with the attachment. --Eric -- "...the bourgeoisie were hated from both ends: by the proles, because they had all the money, and by the intelligentsia, because of their tendency to spend it on lawn ornaments." --Neal Stephenson --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From spinnerin at gmail.com Wed May 2 12:01:31 2007 From: spinnerin at gmail.com (Audrey Eschright) Date: Wed, 2 May 2007 12:01:31 -0700 Subject: [Pdx-pm] User Groups in Portland Message-ID: <92F77629-DFAC-4694-A540-CBF27B1DA4C3@gmail.com> I mentioned a few meetings ago that I've been trying to compile a list of user groups in the Portland area, and one of you suggested I put it on a wiki. So I did: http://pdxgroups.pbwiki.com/. I'd appreciate it if any of you would add groups that are missing (though I think I have most of them by now) and pass the link on, including posting it on your blog if you have one. Thanks. -- Audrey Eschright www.lifeofaudrey.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070502/948a13db/attachment.html From scratchcomputing at gmail.com Wed May 2 14:33:26 2007 From: scratchcomputing at gmail.com (The Dread Parrot) Date: Wed, 2 May 2007 14:33:26 -0700 Subject: [Pdx-pm] May 9th Meeting one week away Message-ID: <200705021433.27196.ewilhelm@cpan.org> Austin Schutz - Web 2.1 and the Pursuit of Appyness (supposedly...) anybody seen Austin? --Eric -- http://pdx.pm.org From tex at off.org Wed May 2 15:56:46 2007 From: tex at off.org (Austin Schutz) Date: Wed, 2 May 2007 15:56:46 -0700 Subject: [Pdx-pm] May 9th Meeting one week away In-Reply-To: <200705021433.27196.ewilhelm@cpan.org> References: <200705021433.27196.ewilhelm@cpan.org> Message-ID: <20070502225646.GK1916@gblx.net> On Wed, May 02, 2007 at 02:33:26PM -0700, The Dread Parrot wrote: > Austin Schutz - Web 2.1 and the Pursuit of Appyness > > (supposedly...) anybody seen Austin? > I'm here, I'm just buried under a mountain of email. Austin From scratchcomputing at gmail.com Tue May 8 20:58:37 2007 From: scratchcomputing at gmail.com (The Dread Parrot) Date: Tue, 8 May 2007 20:58:37 -0700 Subject: [Pdx-pm] Meeting Tomorrow Night Message-ID: <200705082058.37511.ewilhelm@cpan.org> 6:53pm at FreeGeek -- 1731 SE 10th Ave. Austin Schutz - Web 2.1 and the Pursuit of Appyness The hunt for reasonable ways to make web pages perform more like desktop applications. It involves happy buzzwords like web 2.whatever and AJAX and the like. In particular, I'm attempting to provide some hints to structured coding of these apps. Bring your friends and your friends' friends. The answer to web, the universe, and everything will be revealed or at least there will be beer. --Eric -- http://pdx.pm.org From ben.hengst at gmail.com Thu May 10 07:42:17 2007 From: ben.hengst at gmail.com (benh) Date: Thu, 10 May 2007 07:42:17 -0700 Subject: [Pdx-pm] Meeting Tomorrow Night In-Reply-To: <200705082058.37511.ewilhelm@cpan.org> References: <200705082058.37511.ewilhelm@cpan.org> Message-ID: <85ddf48b0705100742t2b028932lde155196b0367cba@mail.gmail.com> Here are my notes from last night if any one wants to peek. Also there was talk of the code from last night being hosted along with the wiki... so there should be some more complete bits here soon: notes: 09.05.07 Notes from Austins talk on the Webbie juju - barcamp: afternoon tea with perl mongers (voieger capital) - show up with your shirt on. - theres a poster - news: - DOT reader can now load multiple book plugins - Talk: horray austin. - Goal: web apps as a collection of small bits to be collected - no plans for it to look good - no browser plugins needed, only javascript - OHHhh... you can do closures in JS. - Look in to jQuery - basicly SQL for the DOM - interesting idea... tie CSS classes to methods so that you can address methods to any element on the page. - allows for tie-ing of methods to an obj like a class instance. - you can use js (in this case jQuery) to build your html buy append items to the DOM - nice you can alias events and then bind them to DOM objects... or to create 'listners' == JQUERY SYNTAX == $obj.bind ('event name', function () {} ) $obj2.click (function $('class').click) - JSON is a data searilzer for javascript objects... pass as nessassary - JSON is YAML... YAML is JSON... except for comments - Lex your vars... and your 'classes' this allows you to create seperate elements. On 5/8/07, The Dread Parrot wrote: > 6:53pm at FreeGeek -- 1731 SE 10th Ave. > > Austin Schutz - Web 2.1 and the Pursuit of Appyness > > The hunt for reasonable ways to make web pages perform more like > desktop applications. It involves happy buzzwords like web 2.whatever > and AJAX and the like. In particular, I'm attempting to provide some > hints to structured coding of these apps. > > Bring your friends and your friends' friends. The answer to web, the > universe, and everything will be revealed or at least there will be > beer. > > --Eric > -- > > http://pdx.pm.org > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > -- benh~ From ben.hengst at gmail.com Thu May 10 07:42:17 2007 From: ben.hengst at gmail.com (benh) Date: Thu, 10 May 2007 07:42:17 -0700 Subject: [Pdx-pm] Meeting Tomorrow Night In-Reply-To: <200705082058.37511.ewilhelm@cpan.org> References: <200705082058.37511.ewilhelm@cpan.org> Message-ID: <85ddf48b0705100742t2b028932lde155196b0367cba@mail.gmail.com> Here are my notes from last night if any one wants to peek. Also there was talk of the code from last night being hosted along with the wiki... so there should be some more complete bits here soon: notes: 09.05.07 Notes from Austins talk on the Webbie juju - barcamp: afternoon tea with perl mongers (voieger capital) - show up with your shirt on. - theres a poster - news: - DOT reader can now load multiple book plugins - Talk: horray austin. - Goal: web apps as a collection of small bits to be collected - no plans for it to look good - no browser plugins needed, only javascript - OHHhh... you can do closures in JS. - Look in to jQuery - basicly SQL for the DOM - interesting idea... tie CSS classes to methods so that you can address methods to any element on the page. - allows for tie-ing of methods to an obj like a class instance. - you can use js (in this case jQuery) to build your html buy append items to the DOM - nice you can alias events and then bind them to DOM objects... or to create 'listners' == JQUERY SYNTAX == $obj.bind ('event name', function () {} ) $obj2.click (function $('class').click) - JSON is a data searilzer for javascript objects... pass as nessassary - JSON is YAML... YAML is JSON... except for comments - Lex your vars... and your 'classes' this allows you to create seperate elements. On 5/8/07, The Dread Parrot wrote: > 6:53pm at FreeGeek -- 1731 SE 10th Ave. > > Austin Schutz - Web 2.1 and the Pursuit of Appyness > > The hunt for reasonable ways to make web pages perform more like > desktop applications. It involves happy buzzwords like web 2.whatever > and AJAX and the like. In particular, I'm attempting to provide some > hints to structured coding of these apps. > > Bring your friends and your friends' friends. The answer to web, the > universe, and everything will be revealed or at least there will be > beer. > > --Eric > -- > > http://pdx.pm.org > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > -- benh~ From scratchcomputing at gmail.com Thu May 10 10:38:48 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Thu, 10 May 2007 10:38:48 -0700 Subject: [Pdx-pm] Fwd: Reminder: BarCamp Portland, Friday and Saturday (05/11-12) Message-ID: <200705101038.48430.ewilhelm@cpan.org> Afternoon tea is 3-4:45 this Saturday. Please show up and tell people about Perl. Signage and flyers/cards need to be made. Please discuss. Other propaganda would be cool. A "Perl powers $X" poster or whatever. I haven't got a clue what the space will be like, but I imagine we'll be propping stuff on the back of a table. Leave about 12" at the bottom so the signboard won't be blocked by stuff on the table? --Eric ---------- Forwarded Message: ---------- Subject: Reminder: BarCamp Portland, Friday and Saturday (05/11-12) Date: Thursday 10 May 2007 02:23 am From: Raven Zachary To: Eric Wilhelm BarCamp Portland Friday and Saturday, May 11-12, 2007 http://barcamp.org/BarCampPortland Tech + Geek + Culture. The free event for the Portland tech community, produced BY the Portland tech community. Thank you for your interest in BarCamp Portland. As a reminder, the event kicks off on Friday evening, May 11, 6pm at CubeSpace, 622 SE Grand. Transportation/parking information is available on the website. Friday night activities will include a reception, kickoff presentation, session planning, and networking. If you are wanting to present or organize a gathering at BarCamp Portland, you should make every effort to attend the Friday night reception. Saturday, May 12 is the actual BarCamp Portland event (also at CubeSpace). Breakfast and registation (it's free, we just need to give you a badge) begins at 9am, with the official kickoff beginning at 9:30am. The event will be going until at least 11pm that night, so it's ok if you are not able to commit to the entire day. Walk-ins are always welcome! We are expecting a large turnout and a great time for all. Food and wifi access will be provided, thanks to our generous sponsors. I hope to see you at BarCamp Portland! Thank you. Raven Zachary Research Director, Open Source The 451 Group 503.334.1810 (main) / 503.484.6963 (mobile) / 866.388.4422 (fax) ravenzachary (AOL / Yahoo / MSN IM + Skype) raven.zachary at the451group.com (email) http://blogs.the451group.com/opensource/ (blog) ** The 451 Group - Analyzing the business of enterprise IT innovation ** ------------------------------------------------------- -- "If you dig it, it's yours." --An old village poet (via Al Pacino) --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From alan at clueserver.org Thu May 10 11:02:05 2007 From: alan at clueserver.org (alan) Date: Thu, 10 May 2007 11:02:05 -0700 (PDT) Subject: [Pdx-pm] Fwd: Reminder: BarCamp Portland, Friday and Saturday (05/11-12) In-Reply-To: <200705101038.48430.ewilhelm@cpan.org> References: <200705101038.48430.ewilhelm@cpan.org> Message-ID: On Thu, 10 May 2007, Eric Wilhelm wrote: > Afternoon tea is 3-4:45 this Saturday. Please show up and tell people > about Perl. Too bad this is the same weekend as the Mensa Regional Gathering. I am already scheduled to be there. -- "ANSI C says access to the padding fields of a struct is undefined. ANSI C also says that struct assignment is a memcpy. Therefore struct assignment in ANSI C is a violation of ANSI C..." - Alan Cox From keithl at kl-ic.com Thu May 10 12:42:48 2007 From: keithl at kl-ic.com (Keith Lofstrom) Date: Thu, 10 May 2007 12:42:48 -0700 Subject: [Pdx-pm] Kwiki with Scode CAPTCHA Message-ID: <20070510194248.GB26455@gate.kl-ic.com> I have been having troubles with Kwiki and wikispam. I tried Typekey, but all that does is verify that vandals can easily get unmonitored Typekey accounts. Instead, I added Kwiki::Scode and Kwiki::Edit::Scode to my plugins, which adds a 6 numeral captcha to the edit page. This will not make wikispam impossible, but it should slow it down a bit. You can try it out on a test page at wiki.dirvish.org . Note that I had to add GD.pm, which meant that I had to add libpng and libgd and other libraries to my linux server. That was most of the work involved. This might help Eric deal with the wikispam on the pdx.pm wiki . Keith -- Keith Lofstrom keithl at keithl.com Voice (503)-520-1993 KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in Silicon" Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs From scratchcomputing at gmail.com Thu May 10 17:09:37 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Thu, 10 May 2007 17:09:37 -0700 Subject: [Pdx-pm] BarCamp Signage Message-ID: <200705101709.37813.ewilhelm@cpan.org> Hi all, Tom Keller has volunteered to do the signage so it will look the way he wants it to. Now is your chance for suggestions (and to tell him thanks.) Selena's layout (see previous pdf) is roughly: " Saturday afternoon tea with: portland perl mongers meets every second wednesday next meeting june 12th at freegeek portland.pm.org this tea graciously sponsored by: [voyager logo] " I think it might be nice to work our bridge logo into that. The "6:53pm" and "1731 SE 10th Ave." facts might also be nice if there is room (though those would be more useful on something they can take with them.) Speaking of which, did somebody volunteer to bring business cards or fliers? Thanks, Eric -- Never ascribe to malice that which can be adequately explained by stupidity. --Napoleon Bonaparte --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Thu May 10 17:12:22 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Thu, 10 May 2007 17:12:22 -0700 Subject: [Pdx-pm] pdx.pm Afternoon Tea at BarCamp In-Reply-To: <46313BA9.2020600@perl.org> References: <6E790619-3994-4E24-89A4-2D2874B69B54@stereojoy.com> <200704261304.37368.ewilhelm@cpan.org> <46313BA9.2020600@perl.org> Message-ID: <200705101712.22940.ewilhelm@cpan.org> # from Allison Randal # on Thursday 26 April 2007 04:54 pm: >Eric Wilhelm wrote: >> We've still got some shirts, and of course there are mugs. > >I can contribute a couple of Perl polos (your choice on size), and a >Perl refrigerator magnet set. That would be great. Now we just need some sort of contest or drawing. Thanks, Eric -- If the collapse of the Berlin Wall had taught us anything, it was that socialism alone was not a sustainable economic model. --Robert Young --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From sdeckelmann at chrisking.com Thu May 10 17:20:55 2007 From: sdeckelmann at chrisking.com (Selena Deckelmann) Date: Thu, 10 May 2007 17:20:55 -0700 Subject: [Pdx-pm] BarCamp Signage In-Reply-To: <200705101709.37813.ewilhelm@cpan.org> References: <200705101709.37813.ewilhelm@cpan.org> Message-ID: <14AC4677-2D77-414F-AC49-146EC775AC3E@chrisking.com> I can send a doc out this evening with cards, unless Tom would like to do those as well :) I have a mockup - I just have to go home to send it. -selena On May 10, 2007, at 5:09 PM, Eric Wilhelm wrote: > Hi all, > > Tom Keller has volunteered to do the signage so it will look the > way he > wants it to. Now is your chance for suggestions (and to tell him > thanks.) > > Selena's layout (see previous pdf) is roughly: > > " > Saturday afternoon tea with: > portland perl mongers > > meets every second wednesday > next meeting june 12th > at freegeek > > portland.pm.org > this tea graciously sponsored by: > [voyager logo] > " > > I think it might be nice to work our bridge logo into that. The > "6:53pm" and "1731 SE 10th Ave." facts might also be nice if there is > room (though those would be more useful on something they can take > with > them.) > > Speaking of which, did somebody volunteer to bring business cards or > fliers? > > Thanks, > Eric > -- > Never ascribe to malice that which can be adequately explained by > stupidity. > --Napoleon Bonaparte > --------------------------------------------------- > http://scratchcomputing.com > --------------------------------------------------- > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list -- Selena Deckelmann Information Systems Manager Chris King Precision Components Made in Portland, Oregon www.chrisking.com / 503.972.4050 x230 From scratchcomputing at gmail.com Fri May 11 19:07:44 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Fri, 11 May 2007 19:07:44 -0700 Subject: [Pdx-pm] BarCamp Signage In-Reply-To: References: <200705101709.37813.ewilhelm@cpan.org> Message-ID: <200705111907.44370.ewilhelm@cpan.org> # from Thomas J Keller # on Thursday 10 May 2007 08:49 pm: >Hi Eric, >Here is a gif of what I made in Adobe Illustrator. That looks great. Thanks Tom. --Eric -- But as soon as you hear the Doppler shift dropping in pitch, you know that they're probably going to miss your house, because if they were on a collision course with your house, the pitch would stay the same until impact. As I said, that's one's subtle. --Larry Wall --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Fri May 11 19:07:44 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Fri, 11 May 2007 19:07:44 -0700 Subject: [Pdx-pm] BarCamp Signage In-Reply-To: References: <200705101709.37813.ewilhelm@cpan.org> Message-ID: <200705111907.44370.ewilhelm@cpan.org> # from Thomas J Keller # on Thursday 10 May 2007 08:49 pm: >Hi Eric, >Here is a gif of what I made in Adobe Illustrator. That looks great. Thanks Tom. --Eric -- But as soon as you hear the Doppler shift dropping in pitch, you know that they're probably going to miss your house, because if they were on a collision course with your house, the pitch would stay the same until impact. As I said, that's one's subtle. --Larry Wall --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Fri May 11 19:07:44 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Fri, 11 May 2007 19:07:44 -0700 Subject: [Pdx-pm] BarCamp Signage In-Reply-To: References: <200705101709.37813.ewilhelm@cpan.org> Message-ID: <200705111907.44370.ewilhelm@cpan.org> # from Thomas J Keller # on Thursday 10 May 2007 08:49 pm: >Hi Eric, >Here is a gif of what I made in Adobe Illustrator. That looks great. Thanks Tom. --Eric -- But as soon as you hear the Doppler shift dropping in pitch, you know that they're probably going to miss your house, because if they were on a collision course with your house, the pitch would stay the same until impact. As I said, that's one's subtle. --Larry Wall --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From keithl at kl-ic.com Mon May 14 02:56:03 2007 From: keithl at kl-ic.com (Keith Lofstrom) Date: Mon, 14 May 2007 02:56:03 -0700 Subject: [Pdx-pm] Kwiki with Scode CAPTCHA - a fix for kwiki? Message-ID: <20070514095603.GA5019@gate.kl-ic.com> Keith Lofstrom wrote: ... > Instead, I added Kwiki::Scode and Kwiki::Edit::Scode to my plugins, > which adds a 6 numeral captcha to the edit page. This will not make > wikispam impossible, but it should slow it down a bit. You can try > it out on a test page at wiki.dirvish.org . ... Actually, Kwiki::Edit::Scode is busted. I spent far too long finding that the module has some errors (a skilled Perl Monger would find it in minutes, no doubt, but none are using Kwiki::Scode ??? :-/ ). In any case, kwiki works fine with captcha when you edit HomePage, but it also edits HomePage if you try to edit any other page. I did not do an adequate test earlier. Of course, neither do the install tests. My wife the user pointed out she could not edit a daughter page. Duh, I should have tested that. But then, she is a doctor and a diagnostician. The fix is simple - there are three places in the Kwiki::Edit::Scode module where the string "page_id" is used; those should all be replaced with the string "page_name". After that, delete the templates and run "kwiki -update" for each affected kwiki. I may find more flaws tomorrow, but for now my wife can edit her wiki. I will edit all my wikis then, when I am awake. Perhaps someone can tell me the proper way to submit the bug fix to ingy . Oh boy! My first CPAN bug fix! And if I don't get some sleep, maybe my last ... Keith -- Keith Lofstrom keithl at keithl.com Voice (503)-520-1993 KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in Silicon" Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs From keithl at kl-ic.com Mon May 14 10:26:19 2007 From: keithl at kl-ic.com (Keith Lofstrom) Date: Mon, 14 May 2007 10:26:19 -0700 Subject: [Pdx-pm] Kwiki with Scode CAPTCHA - a fix for kwiki? (2) In-Reply-To: <20070514095603.GA5019@gate.kl-ic.com> References: <20070514095603.GA5019@gate.kl-ic.com> Message-ID: <20070514172619.GA11999@gate.kl-ic.com> On Mon, May 14, 2007 at 02:56:03AM -0700, Keith Lofstrom wrote: > > Actually, Kwiki::Edit::Scode is busted. I spent far too long finding > that the module has some errors (a skilled Perl Monger would find it > in minutes, no doubt, but none are using Kwiki::Scode ??? :-/ ). ... > I may find more flaws tomorrow, but for now my wife can edit her wiki. > I will edit all my wikis then, when I am awake. Perhaps someone can > tell me the proper way to submit the bug fix to ingy . ... and now I find out that ingy was nearly killed in a traffic accident in Taiwan four weeks ago. http://blog.ingy.net/2007/04/life-is-where-its-at.html With work to catch up on, I imagine it will be some time before ingy puts much attention on kwiki . So how does one go about fixing code during the temporary absence of the principal maintainer? Keith -- Keith Lofstrom keithl at keithl.com Voice (503)-520-1993 KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in Silicon" Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs From ingy at ingy.net Mon May 14 20:04:00 2007 From: ingy at ingy.net (Ingy dot Net) Date: Mon, 14 May 2007 20:04:00 -0700 Subject: [Pdx-pm] Kwiki with Scode CAPTCHA - a fix for kwiki? (2) In-Reply-To: <20070514172619.GA11999@gate.kl-ic.com> References: <20070514095603.GA5019@gate.kl-ic.com> <20070514172619.GA11999@gate.kl-ic.com> Message-ID: <20070515030400.GD10225@ttul.org> On 14/05/07 10:26 -0700, Keith Lofstrom wrote: > On Mon, May 14, 2007 at 02:56:03AM -0700, Keith Lofstrom wrote: > > > > Actually, Kwiki::Edit::Scode is busted. I spent far too long finding > > that the module has some errors (a skilled Perl Monger would find it > > in minutes, no doubt, but none are using Kwiki::Scode ??? :-/ ). > ... > > I may find more flaws tomorrow, but for now my wife can edit her wiki. > > I will edit all my wikis then, when I am awake. Perhaps someone can > > tell me the proper way to submit the bug fix to ingy . I'm doing OK all. I'm back in Seattle, and on #kwiki a lot. Although most of my hacking is currently going into YAML::LibYAML, which believe me, if you like Perl and YAML, you'll want me working on this. :) Pretty much anyone can show up on #kwiki on irc.freenode.net and get commit access to the Kwiki svn repo. So please do that. Glad to be here, Ingy > ... and now I find out that ingy was nearly killed in a traffic accident > in Taiwan four weeks ago. > > http://blog.ingy.net/2007/04/life-is-where-its-at.html > > With work to catch up on, I imagine it will be some time before ingy > puts much attention on kwiki . So how does one go about fixing code > during the temporary absence of the principal maintainer? > > Keith > > -- > Keith Lofstrom keithl at keithl.com Voice (503)-520-1993 > KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in Silicon" > Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list From xrdawson at gmail.com Tue May 15 14:52:59 2007 From: xrdawson at gmail.com (Chris Dawson) Date: Tue, 15 May 2007 14:52:59 -0700 Subject: [Pdx-pm] off topic (x2): web 2.0 "legal" video and business coaching Message-ID: <659b9ea30705151452j5291015ewbc91affa1fb5eef6@mail.gmail.com> Hi everyone, If you are an entrepreneur, and I think many on these lists are, I thought you might find these items of interest: 1. Martin Medeiros from the local law firm Swider, Medeiros, Haver LLP gave a talk on "podcasting and the law" at an "install-fest" event we held at our offices last week. He allowed us to post the video which is chock full of good advice on trademarks, content ownership, and more, all important issues for the web 2.0 entrepreneur. There was a handout, which I don't have a copy of any longer, so email me and I will put you in touch with him if you need that. You can watch the video here: http://www.boxpopuli.com/videos.html 2. I took a business coach about nine months ago and it has been a transformative experience for me. I've experienced being in this business as being fraught with struggle primarily because I look at myself as having quite a few fatal flaws. The coaching I've been doing has been extremely helpful for me in this respect. Last week I went to a CEO council, a small group featuring some real giants from the Oregon tech industry, and the topic was executive coaching. I was super surprised to realize that these pillars of the industry were in the same boat as me. It was really energizing and reassuring to see that many of the people I really identified with in this discussion had also felt the need to get help in the form of executive or business coaching. I bring this up because my coach is holding an event to introduce people to the concept. He is quite unique in that he is very, very experienced with technology, which many business coaches cannot say. If you are interested in learning more, go to this site: http://causeit.org/causeit/events.html Thanks, and now back to the hacking. Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070515/7ef3ddf4/attachment.html From kellert at ohsu.edu Fri May 18 17:31:08 2007 From: kellert at ohsu.edu (Thomas J Keller) Date: Fri, 18 May 2007 17:31:08 -0700 Subject: [Pdx-pm] Fwd: [DBRG] tidbit from lunch References: <464E1025.3020700@cs.pdx.edu> Message-ID: Have you guys seen this? kind of a cute takeoff (rip off?) on the Apple/Microsoft adds. Tom K Begin forwarded message: > From: "Len Shapiro" > Date: May 18, 2007 1:44:21 PM PDT > To: dbreading at cs.pdx.edu > Subject: [DBRG] tidbit from lunch > Reply-To: len at cs.pdx.edu > > We discussed this at lunch. > > Java vs Ruby on Rails: > http://www.youtube.com/watch?v=PQbuyKUaKFo > > _______________________________________________ > dbreading mailing list > dbreading at cecs.pdx.edu > https://mailhost.cecs.pdx.edu/cgi-bin/mailman/listinfo/dbreading > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070518/d1d4c523/attachment.html From scratchcomputing at gmail.com Mon May 21 09:12:06 2007 From: scratchcomputing at gmail.com (The Dread Parrot) Date: Mon, 21 May 2007 09:12:06 -0700 Subject: [Pdx-pm] Fwd: [pm_groups] yapc-na early bird pricing ending Message-ID: <200705210912.06690.ewilhelm@cpan.org> ---------- Forwarded message ---------- From: Jeremy Fluhmann Date: May 21, 2007 10:47 AM Subject: yapc-na early bird pricing ending To: yapc Early Bird pricing for YAPC::NA 2007 will be ending soon. Register before it's too late! Early Bird pricing ends midnight (CST) Tuesday, May 22nd. If you haven't registered yet, please do so by visiting http://conferences.mongueurs.net/yn2007/. If you already have a login, but haven't purchased your ticket yet, choose the 'Edit profile' from the left menu and follow the 'purchase your conference ticket' link. I apologize for the late notice. As someone mentioned, it's not much of an 'early' bird anymore ;-) Thanks, Jeremy ------------------------------------------------------- -- http://pdx.pm.org From scratchcomputing at gmail.com Thu May 24 15:11:11 2007 From: scratchcomputing at gmail.com (The Dread Parrot) Date: Thu, 24 May 2007 15:11:11 -0700 Subject: [Pdx-pm] Fwd: OSCON Early Registration Ends June 4--Register Now Message-ID: <200705241511.12063.ewilhelm@cpan.org> In previous years, there has been a stacked-discount for registering with the usergroup code ("os07pdxug") + the early bird. I'm guessing that still applies this year. --Eric ---------- Forwarded Message: ---------- Subject: OSCON Early Registration Ends June 4--Register Now Date: Thursday 24 May 2007 02:09 pm From: "O'Reilly Open Source Convention" To: ewilhelm at cpan.org O'Reilly Open Source Convention July 23-27, 2007 in Portland, Oregon http://conferences.oreilly.com/oscon Get a Heads Up from Open Source Innovators-- Do It Before June 4 and Save $300! The ninth annual O'Reilly Open Source Convention (OSCON) takes place July 23-27 in Portland, Oregon. You can join more than 2500 open source developers, gurus, experts and users for five days of wall-to-wall sessions, tutorials, and events, including the O'Reilly Radar Executive Briefing. === Early Registration Discount Ends June 4! There are just a few days left to save up to $300. Sign up now at http://conferences.oreillynet.com/pub/w/58/register.html, where you'll find details about other discounts and attendance packages. === Get a Front Row Seat at the O'Reilly Radar Executive Briefing Led by Tim O'Reilly and the Radar team, this all-day event on Tuesday, July 24, brings together industry innovators and entrepreneurs in the forefront of open source software and related technologies--the people who are changing our thinking right now. More about conversation than formal presentation, the Executive Briefing is intimate by design, so those attending have the opportunity to meet these passionate, smart, wildly innovative people, who will share their ideas and experiences. You'll come away from the day inspired and energized, ready to apply what you've learned to your own business. Seating is limited, so register early to be sure you're a part of this amazing day: http://conferences.oreillynet.com/pub/w/58/radar.html === The Big Picture of Open Source This year's keynote line-up includes some of the most creative thinkers in the open source community: Damian Conway, Thoughtstream; Robert Lefkowitz, Asurion; Rasmus Lerdorf, Yahoo!; Howard Lewis Ship, Tapestry World Domination; Marten Mickos, MySQL AB; Vik Olliver, RepRap and Diamond Age Solutions; Simon Peyton-Jones, Microsoft; Mark Shuttleworth, Canonical and Ubuntu; Guido van Rossum, Python and Google; Larry Wall, Perl; and Simon Willison. === More than 400 Sessions and Tutorials in 15 Tracks Sessions focusing on proven successes and newly-developed technology are organized in tracks for Administration, Databases, Desktop Applications, Emerging Topics, Java, Linus, People, Perl, PHP, Programming, Python, Ruby, Security, Web Applications, and Windoww, including: ="Everything I Needed To Know To Be a Successful Linux Kernel Developer I Learned in Kindergarten," Kristen Accardi, Intel Open Source Technology Center ="How To Herd Cats and Influence People," Jono Bacon, Canonical ="Mozilla Firefox and the Internet as an Open Platform," Mitchell Baker, Mozilla ="The Myths of Innovation," Scott Berkun, University of Washington ="Subversion Worst Practices," Ben Collins-Sussman, Google Open Source Program Office ="Design Patterns in the Architecture of Participation," Schuyler Erle, freelance software developer and activist ="What's In It for Me? How Your Company Can Benefit from Open Sourcing Code," Brian W. Fitzpatrick, Google ="Making Linux Work on Your Laptop," Matthew Garrett ="Using Puppet To Manage Your Network," Luke Kanies, Reductive Labs ="People Hacks," Adam Keys, The Real Adam ="Developing for Mac OS X with Ruby," Sansonetti Laurent, Apple ="Making Hard Stuff Fun and Easy with YUI CSS," Vani Raja ="Mind Like Water: The Path to Perl Bliss," Peter Scott ="High Performance JavaScript: Why Everything You've Been Taught Is Wrong," Joseph Smarr, Plaxo ="Cache That!" Gopal Vijayaraghavan, Yahoo! ="Kitchen Sink Language," Peter von der Ahe, Sun Microsystems And that's just a very small sample! See a complete list of speakers and sessions at: http://conferences.oreillynet.com/pub/w/58/speakers.html For the schedule of tutorials, visit: http://conferences.oreillynet.com/pub/w/58/tutorials.html If Ubuntu is your passion, Ubuntu Live--the very first official conference dedicated to all things Ubuntu--is happening in conjunction with OSCON, July 22-24. OSCON attendees receive a 30% discount on Ubuntu Live registration fees! Read more about Ubuntu Live at: http://www.ubuntulive.com/ We hope to see you there. The OSCON 2007 Team P.S. Remember, you must register by June 4 to save $300. For complete information on discounts and registration options, go to http://conferences.oreillynet.com/pub/w/58/register.html Additional information: For information on exhibition and sponsorship opportunities, contact Sharon Cordesse, scordesse at oreilly.com To become a media partner, contact mediapartners at oreilly.com ******************************************************* If you have a conference-related question, or do not wish to receive messages about this particular event in the future, please reply to this message. To unsubscribe from ALL O'Reilly conference announcements, send a message to: conferences-unsubscribe at oreilly.com. O'Reilly Media, Inc. 1005 Gravenstein Highway North, Sebastopol, CA 95472 ******************************************************* ------------------------------------------------------- -- http://pdx.pm.org From kellert at ohsu.edu Fri May 25 14:23:29 2007 From: kellert at ohsu.edu (Thomas J Keller) Date: Fri, 25 May 2007 14:23:29 -0700 Subject: [Pdx-pm] hash from array question Message-ID: Bad day. why can't I make a hash out of this list? ## code snippet ## line 31 my $genomes = $config{"$project.genomes"}; line 32 print "genomes string: $genomes\n"; line 33 print "split gives: ", split(/,\s*/,$genomes),"\n"; line 34 my %genomes = split(/,\s*/,$genomes) ; line 35 print map { "Key: $_ has value: $genomes{$_}\n" } sort keys % $genomes; ## Print statements: genomes string: 'PSLT', 17233403, 'STM', 16763390 split gives: 'PSLT'17233403'STM'16763390 Can't use string ("'PSLT', 17233403, 'STM', 1676339") as a HASH ref while "strict refs" in use at batch_blast.pls line 35. From andy at petdance.com Fri May 25 14:26:10 2007 From: andy at petdance.com (Andy Lester) Date: Fri, 25 May 2007 16:26:10 -0500 Subject: [Pdx-pm] hash from array question In-Reply-To: References: Message-ID: <99F34B6B-A817-4086-9791-38243DEE6C1A@petdance.com> On May 25, 2007, at 4:23 PM, Thomas J Keller wrote: > line 35 print map { "Key: $_ has value: $genomes{$_}\n" } sort keys % > $genomes; > ## > Print statements: > > genomes string: 'PSLT', 17233403, 'STM', 16763390 > split gives: 'PSLT'17233403'STM'16763390 > Can't use string ("'PSLT', 17233403, 'STM', 1676339") as a HASH ref > while "strict refs" in use at batch_blast.pls line 35. You mean "sort keys %genomes", not "sort keys %$genomes". It's trying to treat $genomes as a hashref and dereference it. -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From scratchcomputing at gmail.com Fri May 25 16:39:00 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Fri, 25 May 2007 16:39:00 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: References: Message-ID: <200705251639.00838.ewilhelm@cpan.org> # from Thomas J Keller # on Friday 25 May 2007 02:23 pm: >line 32 print "genomes string: $genomes\n"; >line 33 print "split gives: ", split(/,\s*/,$genomes),"\n"; >line 34 my %genomes = split(/,\s*/,$genomes) ; >line 35 print map { "Key: $_ ?has value: $genomes{$_}\n" } sort keys % >$genomes; Yep. What Andy said. While $genomes and %genomes are distinct, it is usually helpful to avoid using the same word with different sigils within a single scope. Had there not been a $genomes, the use of %$genomes would have triggered the error [Global symbol "$genomes" requires ...] rather than the slightly less obvious error [Can't use string ... as a hash reference]. e.g. my %genomes = split(/,\s*/, $config{"$project.genomes"}); Anyway, now for the comic relief. I'll admit to not having any clue what I'm doing here, but I find the scary avoidance of exception handling rather ironic when coupled with the fact that string comparison is done so elegantly via "==" operator overloading. Also note the "lets all invent our own string libraries" fun coming from both ends. And of course the 2-line grep/map statement that would be required to do this in a 10-line method in Perl. Whee! bool wxMozillaBrowser::ScrollToElementByID(wxString id) { //fprintf(stderr, ((wxT("id: ")+ id + wxT("\n")).mb_str())); nsCOMPtr domWindow; nsresult rv; rv = m_Mozilla->mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); if (!domWindow) return FALSE; if (NS_FAILED(rv)) return FALSE; nsCOMPtrdoc; rv = domWindow->GetDocument(getter_AddRefs(doc)); if (NS_FAILED(rv)) return FALSE; nsString element_id = wxString_to_nsString(id, wxConvISO8859_1); nsCOMPtr domElement; rv = doc->GetElementById(element_id, getter_AddRefs(domElement)); if(domElement) { // GRR all our doc is a wiki, yay. So how do I use this domElement? // We must make it be a member of the class that has the method. nsCOMPtr hElement(do_QueryInterface(domElement)); // TODO maybe should check that this succeeds? hElement->ScrollIntoView(TRUE); return TRUE; } // ok, by-id got us nothing, so try to find the first named anchor // fprintf(stderr, "seaching for a name=\n"); nsCOMPtr a_tags; doc->GetElementsByTagName( NS_LITERAL_STRING("a"), getter_AddRefs(a_tags) ); if(!a_tags) return FALSE; PRUint32 count; a_tags->GetLength(&count); if(!count) return FALSE; for(PRUint32 i = 0; i < count; i++) { // fprintf(stderr, "check tag %i\n", i); nsCOMPtr node; rv = a_tags->Item(i, getter_AddRefs(node)); if (NS_FAILED(rv) || !node) continue; nsCOMPtr anc; anc = do_QueryInterface(node); if(!anc) continue; // make thing, pass in to get return value, lather rinse, repeat... nsAutoString name; rv = anc->GetName(name); if (NS_FAILED(rv)) continue; fprintf(stderr, ((wxT("now check ") + nsString_to_wxString(name, wxConvISO8859_1) + wxT("\n")).mb_str())); if(name == element_id) { nsCOMPtr hElement(do_QueryInterface(node)); hElement->ScrollIntoView(TRUE); return TRUE; } } return FALSE; } --Eric -- "It works better if you plug it in!" --Sattinger's Law --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From kellert at ohsu.edu Fri May 25 22:55:40 2007 From: kellert at ohsu.edu (Thomas Keller) Date: Fri, 25 May 2007 22:55:40 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: <200705251639.00838.ewilhelm@cpan.org> References: <200705251639.00838.ewilhelm@cpan.org> Message-ID: Onward and upward. The problem I am working on is that I have a tab delimited file of many thousands of lines, and I have a second file of names which is a subset of the names contained as the first field of the larger file. I'm using a riff on p.60 of Intermediate Perl by R. Schwartz (any problems are my own). So the code snippet looks like this: my @index = grep { my $c = $_; if ($c > $#lines or # always false ( grep { $lines[$c] =~ m/$_/ } @names ) > 0 ) { 1; #yes, select it } else { 0; # no, skip it } } 0..$#lines; my @gene_of_interest = @lines[@index]; # ref Int. Perl, p.60 This works, but it is really slow. Is there a faster way? thanks, Tom K Here is a short version of the data: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: STM_Genome_Annotation2.txt Url: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070525/ec0ce7a0/attachment.txt -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: names01.txt Url: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070525/ec0ce7a0/attachment-0001.txt -------------- next part -------------- On May 25, 2007, at 4:39 PM, Eric Wilhelm wrote: > # from Thomas J Keller > # on Friday 25 May 2007 02:23 pm: > >> line 32 print "genomes string: $genomes\n"; >> line 33 print "split gives: ", split(/,\s*/,$genomes),"\n"; >> line 34 my %genomes = split(/,\s*/,$genomes) ; >> line 35 print map { "Key: $_ has value: $genomes{$_}\n" } sort >> keys % >> $genomes; > > Yep. What Andy said. > > While $genomes and %genomes are distinct, it is usually helpful to > avoid > using the same word with different sigils within a single scope. Had > there not been a $genomes, the use of %$genomes would have > triggered the > error [Global symbol "$genomes" requires ...] rather than the slightly > less obvious error [Can't use string ... as a hash reference]. > > e.g. > > my %genomes = split(/,\s*/, $config{"$project.genomes"}); > > Anyway, now for the comic relief. I'll admit to not having any > clue what > I'm doing here, but I find the scary avoidance of exception > handling rather > ironic when coupled with the fact that string comparison is done so > elegantly > via "==" operator overloading. Also note the "lets all invent our own > string libraries" fun coming from both ends. And of course the 2-line > grep/map statement that would be required to do this in a 10-line > method in > Perl. Whee! > > bool wxMozillaBrowser::ScrollToElementByID(wxString id) > { > //fprintf(stderr, ((wxT("id: ")+ id + wxT("\n")).mb_str())); > nsCOMPtr domWindow; > nsresult rv; > rv = m_Mozilla->mWebBrowser->GetContentDOMWindow(getter_AddRefs > (domWindow)); > if (!domWindow) > return FALSE; > if (NS_FAILED(rv)) > return FALSE; > > nsCOMPtrdoc; > rv = domWindow->GetDocument(getter_AddRefs(doc)); > if (NS_FAILED(rv)) > return FALSE; > > nsString element_id = wxString_to_nsString(id, wxConvISO8859_1); > nsCOMPtr domElement; > rv = doc->GetElementById(element_id, getter_AddRefs(domElement)); > > if(domElement) { > // GRR all our doc is a wiki, yay. So how do I use this > domElement? > // We must make it be a member of the class that has the method. > nsCOMPtr hElement(do_QueryInterface > (domElement)); > // TODO maybe should check that this succeeds? > hElement->ScrollIntoView(TRUE); > return TRUE; > } > > // ok, by-id got us nothing, so try to find the first named anchor > // fprintf(stderr, "seaching for a name=\n"); > nsCOMPtr a_tags; > doc->GetElementsByTagName( > NS_LITERAL_STRING("a"), getter_AddRefs(a_tags) > ); > > if(!a_tags) return FALSE; > > PRUint32 count; > a_tags->GetLength(&count); > > if(!count) return FALSE; > > for(PRUint32 i = 0; i < count; i++) { > // fprintf(stderr, "check tag %i\n", i); > > nsCOMPtr node; > rv = a_tags->Item(i, getter_AddRefs(node)); > if (NS_FAILED(rv) || !node) continue; > > nsCOMPtr anc; > anc = do_QueryInterface(node); > if(!anc) continue; > > // make thing, pass in to get return value, lather rinse, > repeat... > nsAutoString name; > rv = anc->GetName(name); > if (NS_FAILED(rv)) continue; > > fprintf(stderr, ((wxT("now check ") + > nsString_to_wxString(name, wxConvISO8859_1) + wxT > ("\n")).mb_str())); > if(name == element_id) { > nsCOMPtr hElement(do_QueryInterface(node)); > hElement->ScrollIntoView(TRUE); > return TRUE; > } > } > > return FALSE; > } > > > --Eric > -- > "It works better if you plug it in!" > --Sattinger's Law > --------------------------------------------------- > http://scratchcomputing.com > --------------------------------------------------- > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > From andy at petdance.com Fri May 25 23:00:13 2007 From: andy at petdance.com (Andy Lester) Date: Sat, 26 May 2007 01:00:13 -0500 Subject: [Pdx-pm] hash from array question In-Reply-To: References: <200705251639.00838.ewilhelm@cpan.org> Message-ID: <6219B45F-7FAE-4693-A7DD-164EF8414712@petdance.com> On May 26, 2007, at 12:55 AM, Thomas Keller wrote: > This works, but it is really slow. Is there a faster way? If you're asking "does X contain Y" or "is Y a member of X", then you want to be thinking hashes. -- Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance From kellert at ohsu.edu Fri May 25 23:08:57 2007 From: kellert at ohsu.edu (Thomas Keller) Date: Fri, 25 May 2007 23:08:57 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: <6219B45F-7FAE-4693-A7DD-164EF8414712@petdance.com> References: <200705251639.00838.ewilhelm@cpan.org> <6219B45F-7FAE-4693-A7DD-164EF8414712@petdance.com> Message-ID: Hi Andy, I can make a hash, but I was thinking it would be faster to (somehow) grep the lines of the file that I needed, and then make a hash of just the stuff I need to work with. I guess I'll try this with Benchmark.pm and measure the two. Thanks, Tom kellert at ohsu.edu 503-494-2442 On May 25, 2007, at 11:00 PM, Andy Lester wrote: > > On May 26, 2007, at 12:55 AM, Thomas Keller wrote: > >> This works, but it is really slow. Is there a faster way? > > If you're asking "does X contain Y" or "is Y a member of X", then > you want to be thinking hashes. > > -- > Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance > > > > > From scratchcomputing at gmail.com Sat May 26 01:38:27 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Sat, 26 May 2007 01:38:27 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: References: <200705251639.00838.ewilhelm@cpan.org> Message-ID: <200705260138.27286.ewilhelm@cpan.org> # from Thomas Keller # on Friday 25 May 2007 10:55 pm: >????????????????????????( grep { $lines[$c] =~ m/$_/ } @names ) > 0 ) > { 1; ?????#yes, select it >... >I can make a hash, but I was thinking it would be faster to (somehow) >grep the lines of the file that I needed, and then make a hash of >just the stuff I need to work with. I agree with Andy. In the case of exact string match, "thinking hashes" is definitely faster. In this case, you've already read the entire file into @lines, just not done the split? The question is then whether looping over @names * @lines with m/$_/ as in your grep is quicker than split /\t/ on every line (including some which may be then skipped.) (BTW, you may need to anchor that m/^$_\t/ unless you're certain that the data is never going to have $name in a latter field.) %have_name = map({$_ => 1} @names); while(my $line = <$gene_fh>) { my ($name, $else) = split(/\t/, $line, 2); $have_name{$name} or next; chomp($else); push(@genes_of_interest, [split(/\t/, $else)]); } Whether the two-part split gives any speed vs ($name, @genes) = split(/\t/, $line) with the chomp first is a good question for the benchmark. But, I'm pretty certain that $have_name{$name} is going to go faster than grep({$_ eq $name} @names). The truth-hash idiom almost always wins. I'm not sure you want both data sets in hashes though. Particularly if order is important and if $name could occur on more than one line of the input. Then again, thousands of lines isn't that many. Maybe tens of thousands is cause for worry. Hundreds of thousands is *maybe* cause for sqlite. my %have_names = map({$_ => 1} @names); my @genes_of_interest = grep({$have_names{$_->[0]}} map({chomp; [split(/\t/, $_)]} <$gene_fh>)); --Eric -- "Insert random misquote here" --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Sat May 26 02:07:41 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Sat, 26 May 2007 02:07:41 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: References: <200705251639.00838.ewilhelm@cpan.org> Message-ID: <200705260207.42134.ewilhelm@cpan.org> # from Thomas Keller # on Friday 25 May 2007 10:55 pm: >????????my @index = grep { >????????????????my $c = $_; >????????????????if ($c > $#lines or ????# always false >????????????????????????( grep { $lines[$c] =~ m/$_/ } @names ) > 0 ) > { 1; ?????#yes, select it >????????????????} else { >????????????????????????0;??????????????# no, skip it >????????????????} >????????} 0..$#lines; This was kind of bugging me, so I looked it up. Note the original snippet is already suffering from a sort of illustrative clarity: my @bigger_indices = grep { if($_ > $#y or $x[$_] > $y[$_]) { 1; } else { 0; } } 0..$#x; This reduces to: my @bigger_indices = grep({$_ > $#y or $x[$_] > $y[$_]} 0..$#x); (And the book actually does that just down the page, though it then goes on to suggest using map but reverts back to the if/else rather than a ternary.) So, firstly always be wary of "if($expr) {1} else {0}" code, (and this is somewhat awkwardly hiding a ternary ($expr ? 1 : 0) which is much more obviously just ($expr). The important point being that the return value of the block handed to grep is true or false. Secondly, whenever a book introduces a function, read perldoc to really grok how it works outside the context of the book's example. Finally, use of if/else for implicit return values is just bad. I think the "always false" comment must be because that is a vestigial bit leftover from the original example. Speaking of comments, it's important to realize that books have to be more commenty than production code. They're trying to teach. You just need to remind yourself and other programmers why the lines need to be whittled out from the file. --Eric -- "If you only know how to use a hammer, every problem begins to look like a nail." --Richard B. Johnson --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From ben.hengst at gmail.com Sat May 26 15:44:28 2007 From: ben.hengst at gmail.com (benh) Date: Sat, 26 May 2007 15:44:28 -0700 Subject: [Pdx-pm] hash from array question In-Reply-To: <200705260207.42134.ewilhelm@cpan.org> References: <200705251639.00838.ewilhelm@cpan.org> <200705260207.42134.ewilhelm@cpan.org> Message-ID: <85ddf48b0705261544j2fe66a8eq4ee100a7d3dd8fc9@mail.gmail.com> Tom I did some quickie benchmarking and I think that I found a faster way, before we get to that though, I want to make sure that I understand the task at hand. - you have a src file that contains many lines of data. - each line of data is a single unit (ie [single item of data] dosn't spill to another line, or there are more then one [single item of data] per line) - you have a second list of 'names' - the goal is to get every line from src that has an occurance of any of the possible names. if thats the case then I found that this worked: my $names_join = join '|', @names; my @interesting_lines; foreach (@lines) { push @interesting_lines, $_ if $_ =~ m/($names_join)/; } my test case was ftp://gutenberg.readingroo.ms/gutenberg/1/0/6/0/10607/10607.txt in my test case your method with the two greps took 0.294sec and the foreach line push came in at 0.067sec. hope that helps. On 5/26/07, Eric Wilhelm wrote: > # from Thomas Keller > # on Friday 25 May 2007 10:55 pm: > > >my @index = grep { > >my $c = $_; > >if ($c > $#lines or # always false > >( grep { $lines[$c] =~ m/$_/ } @names ) > 0 ) > > { 1; #yes, select it > >} else { > >0;# no, skip it > >} > >} 0..$#lines; > > This was kind of bugging me, so I looked it up. Note the original > snippet is already suffering from a sort of illustrative clarity: > > my @bigger_indices = grep { > if($_ > $#y or $x[$_] > $y[$_]) { > 1; > } else { > 0; > } > } 0..$#x; > > This reduces to: > > my @bigger_indices = grep({$_ > $#y or $x[$_] > $y[$_]} 0..$#x); > > (And the book actually does that just down the page, though it then goes > on to suggest using map but reverts back to the if/else rather than a > ternary.) > > So, firstly always be wary of "if($expr) {1} else {0}" code, (and this > is somewhat awkwardly hiding a ternary ($expr ? 1 : 0) which is much > more obviously just ($expr). The important point being that the return > value of the block handed to grep is true or false. > > Secondly, whenever a book introduces a function, read perldoc to really > grok how it works outside the context of the book's example. > > Finally, use of if/else for implicit return values is just bad. > > I think the "always false" comment must be because that is a vestigial > bit leftover from the original example. > > Speaking of comments, it's important to realize that books have to be > more commenty than production code. They're trying to teach. You just > need to remind yourself and other programmers why the lines need to be > whittled out from the file. > > --Eric > -- > "If you only know how to use a hammer, every problem begins to look like > a nail." > --Richard B. Johnson > --------------------------------------------------- > http://scratchcomputing.com > --------------------------------------------------- > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > -- benh~ From kellert at ohsu.edu Tue May 29 13:52:25 2007 From: kellert at ohsu.edu (Thomas J Keller) Date: Tue, 29 May 2007 13:52:25 -0700 Subject: [Pdx-pm] string comparison vs hash Message-ID: Hi, I was curious about the fastest way to get a subset of lines from a file where a line of interest will have a match of the first field with one of the names in a list of names, and got some really helpful solutions. Background: the input file has a fixed structure and is in this case only some 4,000 lines. It could be much larger, hence my interest in speed. I've tested the two most straightforward approaches: a string comparison and a hash method # @names was declared in main:: my $fh1 = new IO::File; my $fh2 = new IO::File; cmpthese( $count, { 'with_string_cmp' => sub { my $names_join = join '|', @names; my @goi; if ($fh1->open("< $annot_file")) { my @lines = <$fh1>; foreach (@lines) { chomp; push @goi, $_ if $_ =~ m/($names_join)/; } } else { die "Could not get the filehandle $fh1: $!." } $fh1->close; }, 'with_hash' => sub { my %have_name = map({$_ => 1} @names); if ($fh2->open("< $annot_file")) { my $header = <$fh2>; while(my $line = <$fh2>) { my ($name,$else) = split(/\t/, $line, 2); $have_name{$name} = [split(/\t/, $else)] or next; } } else { die "Could not get the filehandle $fh2: $!." } $fh2->close; } }); I think this is a fair comparison. The data that gets saved is the same. (Though the hash is easier to get at down the road.) .. drumrole ... (warning: too few iterations for a reliable count) Rate with_string_cmp with_hash with_string_cmp 1.45/s -- -87% with_hash 11.4/s 687% -- Hashes rule! Thanks Eric, Ben, Rafael and Andy for your helpful suggestions. Tom kellert at ohsu.edu 503-494-2442 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/014b6a2f/attachment.html From tex at off.org Tue May 29 15:35:07 2007 From: tex at off.org (Austin Schutz) Date: Tue, 29 May 2007 15:35:07 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: References: Message-ID: <20070529223506.GF6846@gblx.net> On Tue, May 29, 2007 at 01:52:25PM -0700, Thomas J Keller wrote: > { > 'with_string_cmp' => sub { > my $names_join = join '|', @names; > my @goi; > if ($fh1->open("< $annot_file")) { > my @lines = <$fh1>; > foreach (@lines) { > chomp; > push @goi, $_ if $_ =~ m/($names_join)/; > } > } else { die "Could not get the filehandle $fh1: $!." } > $fh1->close; > }, > > 'with_hash' => sub { > my %have_name = map({$_ => 1} @names); > if ($fh2->open("< $annot_file")) { > my $header = <$fh2>; > while(my $line = <$fh2>) { > my ($name,$else) = split(/\t/, $line, 2); > $have_name{$name} = [split(/\t/, $else)] > or next; > } > } else { die "Could not get the filehandle $fh2: $!." } > $fh2->close; > } > }); > > I think this is a fair comparison. You are using different file reading techniques. That could be _very_ significant. If you are going to slurp all the lines for the string comparison you should do the same for the hash. Austin From scratchcomputing at gmail.com Tue May 29 15:41:08 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Tue, 29 May 2007 15:41:08 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: References: Message-ID: <200705291541.08616.ewilhelm@cpan.org> # from Thomas J Keller # on Tuesday 29 May 2007 01:52 pm: > my $names_join = join '|', @names; >? ? ? ? ?my @goi; >? ? ? ? ?if ($fh1->open("< $annot_file")) { >? ? ? ? ? ? ?my @lines = <$fh1>; >? ? ? ? ? ? ?foreach (@lines) { >? ? ? ? ? ? ? ? ?chomp; >? ? ? ? ? ? ? ? push @goi, $_ if $_ =~ m/($names_join)/; Hashes rock, but this regexp juggling might not be quite fair. A more apt comparison would be either: 1. split the input and grep({$_ eq $name} @names) or 2. $names_join = join("|", map({'\Q' . $_ . '\E'} @names)); $names_join = qr/$names_join/; (Untested, and there might be a tidier way to express that, see perlre.) With your current code having $names_join as a string, the regular expression is being computed each time inside the foreach. There should be a similar thread in the archive where Randall Hansen was working on a grep benchmark "oh, gross grep() re-evaluates the regex." --Eric -- [...proprietary software is better than gpl because...] "There is value in having somebody you can write checks to, and they fix bugs." --Mike McNamara (president of a commercial software company) --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From scratchcomputing at gmail.com Tue May 29 15:44:03 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Tue, 29 May 2007 15:44:03 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <20070529223506.GF6846@gblx.net> References: <20070529223506.GF6846@gblx.net> Message-ID: <200705291544.03730.ewilhelm@cpan.org> # from Austin Schutz # on Tuesday 29 May 2007 03:35 pm: >You are using different file reading techniques. That could be >_very_ significant. Good catch Austin. That's quite true, particularly in one (or more?) version(s) of perl that had a performance bug in exactly that <>-in-a-list-context spot (I want to say it was 5.8.2 or so though it might have been 5.6.z.) --Eric -- "It is a mistake to allow any mechanical object to realize that you are in a hurry." --Ralph's Observation --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From chromatic at wgz.org Tue May 29 15:54:55 2007 From: chromatic at wgz.org (chromatic) Date: Tue, 29 May 2007 15:54:55 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <20070529223506.GF6846@gblx.net> References: <20070529223506.GF6846@gblx.net> Message-ID: <200705291554.55636.chromatic@wgz.org> On Tuesday 29 May 2007 15:35:07 Austin Schutz wrote: > You are using different file reading techniques. That could be > _very_ significant. If you are going to slurp all the lines for the > string comparison you should do the same for the hash. Worse than that, the first code to read the file pays the penalty of populating file buffers. Subsequent reads probably all come from a warm cache. Mixing IO with benchmarks usually skews the results heavily. -- c From kellert at ohsu.edu Tue May 29 21:51:08 2007 From: kellert at ohsu.edu (Thomas Keller) Date: Tue, 29 May 2007 21:51:08 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <200705291554.55636.chromatic@wgz.org> References: <20070529223506.GF6846@gblx.net> <200705291554.55636.chromatic@wgz.org> Message-ID: I thought that I got around that problem by using three different file handles, one for each of the three compare subroutines. But it seemed worth testing. I commented out everything but the $fh->open() statement; then I added the file read method; and finally the process the lines method. Here are the numbers: $ perl benchmark_hash_vs_grep ? ? A. Perl Benchmark.pm examples ? ? 1. open 3 filehandles sequentially ? Rate with_hash with_string_cmp with_grep with_hash 33998/s -- -1% -2% with_string_cmp 34296/s 1% -- -1% with_grep 34600/s 2% 1% -- ? ? 2. open and read: slurp into an array (@lines = <$fh>) vs while (<$fh>) { } ? Rate with_string_cmp with_grep with_hash with_string_cmp 6140/s -- -1% -39% with_grep 6178/s 1% -- -39% with_hash 10049/s 64% 63% -- ? ? 3. open, read, and process lines ? Rate with_grep with_string_cmp with_hash with_grep 169/s -- -87% -90% with_string_cmp 1297/s 667% -- -25% with_hash 1723/s 918% 33% -- 1. Using separate fh's seems to have avoided the problem of advantage due to order (cache vs fresh read). 2. The while (<$fh>) { do nothing } (the 'with_hash' approach) beats the slurp into an array read method, used by the other two, quite handily. 3. The hash method continues to kick hash vs the string compare method, and the grep method is not even close. Thanks for your help Eric and chromatic. This was a really useful (and fun) exercise for a perennial beginner like myself. regards, Tom K On May 29, 2007, at 3:54 PM, chromatic wrote: > On Tuesday 29 May 2007 15:35:07 Austin Schutz wrote: > >> You are using different file reading techniques. That could be >> _very_ significant. If you are going to slurp all the lines for the >> string comparison you should do the same for the hash. > > Worse than that, the first code to read the file pays the penalty of > populating file buffers. Subsequent reads probably all come from a > warm > cache. > > Mixing IO with benchmarks usually skews the results heavily. > > -- c > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0004.html -------------- next part -------------- A non-text attachment was scrubbed... Name: benchmark_filehandles Type: application/octet-stream Size: 3738 bytes Desc: not available Url : http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0003.obj -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0005.html -------------- next part -------------- A non-text attachment was scrubbed... Name: benchmark_read_methods Type: application/octet-stream Size: 3735 bytes Desc: not available Url : http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0004.obj -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0006.html -------------- next part -------------- A non-text attachment was scrubbed... Name: benchmark_hash_vs_grep Type: application/octet-stream Size: 3493 bytes Desc: not available Url : http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0005.obj -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070529/776b9712/attachment-0007.html From scratchcomputing at gmail.com Tue May 29 23:47:38 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Tue, 29 May 2007 23:47:38 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <200705291554.55636.chromatic@wgz.org> References: <20070529223506.GF6846@gblx.net> <200705291554.55636.chromatic@wgz.org> Message-ID: <200705292347.39161.ewilhelm@cpan.org> # from chromatic # on Tuesday 29 May 2007 03:54 pm: >Worse than that, the first code to read the file pays the penalty of >populating file buffers. ?Subsequent reads probably all come from a > warm cache. Are we talking operating-system cache or perl guts? And, if only the OS, is there anything tying that to a given process? I'm under the impression that given a linux machine which is not actively swapping memory that the cache is as warm as it is going to get after e.g. 'grep . file > /dev/null'. Other than obvious machine load, is there anything else going on there WRT per-process caching or perl? --Eric -- "It ain't those parts of the Bible that I can't understand that bother me, it's the parts that I do understand." --Mark Twain --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From chromatic at wgz.org Tue May 29 23:58:08 2007 From: chromatic at wgz.org (chromatic) Date: Tue, 29 May 2007 23:58:08 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <200705292347.39161.ewilhelm@cpan.org> References: <200705291554.55636.chromatic@wgz.org> <200705292347.39161.ewilhelm@cpan.org> Message-ID: <200705292358.08892.chromatic@wgz.org> On Tuesday 29 May 2007 23:47:38 Eric Wilhelm wrote: > # on Tuesday 29 May 2007 03:54 pm: > >Worse than that, the first code to read the file pays the penalty of > >populating file buffers. ?Subsequent reads probably all come from a > > warm cache. > Are we talking operating-system cache or perl guts? OS cache. > And, if only the OS, is there anything tying that to a given process? Not in any OS I know. (NB: I understand how a modern Unix works, which means nothing when it comes to Windows or anything as exotic as Mac OS X.) > I'm under the impression that given a linux machine which is not > actively swapping memory that the cache is as warm as it is going to > get after e.g. 'grep . file > /dev/null'. Other than obvious machine > load, is there anything else going on there WRT per-process caching or > perl? Perl, no. OS--depends. Still, if the benchmark's fast enough to say "I didn't run enough iterations to get a reliable count", I start to suspect that seek time and transfer rates will suddenly start to matter a lot more than the difference between indexed and keyed aggregate access. Accurate benchmarking is Not Easy. -- c From scratchcomputing at gmail.com Wed May 30 00:11:27 2007 From: scratchcomputing at gmail.com (Eric Wilhelm) Date: Wed, 30 May 2007 00:11:27 -0700 Subject: [Pdx-pm] shirts Message-ID: <200705300011.27529.ewilhelm@cpan.org> Hi all, I think I'm going to have to officially step down as the shirt monger. I'm not sure what the 2004 timeline looked like, but my archive thinks I'm running late again. 2005-03-17 2006-05-18 2007-05-30 Is it a hat year? --Eric -- So malloc calls a timeout and starts rummaging around the free chain, sorting things out, and merging adjacent small free blocks into larger blocks. This takes 3 1/2 days. --Joel Spolsky --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- From marvin at rectangular.com Wed May 30 05:52:54 2007 From: marvin at rectangular.com (Marvin Humphrey) Date: Wed, 30 May 2007 05:52:54 -0700 Subject: [Pdx-pm] string comparison vs hash In-Reply-To: <200705292358.08892.chromatic@wgz.org> References: <200705291554.55636.chromatic@wgz.org> <200705292347.39161.ewilhelm@cpan.org> <200705292358.08892.chromatic@wgz.org> Message-ID: <4E8E81FB-665C-4A44-BFC6-B3F8DBA4545C@rectangular.com> On May 29, 2007, at 11:58 PM, chromatic wrote: > Still, if the benchmark's fast enough to say "I didn't run enough > iterations > to get a reliable count", I start to suspect that seek time and > transfer > rates will suddenly start to matter a lot more than the difference > between > indexed and keyed aggregate access. > > Accurate benchmarking is Not Easy. Amen to that. Below you'll find the output from a benchmarking program I wrote to test KinoSearch indexing speed. I intentionally ran it cold, so that the first iteration wouldn't benefit from OS caching. And indeed, it came up considerably slower: 2.46 seconds as opposed to the "truncated mean" of 1.41 seconds. There's also another outlier of 1.89 seconds at the 8th iter. Even though I quit almost everything before running this app, OS X is still a noisy operating system and every once in a while it hiccups. The use of a "truncated mean" protects the stats from these glitches by discarding the outermost scores. The same technique is commonly used in judged sports: the highest and lowest scores are tossed out, then the rest are averaged. Marvin Humphrey Rectangular Research http://www.rectangular.com/ slothbear:~/projects/ks_variants/ks_sortfix/perl marvin$ perl -I../ devel/benchmarks/indexers/ -Mblib ../devel/benchmarks/indexers/ kinosearch_indexer.plx --docs=1000 --reps=10 ------------------------------------------------------------ 1 Secs: 2.46 Docs: 1000 2 Secs: 1.40 Docs: 1000 3 Secs: 1.39 Docs: 1000 4 Secs: 1.41 Docs: 1000 5 Secs: 1.40 Docs: 1000 6 Secs: 1.41 Docs: 1000 7 Secs: 1.41 Docs: 1000 8 Secs: 1.89 Docs: 1000 9 Secs: 1.42 Docs: 1000 10 Secs: 1.39 Docs: 1000 ------------------------------------------------------------ KinoSearch 0.20_03 Perl 5.8.6 Thread support: yes Darwin 8.9.0 Power Macintosh Mean: 1.46 secs Truncated mean (6 kept, 4 discarded): 1.41 secs ------------------------------------------------------------ slothbear:~/projects/ks_variants/ks_sortfix/perl marvin$ From scratchcomputing at gmail.com Wed May 30 19:13:18 2007 From: scratchcomputing at gmail.com (Seven till Seven) Date: Wed, 30 May 2007 19:13:18 -0700 Subject: [Pdx-pm] June 13th Meeting two weeks away Message-ID: <200705301913.19397.ewilhelm@cpan.org> 6:53pm at FreeGeek -- 1731 SE 10th Ave. speaker: Jeff Lavallee topic: My First CPAN Module -- Yahoo::Marketing blurb: I released my first CPAN module about a year ago - this presentation covers what I did & why, what worked, and what didn't. covering: o Why to make a module o Choosing a namespace o Module::Starter o Module::Build o Testing strategy and test tools o Kwalitee o Y::M Features o Mistakes Note: This distribution originally contained 60+ modules by my count, so Jeff is understating just a bit with the title -- it should be more like "my first 62 cpan modules" :-D --Eric -- http://pdx.pm.org From wickman at halfangle.com Thu May 31 12:56:16 2007 From: wickman at halfangle.com (Stephen Wickman) Date: Thu, 31 May 2007 12:56:16 -0700 Subject: [Pdx-pm] $dbh->{LongReadLen} Message-ID: <465F2860.7020900@halfangle.com> Anyone know the fuzzy math to capture the data in long varchar 2000000000 column? Setting $dbh->{LongReadLen} = $dbh->selectrow_array(qq(select length(col) from tbl)) doesn't quite suffice. Per "Programming the DBI", there is some addl overhead, but I'd prefer numbers in lieu of "slightly more than the length of the longest column". --thx, Steve From jeff at vpservices.com Thu May 31 16:34:53 2007 From: jeff at vpservices.com (Jeff Zucker) Date: Thu, 31 May 2007 16:34:53 -0700 Subject: [Pdx-pm] $dbh->{LongReadLen} In-Reply-To: <465F2860.7020900@halfangle.com> References: <465F2860.7020900@halfangle.com> Message-ID: <465F5B9D.8070302@vpservices.com> $dbh->{LongReadLen} = 2000000001; ? :-) Stephen Wickman wrote: > Anyone know the fuzzy math to capture the data in long varchar 2000000000 column? > Setting $dbh->{LongReadLen} = $dbh->selectrow_array(qq(select length(col) from tbl)) doesn't quite suffice. Per "Programming the DBI", there is some addl overhead, but I'd prefer numbers in lieu of "slightly more than the length of the longest column". > --thx, Steve > _______________________________________________ > Pdx-pm-list mailing list > Pdx-pm-list at pm.org > http://mail.pm.org/mailman/listinfo/pdx-pm-list > > > From scratchcomputing at gmail.com Thu May 31 22:03:33 2007 From: scratchcomputing at gmail.com (The Dread Parrot) Date: Thu, 31 May 2007 22:03:33 -0700 Subject: [Pdx-pm] O'Reilly UG Program Newsletter Message-ID: <200705312203.33441.ewilhelm@cpan.org> Looks like bash cookbook, restful web services, and a whole pile of ruby books. I guess everything that ever needed to be said about Perl has already been written. http://www.oreillynet.com/oreilly/ug/newsletter.csp Anyway, remember you can request a review copy and there are pdf's. --Eric -- http://pdx.pm.org