Apparently my post on Perl 5′s overloading is deeply, deeply offensive. Here’s an email I got out of the blue today:

Perl isn’t your first language isn’t it?  You strike me as Java programmer.  Look.  Don’t do overloading.  If you need to do overloading then you are probably doing something wrong.

“If you don’t care about defensive programming, then Perl 5′s overloading is perfect, and you can stop reading now. Also, please let me know so I can avoid working on code with you, thanks.”

No.  I don’t, because we are not programming in Java where that type of mentality is needed.  So yeah, please feel free to memorize my name and lets make damn sure we never work with each other.

And people say there’s no hope for humanity!

I suspect I’m not the only person who does this.

I start writing an email because I’m angry/annoyed/outraged/indignant. I write the whole thing. I sign it. I look at it. Then I discard it.

There’s something therapeutic about this. I get all of the benefits of venting without actually escalating a conflict. I wonder if there’s a market for an email client app or plugin that helps with this?

“While you wrote this email your writing speed was 20% faster than your standard writing speed. Are you pissed off? Are you sure you want to send this?”

Clearly, I’m about to get rich!

I’ve been doing a lot of work on Test::Class::Moose recently and I’ve released a trial distro with my changes.

The highlights in this release are:

  • Support for parameterized test classes – instantiate a class more than once with different parameters
  • Separated the test runner from Test::Class::Moose itself – there is now a new Test::Class::Moose::Runner class so your test classes themselves are not also runners
  • Integrated the parallel runner code into this new runner so you can just pass jobs => 2 to the Runner class and get parallel testing

These changes are (obviously) backwards incompatible so Ovid and I would love to get your feedback on these changes before enshrining them in a stable release. Please comment in the form of RT issues or GitHub pull requests.

The sign up for classes at this year’s YAPC is a little different than before. You sign up by pledging to a crowdfunding campaign on Crowdtilt. If enough people pledge then the class will happen (and you will be charged). So if you’re interested in taking my Introduction to Moose class, please sign up now!

This class is a one day, interactive introduction to Moose. The class will take place on Sunday, June 22, the day before the conference proper begins. The cost of the class is a mere $130 for a full day!

Here’s what one past student said about the class:

Great class. I especially liked your problem sets. You gave out problems you expected your class to actually solve, and you allowed class time for solving them. This should be a basic expectation for any class, but it’s amazing how often teachers don’t do this.

You can find more details about the class content on the class’s crowdtilt page.

I’ve been in Taiwan for about four weeks now. Most of the time I was working remotely (more remotely than usual), but for the last few days I’ve been on a real vacation in Taipei. I’ve had time to kill while my wife talks to her relatives (my Mandarin is not good enough for extended conversations) so I’ve been trying to work through my all too large rt.cpan and GH PR backlogs.

The past year or two I haven’t had as much time or energy for my free software projects as in the past. Part of this is that my current job at MaxMind is generally engaging and interesting. I actually get to work on some neat projects there, including the recently released Stepford. Between work, family health issues, and the time I spend planning events like Twin Cities Veg Fest, I haven’t had much time for FS/OSS work.

But I realized that if I could just allocate a few hours per month I could probably get a lot done, at least in terms of addressing small bugs and patches for my CPAN modules. To that end, I’ve added a new recurring 3 hour block to my calendar every other Sunday labelled “Free Software Sunday”. I’ve given myself permission to ignore that event when it pops up, but it will still be a good reminder.

My apologies to all of you who’ve submitted bug reports and patches in the past and haven’t received a response. If there’s something in particular you want me to look at, please comment on the rt.cpan ticket or GH PR again to remind me.

c-pointers

For many years now I’ve flirted with the idea of finally learning C programming. I’d make attempts which usually consisted of re-reading the Kernighan and Ritchie book The C Programming Language, trying to hack on some C code, and then giving up in frustration. I really have no idea why that book is so widely lauded. It teaches the basic syntax of C, but does almost nothing to teach you the core concepts. It basically assumes that you understand the underlying memory model of the system and how C exposes it. That may have been fine in 1978 but for anyone who’s coming to C from something like Perl or Java, as opposed to assembly, it’s wildly unhelpful.

For years I’d wanted to find a book that would clearly explain pointers and memory management, but nothing seemed to exist. Recently at my day job I was trying to refactor some bits of a C library we created for reading a binary data format (that we also created). As usual, I struggled with my poor C knowledge. I have a free Safari subscription from days as an O’Reilly author so I figured I’d take a look at the C books.

I saw Understanding and Using C Pointers and hoped against hope that this was the book I’d been waiting ten years or so for. It was. This is a book length examination of C pointers, arrays, memory management, structs, and all that stuff that the K&R book glosses over in a few pages. It even has pretty pictures that help make sense of pointers and their relationship to arrays, the stack, the heap, and so on.

I truly and deeply ♥ this book. If you’ve had the same struggles I’ve had with this aspect of C, I can’t recommend it strongly enough.

After reading it, I can actually debug a segfault with knowledge as opposed to my previous strategy of flailing at it until it goes away. That’s the most powerful endorsement I can think of.

