Continuing a tradition that I’m hoping other release managers will pick up (some have so far, but not all), here’s some notes about the epigraph I included with the email announcing Perl 5.17.7. The epigraph itself is from R. Scott Bakker’s The Darkness That Comes Before, which is the first in a somewhat grim speculative fiction trilogy called The Prince of Nothing. One of the main characters is a sort of intellectual warrior-philopsopher monk (this is bad description but it’s very hard to summarize this character) who underwent very intense mental and phyisical training as a child. The epigraph is a description of some of that training.

No thought.
The boy extinguished. Only a place.
This place.
Motionless, the Pragma sat facing him, the bare soles of his feet flat against each other, his dark frock scored by the shadows of deep folds, his eyes as empty as the child they watched.
A place without breath or sound. A place of sight alone. A place without before or after . . . almost.
For the first lances of sunlight careered over the glacier, as ponderous as great tree limbs in the wind. Shadows hardened and light gleamed across the Pragma’s ancient skull.
The old man’s left hand forsook his right sleeve, bearing a watery knife. And like a rope in water, his arm pitched outward, fingertips trailing across the blade as the knife swung languidly into the air, the sun skating and the dark shrine plunging across its mirror back . . .
And the place where Kellhus had once existed extended an open hand—the blond hairs like luminous filaments against tanned skin—and grasped the knife from stunned space.
The slap of pommel against palm triggered the collapse of place into little boy. The pale stench of his body. Breath, sound, and lurching thoughts.
I have been legion . . .
In his periphery, he could see the spike of the sun ease from the mountain. He felt drunk with exhaustion. In the recoil of his trance, it seemed all he could hear were the twigs arching and bobbing in the wind, pulled by leaves like a million sails no bigger than his hand. Cause everywhere, but amid countless minute happenings—diffuse, useless.
Now I understand.

Since this release was on Perl’s 25th birthday, I was looking for an epigraph that at least had something to do with birth. I chose this one because it can be seen as a sort of birth, or perhaps a rebirth of a character. He has achieved enlightenment of his sect’s teachings.

I didn’t remember it when I first thought of this passage, but the fact that his teacher is called “the Pragma” really makes this a nice quote for a Perl release.

If you’re interested in complex, weird, philosophical speculative fiction I highly recommend these novels. However, be forewarned that while the trilogy does tell a somewhat self-contained story, there’s an even larger story which is being told in further sequels, and the author hasn’t finished all of those. Supposedly there will be at least 5 (or maybe 6) additional novels, and only two have been released so far.

Since I have some new blog software, I’m enacting a new comment policy to go with it.

In the past, I’ve approved basically all non-spam comments. After my last post, the only comment I received was a very rude comment suggesting that it was an attempt to “defend” my use of WordPress. I deleted this comment.

(Aside: see the footer of this site)

So the new policy is this:

Comments are always welcome, whether you agree with anything I write or not. However, I expect you to be civil to both me and other commenters. Name-calling, threats, baseless accusations, and asshattery will all be deleted.

If you’ve visited my blog before, you might notice that it’s now running on WordPress rather than Moveable Type. I’m a little sad to be moving from a Perl application to one in PHP, but WordPress is just a better solution these days.

The main reason I moved was that I was stuck on MT4. When I first installed MT, I installed it with a Postgres backend. Then when MT5 was released, they dropped support for Postgres. That was a bit annoying, but I could live with it. The suggested upgrade solution was to export one’s blog, create a fresh MT5 install, and import. I tried that and the import failed every time. I posted a question on their support forum and never got an answer (fair enough, I wasn’t paying).

But in contrast, the tool to import from MT4 to WordPress pretty much just worked. So here we are.

A while back, I posted an announcement of my Type distro.

The name Type was always somewhat of a placeholder, and I recently found out that the Type namespace is owned by someone else. It looks like the owner deleted this distro long ago, so I could try to get the namespace transferred, but I think this really just highlights the problems with such a generic name.

