The October that will never be

There's a thread on the Israeli Perl mailing list regarding "What don't you like in Perl". There are the usual answers (Perl thread model is a disaster, Perl OO model does not go well with scotch etc.), but the real answer is only revealed on another thread, where a guy who made the unfortunate mistake of replying personally is getting berated for three or four paragraphs, before is also accused of "Top-posting".

Now, for the record, netiquette was invented by a bunch of nerdy snobs who really wanted something to use when explaining why others are not worthy of their time. The less people obey them, the faster we can get to a point where corporations are willing to listen to what "geeks" have to offer, since every time an "Enterprise" guy is looking in a Perl mailing list, all they see are bunch of petty "you do not follow rule 23 of how I want the world to act".

It's also hard to explain the benefit of the "Unix culture" to anyone who just was told to "RTFM means read the FUCKING manual, FUCKER" on #DBIx-Class. It's even harder when said someone is the owner of the leading Perl/Catalyst company.
OTOH, DHH is also known to be an F-bomb terrorist so maybe it's a prerequisite or something.

Now With Go-Faster Stripes

If you've ever had a look at the Status page on the CPAN Testers Reports site, you will likely have noticed that typically the graphs show 4-5 lines on any given day. This has been pretty much the case since I added this monitoring feature, and supported the fact that it could take up to 5 days for a less common page to be rebuilt.

However, over the last 2 weeks that has been changing, to the point that from about 4pm CET yesterday (24/11/2010) the builder only had requests less than 24 hours old. It appears there are three reasons for this.

The first is that we have seen a reduction in report submissions over the past few weeks. Having said that, the submissions during October was rather substantial, topping over 500,000 submissions, so it's not too surprising to see a reduction. And to be fair looking at the Monthly Stats, we have already had over 300,000 report submissions this month, so it's not been a quiet month either.

CatatlystX::ListFramework::Builder finally removed from CPAN

This note is to announce that I've just now, finally, removed the old CatalystX::ListFramework::Builder distributions from CPAN. Don't worry, the module has long been deprecated in favour of its more popular replacement Catalyst::Plugin::AutoCRUD.

This moment cannot pass without thanking Andrew Payne and Peter Edwards for creating the ancestor to them both, CatalystX::ListFramework. I believe Peter had the thought to provide some kind of simple web access to database tables, and prodded Andrew into creating the ListFramework. Whilst out at a miltonkeynes.pm meet one evening, I discussed forking the code to make it more automagical and to allow the use of an AJAX UI which Peter had good reason for not wanting at the time. And so ::Builder was born.

I'm looking forward to the future of ::AutoCRUD. More time is available to me since I changed job recently, and there is a bunch of ideas waiting in the queue. If you have suggestions for AutoCRUD's wishlist, please do create a simple RT ticket against the module.

Where Have You Been All My Life?

I've only known you for a few months defined-or but if you leave me know you'll take away the biggest part of me.

State vars, lexical $_, smart matching and switch statements are all wonderful as well.

A big thank-you to all you perl 5.1x contributors out there.

Grantreport - Perl 6 Tablets - third week

Remember what I wrote in my first 2 reports? "tablet 2 is finished." And I still had to add something. And also the Perl 6 trends doubled in size since i first wrote: ready !! :) If you really wonder what Perl 6 is about here you have all the thoughtwork in a few lines.

The index has now 577 entries (many rewritten). contextualizer table overhauled and
Tablet 3
is nearly half ready. But much more important: all the usable parts are now up to date. It was all in all 70-80 edits which start to annoy the #perl6 people. #sorear++ was so kind to add the wiki URL to what dalek (a #perl 6 chatbot) watches. This makes all my changes visible to the core people and lurkers. Not to collect karma (buddha says also good karma binds you - freedom means no karma) but to integrate and maybe raise awareness so that maybe other contribute. After all we need good docs that are easy to read and navigate. it would help much more when daleks messages would report what I currently changed, but since socialwiki doesnt do good difs nor support change subjects for the author to fill in, we have an semioptimal solution. i want to have this wiki updated/replaced anyway. any help ???