Michael Schwern has withdrawn as a speaker from YAPC::NA 2013 because he does not believe that the conference organizers will enforce the conference’s published Code of Conduct. This is based in part on a discussion (fight? spat? brawl?) that happened on the irc.perl.org #yapc IRC channel recently. The transcript of said discussion is probably worth reading before going further. Don’t worry, I’ll wait.

Okay, now that you read that particular piece of unpleasantness, I’ll offer my take on this mess. People have asked me about this because I’ve been a vocal advocate of having a Code of Conduct. I still stand by my earlier position that I will not attend a conference without one.

So what’s going on here? My reading of the IRC transcript is that everyone involved acted pretty badly. Capnleela’s tone was completely unhelpful. Giving summary orders to volunteers is just going to piss people off, and lo and behold, it sure did. How about opening with something like this …

Hey, toddr, I’m really concerned about having game night near this Bikini Sports Bar. That place seems really creepy and inappropriate for a YAPC. Is the venue you’re looking at part of the same building? Will people coming to game night have to see a big sign for Austin’s “breastaurant”?

Apeiron missed a great opportunity to take the higher ground and try to defuse a situation. Instead, he responded to obnioxiousness with more obnoxiousness. This is made worse by the fact that he’s an IRC op, so he has a position of power. With great power … blah blah blah. How about something like this …

Hi, capnleela, I understand you’re upset, and I get that this is a tense issue. However, I feel like you’re giving orders rather than asking for a discussion, and that’s a bit off-putting. Maybe you could rephrase things differently and just state your concerns first?

Kyriel should have been kicked from the channel pretty much immediately. She was trolling and doing everything in her power to make a tense situation worse. I have no alternate wording for kyriel.

That all said, capnleela’s concern about the game night venue was legitimate, but apparently misplaced, since from what I can tell, the issue had already been resolved by the time this IRC fight broke out.

But does any of this rise to the level of a CoC-violating offense? Maybe, maybe not. Not all arguments, even heated ones, are CoC violations. Should the CoC be enforced on the #yapc channel a few weeks before the conference? Well, I wish everyone on IRC would be nicer all the time, and IRC is often a cesspool of nastiness, but the #yapc channel is not really an official part of the conference, and it’s not controlled by the YAPC::NA admins. What about TPF’s role in this? They don’t run the channel either, so I don’t see what they can do.

Will the CoC be enforced this year? Here’s an IRc exchange I had with Todd Rinaldo, one of this year’s YAPC::NA organizers, on the topic:

(20:46:04) autarch: toddr: I assume you do intend to enforce the CoC at the conference
(20:46:19) autarch: and I see the problems with asking for it to be enforced on #yapc
           outside the conference time frame
(20:46:35) toddr: I have no problem enforcing it at the conference.

I’m satisfied that the conference organizers take the CoC seriously and intend to enforce it at the conference.

Personally, I think the community has made good progress over the past two years towards adopting and living up to higher standards of behavior. The past three YAPCs have had clear, well-written Codes of Conduct. I also see people stepping up and moderating flame wars on the IRC channels more often. I submitted a patch to the YAPC Code of Conduct repo for next year’s YAPC to add a report handling procedure for YAPC staff which I hope to see published along with the CoC next year.

I still think we can do better, but social change requires incremental progress, and we’ll never satisfy everyone, me included.

MaxMind, Inc., the company I work for, is hiring a Senior QA Engineer. This position is a development position, but your job will focus on writing tests, especially on automating functional testing, helping us build test tools, and working with support and customers to understand and document bugs. You won’t really be developing end products, nor do we expect you to spend a lot of time doing manual testing except when that’s necessary for reproducing bugs or building a test suite.

We’d really like to find someone with a strong interest and background in QA, not just a developer looking for any development job. We have a growing body of unit tests, but there are still many aspects of our products that need better testing and would benefit from functional tests that focus on how users interact with our products.

Perl experience would be helpful since our system is written in Perl, and we expect new tools to be written in Perl unless there’s an existing tool in another language that does the job.

Gabor Szabo of Perl Maven recently interviewed me about my work in Perl and other random things. In retrospect, I clearly should have sat up and found some smaller headphones. I look like a very, very lazy nerd. Well, I guess that’s not so far off the mark.

Gabor is doing a series of interviews with folks offering Master Classes at YAPC::NA 2013. I’ll be offering my Intro to Moose class again this year, and it’s not too late to sign up. The class will be on the Thursday after YAPC, June 6.

This class introduces you to all the basic Moose features and gets you to write some real code using those features. The class alternates lectures with hands-on coding. The way the coding works is that I’ve written some tests, and you need to write modules with Moose that make those tests pass. This gives you very immediate feedback, as you can run the test suite at any time to see what is passing so far.

I’ve given this class a number of times and it’s consistently gotten great reviews from students. Here’s Chris Fedde’s feedback:

I thought Dave’s class was outstanding. Well prepared and highly valuable content. This course was one of the best organized I’ve had the opportunity to take.

There’s still time to sign up for this class before YAPC. It’s a steal at just $125. Typically a course like this would run much more than that, but for YAPC we trainers all reduce our prices.

Also, check out Stevan Little’s Advanced Moose class on Friday, June 7. Our two classes go quite well together. Stevan will take you further in depth with various Moose features, and also cover best practices for various Moose features. This is the first YAPC where both of these classes have been available.