Telephone +44(0)1524 64544
Email: info(at)

Matt S. Trout (mst)'s Blog

This is the index of items in Matt S. Trout's blog.

Because we have to start somewhere, and this somewhere looks sunny.

Sometimes it's nice to have a conversation with the computer that isn't you shouting four letter words at it.

In which patches are still welcomed, at least by me.

In which we owe dreamhost a big thank you.

In which goodbye and hello, and bad jokes involving Doctor Who

Trigger Warning: MongoDB

How to unit test code opening a pipe to sendmail

Simple conventions for immutable objects

GNU Terry Pratchett, without whom this blog would not exist

Because the evidence that you're an idiot has to be retained somehow.

An explanation of the changes in default behaviour

It's christmas week, and I haven't drunk everything yet.

In which EHLO implies something worse than teletubbies

Namespace all the things!

Now everything is made of urine and you can't even find the cat.


The wonderful thing about tarballs is there's so many ways to make one.

I still roll to disbelieve in dependency heaven.

I roll to disbelieve in dependency heaven

Now have problems two you

In Crockford We Trust

Welcome to Database Haters Anonymous

I can C: for files and files and files ...

Could've been worse. Could've been postscript.

There's a reason why Cthulhu's called 'lord of the angles'

Web Scale! Web Scale! Web Scale!

Beyond lies the wub

The other half of the equation

Hallway++ means you're never interrupting

A short note clarifying the results of an IRC incident.

Musings on the insufficiency of the reasonable person principle

When you're up to your ass in alligators, it's hard to remember you're meant to be draining the swanp

Better default handling and an extension for (almost) full Moose surface syntax

Wish your perl had different defaults? Use myperl

Enough broad strokes; let's try and itemise this thing.

The repository, the branch, the manifesto

A roundup of the things people have been saying about the Pumpkin Perl proposal and my responses thereto

Perl 7 isn't a real idea, it's a cry for help - here's why and here's what we could do instead

... but that's ok, and here's why.

Apparently adaptations that helped our ancestors not be trampled to death by wildebeest don't entirely work in our favour in open source community interactions.

Slides for (most of) my talks (since 2008)

Musings on the different ways of generating classes and which to use when.

I'm not and you don't need to be either - and that's a good thing.

Why Moo is sane for CPAN modules with Moose interoperability and Any::Moose isn't.

Moose surface syntax in pure perl with metaclass interoperability

French Perl Workshop, list updates, CPAN roundup and why I'll soon be writing some perl6

Lessons derived from four days of hospitalisation due to a broken hip

Gender, sex, binary realities, and Ozy's Law. Also, awful puns.

You can be an ass but don't be an asshole - a HOWTO and WHYFORE guide.

Keynote reactions, dancing in the aisles, and a new IRC game

A little insight into where I came from.

YAPC::NA 2012 sold out - here's why you should turn up anyway!

MooseX::Types not only gives you automatic namespacing and typo spo tting, but significantly reduces the amount of typing involved - here's how.

In action and in etymology, harassment makes us worse people.

Stand up for your nice people, gods damnit!

You can be an ass but don't be an asshole - a HOWTO and WHYFORE guide.

Alarms, excursions, apologia and conclusions

What we did, worked, what didn't, and lessons learned

Debian, VMWare, perl and lots of cursing

As preparation for the plat-forms contest this coming week, mst attempts to turn a spare laptop into a VMWare host with a usable development environment installed.

Or, mst returns to Iron Man with a complete non sequitur

On a flight from LAX to JFK, a mystery develops around a seat entertainment system. Our hero investigates.

The Iron Man forfeit results

The results of the forfeit voting - yes, they voted for transparent. No, no two people voted for the same title (so we have an eight way tie). Yes, I hate you all. Details within.

I have lost!

Announcing my loss of the Enlightened Perl Blogging Iron Man Competition and explaining that that means all contenders so far get to vote on a hair colour and title for one of my talks this summer.

A new perl, a new iron man, and more

Congratulating the porters on perl5 release 12, announcing a hackathon tonight on the Iron Man Planet, and a teaser of things to come.

