On Sun, 30 Nov 2008 02:34:46 +0000, Lyle wrote:
> I don't take a lot of notes. Everything (I think) was recorded so you'll
> be able to watch the bits that interest you.
I take a few more notes than Lyle, so here are my impressions:
I had to get up at 5:45, to catch the 6:30 train. Despite the freezing
weather, there were still revellers hanging around a couple of the clubs
I passed on my way to the station, who had presumably been partying all
through the night. I can only admire their stamina, regardless of its
foolhardy application.
The trip to the venue was pretty uneventful, other than my surprise and
disgust at the cost of a Zone 1 single fare. Four quid for a 15 minute
journey! However, as soon as I got there, I was obliged to carry an
incredibly heavy box of books up to the O'Reilly stand. I was a bit
confused that all of Josie's boxes had Wiley's branding rather than
O'Reilly's, despite their contents. What's the relationship there?
After a bit of random milling about, everyone headed into the main lecture
hall for Mark Keating's introduction to the workshop, after which was
Dave Cross's very entertaining history of London.pm. I especially liked
the fact that this talk included a mention of the outrage caused in some
parts of the community by the "Perl is my bitch" T-shirts, yet ended
with the famous photo of Graeg McCarroll and the camel, underlined by
Dave's final words: "We f*ck camels!"
Leon Brocard gave a quick run down of 10 of his modules that he hasn't
already talked about. My favourites were:
* App::Cache, which caches arbitrary perl data structures for a set
amount of time. Useful if you don't care about the size of the cache,
and has a handy convenience method for transparently caching web pages
* HTML::Fraction, converts strings like "1/5" into character references
like "⅕", as used in Leon's recipe database
* Image::WorldMap, plots points on a world map image, with optional
labels which don't overlap, as used by the Perl monger World Map
* Term::ProgressBar::Simple, displays a progress bar controlled by a
simple tied variable
David Cantrell tried to convince the masses that closures are actually
simple, and extremely useful. His view is that they are basically
code with data attached; the inverse of objects, which are data with
code attached. He also made a good analogy between the class/object
distinction and the sub/closure distinction. Unfortunately, the example
from CPU::Emulator::Z80 focussed too much on the details of z80 emulation,
and not enough on the benefits gained by using closures. The other
example from Sort::MultipleFields was more lucid, but a diagram would
have been a big help to anyone who can't convert from unfamiliar code
to data structures in their head.
Adrian Witas was almost completely impenetrable when talking about
Abstract::Meta::Class, which he was supposed to be presenting as an
alternative to Moose, but didn't make that clear at all. In point of fact,
he didn't make anything clear at all. AMC may indeed be the bee's knees,
but Adrian failed to give any kind of rationale for its existence or
its differences from Moose.
Mike Whitaker did a good job of introducing Moose, showing a bunch of
cool features. Moose seems to do an excellent job of removing boiler
plate code, and turning class construction into the kind of declarative
affair which other languages enjoy.
Then I went to Matt Trout's talk on Acme::Yorkshire, which I was just
expecting to be a surface-level explanation of a module which converted
text to Yorkshire dialect, much like the Swedish Chef translator
module which I can no longer find. Instead, it was a description of how
Devel::Declare can be used to radically alter perl's syntax, enabling
the creation of new control constructs such as:
method($foo,@bar){
# $self is available, and there's no need for a trailing semi
}
It took me a while to acclimatise to Matt's presentation style, in which
the slides at first didn't appear to match up with what he was gleefully
bellowing about, but this was a fascinating, funny and frightening talk.
Due to the press of perl mongers in Subway at lunch time, I managed to
get a free cookie, because the lone girl behind the counter couldn't
spare the time to wait for me to find the correct change. That's the
power of bulk buying!
After lunch, I went to Andy Wardley's "Badger Power" talk, which still not
having read any of the abstracts, I was was expecting to be about Template
Toolkit. I've only briefly tried TT during an aborted rewrite of a major
system at work, and would like to give it a better try at some point,
so this seemed like it would be reasonably useful to me. However, Andy
was actually talking about his new Badger lightweight foundation classes,
which provide simple and consistent APIs for all manner of highly useful
features: error handling, debugging, exporting, lazy loading, constant
declarations, en/decoding, testing, file name and handle manipulation,
and last but not least, class construction, which combines basically
all of the above. This was a great presentation of what looks like an
incredibly useful set of tools. Next time I need to create a new class,
I'll probably use Badger.
I caught the last few minutes of Abigail's character class talk, which
overran not only his scheduled slot, but also the intersession break. The
bit I saw reminded me that perl allows you to create your own reusable
character classes, which could cut down some level of repeated code,
but I'm not sure it's of major use to me at the moment.
Abigail's overrun meant that Joel Berstein's interesting talk about
XML::Pastor was seriously rushed. Pastor looks like a nifty way of mapping
simply between perl classes and XML Schema. It's basically ORM for XML,
which could be really useful for me, except that most of the XML I handle
at work uses DTDs rather than schemata.
Then I had the misfortune to attend another talk given by Adrian Witas.
This one was about ORM, specifically Persistent::Entity. Adrian again
failed to give any indication of the benefits of this module over the
alternatives. I considered escaping to Tim Bunce's profiling talk about
Devel::NYTProf, but I'd already asked a question, and there was only
about three other people in the room, so that didn't seem very polite. I
should have had the courage of my convictions, as Tim's talk was voted
one of the best in show.
Never mind, osfameron's talk on functional programming was another
instance of Devel::Declare to the rescue, giving perl native-looking
currying, monads, list comprehension and pattern matching (of function
arguments to multiply defined subroutines, not of strings to regexen),
or as osfameron put it, "combining general perl evil with the goodness
of haskell". Like the Acme::Yorkshire talk, this illicited gasps, moans
and laughter from the audience, and I for one can't wait for Acme::Monad
to be released.
Then it was the lightning talks, which were all good, for a variety of
reasons:
Action Aid presented a video showing how the money from the raffle would
be spent.
Leo Lapworth presented his 20-minute "DBIx::Class for (advanced)
beginners" talk in only five minutes, but still managed to make sense,
and teach me something new.
Someone whose name I forget presented TAP::Formatter::HTML, build on
top of TAP::Parser, which produces a fancy HTML page from the output
of a perl test. This is a simple overview with drill-down capability,
making it easy to save and interpret your test results.
David Leadbeater presented his work on Wikipedia summaries, which enable
searching Wikipedia via a variety of interfaces. Of special interest
was the DNS query method: host -t txt perl.wp.dg.cx
Edmund von der Burg showed his scarily short Sudoku solver (3 lines of
less than 80 characters), and expounded on the virtues of perl golf:
thinking about problems in a different way, and understanding exactly
what every part of your code is doing.
Paul Makepeace gave some details of what investor-dynamics.com does,
and invited job applications.
Matt Trout loudly disputed the view which he thinks most people have; that
they aren't good enough to contribute to the community. Everyone should
write reuseable code and post it on CPAN. Failing that, submit patches
to module authors. Failing that, submit tests, so they can at least see
what the bug is, and know when they've fixed it. Or while you're still
learning how to use a module, write up your experiences as documentation,
since you know what problems you're facing, which the author has probably
forgotten about.
Finally, the raffle. The winner of the iPod donated it to Mark Keating,
who as organiser wasn't allowed to participate. Mark promptly auctioned
it off to raise another GBP107.01 for Action Aid.
Just before heading off to the pub, Greg McCarroll handed over the reins
of London.pm to Leon Brocard. The pub was reserved in its entirety for
workshop attendees, and the food and drink was all paid for by sponsors of
the event, though the room was a bit too packed for even distribution of
comestibles. Nevertheless, this was a great opportunity to match faces
to names, and I had some interesting conversation with Tim Bunce and
Paul Makepeace.
Lyle and I left relatively early, in case of bad traffic. It took overly
long to crawl out of London, and we were beset by roadworks and a patch
of incredibly thick fog on the motorway. Even so, we got back to Bristol
before midnight, which I hadn't expected at the start of the day.
All in all, a great day out. I'm looking forward to next year.
--
Peter Haworth [EMAIL PROTECTED]
"Birds naturally prefer early binding to late binding; worms will
naturally disagree. Rolling stones gather no type constraints."
-- Larry Wall
_______________________________________________
BristolBathPM mailing list
[email protected]
http://mailman.bristolbath.org/mailman/listinfo/bristolbathpm