YAPC::Europe 2010 Survey : Update

The YAPC::Europe surveys have now been active for two weeks. In that time we've had received a total of 112 Conference Surveys submissions and 769 talk & course evaluations. Without a doubt this is a fantastic response already. However, in the past we've come close to a 70% reponse rate, and I'm hoping that in the remaining 2 weeks we can encourage another 56+ attendees to also respond.

If you haven't responded so far, please consider doing so, as it really does help to provide information for future organisers to make YAPCs better, and gives more weight to future attendees to persuade their bosses that YAPCs are a worthwhile and valuable event.

If you were an attendee, you should have received a mail containing your personal keycode login. If you haven't please check your spam filters first, but if still can't find a copy contact me directly (barbie [at] cpan.org). A further mail will be going out to those who have yet to complete the survey in a weeks time, as a final reminder. The official closing date of the surveys is Friday 3rd September.

New WWW::Salesforce release and maintainer

I've taken over the maintainership role for WWW::Salesforce and have pushed out a maintenance release that resolves some long standing issues.

http://search.cpan.org/dist/WWW-Salesforce/

0.12 Tue Aug 17 19:34:00 2010 PST
- New maintainer PHRED
- Thanks to Mark Stosberg for several patches for this version
- Die with an error string instead of carping and returning
- Skip tests in automated testing mode
- Skip tests unless user, pass, and sectoken environment vars set
- Fix failing test - base64binary => base64Binary namespace change
- Perltidy file contents and remove unnecessary package scope braces
- Handle undefined return values from SOAP client
- Fix Type => type doc error in create()
- Add describeSObjects method [tom@eborcom.com]

Pod to ePub to iBooks (Part 2)

I blogged a small while back about converting Pod to ePub format for reading with iBooks or with other eBook readers.

The first release of App::Pod2Epub and pod2epub is now available on CPAN and GitHub and below are some screenshots.

This is a screenshot from an iPhone of four Perl eBooks along with some eBooks from the iBooks store. The Perl eBooks are displayed with the default cover image. User definable cover images will be enabled as soon as I have debugged it.

epub01.png

This image shows the table of contents for one of the eBooks showing chapters corresponding to Pod =head1 and =head2 levels.

epub02.png

Two book pages. The format of the text is configurable via user supplied CSS stylesheets. These images show the default pod2epub formatting.

epub03.png

epub04.png

A rotated page for better viewing of the code.

epub05.png

There are still quite a few things to add but if you encounter any issues or have any suggestions let me know.


Update: The option to add cover art has been added as of version 0.03.

Above my intellectual pay grade

I've been continually discouraged recently with various projects and endeavors. I've found that - while "stupid" is too strong of a word, "ignorant" should suffice - I will likely be unable to pursue certain paths while yielding positive results. "An intellectual FAIL," one might say.

It is not just in the realm of code, but well beyond it. I have a tendency for drama, I suppose, but it is still overwhelmingly clear that spreading oneself thin makes for... well, a rather thin layer. I've contemplated throwing the towel (and the water bottle, and the spit bucket, and half of the locker room) at my studies, my teaching and my projects and just hide under a rock, preferably with a lake-side view. Unfortunately there aren't a lot of lakes here.

If I would ever write a help book, I'd start it off with "Pace yourself." and end it there. That is clearly the most important lesson to teach, and the easiest for me to forget. However, does pacing actually relieve intellectual deficiencies? I'd like to see a test case that covers that, preferably in nice Devel::Cover colored HTML output.

What to know before debating type systems

Originally located at http://www.pphsg.org/cdsmith/types.html, this article explained some basic concepts of type systems. Unfortunately, that page is gone and I had to fetch it from the web archive of that page. The note at the bottom states that contents are in the public domain, so I think it's OK to reproduce here.

What follows is a short, brilliant introduction to the basic concepts of type systems, by Chris Smith.


I'm now on Slide Share

So far I stored my slides on my homepage. Now that I saw that every speaker at Pisa put his slides on that site. So I simply did too.

Kephra is doing very well. Still 7 or 8 issues to be fixed till 0.5 plus some feature, but we will get there I think before the german perl-community workshop in Frankfurt. We now have 2 more edit tools, updated docs, links to the bug and wish tracker in help menu and lost of more tests. And 2 more localisations are under the way.

