I’ve been thinking about DateTime recently and I’ve come to the conclusion that the Perl community would be much better off if there was a DateTime core team maintaining the core DateTime modules. DateTime.pm, the main module, is used by several thousand other CPAN distros, either directly or indirectly. Changes to DateTime.pm (or anything that it in turn relies on) have a huge impact on CPAN. I’ve been maintaining DateTime.pm, DateTime::Locale, and DateTime::TimeZone as a mostly solo effort for a …Read more
I’ve decided to stop renewing the masonbook.com domain after next year. The new home for the book is masonbook.houseabsolute.com. Please update your bookmarks.Read more
My employer MaxMind is hiring for two engineering positions. We have a positions for a Software Engineer in Test and a Software Engineer. If you’ve always wanted to work with me, here’s your chance. If you’ve always wanted to avoid working with me, now you have the knowledge needed to achieve that goal. It’s a win-win either way! Note that while this is a remote position, we’re pretty limited in what US states we can hire from (Massachusetts, Minnesota, Montana, …Read more
I recently released a new parameter validation module tentatively called Params::CheckCompiler (aka PCC, better name suggestions welcome) (Edit: Now renamed to Params::ValidationCompiler). Unlike Params::Validate (aka PV), this new module generates a highly optimized type checking subroutine for a given set of parameters. If you use a type system capable of generating inlined code, this can be quite fast. Note that all of the type systems supported by PCC allow inlining (Moose, Type::Tiny, and Specio). I’ve been working on a branch …Read more
It’s not too late to sign up for my Introduction to Moose class at YAPC::NA 2016. This year’s class will take place on Thursday, June 23. I’m excited to be doing this course again. It’s gotten great reviews from past students. Sign up today. There are lots of other great courses. For the first time ever, I’m also going to be a student. I’m looking forward to attending Damian Conway’s Presentation Aikido course on Friday, June 24.Read more
My Introduction to Moose class is back at YAPC::NA 2016. This year’s class will take place on Thursday, June 23. I’m excited to be doing this course again. It’s gotten great reviews from past students. Sign up today. And of course, there are tons of other great offerings this year too, including several from the legendary Damian Conway! I already signed up for his Presentation Aikido course on Friday, June 24.Read more
What sort of things can you learn when interviewing someone for a technical position? What questions are useful? This is a much-discussed and sometimes hotly debated topic in the tech world. I’ve done a fair bit of interviewing for my employer over the past few years. We’ve built an excellent technical team, either because or in spite of the interviews I’ve done. Here’s my unsubstantiated theory about interviews and what they’re good for. (My personal opinion, not my employer’s!) First …Read more
I’ve been on vacation for the past week, and I decided to take a look at using Test2 to reimplement the core of Test::Class::Moose. Test::Class::Moose (TCM) lets you write tests in the form of Moose classes. Your classes are constructed and run by the TCM test runner. For each class, we constructor instances of the class and then run the test_* methods provided by that instance. We run the class itself in a subtest, as well as each method. This …Read more
The 1.22 trial release includes some small backwards incompatible changes in how DateTime->from_epoch handles floating point epoch values. Basically, these values are now rounded to the nearest microsecond (millionth of a second). This release also fixes a straight up bug with the handling of negative floating point epochs where such values were incremented by a full second. I’ve tested many downstream DateTime dependencies in the DateTime::* namespace. The only thing that broke was DateTime::Format::Strptime, for which I will release a …Read more
I found a bug in Perl 6 recently. Really I independently discovered one that was already reported. Here’s how to trigger it:
$ perl6 -e 'say <2147483648/3>'
Cannot find method 'compile_time_value'
Any numerator of 231 or greater causes that error. Note that Perl 6 is perfectly happy to represent rationals of that size or larger:
$ perl6 -e 'say Rat.new(2147483648, 3)'
So the problem was clearly somewhere in the compiler. Here’s a quick guide to how I fixed this. First, I added a test to the Perl 6 test suite. Unlike many programming …Read more