BTW:
im really proud of...

"Money spines paper lung..."

"...kidney bingos organ fun"

Congratulations to BinGOs, aka Chris Williams, on reaching 3 million test reports submitted. Chris alone now accounts for slightly under one third of all the test reports submitted to CPAN Testers!

Since joining the CPAN Testers community, Chris has been a valuable asset, both in terms of the diversity of the testing platforms, and also for his ability to push the testing infrastructure beyond the limits we anticipated.

With the stagnation of the CPAN-YACSmoke distribution, Chris eagerly stripped it down and rebuilt it into CPANPLUS-YACSmoke, providing a stable basis for testing with CPANPLUS once again. Since then Chris has expanded his knowledge of distributed testing, and developed more applications and modules to support various styles of smoke testing, from his POE plugins to smokebrew.

Well done Chris, and here's to the next 3 million!

Cross-posted from the CPAN Testers Blog

Perl, Thread and shared scalar example

This is a simple code that show an example about use thread::shared to share a variable in thread context.

Two RegExp bugs in Internet Explorer 8

It turns out there are at least two bugs in IE 8's Javascript regex engine. One of them is widely known, the other one doesn't seem to be.

Testcase: /^(?:(?=(.))a|(?=(.))b|(?=(.))c)/.exec('bar')
Correct result: ['b', undefined, 'b', undefined]
Actual result: ['b', 'b', 'b', '']

The last '' is the known bug: capturing groups that don't participate in a successful match are set to '' instead of undefined. Slightly annoying, but not too bad.