If your a Kephra user, please blog about it. Not that I can brag with it, but that mst will eventually mention it in the right places and the strawberry perl people see the necessity to include it into the PRO edition (not decided yet).

I hate the param method from CGI

Scalar and list content is a nice and advanced feature of perl. Sometimes I think it's a bit too smart for us who use perl.

In our code we have a lot of method calls like this

$obj->foo( name1 => $value, name2 => bar() );

We do a lot of web stuff and often we like to pass the user input to a method like this:
$obj->foo( name1 => $value, name2 => $cgi->param("inputkey") );
This code is bad! It should be
$obj->foo( name1 => $value, name2 => scalar($cgi->param("inputkey")) );

This is because the call to param is in list content. The bug is nasty because it often has security implications. The user can give multiple parameters to the web-script and then overwrite the parameters to the foo method.

This is an example:
$obj->foo( is_superuser =>0, name => $query->param("name") );
The user is able to call foo in superuser mode if he calls the script with the querystring
?name=Anders&name=is_superuser&name=1

The 8 Millionth Test Report

I have been so busy with other things, that I had forgotten to keep an eye on the Interesting Stats page of the CPAN Testers Statistics site recently. I knew it would be arriving soon after YAPC::Europe, but completely missed it.

Congratulations to Andreas for posting the 8 millionth report. It was a PASS for Convert-NLS_DATE_FORMAT-0.02.

Cross-posted from the CPAN Testers Blog.

In other news:

Perlmongers Dinner


We'll be having a group dinner for the August meeting, and have
a few drinks after for those interested. This will mostly
be a planning meeting for future meetings, but all are welcome
for Perl discussion and agreat food.

"Naan-N-Curry" at 336 O'Farrell Street, between Mason and Taylor.

http://maps.google.com/maps?q=336+OFarrell+St,+San+Francisco,+CA+94102,+USA

This place has moved around a few times, and has many satellite
locations now, so look at that address carefully. This is across the
street from the Hilton, and next to the entrance to a large parking
garage.

From the Powell Street Bart station: walk two blocks north along Powell,
and 1.5 blocks west. Don't try to walk up Mason or Taylor, unless
you're in an adventurous mood.

The food is inexpensive, high quality Indian food. They have a buffet
these days, which makes things simpler. Free chai. The dining room
is double-sized, with large tables: there's no need to worry too much
about RSVPs.

What are magic hash key transformations

Some weeks ago I posted a brain-dump that only got reaction like that looks interesting, but I have no idea what you’re talking about, so I’m going to try to explain what I was doing.

Since 5.10, perl supports uvar magic on hashes, though I called it magic hash key transformations because that gives at least tries to describe what it does. This was implemented to make fieldhashes possible. It’s an interface that does only one thing: when a hash element is accessed in any way the callback is called. The callback can’t change the semantics of the operation (unless it dies), all it can do is change the value of the key looked up. So it can transform $hash{A} into $hash{B}.

Nothing more, nothing less.

AFAIK, there are only 4 modules on CPAN that use it

August Meeting of Erlangen.pm

On Monday we had our monthly meeting of Erlangen.pm. Because our usual establishement, the Trattoria Dolomiti, is closed for refurbishment we went to the restaurant Sofra. A nice turkish restaurant with lots of delicious mediterane food. There was a lot of road work outside of the restaurant so it took a while unless everyone of the seven attendencies arrived.

Sadly, one of our Mongers, gabimuc, is leaving the town. We all hope that she will find her way for the future. We hope that she will stick with Perl and that she will find a nice Perl Mongers group in her new home town. We want to thank her also for providing us with some appatisers that were allready close to a complete meal. For that I personally want to say to every Perl Monger, who couldn't make it to the meeting on monday: Ätschbätsch! ;-).

Filtering Subtests?

I wrote about speeding up Test::Class with subtests. That's worked extremely well for us, but it's raised an interesting problem: how can I filter subtests the way I can filter test methods? Explanation follows, suggestions welcome.

Powered by mod_perl

Here's a quick and easy way for you to advertise your use of mod_perl.

Add this to your Apache conf.


