• Website:
  • About: Freelance Perl/Testing/Agile consultant and trainer. See for our services. If you have a problem with Perl, we will solve it for you. And don't forget to buy my book!
  • Posted Finding unused variables in your Template stash to Ovid

    Quite often companies who use Catalyst (with Template Toolkit) find that after a while, they're over relying on the use of the stash as a global dumping ground. To deal with that, I wrote a highly experimental module to print out unused template variables.

  • Posted Procedural Quest Generation in Perl to Ovid

    Yes, it's another post about Veure (whose actual name we might finally have chosen, but that's another story), the MMORPG that I've been writing.

    There are 117 stars in a 20 light year radius around Sol. There are 544 space st…

  • Posted Making git bisect more useful to Ovid

    If you've ever used git bisect, you know what an incredibly useful tool this is. It allows you to do a binary search through commits to find out which commit caused a particular error. Many people seem unaware of git bisect run ...

  • Commented on mop problem 5 - Role and C3 searching is not always necessary
    Roles are not multiple inheritance at all. In multiple inheritance, you're overloading class responsibility with code reuse and you introduce ordering problems (which C3 mitigates but does not solve). Roles leave responsibility to the classes, but handle the code reuse....
  • Commented on "Functional core & Imperative shell" : OO design, and isolated tests without mocks
    Also, I should point out that while your title says "without mocks", aren't "test doubles" just the same thing? I guess I should watch that presentation now :)...
  • Commented on "Functional core & Imperative shell" : OO design, and isolated tests without mocks
    Other than an unreliable external service, why mock anything up? One argument I hear is "speed", but I'd rather have my tests correct than fast. Another argument I hear is "unit testing", but that's only because some people have an...
  • Posted Sick of being mocked by unit tests to Ovid

    Back in 2002, the company I worked for had a valuable client with a terrible problem: seems the developer of their POS (point of sale, or "cash register") system sent them a bill for their license: five year's worth. The company disputed the bill and the developer informed them that their POS…

  • Commented on Gittip and companies?
    I find it amusing that I just blogged about this and it's showing up immediately below your post on the front page :) Seriously people: ask your company to consider $1 a week. Many companies would be happy to give...
  • Posted Nestoria's Module of the Month to Ovid

    Now this is an idea that I wish more companies would get behind.

    Nestoria is a property search engine based in London, but covering several countries (I use them here in France). They're really slick, growing nicely, and ="http://blo…

  • Posted Automatic variable highlighting in vim to Ovid

    After viewing an interesting post in Reddit about programming in color (syntax highlighting that focuses on data flow instead of syntax), I saw that one user had developed

  • Commented on Views in DBIx::Class
    James, it's not possible to enforce completely, but for general purposes, it's an important part of the mechanics. Anyone who wants to, um, game the game will be unstoppable. However, there are a number of other facets to the "delayed...
  • Posted Using Perl on Red Hat's OpenShift Cloud to Ovid

    Are you a lone Web developer who has a great idea for an app but you're intimidated by the idea of getting a Web server, maintaining the OS, installing the database, handling DNS, keeping up to date with security patches and so on? Instead, you can try a Platform as a Service (PaaS) system and…

  • Posted Testing Lies Video to Ovid

    I was recently at the 2014 German Perl Workshop and I've written about it at our company blog.

  • Commented on Views in DBIx::Class
    James, take a look at that query again. I don't think it's that easy to create a view for, though a function might be appropriate (note that the bind parameters impact some moderately complex boolean logic that can't be represented...
  • Commented on Views in DBIx::Class
    JT, I do agree, but for now, I've very much focused on "make it work, then make it fast." If I have the right layer of abstraction in my code, I should be able to swap out back-end implementations for...
  • Posted Views in DBIx::Class to Ovid

    Did you know you can write a view in DBIx::Class? The DBIx::Class::ResultSource::View module makes this very easy and it's helped me solve a very thorny…

  • Posted Perl-Operated Boy to Ovid

    And now for something completely different.

  • Posted The Hidden Benefit of Data-Driven Programming to Ovid

    Often we hear people talk about making your programming more "data-driven". When you can convert procedural code to a data structure (generally with a small procedural driver), instead of replicating procedural code, you just add another entry to your data structure. This is great with dispatch…

  • Commented on Why Companies Turn Me Down For Contracts
    Hi None. That's a good point. Institutional knowledge is extremely valuable which is why many companies, even if they hire contractors, want long-term employees too. That being said, many times when I'm approached it's by companies either not having the...
  • Posted Why Companies Turn Me Down For Contracts to Ovid

    My current contract is lovely. I'm having a lot of fun and the environment is awesome. However, it's a short contract. I took it, in part, because it was a problem space I wanted to do more work in. Because it's a short contract I'm already working on negotiating my next contract (a perpetual…

  • Commented on Custom DBIx::Class ResultSets
    Thanks, JT. I should have mentioned that it's also great for helping to prevent dbic specific code from leaking into my controllers. By keeping dbic out of the controllers, I can later replace "slow" bits of a code with hand-rolled...
  • Posted Custom DBIx::Class ResultSets to Ovid

    On my personal blog I wrote about Veure, an MMORPG that I'm writing in Perl. I followed that up with a post about the roadmap to an invite-only…

  • Commented on Veure - The Game That Isn't
    John, in space, no one can hear you deteriorate :) At this point, development is continuing (I just solved my biggest worry last night) and there are plans to continue to push this forward....
  • Posted Veure - The Game That Isn't to Ovid

    Some of you may remember me talking quite a bit about Veure a few years ago when I was living in Amsterdam. I never discussed on the Web what it was about.

    Now it's…

  • Commented on Perl::QA Hackathon in Lyon - Summary
    Clayton: that's a good point. I have two choices now. I can apply that change, or you can clone the repo and submit a patch. I'd prefer the latter because I'd love to have other people add their insights....
  • Posted Perl::QA Hackathon in Lyon - Summary to Ovid

    I'm back from the Perl QA Hackathon and had a blast. I really appreciated the work that BooK and Laurent did to pull this off. And thanks to for hosting us. In fact, we had a wide variety of sponsors and I suggest you…

  • Posted Perl::QA Hackathon in Lyon - Day 4 to Ovid

    Today's the last day of the Hackathon and it's gotten off to an interesting start: we were locked out of the offices (it appears to be accidental), so now we're overflowing the hotel lobby. The organizers have gotten us a small room in the hotel and now we're slowly moving there.

  • Posted Perl::QA Hackathon in Lyon - Day 3 to Ovid

    Today, aside from giving an interview which will be published in Norway, I released yet another version of Test::Class::Moose. As of version 0.51, the Sub::Attribute module is required rather than…

  • Posted A Simple dist.ini for Dist::Zilla to Ovid

    This is day 3 of the Perl-QA Hackathon in Lyon, France, and I decided it was time to fix some issues with the older dist.ini I was using. Erik Colson asked…

  • Posted Perl::QA Hackathon in Lyon - Day 2 to Ovid

    I've just released Test::Class::Moose version 0.50. The major feature you'll notice are the Test and Tests attributes. They're included to make it easier to migrate from…

Subscribe to feed Recent Actions from Ovid

  • mascip commented on "Functional core & Imperative shell" : OO design, and isolated tests without mocks

    Oh, I hadn't seen Ovid's previous comment. I'm in agreement with you on mocks Ovid.

    I think that learning to avoid mocks, while still testing lots of code in isolation, is what lead Gary to this idea of a functional core and an imperative shell.
    And then he realized that it was also a very simplifying design. Simplifying in the sense that it keeps concerns properly separated.

    The best one hour that I spent recently, was watching the video "Simple made Easy" by the creator of Clojure. The link is at the bottom of my first comment. It's the best explanation I've heard o…

  • Samuel Kaufman commented on "Functional core & Imperative shell" : OO design, and isolated tests without mocks

    What external service is not unreliable? Any web service your code speaks to is by nature unreliable.
    Say for example your app sends emails. You write tests that send real emails. That's great, until the SMTP server goes offline. You've only tested against the live server when it was working, so you have no coverage for this.
    Of course, if it was your SMTP server you could turn it off and see how your code responds.
    If it isn't in your c…

  • mascip commented on "Functional core & Imperative shell" : OO design, and isolated tests without mocks

    Good point Samuel! Agreed.

    I think what people throw out at the moment, is mocking as a default for isolated testing:

    mocking most relationships in your tests, for the sake of isolation, is just wrong.

    Especially as isolated testing can be done without mocking; it's a matter of design.

  • Stevan Little commented on mop problem 5 - Role and C3 searching is not always necessary

    C3 will not be part of the MOP, it is part of the core of Perl already, it will be possible for a user of the MOP to use C3 just as it is possible for a user to do that with regular Perl OO.

    Roles are not multiple inheritance and in the MOP will not be implemented with multiple inheritance. You should do some reading up on Roles and how they work, I fear you do not understand them well enough.

  • Manuel Ceron commented on On the relative readability of Perl and Python

    I’m a Python developer but I started coding Perl full time since a little bit more than a year. It’s true that Python has many quirks. That happens with any language that is more than 20 years old. But I think Perl probably has more quirks than Python.

    I think one reason why people think that Python is more readable is because it’s simpler. Both syntax and semantics are simpler. Less operators, less constructs, less ways of doing things. In practice this means that you can understand any Python code after an afternoon. While the same thing for Perl takes years.

Subscribe to feed Responses to Comments from Ovid

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is run by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.