But the 'b' at index 1 is just wrong: The first capturing group was entered, but that branch failed (because the target string didn't start with an 'a'). At this point all captures from this branch should have been reset to their previous state (in this case undefined (or '' for IE)). That didn't happen.

End result: we get a successful match, but the captured strings may have completely bogus values.

I think this is pretty funny because I once wrote a toy "regex engine" when I didn't really know anything about bytecode or automata or anything. It used "brute force" backtracking based on recursive function calls (no explicit stack). Well, it had that exact bug ... until I noticed and fixed it a few months later. In other words, this is a beginner's mistake in state management/backtracking.

I'm pretty sure Microsoft does some testing before it releases software. Didn't anyone notice this?

Perl "Certification" - still Snake Oil

I think "certification" for most software is snake oil.

And, despite the participation of fellow Perl trainer Peter Scott (whom I have the highest respect for), and my primary publisher O'Reilly (whom I also have the highest respect for) in a new "Perl Certification" program, I still think this is snake oil.

Therefore, I will be discouraging individuals from taking such courses, and HR people and clueless managers from looking for such certifications, particularly demanding them to be considered for an application. I will continue to work hard with my clients and my fellow contractors to have actual track records be considered, not some test one has managed to pass and pay for.

Please, people. Don't feed the trolls.

Returning from Roller Derby

After 2 months of intense training, my Roller Derby (player) experience finally culminated on Saturday in an epic no-quarter-given boys vs girls demonstration bout, in which both teams fought to a 63 - 63 score at full time, and then to 75 - 75 after the tie break.

With both teams exhausted, the captains graciously decided to call the game and the final result was (we believe) the first draw ever!

With the game over, and the larger season pretty much over as well it's time for me to return to Perl again, starting with my talk at OSDC.AU on Wednesday, "Developing on Open Source platforms with a billion dollars as stake".

Perl v5.13.7 released

Painless Memcached Configuration With Catalyst & DBIx::Class

This tutorial will show you how to: Dependencies:
Memcached: Catalyst Plugins: DBIx::Class:

So dump all those in your Makefile.PL and you're halfway there.

First we edit your Catalyst app's base package. Open up your version of MyApp.pm and add:


    use Cache::Memcached::GetParserXS;
    use Cache::Memcached;

This will tell Cache::Memcached to use the XS Parser.

Now, in the section where you load your plugins, add the new ones in:

    use Catalyst qw/
        ConfigLoader
        Session
        Cache
        Session::Store::Cache
    /;


Now, configure Catalyst::Plugin::Cache. Here's an example for etc/myapp_local.pl:


Talk: Structured Wikis at Work - Enterprise 2.0 in Action


Peter Thoeny will be speaking on Wikis at our next meeting on November 23rd at LookSmart.

A enterprise wiki enables teams to organize and share content and knowledge in an organic and free manner, and to schedule, manage and document their daily activities. A wiki can also be used as an intranet where employees contribute content collaboratively, replacing a webmaster maintained intranet.

This talk explains how wikis can be used at the workplace, including initial rollout, social aspects and security concerns. It also explains how teams can use TWiki, a leading open source enterprise collaboration platform, to build tailored wiki applications supporting their workflow and business processes. Learn how a structured wiki can bring Enterprise 2.0 into the workplace.

______
Agenda

* Enterprise Collaboration
* Demo of Structured Wiki
* What is TWiki?
* Structured wikis
* Collaboration challenges at the workplace
* Wiki champion
* Initial deployment of a wiki
* Overcoming barriers to adoption

___

Outputting pretty data structure on console programs

Our application has a command-line API interface for convenient access via shell/console. It used to output API result data in YAML:

Mobile Software, Unix/Linux, and Me

Tim Bray's 3 Mobile Software Rules may just be a case of Maslow's "If the only tool you have is a hammer, everything looks like nail" to me -- but the simple designs you would get if follow Tim's rules echo Unix/Linux design to me -- no complications (no separate Exit routines & loose interconnections & few decorations). Whether you are in .NET like I am on workdays, on the bleeding edge of HA web design, or down to the metal in embedded software design, simple designs always seem to end up working the best.

Method Extraction in Vim

I'm hacking on code with some methods which are fairly long (inlined code for performance), but sometimes I have to extract some code out into its own method. Padre uses Devel::Refactor for this, but I didn't want to go down that road as it doesn't use PPI. Thus, I hacked my own using PPIx::EditorTools. It's not great, but long-term, I think it's a more robust solution.

YAPC:NA 2011 -- Asheville, NA

We have been remiss in announcing more widely that the Call for Speakers and Call for Sponsors for YAPC::NA 2011 is open. For those of you unaware YAPC::NA 2011 will be held June 27th-29th in Asheville, NC.

More information about YAPC::NA can be found on the website http://yapc2011.us.

The proof Perl gets you laid

Of course we already knew it, but now we've got proof!

the_proof.png

Grantreport - Perl 6 Tablets - second week

Tablet 2 was ready, i just completed and moved the trends section, because there not really language design priciples, mere consequences from that and a great introduction into the Perldelta.

Most work gone into the third - Variable Tablet which now start to get substance. the basic structure and lot of content i took from the german version even some lines from the wikibook programming perl, but most of this is written several times over. some parts are also removed because they will inserted on some later point.

i really hope that i didn't wrote too much in the first lines but its ment to be dense. The tablets are not about teaching you to programm nor teaching you to program perl 6 (take the open source book for that). The tablets are about finding a specific information as fast as possible. its an encyclopaedia, but written in a way you could actually learn the language from it, given you have the discipline only read what you need for the moment and ignore the rest you don't understand.

Nevertheless i plan another apendix, a cookbook section, to get a taste of real world perl 6 code.

Comparison of INI-format modules on CPAN

I'm not terribly happy with the state of Perl/CPAN support for the INI file format.

I have this requirement of modifying php.ini files programmatically from Perl like: set register_globals to On/Off, add/remove some extension (via the extension=foo lines), adding/removing some functions from the disabled_functions list, etc. So I would like to find a CPAN module that can just set/unset a parameter and leave formatting/comments alone as much as possible.

Turns out that among a dozen or so of INI modules on CPAN, a few of them do not do writes at all (e.g. Config::INI::Access or Config::Format::INI). And a few that do, write a la dump. That is, they just rewrite the whole INI file with the in-memory structure. All comments and formatting (even ordering, in some cases) are lost. Example: Config::INI::Writer and Tie::Cfg. And, last time I tried, I couldn't even install Config::IniHash from the CPAN client. Not good.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.