Hacking Thy Fearful Symmetry

The Chronicles of Yanick: Rise of the Perlmongers

July 8th, 2011
PerlYAPC::NAYAPCAshevilleconference

The Chronicles of Yanick: Rise of the Perlmongers

Recap from our previous episode:

Two Sundays ago, I wake up at a hour that is so intrinsically foul that is has been banned in at least seven timezones. But I'm happy, 'cause I'm gearing up for YAPC::NA 2011, aka my very first YAPC ever (yay!). And because I have no clue that Fate's bony finger is hovering atop the 'cancel' button, waiting for me to get in the trap, waiting for the right moment to stab that key like an epileptic woodpecker (more details on that later). For the time being, all is sunshine and my flights go silk-smooth. Upon my arrival in Asheville, I encounter the Ghost of Past YAPCs, appearing under the guise of Ingy. We agglutinate with other Perl hackers and head for the Crowne Plaza. There I meet fellow canuck Mike and, after a few hours, the early conferencees move to Lab, a local restaurant/pub where I have a very nice plate of nachos covered with bits of ground Bambi. Very yum.

That was day 0. But now, I wake up in a strange (although nice, and provided with complimentary mints) room. I am disoriented, but then I remember: this is Asheville, this is Monday June 27th. This all means that...

The Conference is on

As it was my very first YAPC, I stuffed my schedule as if I were a child left alone in a bakery and the talks were cakes. Consequently, I ended up booked solid from 10am to 6pm for all of the three days of the conference. Next time, I will probably go a little easier on the talks and give myself more room to attend hackatons, BOFs and whatnots. But for a first time? Walking the talks was the way to go, both to get a feeling of the conference and to take advantage of the occasion and connect all the Perl big names with their wetware implementations.

(Incidentaly, I chatted with some peeps later on and there are very tentative proto-ponderings to see if the events could be stretched into 4 days to give more room for para-talks activities. I think that would be excellent, although I half-suspect 3 days might be a sweet spot for the logistics of going AWOL for lot of us. Ah, we shall see.)

Talks, Talks, Talks

I will not cover all of the talks that I attended (because, frankly, I want to be done writing my YAPC::NA 2011 retrospective before the 2012 edition begins), but here are a few choice pieces that deserve to be mentioned.

Larry Wall's Keynote Speech

I was quite curious to witness my first Larry Wall talk. Sure, I saw slidedecks and transcripts of his past performances, and like them a lot, but seeing the real deal, live, is quite different. Like a Tori Amos concert, if you will, but with less harpsichord and more mustache.

And now that I saw it, I can attest that, not only Larry's presentations are as whimsical and entertaining as advertised, but that he is one of the most genuinely nice person I've met in the tech world -- and I mean that as the highest praise I can give someone. It's no wonder that we all love our Larry so dearly; the man truly deserves it.

As for the keynote itself, it dallied here and there, but conveyed at its core an exhortation for everybody to curb a little bit our flame-happy ways and learn to hug our neighbours, let them be newbies, Python users, even trolls. Which I think is less of a gratuitous hippy call to cuddling arms, and more...

*sit down in front of piano and begin to play a maudlin melody*

... an insight in the ways we have to take if we want Perl to continue to thrive. Our community is full of smart and passionate people, which... sometimes make for a less than oil-slick public relations. With n00bs, which are our lifeblood for a sunny tomorrow. With the world outside of the Perl sphere which, and I know it'll surprise you, has been known to be snarky and take potshots at the camel and its riders. And even within ourselves (Modern Perl vs PERL, anyone? Perl 5 vs Perl 6? Moose vs roll-your-own-out-of-a-ball-of-yarn-and-some-sticks?). Really, learning to hug is not only a nice to have, it's our only possible long-term survival strategy.

**let the melody die out, pat the piano, giving a meaningful look at the reader and get back up\

ahem Anyway, bottom-line: Larry's great and is a treat to listen too, and he's right and we all need to embrace our tender side. The "yet another Perl hacker" of yore has to find a way to become "yet another Perl hugger".

Vindication!

Some talks, you go to to learn something new. Some other talks, you go to get some confirmation that what you already know is not utterly wrong and/or bonker. Jacinta's 'Perl Programming Best Practices 2011' and gphat's 'How NOT to build a multi-million dollar eCommerce system', as well as the lighting talks 'OWASP Top 10' (Sterling Hanenkamp) and 'Beware the Brilliant Programmer!' (James E Keenan) firmly belonged to the latter category. I must say, it was delightful to see my thoughts on best practices, test coverage, architecture, process and a sundry other things not only shared by other peoples, but by other peoples that presented and defended them in a much more articulated way that I ever could. Once the videos are available, you can be sure that I will make sure they are spread around like so many handfulls of yummy brain seeds.

