david.romano's Journal http://use.perl.org/~david.romano/journal/ david.romano's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:31:37+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 david.romano's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~david.romano/journal/ Installing GD and Tk w/Strawberry Perl http://use.perl.org/~david.romano/journal/31222?from=rss <p> I decided to try to use Strawberry Perl after working on a small project for my former college's residence life office. The software needs to run on Windows, and developing it I've been using GD.pm and Tk.pm among other modules (developing on my iBook, at first). Anyway, I wanted to see how well it would do the deed on Windows. <a href="http://vanillaperl.com/">Installing Strawberry Perl</a> went without a hitch. Installing Tk.pm worked with the hints provided by <a href="http://win32.perl.org/wiki/index.php?title=Vanilla_Perl_Problem_Modules">Dean Brockhausen</a> (For the first bug, I found it easier to change the relative path instead of copying files around). GD.pm, on the other hand, took up a lot more time. </p><p> First, I installed the GD library from the <a href="http://gnuwin32.sourceforge.net/packages/gd.htm">GnuWin32 project</a>. I kept the default installation to <code>C:\Program Files\GnuWin32</code>. When installing GD.pm with <code>cpan</code>, I typed <code>look GD</code>. I had to change some stuff around with the how GD is built. During <code>perl Makefike.PL</code> I was asked "Where is libgd installed?" to which I answered "C:/Progra~1/GnuWin32". Then I edited the Makefile, changing:</p><blockquote><div><p> <tt>&nbsp; &nbsp; $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp<br>&nbsp; &nbsp; dlltool --def $(EXPORT_LIST) --base-file dll.base --output-exp dll.exp<br>&nbsp; &nbsp; $(LD) -o $@ $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp</tt></p></div> </blockquote><p>to:</p><blockquote><div><p> <tt>&nbsp; &nbsp; $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) C:\Progra~1\GnuWin32\lib\libgd.dll.a dll.exp<br>&nbsp; &nbsp; dlltool --def $(EXPORT_LIST) --base-file dll.base --output-exp dll.exp<br>&nbsp; &nbsp; $(LD) -o $@ $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) C:\Progra~1\GnuWin32\lib\libgd.dll.a dll.exp</tt></p></div> </blockquote><p>With those changes, GD.pm built successfully. </p><p> When running <code>dmake test</code>, there were more problems. <code>perl.exe</code> complained that it couldn't find <code>libgd2.dll</code>. A quick search under <code>C:\Program Files</code> turned it up at <code>C:\Program Files\GnuWin32\bin\libgd2.dll</code>. So I set the following environment variables to make the tests pass:</p><blockquote><div><p> <tt>C:\whatever&gt;set LIB=%LIB%;C:\Program Files\GnuWin32\bin;C:\Program Files\GnuWin32\lib;<br>C:\whatever&gt;set PATH=%PATH%;C:\Program Files\GnuWin32\bin;C:\Program Files\GnuWin32\lib;</tt></p></div> </blockquote><p>To make sure I wouldn't have problems in the future, I went to <code>Control Panel-&gt;System-&gt;Advanced-&gt;Environment Variables-&gt;System Variables</code> and changed those variables permanently to include the GnuWin32 paths. </p><p> <a href="http://rt.cpan.org//Ticket/Display.html?id=21911">GD ticket filed</a> (basically a duplicate of this journal entry's GD portion)</p> david.romano 2006-10-05T11:16:07+00:00 journal Installing 5.004_05 on OS X http://use.perl.org/~david.romano/journal/30322?from=rss <p> So I've been (slowly) helping out with <a href="http://search.cpan.org/~mivkovic/Mail-Sendmail-0.79/">Mail::Sendmail</a> as part of the <a href="http://qa.perl.org/phalanx/">Phalanx Project</a>, and the author really wants the module to stay compatible with 5.004. Needless to say, OS X doesn't ship with 5.004, nor have I used it. So, in order to make sure I don't screw up and use a feature newer than what 5.004 offers, I decided to download the <a href="http://www.cpan.org/src/5.0/perl5.004_05.tar.gz">source for 5.004 and install it.</a> </p><p> Downloading the source and running <code>sh Configure</code> (as the INSTALL file says to do) was easy enough. Knowing how to answer the various questions Configure asks was not. Nor was it quickly apparent that Configure used the file 'makefile' during the configuration process. (I'm don't have a lot of experience with make, so that's probably why). Unfortunately, for me, I forgot to use the HFS+ with case sensitivity, so the files 'makefile' and 'Makefile' aren't different. So it wasn't until I actually peeked about inside that I realized if I changed the default for Configure to use 'makefile.osx' as the default Makefile (line 3370 of Configure), that Configure would properly make a Makefile. However, even after I did that, the makefile in the x2p subdirectory kept saying that I needed to <code>make depend</code>, even tho' I had already made it. So I had to comment out the last three lines of Makefile in x2p to keep the make'ing going. </p><p> After I finally got a working config.sh (and by working, I mean <code>make</code> ran to completion), a couple of the tests didn't pass:</p><blockquote><div><p> <tt>Failed 2 test scripts out of 164, 97.56% okay.<br>one is t/lib/complex.t -- Out of memory!<br>another is t/lib/db-recno.t -- test 25</tt></p></div> </blockquote><p>Turns out I could get rid of the "Out of memory!" error by using the malloc that came with perl and the ignoring my the system's malloc. (I think <a href="http://blog.segment7.net/articles/2006/02/19/undefined-method-for-symbol-on-os-x">this</a> might have been part of the problem, but didn't fiddle with it further.) If anyone else is adventurous and wants to have 5.004_05 on their mac and is having trouble, let me know and I'll post my config.sh somewhere. <strong>update: my <a href="http://www.unobe.com/files/osx/perl5.004_05/config.sh">config.sh</a>.</strong> </p> david.romano 2006-07-18T05:28:57+00:00 journal fixing readline 5.0 on OS X Tiger http://use.perl.org/~david.romano/journal/30195?from=rss <p> While trying to build <a href="http://www.pugscode.org/">pugs</a> with readline support, I've had to battle a neutered readline library, a readline that doesn't come with certain functions which pugs (and <a href="http://www.haskell.org/ghc">ghc</a>) expect. I had previously installed readline 5.1 in<nobr> <wbr></nobr>/usr/local, but apparently ghc still linked to the libreadline in<nobr> <wbr></nobr>/usr, even after my having set <a href="http://www.justatheory.com/computers/databases/postgresql/howto_avoid_tigers_readline.html">$LDFLAGS to -L/usr/local/include</a>. Therefore, I decided to do something a little more drastic: overwrite the libreadline.dylib in<nobr> <wbr></nobr>/usr/lib. </p><p> Now I've heard over and over again that you don't want to mess with<nobr> <wbr></nobr>/usr and that you should always use<nobr> <wbr></nobr>/usr/local. However, it didn't seem like other workarounds were working. So I decided to cream my<nobr> <wbr></nobr>/usr/lib version of libreadline and install the same version and minor version of of readline from GNU (after making a backup of my original libreadline.dylib and include/readline.h, of course). Fortunately, it wasn't too hard. I did <code>curl -f http://ftp.gnu.org/gnu/readline/readline-5.0.tar.gz | tar xvz, cd readline-5.0; make; sudo make install</code>. However, there was one small hitch. The make process gave this error message:</p><blockquote><div><p> <tt>gcc version 4.0.0 20041026 (Apple Computer, Inc. build 4061)<br>powerpc-apple-darwin8-gcc-4.0.0: -compatibility_version only allowed with -dynamiclib</tt></p></div> </blockquote><p>The reason for the error is that GNU readline's default flags for building shared libraries is wrong for my version of OS X. Fortunately, some quick google'ing turned up <a href="http://www.hmug.org/phpbb2/viewtopic.php?p=105&amp;">this</a>, telling me that I had to edit shlib/Makefile to have SHOBJ_LDFLAGS=-dynamiclib. After that was changed, <code>make</code>ing was successful. </p><p> But I decided to dig around more as the the reason <strong>why</strong> GNU readline was passing the wrong flag. It was easier than expected. I looked at <code>configure</code> and noticed that it called ${srcdir}/support/shobj-conf to configure the shared libraries. Searching for <code>-dynamic</code> brought me to this chunk of script:</p><blockquote><div><p> <tt>&nbsp; &nbsp; case "${host_os}" in<br>&nbsp; &nbsp; darwin7*)&nbsp; &nbsp; SHOBJ_LDFLAGS=''<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<nobr> <wbr></nobr>;;<br>&nbsp; &nbsp; *)&nbsp; &nbsp; &nbsp; SHOBJ_LDFLAGS='-dynamic'<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<nobr> <wbr></nobr>;;<br>&nbsp; &nbsp; esac</tt></p></div> </blockquote><p>The lone <code>darwin7</code> looked suspicious to me, so I checked out the same file for readline-5.1 and noticed <code>darwin7</code> had changed to <code>darwin[78]</code>. Also, the error message above said it was building for <code>darwin8</code>, so it seemed reasonable to suspect this was the crucial change. After I made that change and did <code>make clean;<nobr> <wbr></nobr>./configure; make</code>, libreadline-5.0 compiled properly. Now ghc and pugs both compile with readline support, and I haven't had any problems (readline related) otherwise. Woo-hoo!<nobr> <wbr></nobr>:-) </p> david.romano 2006-07-07T03:26:04+00:00 perl6 yapc hackathon http://use.perl.org/~david.romano/journal/30163?from=rss <p>So I was able to stick around for the hackathon after YAPC::NA, and Patrick Michaud put me to work revamping the PGE test suite for Perl 6 rules to make it similar to the one for Perl 5. The Perl 5 regex suite uses a plain, tab-delimited file, with each column corresponding to arguments to pass into a Test::More function and results to compare the against. While there was some PIR code, I fortunately didn't have to wrangle with it too much, but I did have to understand what it did. The Perl 5 test suite also had the logic to skip or todo a certain line in the test file, and Jerry Gay mentioned that he would like that information to be in the tab-delimited file for easier extensibility. So I decided to revamp the Perl 5 test suite before I translated the same method over to the Perl 6 test suite (which is what Patrick Michaud initially had wanted). The end goal was to be able to share the Perl 6 rules test suite between Perl 6 on Parrot and Perl 6 on Perl 5, and that meant having an intermiate file that kept the test data, but within the implementation for testing.</p><p>Development the first day went to changing the documentation for the Perl 5 suite to match its code, and to making the test suite run *all* the tests in the file, rather than the first 800. This amounted to running the test suite over and over again (since many tests near the end actually made parrot hang), marking certain tests TODO or SKIP with as good a reason as I could fathom. I'm sure there was a more automated (and faster) way to do it, but I finished that part of it around 10ish at night (I had started around 2pm).</p><p>Anyway, one of the reasons I stopped was to go celebrate Yuval Kogman's birthday with a few others too. I think it was Bill Odam, Ann Barcomb, Ingy dot Net, Marcus Ramberg, Helen Cook, Gaal Yahas (After that bar closed, we meandered down the way to another one, an Irish pub. It was great that it was still open, but we only had about 30 minutes before that one closed too. So we ended up drinking more (Marcus sure can drink a lot) and talked about random things, none of which I can remember. When we left that place and realized there were no places we could all get into (because some didn't have passports with them), we called cabs and headed back to campus where I fell asleep after staying up refactoring the Perl 5 test suite and reading some more of Intermediate Perl. </p><p>I got to a late start again the following day, and transitioned to working on the Perl 6 test suite. This went much faster, since I pretty much just had to write some regexen to copy all the function calls of the test suite and create a tab-delimited file for each one. There were some issues with tests that had unicode-escaped characters that were to be passed in as arguments to the test functions, but after bugging Patrick Michaud about it a couple times, I was able to get it all working. I then made the code nicer to look at, and e-mailed it to Patrick to review. </p><p>After we got kicked out of the cafeteria where the hackathon was being held, some of us went to the SSV dorms and continued hacking. I fooled around with YAML-Tiny, but didn't make much headway as I was sidetracked with catching up on email and blogs. I believe chromatic was working on NCI, a C calling library, and also embedding Parrot in Perl 5. I think Audrey and Ingy were working on Module::Compile stuff and Adam Kennedy was working on something where he really wanted to be able to unbless a reference without adding dependencies (I don't think he ever figured a way to do it). After a few hours, I decided to call it a night and headed to my room in MSV. </p><p>During the last day of the hackathon, I had to check out from the dorms and get to the airport, but I was able to hang out for a bit in between. I ended up looking more at YAML-Tiny and working to get it parse a few more things, but didn't get that far. Jose Castro was closely watching the Portugal and England game, and Adam Kennedy and I joined him when it went to double overtime and PKs. There was a bit of delay (a few seconds) on the TV, so Jose had enlisted one of his friends on IRC to send him updates of what was happening. It was great because he knew Portugal had won a few seconds before everyone saw it, so he stood up (we were in the back of the room) with a beaming smile and was claiming victory. It was great<nobr> <wbr></nobr>:-) </p><p>After the game ended, it was about time for me to go with some others to O'Hare. I had originally planned on sharing a cab back to O'Hare with Uri, but decided that day not to do so and save some money instead (I had already spent much more than I had originally intended while in Chicago). Luckily, he was fine with me ditching out on him. It was about an hour train ride, but I got there well before I had to depart. I had gone with Ann Barcomb, Abigail, Marcus Ramberg, and Toorga (I think. I didn't ask him to spell his name, and sadly never talked with him much at the conference). We all said our farewells to one another and went to our respective terminals. </p><p>Since I had arrived a couple hours before my boarding time, I decided to buy for wireless access, and worked on getting <a href="http://www.irssi.org/">irssi</a> built (never was able to until I got back home). I also was feeling hungry since I hadn't eaten anything, so I ate at a cafe in the terminal while keeping tabs on the Brazil and France game. It was nil-nil the whole game until (I think) the 80th minute, when France scored. France ended up winning, so that means Portugal and France are going to meet each other in the next round. </p><p>Well, since I didn't do any hacking on the plane ride home, that concludes my first ever hackathon experience. Like my first YAPC, I couldn't have asked for a better time. Looking forward to some more opportunities!<nobr> <wbr></nobr>:-)</p> david.romano 2006-07-04T07:02:42+00:00 yapc yapc day 3 http://use.perl.org/~david.romano/journal/30162?from=rss <p>Because I had stayed up too late the night before, and because my alarm clock wasn't working, I again missed the first hour of talks. The first talk I made it to was Patrick Michaud's "Parsers, Perl 6 Rules, and PGE (Pt. 1)". I didn't learn much from that talk because most of it was from the talk he gave the day before, but it was good to be refreshed. The second part of the talk was what I found more interesting because it centered around constructing actual grammars with the rules and with PIR (Parrot Intermediate Representation). He showed us how to move between top-down and bottom-up parsing within PGE. It was very cool because I knew how many of the parsing problems and $work could be solved using a hybrid parser like this. Not only that, but the rule syntax was simple and powerful. I think (I my memory's a little hazy) Patrick Michaud said something like it's everything you wanted BNF to be, and everything you didn't. </p><p>I stayed in the same room for the next talk "Parrot Target Practice" which was presented by both Will Coleda and Patrick Michaud. They both presented the problems faced with "using the Parrot compiler tools to implement the APL language". All I gotta say is that APL looks like one terse language and I find it incredible they actually did it. coke++ and pmichaud++. </p><p>The last talk I went to (before the lightning talks) was by Allison Randal, whom I was able to meet earlier in the week when at Lou Malnati's (excellent pizza, btw). She discussed her work in developing Punie, Perl 1 on Parrot. Unfortunately, I don't remember too much about it, but IIRC she described the features of Perl 1 and how she created TGE to help with some of the obstacles she faced. Oh! I do remember she gave a few references to attribute grammars, which I think is what TGE tries to be (just found where I jotted them down): </p><ul> <li>Knuth, D.E. (1990) "The genesis of attribute grammars." Proceedings of the international conference on Attribute grammars and their applications, 1-12</li><li>Chomsky, Noam (1995). The Minimalist Program. MIT Press.</li></ul><p>After that talk, I met with the others who had also won the auction item for lunch with Randal Schwartz, and we went to a Chinese restaurant (I believe called Evergreen), going to and fro in a limo. However, the ride wasn't that luxurious considering there were ten of us. Nonetheless it was a good time and I got to meet a few more people including William McKee.</p><p>We got back well after the lightning talks had started, and I hear that I missed some good ones. However, the ones I did see were pretty good as well. Jeff Bisbee unveiled his <a href="http://search.cpan.org/~jbisbee/JavaScript-XRay-1.1/">Javascript::XRay</a> module, similar in functionality to what his <a href="http://search.cpan.org/~jbisbee/Devel-XRay-0.92/">Devel::XRay</a> module does. I also got to see Uri Guttman show off his <a href="http://www.sysarch.com/tiny_template/slides/">tiny template system</a> (which I like for its sheer simplicity), as well as see Ann Barcomb and Helen Cook capture the living conditions at SSV with some <a href="http://rjbs.manxome.org/tmp/yapc2006.mov">good comic relief</a>. There were many other good talks, but those were the ones that jumped out at me. </p><p> After the last lightning talk, the closing ceremonies commenced. Jose Castro, Bill Odam, Damian Conway, and others performed a stunt to raise even more money for TPF: kidnapping Larry. In the end, ~$1300 was raised to free Larry. After that, Josh McAdams and Peter Krawczyk did a great job of mimicking the Blues Brothers, but I forgot what the point was.</p><p>The last real speech was given by Damian Conway, and was called "Fun With Dead Languages". He first did plug for OSCON::AU, describing with images that many of the world's most poisonous animals live in Australia, so who <em>wouldn't</em> want to come. After the plug, he did a whirlwind tour of computer and human language (e.g., Postscript, Lisp, Latin) constructs, and how they will be drawn from to design Perl 6. Unfortunately, my memory is hazy for his talk too, probably because I was busy chatting too much on IRC.(Really bummed about that too, but you make your choices, no?) </p><p>After the talk and the Town Hall Meeting, I had been invited to a dinner with other volunteers and the speakers at the McAdams condo. (I had helped out on Sunday stuffing the bags for the conference, and also helped pass out name tags.) The dinner went well and I got to talk to Norman Nanley, Jonathan Rockaway, Bill Odam, and Richard Dice, among others. And for me, that concluded YAPC::NA 2006. I honestly have never had such a great time with people I didn't even know. By the end of the conference, I had made some friends that I'm bound to see on #perl or some other IRC channel. I really couldn't have asked for a better experience, especially for $85.<nobr> <wbr></nobr>:-)</p> david.romano 2006-07-04T05:46:31+00:00 yapc yapc day 2 http://use.perl.org/~david.romano/journal/30161?from=rss <p>woke up later today than I wanted, missing two talks I wanted to see: Perl 5.10 update, and a discussion on <a href="http://search.cpan.org/~smueller/PAR-0.941/">PAR</a>.<nobr> <wbr></nobr>:-/ However, I *did* get to listen to the other talks I really did want to see: talks on Perl 6 and Parrot. But before those talks, I went to one on module maintenance.</p><p>James Keenan discussed his experience with maintaining ModuleMaker::ExtUtils. Mostly he expounded on the "five-fold" path when taking over:</p><blockquote><div><p> <tt>&nbsp; &nbsp; cleanup the author's code<br>&nbsp; &nbsp; &nbsp; &nbsp; impose your best practices<br>&nbsp; &nbsp; add new functionality<br>&nbsp; &nbsp; &nbsp; &nbsp; he used Damian's PBP to create a plugin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; like module-starter<br>&nbsp; &nbsp; &nbsp; &nbsp; he used File::Temp<br>&nbsp; &nbsp; restructure the distribution<br>&nbsp; &nbsp; use CPAN Testers<br>&nbsp; &nbsp; spin off new modules</tt></p></div> </blockquote><p> <strong>UPDATE: look at first comment by kid51. I apparently fudged the facts a little. ModuleMaker::ExtUtils is actually <a href="http://search.cpan.org/~jkeenan/ExtUtils-ModuleMaker-0.47/">ExtUtils::ModuleMaker</a>, and spinning off new modules is actually a side effect, not part of the five-fold path. See his comment for locations to slides and fulltext.</strong> </p><p> Since I started to work with the Phalanx Project working on Mail::Sendmail, I decided to ask him (after the talk) for some advice. I've been hitting a wall with knowing what to do when, and how much to do. The module's author has been helpful in describing what features he wants Mail::Sendmail to implement, but at the same time it has been hard since the author would like backwards compatability for early (~5.004) versions of perl. (Many of the test modules require 5.6, so I need to figure out which test modules I really need and if I can possibly make them work with 5.004.) His suggestion, IIRC, was to do as much as I feel comfortable with, but realize that if I'm not a co-maintainer, all of my changes might be for naught. He suggested that I try to become a co-maintainer.</p><p>The next talk I went to was on Parrot and Perl 6 compilers. Patrick Michaud explained that there are many compilers for Perl 6, one of which is Parrot. He then went on to explain the steps the Parrot VM uses to compile Perl 6:</p><blockquote><div><p> <tt>&nbsp; &nbsp; perl6 source, perl6 grammar<br>&nbsp; &nbsp; -PGE-&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp; parse tree<br>&nbsp; &nbsp; &nbsp; &nbsp; -TGE-&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; abstract syntax tree (PAST)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -TGE-&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; opcode syntax tree (POST)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -codegen-&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PIR<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -parrot-&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bytecode or program execution</tt></p></div> </blockquote><p>He also discussed the difference between rules and tokens, and gave a TODO list for anyone interested in contributing to making PGE parse Perl 6:</p><blockquote><div><p> <tt>&nbsp; &nbsp; fill out 01-sanity tests<br>&nbsp; &nbsp; &nbsp; &nbsp; arrays, hashes<br>&nbsp; &nbsp; &nbsp; &nbsp; loops<br>&nbsp; &nbsp; &nbsp; &nbsp; use statement</tt></p></div> </blockquote><p>Overall it was pretty informative. I now have at least a starting point of where to contribute my time, and also I have a good overview of the process. Woot.</p><p>The next talk was given by Yuval Kogman, whose name I had known from lurking on the catalyst mailing list and from reading the #perl6 logs. parts of the talk went over my head, but I was mostly able to follow along. Yuval talked mostly about what the requirement for Perl 6: to be both static and dynamic in certain parts (dependent on the programmer's need), good/fast/small enough to write a compiler in, scalable, and self-extending. </p><p>Audrey Tang gave the next talk, which was about deploying Perl 6. I had read the slides that were in the svn trunk which were presented to Microsoft a week or two ago, and this presentation didn't seem much different. It was pretty cool to see P5 code next to P6 code, and how vastly different (in a good way) P6 is from P5.</p><p>After the P6 talks, there was time for one more talk, and I decided to check out the Plagger talk by Tatsuhiko Miyagawa. I had only heard mention of Plagger here and there, but didn't really have an understanding of what it actually did. Basically, it allows data munging from different sources in different ways to many outputs. Like a RSS/Atom aggregator on steriods. For instance, it allows you to have an RSS feed be munged in a particular way and sent to an e-mail address all by downloading the right plugins and setting a few configuration options. But that's not even the half of it. There are <em>many</em> different <a href="http://search.cpan.org/~miyagawa/Plagger-0.7.3/">configuration options</a> to choose from. Definitely piqued my interest.</p><p>After the talks, there was an auction dinner at Dave &amp; Buster's. I'm pretty sure everyone at the conference went, because there were free games (when they weren't broken) and free food. The auction (I believe) went reasonably well, with The Perl Foundation raising $2895 in cash (and more by credit card) by auctioning off books, shirts, Uri's singing, Randal Schwartz, Damian Conway, Larry Wall, and an action figure of Larry Wall. I made out pretty well, garnering Pro Perl Debugging by Foley and Lester, a shirt with the Perl camel on it, and (as part of a group) lunch with Randal Schwartz for the following day. The auction lasted well into the night, and the group I left with got back after midnight. Earlier in the evening, Ann had invited me to MST3K after the auction was over, so I went to it after we got back.</p><p>I'm not sure if I was fortunate or not, but the first movie wasn't MST3K, but rather Skidoo. There were some big names in it, but it was one of the worst movies I'd ever seen. I consider myself fortunate because I got to see it with some peeps who made very funny remarks, but I consider myself unfortunate because I actually sat down and watched it. However, after that movie was over, there were some funny short videos played by Andy Lester. They were all pretty funny, but the most memorable to me was the Farting Preacher (Parts 1-4) in which fart sounds were inserted at times of silence when this televangelist was talking. Anyhow, by the time they were starting to show MST3K, I was fading fast, so I called it a night.</p> david.romano 2006-07-04T05:45:37+00:00 yapc yapc day 1 http://use.perl.org/~david.romano/journal/30058?from=rss <p>today was...busy. since i stayed up so late the night before, i was worried about getting up in time for the first few talks in the morning: Josh McAdams' welcome speech, and keynotes by Larry Wall and Bill Odam. unfortunately for me, my alarm didn't go off and I didn't wake up until right before the last keynote, Bill Odam's, was starting. anyway, i took a shower and headed on over to the building where all the talks would be taking place.</p><p>i arrived about halfway through Bill Odam's talk, and found it pretty slow-moving. He didn't have any presentation slides, so I definitely think that affected my perception. besides that, what he talked about was actually interesting to me: how the <a href="http://www.perlfoundation.org/">Perl Foundation</a> fits in to the Perl community, who it is currently comprised of, and what they do with their resources. by the time I had to leave for the next talk I wished to attend, I understood a bit more what it did. </p><p>the first of the five talks I attended was on the module PPI and was given by Jeffrey Goff. <a href="http://search.cpan.org/~adamk/PPI-1.115/">PPI</a> is making it possible to view perl source code as a document, and manipulate it in interesting ways without actually running it through the perl interpreter (which is what Eclipse's plugin does, and which can really screw you if you put the wrong thing in a BEGIN block). Jeffrey showed briefly how to do a few simple tasks like automatically reformatting a map statement into a for loop, and re-formatting whitespace without doing it with regexen that might possibly break heredocs. by the end of the talk I definitely decided I wanted to spend a day or two fiddling around with it. since I'll only be working around 30 hours this summer before school starts, I'm hoping to fit it in<nobr> <wbr></nobr>:-).</p><p>The next talk I went to was on svk, remembering <a href="http://www.perl.com/pub/a/2004/03/03/svk.html">an article</a> I had skimmed thru on perl.com and thinking that it was worth looking into. Since I have mostly been using svn at work, I figured it would be good for me to see what benefits it had over svn. this talk went smoothly, and some of the new features for the next version of svk i noticed were taken from another RCS which I actually prefer: <a href="http://www.darcs.net/">darcs</a>. (the speaker also mentioned thievery from Perforce.) anyway, here's a brief features list I gleaned from clkao's talk: </p><ul> <li>works with existing svn</li><li>easier to branch, so less forking of projects</li><li>history sensitive merge</li><li>offline commits</li><li>offline branching</li><li>interactive conflict resolution</li><li>interactive commits</li></ul><p>the third talk was entitled "Get Out of Technical Debt Now!", and was presented by Andy Lester. Of all the five I went to today, I believe I took away most from this one. He seemed to be using the <a href="http://en.wikipedia.org/wiki/The_Takahashi_method">Takahashi method</a> of presenting slides, yet it was surprisingly easy to form an outline of the material. Altho' I do believe the video and slides of his talk will be available (as will be the case for many other talks), I'm gonna reproduce the outline of the solution of getting out of technical debt:</p><blockquote><div><p> <tt>simple (but not easy) solution:<br>&nbsp; &nbsp; identify your debts<br>&nbsp; &nbsp; &nbsp; &nbsp; clutter (multiple confs and backups<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; without revision control)<br>&nbsp; &nbsp; &nbsp; &nbsp; anything you plan to do later is clutter!<br>&nbsp; &nbsp; &nbsp; &nbsp; failing tests<br>&nbsp; &nbsp; &nbsp; &nbsp; ugly code (no appreciation of what the<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; code does)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; code without comments<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outdated comments<br>&nbsp; &nbsp; &nbsp; &nbsp; bus-sensitive knowledge: only one person knows how to do something. if they get hit by a bus, what's the team going to do?<br>&nbsp; &nbsp; &nbsp; &nbsp; unpatched security holes<br>&nbsp; &nbsp; &nbsp; &nbsp; TODO and XXX<br>&nbsp; &nbsp; &nbsp; &nbsp; missing infrastucture<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RT?<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; svn?<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; backups? can you restore?<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cron jobs to do your dirty work?<br>&nbsp; &nbsp; &nbsp; &nbsp; relying on non-opensource projects<br>&nbsp; &nbsp; &nbsp; &nbsp; jerks on the team<br>&nbsp; &nbsp; &nbsp; &nbsp; jerks in management<br>&nbsp; &nbsp; &nbsp; &nbsp; no coding standards<br>&nbsp; &nbsp; &nbsp; &nbsp; code ownership<br>&nbsp; &nbsp; &nbsp; &nbsp; not realizing you have technical debt<br>&nbsp; &nbsp; &nbsp; &nbsp; ignoring your technical debt<br>&nbsp; &nbsp; determine costs<br>&nbsp; &nbsp; &nbsp; &nbsp; think time.<br>&nbsp; &nbsp; &nbsp; &nbsp; think dollars.<br>&nbsp; &nbsp; &nbsp; &nbsp; think risk. - not having those backups,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; not having the security hole patched<br>&nbsp; &nbsp; &nbsp; &nbsp; cost of paying debt: developer time,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dollars, etc.<br>&nbsp; &nbsp; &nbsp; &nbsp; opportunity cost<br>&nbsp; &nbsp; with determing your debt and costs, you are<br>&nbsp; &nbsp; &nbsp; creating the justification to sell the PHB on your changes.<br>&nbsp; &nbsp; pay most profitable<br>&nbsp; &nbsp; &nbsp; &nbsp; pick *one*.<br>&nbsp; &nbsp; &nbsp; &nbsp; don't pick the easiest<br>&nbsp; &nbsp; &nbsp; &nbsp; don't pick the most fun, either.<br>&nbsp; &nbsp; &nbsp; &nbsp; think improvement, not perfection.<br>&nbsp; &nbsp; &nbsp; &nbsp; *JFDI*<br>&nbsp; &nbsp; &nbsp; &nbsp; land one plane at a time.<br>&nbsp; &nbsp; &nbsp; &nbsp; how do i sell the boss?<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *quantify* everything that you need<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to, or everything you can (hopefully<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; not too disparate).<br>&nbsp; &nbsp; stop incurring new debt<br>&nbsp; &nbsp; &nbsp; &nbsp; don't write new code that doesn't improve<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tests, comments, etc.<br>&nbsp; &nbsp; &nbsp; &nbsp; understand your cash flow<br>&nbsp; &nbsp; &nbsp; &nbsp; watch the corners:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fluff<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t/pod.t and t/pod-coverage.t<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; automated tests<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vigorous policing<br>&nbsp; &nbsp; &nbsp; &nbsp; sharpen the saw (improve the tools):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; App::Fluff<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Perl::Critic</tt></p></div> </blockquote><p>the fourth talk I went to didn't do much for me. Dave Rolsky talked on "JSAN, AJAX and Perl". I don't think he really showed how to combine the three technologies through an example, but mostly just mentioned a few modules that comprise JSAN that you can use to AJAXify something with perl. But seriously, he seemed to wade in the shallow end of the pool. Surely, time constraints are a factor, but I believe a small example showing a perl program interacting with what JSAN does would have been much better for me. But then again, I talked with others who thought that it was just the right amount of info for their knowledge base.</p><p>the last talk I went to was called "Writing Regular Expressions" and was presented by Abigail. Now I'm pretty well-versed in regexes, but the actual regex engine behind it I'm still somewhat ignorant of. (I have Mastering Regular Expressions by Friedl, but that's about the 4th book down on my ~50 book reading list for this summer). Most of what he talked about was quite basic in writing regular expressions, but he did mention some nuggets concerning how the engine optimized certain constructs, which is what I hoped he would do. Two of the most precious nuggets I discovered were: </p><ol> <li>construct regexes from concatenating strings rather than combining qr//. there's almost 4.7:0.01 time difference when comparing qr// interpolation to string interpolation. (making strings is faster than qr// because perl doesn't know how to take advantage of interpolating a compiled regex in another).</li><li>perl -Dr -we '"foo/bar" =~ m{[/]\w+[/]}'</li></ol><p>After the talks, I went over to <a href="http://yapcchicago.org/wiki/index.cgi?HostYetAnotherPerlConferenceBOF">Host YAPC BOF</a>, since Raga had mentioned he was planning on attending in order to see what it would take to bring YAPC to San Diego. Well, because of talking with other people, I ended up being 20 minutes late and so only got the tail end of it. Raga wasn't there, but from what I listened to Raga or I might be better off trying to organize a Perl Workshop instead. (Build our way up.)</p><p>Dinner time finally rolled around and a large group of us headed to <a href="http://www.loumalnatis.com/">Lou Malnati's</a> (Uri, Allison Randal, Bill Odam, Richard Rice, Jeff Bisbee, Pip, John, Zack, Deven, Kent Cowgill, John (hachi), and others I didn't actually meet). I prefer thin-crust pizza, but their deep-dish was *great*. Jeff Bisbee and I split a medium pizza: my half was olive and pepperoni, his was cheese. If you ever go to Chicago, don't pass that place up. I'm planning on going back there at least one other time this week.</p><p>After we got back from dinner, it was around 10ish, and so I headed back to my room. Since then I've checked some e-mail, dabbled a bit more into the crazy world of IRC, and talked with Margret, and talked with my next door neighbor, George, about sorting algorithms, testing client/server interactions, and MVC frameworks. The last hour or so I have actually been about to sit down and write this post. And altho' I'm staying up late again, it's worth it as long as my alarm will actually go off tomorrow.<nobr> <wbr></nobr>:-)</p><p> <b>UPDATE:</b>I forgot to mention the major downside for today: no wireless access! apparently the sysadmin for the IIT network is on vacation, and IIT didn't give the conference enough IPs to go around (only enough for ~1/2 the attendees). It looks like it will all be <a href="http://yapcchicago.org/wiki/index.cgi?SoWhatsTheDeal">fixed tomorrow</a> tho'. Woo-hoo!</p> david.romano 2006-06-27T08:03:27+00:00 journal yapc events and long talks that reminded me of college http://use.perl.org/~david.romano/journal/30044?from=rss <p>wow, what a long day. After getting to bed way too late last night (looks like tonight is even worse), I woke up very refreshed and met a gang of yapcers to go to breakfast at the bongo room. I met a lot of people: Larry( Wall), barbie, cog, Aran, Liz, Hal, Geoffrey Galloway, Josh and Heather McAdams. The breakfast was actually really good (I had eggs florentine), and afterward decided to go with Aran to check out the Art Institute.</p><p>The institute was simply amazing. I have been to other museums (in LA and SD), and this one blew both out of the water. I got to see Renoir, Monet, Manet, Dali, Seurat, et al. I actually didn't realize how much I didn't like Degas: he just doesn't do it for me. However, I did get to re-enact Cameron in Ferris Bueller's Day Off and stand in front of <a href="http://www.ibiblio.org/wm/paint/auth/seurat/grande-jatte/seurat.grande-jatte.jpg">A Sunday Afternoon on the Island of La Grande Jatte</a>. Aran's wife is an artist and pointed out that the only person that had any facial definition in the painting was the guy off to the left with a pipe. Anyhoo, we only got to cover the impressionist and modernist art, and then it was time to go. If you're ever in Chicago, be sure to check out the Art Institute; simply amazing.</p><p>After Aran and I got back to campus (via a ride with Josh McAdams and his wife), I decided to help out with registration stuff. There was a lot that needed to be done, and during that period I was able to meet others. That pretty much took the remainder of the afternoon 'til early check-in.</p><p>After early check-in, there was the arrival dinner on the other side of town at Goose Island, right across from Wrigley Field. I hitched a ride with Eli Lutfallah, but we both realized that it might have been better to take the el instead of sitting in White Sox traffic. At any rate, the car ride over gave more opportunity for me to talk with him and get to know him better (he's a local Chicago PMer).</p><p>When we finally got to Goose Island there was a grip of people there. After getting some appetizer-like food, I mingled a bit and actually ran into anothe San Diego PMer that I didn't even know was coming: Raga! (spelling may be off a bit) We chatted a bit and I joined a conversation with him and too other guys: Waldemar and Matt. Both ar comprise the development team for their company in Virginia, and (like everyone else) were really cool to talk to. After the conversation sorta died out, Raga and I talked a bit about trying to coordinate what talks we go to in order to "maximize" the breadth of our experience. He was gonna e-mail me tonight, but I guess he hasn't been able to yet.</p><p>Anyhoo, I meandered more and met Deven (not the spelling) and Kent Cowgill (whose talk about <a href="http://c2group.net/howtos/perlgolf101.html">Perl Golf 101</a> I still want to get read). Deven was going to show me some conference software he wrote, but I couldn't pass up the offer by Phillip (maybe Philip?) to join him and Randal Schwartz over a pitcher of dark beer, which Raga later joined in. The conversation geared mostly around women, and experiences I never knew could be had in T.J. It was very entertaining overall and both Randal and Phillip had interesting things to say about their experiences with the opposite sex.</p><p>We left as a group around 11pm and walked over to the el to get back to our respective domiciles. Phillip and I both were going to campus, and Randal and Raga both got off at earlier stops. When Phillip and I finally got back to IIT, it was pouring rain, which I was ill-clad for. We rushed over to SSV (the dorms where Phillip was staying, at which was closer), and ended up talking for a few hours ('til 3:30ish) about technology, religion, education, politics, and other things. He's pretty smart and the discussion gave me a lot to think about/research.</p><p>Anyway, it's now 5am and it's way past my bedtime. I still plan on making the keynote address and other talks before that, so it looks like I'll be only getting a little nap in. Hopefully my cold doesn't come back in full force (I still am dealing with some phlegm). Will update tomorrow on the first day of the conference and the talks I decided to go to!<nobr> <wbr></nobr>:-)</p> david.romano 2006-06-26T10:11:55+00:00 yapc yapc arrival http://use.perl.org/~david.romano/journal/30032?from=rss <p>Okay, so I have decided to blog at least once a day while I'm here in Chicago at YAPC. Since it hasn't started yet, all you get to hear about is my flight, check-in, and the couple of YAPCers I met.</p><p>My 4-hour flight from San Diego to O'Hare went by pretty quickly. I had a window seat, no one was sitting next to me, I worked on the in-flight magazine's Sudoku puzzle, and I read some more Intermediate Perl. After I got my bags, I was supposed to meet up with Uri Guttman at the Hilton to share a cab ride over to IIT. On my way over to the lobby, I tried calling him a few times but wasn't able to get through. Fortunately, as I was going up the escalator to the lobby, I remembered <a href="http://www.perl.org/yapc/2002/movies/themovie/yapc2002-big.mov">something about man tits</a>, and when I got to the top of the escalator I asked the guy ahead of me if he was Uri (which he was).</p><p>Uri had shared the flight from Boston with Ann Barcomb, so I was able to get acquainted with them both on the cab ride we shared to IIT. After we finally got to our dorm rooms, Uri had decided to catch up on sleep, so Ann and I went grocery shopping the rest of the afternoon. The grocery shopping didn't actually take that long, but we did end up getting on two (different) wrong lines (at Roosevelt) when coming back to IIT. Lesson learned: orange looks red, and green means go.</p><p>Anyhoo, by the time we got back to IIT, it was nearing dinner. IRC wasn't working on IIT's network, but after fiddling around with my box in San Diego, I managed to (1) get irc installed and (2) set up Ann with an account so we could both sign on to irc.perl.org#yapc. Ann also showed me how to use the irc client a bit (I had always been spoiled on graphical clients), and then we decided to figure out where to eat some din-din. Uri and some others went to Rock Bottom, but we both weren't feeling up for American so we walked over to 31st/Canal to Bangkok Thai 55. Bangkok Thai 55 was a real "hole in the wall", but the food was decent and at a pretty reasonable price.</p><p>After we got back to campus, Ann decided to catch up on much-needed rest. I decided to fool around with IRC again and read some more Intermediate Perl, and blog about my first pre-conference day. During that time, Joey Kelly checked in, and we meandered a bit trying to see if others were awake, and hung out while he tried to get his laptop on the network. (unfortunately, that didn't happen, but fortunately he had a <a href="http://www.nokiausa.com/770">toy</a> that did work.) Overall, I'm pretty satisfied with my zeroth day. Uri, Ann, and Joey are nice people and quite sociable. My first YAPC looks to be a good one!<nobr> <wbr></nobr>:-)</p> david.romano 2006-06-25T03:44:52+00:00 yapc TOT http://use.perl.org/~david.romano/journal/28176?from=rss I had a TOT (Tip Of the Tongue) experience last night when watching my roommate play Paper Mario. The bob-ombs in one of the settings are dressed distinctly (look at the lower left corner <a href="http://www.planetnintendo.com/nindb/dol/images/cam/g8m_2a.jpg">here</a> and <a href="http://img2.kult-mag.com/photos/00/00/51/36/ME0000513677_2.jpg">here</a>). During the 2002-2003 winter, I sometimes wore a beanie with a hoodless sweater. I was taking Latin during the time, and during office hours my Latin professor once asked why I was dressed like a <strong>stevedore</strong>. Having grown up in the desert all my life, I had never heard of the word, so I learned a new word that day. But last night I thought about it a good five minutes and still couldn't remember that word to describe the bob-ombs. I tried using a thesaurus (and stumbled across <a href="http://www.visualthesaurus.com/">this</a>, which is pretty cool), but I didn't know any real synonyms for it (shipyardman?, dock worker?). I was at a loss for the word. Anyway, after about ten more minutes of just sipping my tea, thinking about it, and watching my roommate play more of Paper Mario, it suddenly came to me. Victoria Mea! So the whole TOT thing got me thinking about neural networks and the storage capacity and retrieval ability of the brain. I remember learning a bit about some of the models in my "Second Langauge Acquisition: From Childhood to Adolescence" and "Lingustic Typology" courses, but haven't looked into neural networks much since then. With the release of <a href="http://search.cpan.org/~ovid/AI-NeuralNet-Simple-0.10/">AI-NeuralNet-Simple-0.10</a>, maybe I'll be able to learn a bit more about it. Any thoughts on what else will help me start playing around with programming neural networks? david.romano 2005-12-30T19:37:31+00:00 journal Gmail "Web Clip" bar http://use.perl.org/~david.romano/journal/28161?from=rss <p>While checking my e-mail today at GMail, I decided to browse through the "Web Clips" they have at the top. I was surprised to see this for one of them:</p><p>About Today - HASH(0x8db55e0)</p><p>Yes, Gmail is still beta, especially since they keep on adding more and more features!<nobr> <wbr></nobr>:) Unfortunately, I didn't notice a quick way to let them know about the bug. I definitely think that an easily visible way to submit a bug report should be given to the users. Anyway, I let Google know that having an easily visible way to submit a bug report for beta software is a "feature" I want.</p> david.romano 2005-12-29T22:53:38+00:00 bugs