A few weeks ago five Perl developers, myself included, were lucky enough to be sent to the annual Perl conference YAPC::EU. YAPC::EU was a four track conference, held over three days, in the Eastern European city of Riga, in Latvia.
The theme of the conference was “modern Perl” and I was organised enough to take some notes during the talks I attended. For the benefit of those unable to attend, here’s what I saw and heard.
Keynote – Larry Wall
This talk was about post-modern Perl, or “pomo” Perl, as it was referred to. Perl 6 is post modern Perl. Perl 6 was based on 361 reasons to hate Perl. Perl 6 is the response and the solution. But Perl 5 is also evolving. So maybe Perl 6 is post-post-modern. Also, Larry likes Riga, there were many photos…
How to avoid screwing up your business application
This talk was rather interesting despite the misleading title. I had assumed it would be a “lessons learned” type of talk based on past battle scars and such. However, it was actually about an interesting way to architect applications. It seemed to be based around DDD and it being okay to have multiple models of your data.
So, for example, you would have one highly normalised model, well suited to writing data. And you’d have another very denormalised model, well suited to reading data. There would be a bridge in between, which would update the read model when new writes were performed. It went into quite a bit more detail than this and it might deserve a longer write up in the future.
The principles behind it were apparently first introduced in Martin Fowler’s article: “The LMAX Architecture”. Sorry, I wrote this down in my notebook but it’s not that relevent. This Command Query Responsibility Segregation article must be what the speakers meant to reference.
Ubic – flexible perl-based service manager
This was a kind of marketing/introduction to Ubic, which is a Perl-based service manager developed at Yandex (the Russian search engine). It’s billed as an alternative to daeomontools, god and others. It’s apparently LSB compliant and it includes a “watchdog” component, which can be used to restart services if they die or exceed pre-defined thresholds.
Replacing Relational DB with Redis: a Case Study
I walked into this talk wondering how they were going to replace a relational db with redis; when redis is “merely” a key/value store. Well, it turns out that the data being stored in the relational database was not really relational at all; it all made a lot more sense.
The main take away was that Redis is very fast and may be well suited depending on the nature of the data you’re trying to store. An interesting thing they did was to store the various representations of the data they needed, so they could grab it with one lookup, rather than with more complex queries and/or application processing. He also mentioned that it’s worth using the 32Bit version of Redis, if the data you’ll store will be less than 4Gig in total.
Why time is difficult
Time is difficult. It’s too complicated for a normal person to worry about. We’re all doomed.
Smoking The Onion – Tales of CPAN Testers
Lot’s of people are sending test reports to CPAN Testers. They’ve projected to receive over a million test reports this month. If you’d like to help, the message was: they have Linux covered, please use an alternative operating system!
(Re)Developing in Perl 6
This was an interesting talk about Perl 6. It was part: “Perl 6 is awesome, check this out” and part: “Perl 6 is screwed without CPAN”. One excellent quote was “Perl is life support for CPAN”. Most of the talk centered around how to port Perl 5 modules to Perl 6 and the end messages was: “please start porting your modules to Perl 6”.
Monkey-patching, subclassing, and accidental overriding
This was an interesting talk about the perils of monkey patching. Followed by a safe way of monkey patching in Perl. Instead of me regurgitating the talk, there’s an paper on the topic (which the talk is based on) you can read instead.
Benchmark::Perl::Formance for the masses
AMD released a test framework called Tapper. They use this to check the performance of various flavours of Perl. It could be useful if you write applications that you intend your users to install, rather than a hosted application.
Dancing into Web Development
This was a hands on Dancer tutorial, which I didn’t really see much of as I was helping someone work through the examples. Tutorials are hard but some people seemed to really enjoy it, which is great!
Demystify file system hierarchy for deployments
I was hoping for some insight into deploying Perl applications but to be honest this talk was a little unfocused. That said, a few interesting technologies were mentioned:
- PAR, Shipwright, Carton – three different solutions for packaging Perl applications and their dependencies.
- CPAN::Mini::Inject – injecting custom modules into a private CPAN mirror.
- POD::Pom::Web – local perldoc server.
- CPAN::Patches – custom patches for CPAN modules.
Cool, bonsai, cool – An introduction to ElasticSearch
I hadn’t heard much about ElasticSearch, apart from it being used by MetaCPAN. Turns out it’s like Solr, in that it’s a search engine built on top of Lucene. Unlike Solr, as far as I understand, it has some neat features baked in around scalability:
One of the main features of Elastic Search is its distributed nature. Indices are broken down into shards, each shard with 0 or more replicas. Each data node within the cluster hosts one or more shards, and acts as a coordinator to delegate operations to the correct shard(s). Rebalancing and routing are done automatically and behind the scenes.
Clinton Gormley, the speaker, is also the author of ElasticSearch, an API for communicating with ElasticSearch clusters.
Plack basics – website best practices
This talk was a decent high level overview of Plack and PSGI. Worth a look if you’re not quite sure how Plack can help you or want to see some handy middleware examples.
Adventures in Marketing
Mark Keating. Marketing… If anyone should be marketing Perl, it should be Mark Keating, right? Well actually, it should be everyone! Mark Keating has been working on press packs [PDF], leaflets/posters and redesigning The Perl Foundation website. He’d like your help putting up the posters and showing off Perl.
Perl 5.16 and Beyond
You can view the slides here. Suffice to say, the futures bright: sane defaults, removing cruft, backwards compatible, as far as possible, unless you explicitly request new features etc.
Modern Perl – getting there from here
A tale of how Venda (a hosted e-commerce platform) have tried to modernise their Perl platform. It was reasonably interesting to see how a company copes with an organically grown, ten year old application. Part of their solution is:
- replace home rolled code (custom ORMs, frameworks etc)
- enforce a proper code review process
- split a monolithic application into modular services
- farm out complex processing to third parties (e.g. tax calculations)
- enforce/encourage a culture of testing
- use tools like perl critic
This was a meta talk about Perl training. People seem to love free Perl training but there aren’t enough companies willing to sponsor space to hold the training. Hmm, I wonder if I can think of any companies that could provide this….?
The Legend of Data::Query – a LINQ’s awakening
I was eager to catch at least one talk by mst. This talk was about the short-comings of DBIx::Class, and a work-in-progress successor, Data::Query. It looked like Data::Query will be quite powerful when it is production ready.
Perlude: a taste of haskell in perl
How I learned to stop worrying and love threads
I wasn’t actually sure what talk to watch/listen to at this point so I sat in the comfy main room and read my new book (I thought I did well to only come away with one book from shiny O’Reilly stand).
Lightning talks & other stuff
There were lighting talks at the end of every day. A couple of interesting things mentioned:
- GraphViz::DBI::FromSchema – create a giant diagram of your database schema. Print it out. Stick it on the wall!
- Google Code In – like Google Summer of Code but for pre-university students. Happily accepting tasks like bug fixing or documentation for Perl modules. A good way to get young students exposure to the Perl community.
That was pretty much it, aside from tasty beers and soup that came inside a bowl/loaf of bread. Pleasant city and an interesting conference. Next year YAPC will be in Frankfurt.