An experiment in functional crack pipes

Since I've spent most of today writing docs again, here's a look at my latest new CPAN module, IO::Pipeline

Notes from the audience

Randomised ramblings from UKUUG Spring 2010 day 2, consisting once again of the results of my jibbering into a terminal while watching the talks.

Notes from the audience

Randomised ramblings from UKUUG Spring 2010 day 1, consisting largely of the results of my jibbering into a terminal while watching the talks.

HTML::Zoom is on its way to CPAN

Since I've spent most of today writing docs for HTML::Zoom, here's the fun parts of them to give you an idea what I've been playing with.

On consultancies, in house teams, and collaboration

In which I discuss why I believe that startups should do their primary development in house, why I don't believe that hiring a team like Shadowcat contradicts that, and an attempt to explain how and why the combination works.

App::IdiotBox and Web::Simple

A look at how Web::Simple's subdispatch mechanism allows composition of dispatch code in a clear and concise fashion, plus some notes on deployment and the Iron Man planet

Zero redirect login the easy and friendly way

Using a reserved POST variable namespace to allow you to do quick login from bookmarks without needing a query parameter or relying on the referer header

The genesis and usage of Data::Dumper::Concise and Devel::Dwarn

A kinder, simpler approach to getting debug output slung at STDERR quickly and easily. Born of the realisation I kept copy-pasting Data::Dumper topions around, this post explains the Data::Dumper::Concise and Devel::Dwarn modules and how they can save you typing when debugging too.

A plea to those I'm helping debug

A discussion of why support people often ask for far more information than you believe they should need to diagnose your problem, and a worked example of why it's the right thing to do based on experiences with a Shadowcat client


Except, of course, not only is Moose not slow, but in the cases where it isn't fast enough there are trivial ways to optimise it. In this article, I explain how.

Perl Oasis rocked

A randomised journey through the joys of Perl Oasis 2010, peppered with enticing links to all the other people who wrote more coherent accounts

Community gardening and hard decisions

A (somewhat ranty and occasionally profane) discussion of my attitudes, techniques and duties in various online communities, why I behave the way I do and how these behaviour patterns are oriented around the continued well being of the community - and why the same lessons can apply to not just other communities but business decisions as well.

Project milestones and mental models

A discussion of the "what the hell is this idiot talking about?" moment, why it happens, and some things to do about it - and the advantages one can gain therefrom

No, not that goto, the other goto.

A discussion of the different sorts of goto available in perl, how other built in functionality means the traditional sort isn't worth using, and why the extra sort perl provides is actually really handy on occasion.

Library selection process by level of importance

An explanation of the processes I prefer to follow when selecting a library to use for a project, and the extent to which I audit the relevant code for malleability via thought experiment depending on how essential it is to your project

Announcing MooseX::Antlers

The subject of my main talk at LPW 2009 was MooseX::Antlers, a new and hopefully better attempt at precompiling Moose classes into .pmc files; this post summarises what's done, what isn't, and where to get the source if you want to help

December is here! Where did that year go?

A brief roundup: Advent calendars, London Perl Workshop, Web::Simple

Web::Simple 0.001

0.001 has now gone to CPAN - so here's a summary of what's there, what isn't, and where we're going with this.

Yes, This Is A Rant. You were warned.

Why almost everything we the perl 5 community say about perl 6 is bad, wrong, and fail. And a link from a post by masak arguing vice versa.

On this day, we give thanks

It was Nov 11 when I decided to write this

A first taste of Web::Simple

A first look at a fun toy I made for the Italian Perl Workshop and have decided to continue developing

I got. Erm. Auctioned off.

I do not believe they've done this to me, and there's no escape.

On copyright notices and how not to mess it up

After a desperately exciting day shipping distributions with only changelog and POD diffs from the previous version, Matt explains how, why and what this was about (clue: getting beer out of the debian perl team)

Quick and simple mock objects with MooseX::Declare

A pattern I've started to find myself using in place of mocking toolkits in my test suites

Fear of Falling