Header add X-Powered-By mod_perl/2.0

You should be able to add it to any appropriate section or directive. I added it right below "ServerTokens Prod".

YAPC::Europe 2010 - Thoughts Pt 3/3 - Organising A YAPC

When considering whether to host a YAPC, potential organisers often have no idea what they are letting themselves in for. While it can be very rewarding, and a valuable experience, it is hard work. There are plenty of things to go wrong, and keeping on top of them can be quite daunting. However, when you first consider bidding you usually look to what's gone before, and over the past 10 years YAPC events have come on leaps and bounds. This year, YAPC::Europe in Pisa, Italy was no exception.

iCPAN: Now Bigger, Faster and with Syntax Highlighting

Since we've been porting CPAN to the iPhone via iCPAN, we've had the chance to re-imagine the CPAN a little bit. We've been thinking, what would we change about search.cpan.org if we were able? We've added the bookmarking, we save searches of recently viewed modules and now we've got syntax highlighting.

A lot of us see our code highlighted in our editors. That's how we're accustomed to viewing code. So why not view it that way in our module documentation? (Now, we're fully aware that this can be done with GreaseMonkey, but it would be nice to have this available for everyone without needing to use a special extension). A great example is perldoc.perl.org, which does have syntax highlighting, but it only (as far as I can tell) does so for core modules.

Switching to Dist::Zilla - a usage report

For a while there has been a problem in one of my modules - the tests for Postscript::TextDecode make use of Test::Most which it turned out most CPAN testers don't use by default. That's fair. It was on my list of things to fix, but never with high priority.

Shortly after YAPC::EU::2010 I received a RT request from Andreas Koenig alerting me to the issue. At YAPC I had heard about this utility called Dist::Zilla which was supposed to make the managing of distributions a lot easier.

Off to CPAN. D::Z took a while to install but the install itself had no problems. I started reading the CPAN page and read Dist::Zilla::Tutorial. Since this was however limited, I directed my attention to the tutorial on dzil.org.

This tutorial has the style of a 'make your own adventure' children's book which was amusing. I found out that I could either start anew or switch my current distrubution over.

I decided to start anew and ran

$ dzil setup

Powered by mod_perl

Here's a quick and easy way for you to subtly advertise your use of mod_perl.

Add this to your Apache conf.

Header add X-Powered-By mod_perl/2.0

You should be able to add it to any appropriate section or directive. I added it right below "ServerTokens Prod". mod_header documentation

Git-backed wikis, Gollum, and simple installation experiences

bric-wiki-in-gollum.png

Last night I upgraded the Bricolage wiki on Github to the new git-backed wiki that Github rolled out last week. May sound like a trivial thing and not worth a blog post, but it’s quite the opposite, actually — the changes are (almost) revolutionary.

The first really interesting thing about the upgrade is that all of a project’s wiki pages are now simple text files in their own git repository. Now I can update these pages anyway I like, in any one of several markup languages, including POD. On it’s own, that’s pretty useful — now I can clone a project’s wiki along with the project itself and submit changes back as I would any other changes via Git.

Benchmarking string trimming

Clever Regexps vs Multiple Simple Regexps:

In reading some code I ran across the expression s/^\s*|\s*$//g which is a trim function. It is not the optimal way to write this. The optimal way is two simpler expressions: s/^\s+//; s/\s+$//. Justification follows.

Conclusion:

  • Use of + instead of * means regexps that will would do no effective work will also fail to match. Failing to match when the work would be useless yielded some 3x to 4x improvement.

  • Use of multiple simpler patterns like s/^...//;s/...$// instead of compound patterns like s/^...|...$//g enabled boundary checking optimizations.

Testing:

String length:

long:  +80 chars
short: -80 chars

Pre/postfixes:

YAPC::Europe 2010 - Thoughts Pt 2/3 - Promoting A YAPC

This year, YAPC::Europe was reasonably well attended, with roughly 240 people. However, a few weeks prior to the event, the officially registered attendees for YAPC::Europe 2010 was considerably lower. Although every year it seems that many register in the last 2 weeks, there is usually a higher number registered before then. So why did we have such low numbers registering, until just before the conference this year? I'm sure there are several factors involved, but 2 strike me as significant.

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.