• Perlsphere launches

    Earle "hex" Martin has started a new Perl blog aggregator. From his use.perl.org journal entry:

    In the spirit of TMTOWTDI I have set up a new aggregator for Perl blogs, Perlsphere. Its aim is to operate a bit differently from Planet Perl...
    • Openness - admission to Planet Perl is by selection of the site operators only. Perlsphere is open to any blog about Perl.
    • Being a little easier on the eye - those jaggies on the Planet Perl camel scare me.
    • Most importantly, running on Perl. Perlsphere runs on the remarkable Plagger. Planet Perl runs on Planet, a Python application... whose templating engine was a copy of Perl's own HTML::Template! Kind of embarrassing.

    Thanks to Earle for helping more flowers bloom.

  • Scrabble cheating with Perl one-liners

    I'm in the middle of a game of Scrabulous with Christoper Humphries on Facebook, and I get "tolkien" handed to me in my tray. Good letters, and I ought to be able to make a bingo out of them. Alas, the best I could get to play on the board was "knot", but what else could I have made? Perl to the rescue!

    All I need to do is match across the contents of /usr/share/dict/words in a Perl one-liner. The -n flag means "loop over the input file, but don't print $_". My little program goes in -e, and it looks like this:

    $ perl -lne'print if /t/ && /o/ && /l/ && /k/ && /i/ &&
    /e/ && /n/' /usr/share/dict/words
    allokinetic
    ankylopoietic
    anticlockwise
    automatonlike
    bibliokleptomania
    ....
    

    Lots of good words, but they're awfully long. Let's limit it to seven-letter bingos. We have to use the -l flag to drop the linefeed from the input lines, so the length call is accurate.

    $ perl -lne'print if /t/ && /o/ && /l/ && /k/ && /i/ &&
    /e/ && /n/ && length($_)==7' /usr/share/dict/words
    $
    

    Shoot, nothing there. Let's try eight.

    perl -lne'print if /t/ && /o/ && /l/ && /k/ && /i/ &&
    /e/ && /n/ && length($_)==8' /usr/share/dict/words
    knotlike
    townlike
    

    "knotlike"! That would have been beautiful. Oh well. :-(

  • Perl Foundation funds five grants for summer 2008

    Alberto Simões, grant coordinator for the Perl Foundation, announces:

    It took a long time, but for this round we had a big number of excellent proposals. Unfortunately TPF is unable to fund all the proposed grants as they exceed the funds available for Grants. Thus, TPF GC ranked proposals accordingly with its relevance to the community, and the first few were funded.

    These are the funded proposals:

    As a side note, the last proposal was funded using Perl 6 funds, from Ian Hague donation, and thus, outside the GC budget.

    Follow the proposals that, although accepted, will not be funded:

    Unfortunately, there was a few proposals that did not convince the committee, and were rejected. Without any particular order:

  • Technical debt: Seek first to understand

    Grand Rapids Perl Monger Matt Heusser is organizing a workshop on technical debt in August. A recent blog posting from Matt gives some great talking points about technical debt, including one angle I hadn't thought of before, probably because I haven't taken any programming classes in over 20 years:

    Our educational system, for the most part, is built on one-off projects. Students build a program that inventories their CD collection. It doesn't work well - it even has some bugs - but it is good enough to demo and get a B+.... [They] can get hacked out in a weekend with a lot of pizza and caffeine....[S]tudents never have to live with the pain of maintaining the pile of mud they write. Thus, our first exposure to programming actively rewards us for tech debt.

    There's a lack of training, perhaps, but is programming leadership at fault as well? The old management saw of "What gets measured gets done" holds here. If your performance review is based on getting things done (for some value of "done") by a deadline, you're going to go aim for that. Heck, you can turn to daytime television sage Dr. Phil for this one: People do what works.

    I'm dealing with that right now. I've got a code base where the previous programmer's #1 goal was apparently to complete the task as quickly as possible. I've got PHP code like this:

    $rslt=pg_exec($conn,"drop table keys1x");
    pg_freeresult($rslt);
    $rslt=pg_exec($conn,"drop table keys2x");
    pg_freeresult($rslt);
    $rslt=pg_exec($conn,"drop table keys3x");
    pg_freeresult($rslt);
    ...
    $rslt=pg_exec($conn,"drop table keys13x");
    pg_freeresult($rslt);
    $rslt=pg_exec($conn,"drop table keys14x");
    pg_freeresult($rslt);
    # The tables are then recreated with 14 cut-n-paste
    # calls of identical CREATE TABLE DDL statements.
    

    Stupid, right? But was it? If your goal is to get a change made as quickly as possible, with no regard to other design factors, then cut & paste of code makes perfect sense. This guy was acclaimed for his ability to turn around program changes quickly, so at least someone was happy, even if that someone wasn't the programmer who followed. As Dr. Phil would say, he did what works.

    The causes of technical debt can be varied, and multiple. The programmer might not know better. It might be what worked best for him in a given situation. It could have been the only way out of an otherwise-impossible situation. Whatever the reason, it's best to know why things are the way they are before you try to pay down the debt.

  • New cross-language test automation lists, feeds and classes announced

    Gábor Szabó writes:

    I have set up a newsletter called Test Automation Tips where I am going to send out various ideas I have on the subject. As someone who has been practicing it for several years and teaching it since 2003 (see QA Test Automation using Perl) I might have a few interesting things to say. Especially as mostly it is stuff I learned from the folks on the Perl-QA list. I hope it will be an interesting read. The tips will come from several languages, most probably Perl, Python, PHP, Ruby and JavaScript but I might give examples in Java and maybe even in .NET.

    In addition I have set up the Test Automation Discussion list, a public mailing list where people from the various languages and projects can come together and discuss their experiences. For example on the PHP-QAT mailing list there is currently a discussion on the addition of something called XFAIL which is very similar to the TODO tests in TAP. I am sure people from the Perl world could give their opinion there, but the same subject could be discussed on a cross language mailing list as well.

    For the RSS and Atom junkies I have setup a Planet called Test Automation Planet. It is aggregating blogs and is trying to filter on subjects related to testing. I'd be really glad to get more suggestions on what to add. Earlier I hardly read blogs but this already brought me several interesting entries.

    Lastly, I am going to teach my QA Test Automation using Perl course on 19-20, June, right after YAPC::NA in Chicago. The syllabus is here. The registration is on the same page as the other master classes organized by brian d foy: Master Classes after YAPC::NA::2008

    Gábor Szabó - born in Hungary and living in Israel - has been using Perl since 1995 and teaching it both in Israel and overseas since 2000 via his company, Perl Training Israel. He is the organizer of the Perl mongers in Israel and he has been organizing the YAPC and OSDC conferences in Israel since 2003.