Musings on fear of socialisation, the activation energy required to make a first contribution, and a couple of stories about things I've been afraid of and how it got (sort of) fixed

A role based plugin system with MooseX::Declare

An example of a half dozen line plugin system written using MooseX::Declare to produce elegant code that takes full advantage of the metaprotocol without requiring the user to think about the mechanics rather than their intent.

Architecture and Design, and how I learned what I know about both

An overview of the different routes by which I learned about the structure and design of libraries and programs, a grab bag of links to things I remember helping and a suggestion for some ways to come up with things to read, and exercises to do yourself in order to improve your skills in those areas.

Musings on design, testing, and not getting caught out as an incompetent author

On how somebody saying something nice about the new Catalyst book led me to ponder the nature of technical books, learning, and documentation - and on how to write a good book for a true perl hacker, i.e. one who understands that being done and down the pub is a priority too ...

The Iron Munger app is now running

The badge code exists! IT'S ALIIIIIVE!

Easing users' pain so they get the new shiny sooner

On the problems of backwards compatibility, ways of keeping users happy, and a deconstruction of Mojo's recent complete compatibility breakage with suggestions of how a few dozen lines of code could have eliminated most of the pain

Announcing public svn and the (unofficial) perl-org-patches list

A discussion of the amazing results you get when you actually try talking to people rather than assuming their opinions are both contrary to yours and unchangeable - and the announcement that the site is now in a public repository and a new mailing list designed to enable effective patch submission.

perl 5 v10.1 RC1 is out so now we need YOU to test it

Remember - if you see this and don't test the RC, any bugs that you would have caught are YOUR FAULT

new Foo bad, 'no indirect' good

An explanation of how perl decides whether something is a subroutine call or an indirect object syntax method call, why you really want to avoid it ever deciding the latter, and a shout out to the 'no indirect' pragma that allows you to detect these and remove them.

Why numeric test plans are bad, wrong, and don't actually help anyway

A summary of an argument from the review process for The Definitive Guide To Catalyst, covering testing, merging and ways to protect loop tests from incorrect iteration counts.

The new Catalyst book, published by Apress, is now available

Announcing the new Catalyst book, a description of what we tried to achieve in writing it and a (much abridged) summary of the contents, a selection of thank yous and a note that my royalties will be donated to Enlightened Perl, which will hopefully find something more useful to do with them than spend them on beer.

Apparently, I didn't write enough tests yet

The software that should shortly be powering the badge code on and a plea for help because it still doesn't quite work.

The rebirth and regeneration of a community

Thoughts from YAPC, covering the projects I'm excited to see and the general feel and mood of the community from my observations as I spoke to (and drank with) them

Musings on my contributions to and membership of the perl community

How I got started, how I got here, and my own personal take on the most important thing I've ever done in the community

... and it has to be earned.

On communities, approaching them, getting help from them, and how to come across as an idiot even when you aren't one.

Taint mode, testing, system() and stupid $^X hacks

In which I explain how you can easily produce a bug in your test suite that won't show up on your development setup, discuss the nature of taint mode, and ways to circumvent it for the purposes of instrumenting tests.

Of course you can use CPAN. And here's why.

Why people claim they can't use CPAN and how local::lib, Module::Install and PAR generally make that not true.

TMTOWTDI but which one makes most sense?

The difference between syntactically valid and semantically valid, and the blessing and curse of expressiveness in language

How ethanol can make you a better programmer

Losing Shadowcat some clients while discussing alcohol, narcotics, perfectionism and how shipping is a feature

The beauty and insanity of perl5 method call semantics

In this post, I'm going to try and explain some of the crazier things you can do with perl5 method dispatch, from straightforward $obj->$name up to dynamic method combinators. Also, an Iron Man updatelate.

Iron Man, embracing women

Iron Man, one week on - where to look for things, who's signed up, and notes on inclusivity and sexism from the POV of a 26 year old hacker who's still scared of his mother.

Announcing the Enlightened Perl Iron Man Competition

Marketing, the perl community, and a new initiative to make some noise