If anyone has suggestions for a new name, I’d be happy to hear it. The distro as it stands has package names such as Type::Constraint, Type::Coercion, and Type::Library. It also has some long names like Type::Constraint::Role::Interface.

Given those two facts, I’m looking for a new single word namespace to use. I really want something where I can just replace “Type” with “Word”. That rules out something like “Constraint” (which is too generic anyway).

So far my leading contender is Blazon, which claims is a synonym for type. Generally speaking, I think it’s best when a single-level module name is more of a project name than a descriptor of the module (says the author of DateTime).

But if anyone has any better suggestions I’d love to hear them.

The company I work for is considering hiring a Product Manager, but we’re trying to get a better sense of if this should be a full time job for a company our size, with 15 people ~5 devs (some people are not full time).

If you work with one who you think is good at their job (or you are one) I’d love to schedule 15-30 minutes to pick that person’s brain. We want to get a sense of what the job description is, and how their time is used.

I promise not to directly solicit people that we interview later on if we decide to hire for this position.

Please email me at if you can put me in touch with someone to talk to.

Rocky Bernstein has been working a new Perl debugger called Devel::Trepan. I came across some discussion in a git pull request for this project a while back and I’ve been thinking of this blog post since that time.

Rocky has his own unique coding style. It’s not too out there. There are some truly oddball styles on CPAN. But there a few oddities that stand out. First, he puts various use lines before the package declaration. He also uses prototypes completely pointlessly (prototypes on methods do absolutely nothing). He also likes to combine several statements onto one line, like:


Besides the prototype issue, none of these are wrong (and the prototype thing is arguably intended as documentation). The code works as written, and the meaning is more or less clear.

But it’s weird, because it’s not what most people other do. It’s a unique snowflake.

It’s a distraction.

Instead of looking at the code, experienced Perl programmers will spend time going “WTF” and wondering why this code looks different from all the other code they’ve seen.

If you’re writing code that you’d like other people to work on, please don’t write unique snowflake code. Every moment someone spends being a bit confused by your unique style is a moment that they’re not spending improving the code. It’s time they’re not spending fixing bugs, adding tests, writing docs, or adding new features.

One might argue that we should just accept the oddities but it’s often hard to distinguish between a style and code which changes a program’s execution.

Please pick from one of a few standard styles (2- or 4-space indent, braces in a sane place, one statement per line, package comes first, etc). Include a perltidyrc that contributors can use to match your style. If your style can’t be recreated using perltidy you’re probably writing snowflake code. Please don’t. It’s just code. It’s not that special. Save the unique snowflakes for your symphonies, sculputures, and sonnets.

Back in November of 2010, I wrote an entry on this blog titled My Programming-Related Todo List. The title is a bit misleading since it was really more of a todo *wish* list than a realistic list of things I could get done.

I figured I’d revisit it (and depress myself in the process) to see everything I hadn’t done.


Well, I didn’t do it, but a bunch of other people did, so at least I can take it off my list. Of course, the MetaCPAN still doesn’t do everything on my wishlist, but it’s a great start.

Full CLDR in Perl

Zero progress made. Someone did release a module recently that provides a very primitive interface to the CLDR project’s data (which I can’t remember the name of). It doesn’t implement all the complex logic that is needed to handle CLDR’s data properly, but maybe the author will get to this at some point.

DateTime V2.0

Well, I did fix a few bugs in DateTime v0.

Make `DateTime::TimeZone` use Zefram’s binary Olson database reader

Zefram made a lot of progress on this and then went dark. I need to poke him. To the best of my knowledge this is basically done.

DateTime for Perl 6

This will be out by Christmas.

Mason 2.0

Jon Swartz released a Mason 2.0 in early 2011, but it’s not exactly what I wanted for Mason 2.0 myself. I’ve toyed with the idea of writing my own templating system, but do we really need another templating system? Also, using Mason 1.x under Catalyst still works well for my needs.

WYSIWYG Editor in Silki

