Nerds Rejecting Nerds


I was linked to this article after a discussion that was triggered by a Tweet:

In this article, the author describes a group called "weird nerds", later renamed "hackers", and goes through some of the reasons why this group is rejecting new members of their community (namely "brogrammers" and "geek feminists", a false equivalence if ever there was one).

As someone who fits the author's idea of a hacker (the classical definition of hacker, not someone who breaks into computers), and yet has never felt like part of the hacker community, there are a lot of things in here that are bad, but I'll comment for now on a couple quotes:

Continue reading Nerds Rejecting Nerds...

Timeout for Parallel::ForkManager


At tonight's Chicago Perl Mongers Office Hours, Ray came up with an interesting problem. While testing all of CPAN for CPAN Testers, how do you detect when a test is hanging and kill it before it takes down the entire machine? How do you simply kill a test that is taking too long? And how do you do it without having a wholly separate watchdog program?

Ray's using Parallel::ForkManager to execute testing jobs in parallel across multiple Perl installs. There are a few ways we could implement timeouts, including IPC::Run's timeout function, or the alarm Perl built-in, but these must all be implemented in the child process. It'd be nicer if we could use the parent process to watch its own children.

Continue reading Timeout for Parallel::ForkManager...

Choosing a Log Level


Like all subjective decisions in technology, which log level to use is the cause of much angry debate. Worse, different logging systems use different levels: Log4j has 6 severity levels, and Syslog has 8 severity levels. While both lists of log levels come with guidance as to which level to use when, there's still enough ambiguity to cause confusion.

When choosing a log level, it's important to know how visible you want the message to be, how big of a problem it is, and what you want the user to do about it. With that in mind, this is the decision tree I follow when choosing a log level:

Continue reading Choosing a Log Level...

CPAN Testers Has a New API


As part of the MetaCPAN hackathon, meta::hack, I was invited to work on the CPAN Testers integration. CPAN Testers is a community of CPAN users who send in test reports for CPAN modules as they are uploaded. MetaCPAN adds a summary of those test reports to every CPAN distribution to help you determine which module you'd most like to use. For quite a few months, this integration was broken, and the nature of the current integration (a SQLite database) means it is not as generally useful as it could be.

So, I decided that the best way to improve the CPAN Testers / MetaCPAN integration was to build a new CPAN Testers API. This API uses the CPAN Testers schema to expose CPAN Testers data using a JSON API. This API is built using the Mojolicious web framework, and an OpenAPI specification (using Mojolicious::Plugin::OpenAPI.

Continue reading CPAN Testers Has a New API...