I’ve been playing with the idea of making a new version of Log::Dispatch that breaks some things.

There are a few changes I’d like to make …

First, I want to trim back the core distro to only include a few outputs. This would just be those outputs which are truly cross-platform and don’t require extra dependencies. Right now that would be the Code, File, Handle, Null, and Screen outputs. I might also borg rjbs’s Log::Dispatch::Array, since it’s so darn useful for testing.

Here’s my plan for the other outputs:

  • Syslog – release it and maintain it myself
  • File::Locked – release it once and look for another maintainer
  • ApacheLog – up for grabs
  • Email outputs – up for grabs, but maybe I’d do a single release of the Email::Sender based output and look for a new maintainer

FWIW, I no longer have my programs send email directly. I log to syslog and use a separate log monitoring system to summarize errors and email me that summary.

I’d also like to change how newline appending is done so this has more sensible defaults. This means defaulting to appending a newline for the File & Screen outputs, but not for others like Code or Syslog.

As far as core API changes, while I think the core ->log() and ->debug()/info()/etc() methods would stay the same, I might want to make changes to some of the other methods.

I also plan to move to Moo internally, just to clean things up.

So given all this, what’s the best course of action? Should I just go ahead and release Log::Dispatch 3.0, along with Log::Dispatch::Syslog 3.0, etc.? Or should I actually rename the distro to Log::Dispatch3 or something like that so that the two can co-exist on CPAN? I’m leaning towards the latter right now.

Finally, if anyone has any other suggestions for improvements to Log::Dispatch I’d love to hear them.

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.


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.