I haven’t really done much with Silki. Writing it was a good experiment and learning experience, but does the world need another piece of wiki software?

Extract the HTML to Wiki converter from Silki

This is still worth doing.

Generic blog/forum/wiki spam filter system

I released a few modules in the Antispam namespace, but it’s not quite a “system”.

Finish my donor/volunteer management CRM

This has been stalled for a long time. My main motivation for working on this was because I wasn’t terribly happy at my previous job, and I thought working for myself would be better. Since then I’ve moved to MaxMind. I actually like working there, so my motivation to work for myself is diminished.

VegGuide Technical Revamp

This still needs to happen. I did, however, release a REST API and REST API explorer for VegGuide.

Rewrite perltidy using `PPI`

Total fantasy.

Enhance VCI to support commits and create Dist::Zilla::Plugin::VCI

I forgot about this one until now. It’s a good idea, I suppose, except that VCI development seems to have stalled.

Find a way to eliminate the compilation hit from Moose

I did actually take a small stab at a Moose compiler. It was a failed experiment but at least I learned about a path that won’t work.

Introduction to Object-Oriented Programming (using Moose)

Sure, write a book. Who was I kidding?

Moose Class Day Two

This was also motivated by wanting to find a way to work for myself.

YAPC 2012 in Minneapolis

This could have happened but then I decided to work on the Twin Cities Veg Fest instead. There’s no way I could’ve done both.


Well, like I said, it was really more of a wish list than a todo list. See you in two years?

I read about tofu misozuke on the vegan subreddit recently and I was intrigued. The description compared it to cheese, particularly blue cheese, and I was sold. I love pungent, strong-tasting foods.

I just got my order today. Holy crap, it’s intense! The blue cheese comparison is quite apt. It’s also similar to Tofu ru (or dou fu ru in the proper Chinese pronunciation). I had mine on a slice of toast and it was perfect.

Either way, I highly recommend this stuff for connoisseurs of intense flavors.

(Oops, I accidentally deleted this entry and had to restore it so all the comments are gone. Sorry, commenters.)

I’ve often heard it said in the Perl community that hiring Perl developers is hard. This comes from both developers as well as people relaying information from managers and recruiters.

At MaxMind, where I work, we recently posted a job opening. We only posted it to the Perl jobs site to start, and I mentioned it in a blog posting. It has not been advertised anywhere else (by us).

We’ve gotten a lot of applications so far. Of course, there’s the usual selection of spamplications, but we’ve also gotten quite a few really qualified applicants. So many, in fact, that it’s tough to decide who to interview. We could easily interview ten excellent candidates!

So what did we do differently than everyone else? The job is open to telecommuters.

I think when people complain that hiring Perl developers is hard, they really mean that hiring someone to work in their office is hard. This is no surprise. I wouldn’t move for any job, no matter how great it looked. I own a house. My wife’s in school. I have friends here. I’m deeply involved with a local activist group.

I expect many people have similar reasons for not wanting to move.

I wonder whether there’s any language where hiring good senior-level people is easy. Do experienced Java developers not have houses, families, or friends? Sure, there’s more Java developers, but are there really more per open position?

Is there some huge pool of experienced Ruby developers outside of Silicon Valley willing to move for some great new job?

If you want to hire an experienced Perl developer, consider offering telecommuting. We’re lucky at MaxMind, in that the dev team has always been remote. The only other developer who was here when I started lives in Germany, and the CEO (who also does dev) is in Waltham. We were all forced to exercise our telecommuting chops from the start. I know from experience that when a company already has a larger dev staff in an office, hiring a single telecommuter may not work nearly as well.

Maybe the lesson (if there is one) is that new companies should plan for telecommuting from the start. If you build it into your core work culture, it’s a lot easier than trying to adopt it a few years down the line.

All that said, I do think that having everyone in a single office is better. If I were running my own company, it’s what I’d want. But you have to balance that against your ability to hire more technical staff in the future.