...and then an Abigail Came Along

Let's be honest: a social event isn't complete without a little bit of polemic and maybe a dash of controversy. Well, I'm happy to report that in that department, Abigail's 'The Business Aware Programmer' delivered in spade.

Abigail, for those who don't know, is not only a very talented programmer, but also a living piece of Perl lore whose presence on the scene harks back to the early newsgroups days of Perl. To add a dash of intrigue to the mix, not a lot is known about the person itself. Indeed, for people who haven't attended YAPC yet, even Abigail's gender is a mystery. Is she female, as the nickname would suggest? Or male, as our biased demographics would lean toward? Or, as many people suspect, could it instead be a newsgroup 'bot gone rogue?

(and if you expect me to spill the beans here and thus ruin a perfect good mystery, I'm afraid you don't know me well)

Anyway, to return back to the talk, the important thing here is that we had somebody -- eccentric, but possessing very strong Perl-fu -- who have been around for a while who was going to tell us how to reconcile the programmer's paradigm ("I wanna make cool stuff") with the industry's more down-to-earth goals ("I want you to write stuff that make us money").

Which is what happened. Kind of.

The funny thing is, it's not that the talk veered in an unforeseen direction. I was fully expecting a pragmatic review of how, and when, the ideological streak of hackers should bend to the needs of the business. I just wasn't expecting the line to be drawn where it turned out to be.

The crux of the talk was that the goal of the business is to be profitable, ergo everything done by the programmer should be geared toward churning features that can generate direct profit. By the same token, everything that doesn't provide an immediate and measurable return should be eschewed.

Automated regression testing? Well, it takes time and its benefit is hard to qualify (you can only know if a test was worth it on hindsight after bugs are caught). So why bother?

