Swiss Perl Workshop -2 Weeks

Only two weeks until SPW 2104. :-)

There are still some seats free. The organisers would like to ask for timely registration to make it easier to buy food, drinks and appropriate amount of fun. Inadvertent last minute show-ups only get water, dry bread and seats in the hallway. ;-)

Attendees, please leave your preferences and allergies here, so that our kitchen team can try and take these into account. This is especially important for the attendees dinner, taking place at the venue, but also for the lunches and coffee breaks.

Also, and especially if you are from Switzerland: Help tilt the Kickstarter Campaign for brian d foy who wants to work for his expenses and is going to teach "Mastering Perl" after the workshop, in Switzerland. The campaign is well underway, but could use a little more love, especially local love.

See you in 2 weeks at the Flörli in Olten.

Thanks to our sponsors: | | | O'Reilly | WSIWLT GmbH

Please don't use ::Tiny unless it meets the ::Tiny criteria, thanks!

Don’t get me wrong, I really, really, really appreciate effort put into making something as small and efficient as possible.

However, it seems like we have a recent trend of using ::Tiny for things that do not meet the actual criteria of ::Tiny.

That is bad because seeing ::Tiny gives a certain expectation that, when not met, could be surprising, even bad.

Just because it is way less bloaty than something, like say, Moose: still not necessarily “::Tiny”.

Here are the rules Adam Kennedy originally defined for what ::Tiny means:

  1. The module should be implemented in "as little code as possible"
  2. The module should implement a useful subset of functionality
  3. The module should use at least 1/10th the amount of memory overhead, ideally less than 100k
  4. The module MUST have no non-core dependencies
  5. The module MUST be only one single .pm file
  6. The module should be back-compatible to at least 5.004
  7. The module should omit functionality rather than implement it incorrectly.
  8. If applicable, the module should be compatible with the larger module.

If you have a module with ::Tiny in the name space then please either make it ::Tiny or rename it.



YAPC::Europe Day 2

Just while I was having a shower, the hotel had a 5-minute power cut. I decided to walk down the stairs to breakfast.

Another day of two breakfasts, one at the hotel and one at the conference venue (even more Баница) while meeting everyone.

Today I've mostly stayed in the "Devops" track as I've been doing a lot of web operations recently.

First talk of the day: SyContent - Content in the Cloud with V8. Torsten took us through the history of content management systems. He explained how he thinks content management should work, with Perl, PHP, static JSON files and V8.

Then Docker with Perl - an Introduction where Denis explained what Docker is and how he suggests we use them with Perl, although he doesn't run Docker in production yet. He explained that it really comes out of a DevOps culture. I currently use Docker to package the applications on my personal servers, so perhaps I'm a little too experienced for this talk. I particularly like the Docker workflow.

Type::Tiny Tricks #7: Tricks with Dicts

In Perl, hashes are typically used for two sorts of purposes: maps (where the hash key acts as an object identifier) and dictionaries (where the hash key acts like a field name). A quick illustration of what I mean by this:

   # Maps
   my %ages = (
      alice   => 24,
      bob     => 25,
      carol   => 31,
   my %email = (
      alice   => "",
      bob     => "",
      carol   => "",
   # Dictionaries
   my %alice = ( age => 24, email => "" );
   my %bob   = ( age => 25, email => "" );
   my %carol = ( age => 32, email => "" );

These are two different styles of using hashes. Sometimes one is useful, and sometimes the other is. Sometimes neither is better and your choice of one over the other is fairly arbitrary.

Types::Standard contains a type constraint called Map which is useful for validating references to the first kind of hash. (I copied the idea from MooseX::Types::Structured.) But today I'm mainly going to talk about another type constraint: Dict. (Yeah, I copied that one too.)

YAPC::Europe 2014, day 2

(cross-posted from

Ignat Ignatov talked about physical formulas. When I was planning to attend this talk, I thought it is going to be some sort of symbolic formulas computation, possibly with an analysis of dimensions of the physical quantities. However, despite my (a bit long in the tooth) background in physics, I did not understand a word of it. Apparently, some sort of unification of physical formulas, not entirely unlike the periodic table in chemistry, was presented, with almost no comprehensible details and with scary words like co-homology and algebraic topology. The fact that half of the slides were in Russian, while irrelevant for me personally, probably did not help matters for the majority of the people in the audience. I did not expect any questions at the end of the talk, but there were at least two, so I was probably wrong about general level of understanding in the audience.

YAPC::Europe 2014, day 1

(crossposted from

When I came to the venue 15 minutes before the official start of the registration, people at the registration desk were busily cutting sheets of paper into attendees' badges. Finding my badge turned out to be a tad not trivial.

This conference is somewhat unusual not only because it is conducted over the weekend instead of in the middle of the week, but also because the keynotes for every day are pushed till the end, even after the daily lightning talks session.

The welcome talk from Marian was about practical things such as rooms locations, dinner, lunches, transportations and so on. Then I went on stage to declare the location of YAPC::Europe 2015 (which is Granada, Spain by the way). After that Jose Luis Martinez from did a short presentation of YAPC in Granada, and Diego Kuperman gave a little present from Granada to Sofia.

YAPC::Europe Day 1

A day of two breakfasts, one at the hotel and one at the conference venue (more Баница) while meeting everyone.

First big announcement of the day was that YAPC::Europe 2015 will be in Granada, Spain.

And then the first talks of the conference. I chose to attend Welcome to Auditing and toughening as part of the Security Development Lifecycle which was an interesting look at how hardening a system is just a small part of the security development lifecycle. John highlighted the importance of a threat model and how avoiding vulnerabilities as early as possible is the only way to go. He went though a few practical examples of where was the best place to fix

Over sandwiches at lunch we had a little discussion about the compromises between fixing vulnerabilities and maintaining backwards compatibility.

The Wi-Fi has been a little spotty, but mosh make it usable.

Next up was Code I'm proud of: where Thomas explained lots of little hacks, from passwords and Bread::Board to microblogging.

Type::Tiny Tricks #6: Tricks with Tuples

Let's say you want an attribute to accept a pair of numbers - perhaps a geographic co-ordinates [ 50.873, -0.002 ]. You could constrain the attribute as ArrayRef[Num], but that would accept an arrayref containing a single number, or eight numbers, or even a reference to an empty array.

With the Tuple type constraint, you can be more exact in expressing which values are acceptable:

   isa  => Tuple[ Num, Num ]

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is run by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.