Refactoring? It adds risk (it's new code, and as we don't do regression testing, there is no knowing if it's going to break unexpected things) and doesn't do anything toward spawning new features. Better not get there.

Copy and pasting? It's quick, and get the job done. Sure, sometimes you realize that you made a booboo and need to fix it in 16 different places, but that's rare. The rest of the time, the code just work, and chances are you'll never go back and touch that code again. So, why not?

Technical debt? Sounds nasty, but it's worse than it really is. After all, the scary part of technical debt is that it will come and bite you in the tuckus in the future. But, as we know, tomorrow never comes. We are not living in the future, but in the present, and our goal is have the company make money right now. So, really, why worry?

By the end of the talk, my left eyebrow had arched so high that it had disappeared somewhere beyond my hairline. I don't think I was the only one either. The silence of the audience had a "je ne wtf quoi" quality to it. I think that we all were expecting a little more "how to compromise with the Darkness", and less "how to embrace it body and heart, and elevate it to new heights". Or, if you want, we were expecting Sun Tzu, and Colonel Kurtz showed up. Personally, I must shamefully admit that after a while, each time a new slide came up, I was expecting the words "ah AH! Got you!" to appear on the screen. But... no. It was all meant in earnest.

To Abigail's defense, I have the feeling that the points of the talk came out as more extreme than probably intended. The argument was also made that, ideological debates aside, this philosophy works extremely well for Booking.com. Although I suspect that their roster of high-class, über-brilliant Perl programmers might be helping with that.

What is harder to swallow is the premise of "always program for immediate gain, never for later gain, because later never come". This is either a deeply, deeply cynic take on our industry, or it's mind-bogglingly short-sighted. If there's something I can say in confidence, it's that tomorrow does come -- $diety knows, I've joined enough projects on the day after tomorrow to attest to that.

And as a Day After Tomorrow survivalist, don't get me started on technical debt. From my experience, the extra effort generated by technical debt isn't the small, constant overhead that was considered in the talk. But instead an ever-increasing cost that, in due time, will turn any modification to the project -- let it be new feature or maintenance work -- into a agonizingly slow-paced, nerve-wracking, high-danger game of Jenga.

Lightning Talks

For me, one of the highlights of the conference. I really love its rapid-fire, mad carousel format. It's the perfect way to get the pulse of The Scene. The shiny new tools and modules? The upcoming events? The itches and desires of the community? They are all loaded up and fired at the audience, buckshot-style.

All were good, but two lightning talks really cranked the entertainment factor up to 11.

The first, "The Devil's REPL" by Matt S Trout,was truly something to behold. I could say many things, but Matt really captured it best when he said "65 slides, 5 minutes, 1 crack-pipe, and I'm not going to pass it around before I'm done". In 300 seconds, he dragged us all through a roller-coaster of demented brilliance, peeling away layers of sanity and slathering generous amounts of crazed cunning until what could not -- and probably should not -- be done was achieved. The ride was nothing short of epic, and the deed pure glory. I always had the utmost respect for mst, but after those five minutes I can say -- and I mean that as the second highest praise I can give someone -- that he is indeed a Truly Magnificent Bastard.

The other way cool lightning talk? Piers Cawley's song. Yes, YAPC has its own Kumbaya moment. And it is awesome.

Presenting? Nah, I'm Taking It Easy This Year...

Since this was my first YAPC, I thought that I could take things easy. In consequence, I didn't submit any talk. That way, I just had to go, and casually enjoy the show.

AH!

Fast-forward to the third day of the conference, a few minutes in the 'Introduction to Dancer' talk. Or what should be the first few minutes of the talk. But our presenter, it turns out, is M.I.A.. Some people leave the room to seek other talks, and for the remaining, one member of the audience (John) plays a Dancer tutorial from slideshare.

Now, I'm using Dancer myself, produced a few of its plugins, and submitted a few patches to its core (which eventually was rewarded by having Dancer v1.3040 to be codenamed 'Yanick in Black'). So I felt a moral obligation to do something. But...

  1. I had no slides, no presentation, nothing I could use.
  2. The laptop I was carrying had been fished out of the mothballs a few days before and barely been pulled up to snuff for basic stuff.
  3. While Dancer was installed, a frantic download and try of one of my toy applications, Chorus, showed that the majority of my usual plugins were not present.
  4. The conference was on the heels of some personal vacation time, which had the consequence that it had been... oh, three/four weeks since I last played with Dancer.
  5. Later on, in the closing speech, is it Chris Prather who pointed out that many people would more readily opt for death than talking in public? Well, I'm not that bad, but let's just say that if the other option was severe mauling at the paws of ravenous possums, I'd give it a few seconds of thought.

I'm pretty sure anybody would agree, all the conditions were aligned for a perfect failure. So it's quite logic that the next thing I caught myself doing is to cough and venture:

"Well, it's not much, but if you want I could try to go ahead and create an Dancer application on-the-fly?"

Self-preservation? I don't do that.

Was the next thirty minutes the best talk ever? No, but considering the circumstances, I like to think it was pretty darn well serviceable. And I have nothing but love for the audience, who quickly made me remember that I was merely talking in front of friends. Okay, lots of friends. Granted, most of which are must more knowledgeable than I. But principally? Friends. And that's what really matter and, ultimately, made it so fun. Scary ride-fun, mind you, but fun.

New Shiny Toys

Of course, one of the goals of YAPC is to share the shiny. Here is a non-exhaustive list some of the apps / modules / thingies that caught my attention at the conference, and are earmarked for further investigation:

  • carton
    • Seriously, can Miyagawa produce anything that isn't a game-changer or a fountain of awesomeness? By now, I'm suspecting he might just be Akira's more computer-savvy brother.

  • DBIx::Class::Shadow - From the brilliant mind who brought you DBIx::Class::DeploymentHandler and the delicious DBIx::Class:Candy. Database auditing made easy and integrated with DBIx::Class. What's not to like?

  • DBIx::Class::QueryLog

    • just what I was looking for to profile our database queries.

  • App::GitGot

    • a nifty little tool to oversee the large herd of Git repositories that tends to graze on the HD plains of my laptops and desktops.

  • YamlTime

    • command-line time-tracking tool. Maybe not as purty as the Hamster Wheel, but potentially more pragmatic. Not to mention tweakable.

  • Jackalope

    • Stevan Little's REST framework. Not quite ready for prime-time, but very promising and well worth keeping an eye on.

  • cpandoc

    • perldoc taken to the cloud. If I remember correctly, a few months ago someone adapted perldoc's bash auto-complete for cpanminus. Now, if I can find it back, and adapt it for this cpandoc, the result could be very, very, very nifty.

  • grokbase

    • a snazzy-looking Catalyst-based mailing list manager.

No, We Aren't Done Yet

*To be concluded in the final chapter of the Chronicles of Yanick: Escape from Asheville*

Seen a typo or an error? Submit an edit on GitHub!