Matt S. Trout (mst)'s Blog

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

The PSIXDISTS experiment

Tue Aug 30 20:20:00 2016

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

mstpan 17 - Interactive shells

Wed Dec 2 20:30:00 2015

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

On Perl 5.6

Tue Jul 21 21:30:00 2015

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

A Dream Within A Dream

Mon Jul 20 20:00:00 2015

In which we owe dreamhost a big thank you.

State of the Velociraptor - Phase two

Sat Jun 6 02:00:00 2015

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

War Stories: A tower of bool

Fri May 1 20:40:00 2015

Trigger Warning: MongoDB

War Stories: Open Sesame

Wed Apr 22 20:40:00 2015

How to unit test code opening a pipe to sendmail

Do you copy?

Wed Mar 18 20:30:00 2015

Simple conventions for immutable objects

Without Pterry

Tue Mar 17 21:10:00 2015

GNU Terry Pratchett, without whom this blog would not exist

mstpan 16 - Logging

Mon Mar 16 19:30:00 2015

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

Moo 2 and strictures 2

Mon Mar 2 16:30:00 2015

An explanation of the changes in default behaviour

Not an mstpan

Mon Dec 22 21:20:00 2014

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

mstpan 15 - Email

Fri Dec 19 21:30:00 2014

In which EHLO implies something worse than teletubbies

mstpan 14 - Exporting

Thu Dec 18 21:30:00 2014

Namespace all the things!

mstpan 13 - SOAP

Wed Dec 17 21:30:00 2014

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

mstpan 12 - Object Orientation

Tue Dec 16 21:15:00 2014


mstpan 11 - Distribution Building

Mon Dec 15 21:15:00 2014

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

mstpan 10 - Perl VM deployment

Fri Dec 12 22:15:00 2014

I still roll to disbelieve in dependency heaven.

mstpan 9 - Library deployment

Thu Dec 11 21:20:00 2014

I roll to disbelieve in dependency heaven

mstpan 8 - Async

Wed Dec 10 18:00:00 2014

Now have problems two you

mstpan 7 - JSON

Tue Dec 9 22:00:00 2014

In Crockford We Trust

mstpan 6 - Databases

Mon Dec 8 22:00:00 2014

Welcome to Database Haters Anonymous

mstpan 5 - Files

Fri Dec 5 22:00:00 2014

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

mstpan 4 - HTML

Thu Dec 4 21:00:00 2014

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

mstpan 3 - XML

Wed Dec 3 21:00:00 2014

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

mstpan 2 - Web Deployment

Tue Dec 2 21:00:00 2014

Web Scale! Web Scale! Web Scale!

mstpan 1 - Web Frameworks

Mon Dec 1 21:30:00 2014

Beyond lies the wub

Adrian Trout

Tue Jul 9 08:30:00 2013

The other half of the equation

Hallway++ - HWPP::NA 2013

Tue May 21 16:00:00 2013

Hallway++ means you're never interrupting

An Incident Summary

Fri May 17 18:30:00 2013

A short note clarifying the results of an IRC incident.

On Codifying Conduct

Thu May 9 19:00:00 2013

Musings on the insufficiency of the reasonable person principle

The Wild Bill Protocol

Wed Apr 17 02:30:00 2013

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

Moo 1.1 - fixes and defaults and builders, oh my

Sat Mar 16 21:30:00 2013

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

A Perl of your own

Sat Feb 23 21:00:00 2013

Wish your perl had different defaults? Use myperl

Pumpkin Perl Breakdown - What, Why, How

Sat Feb 16 10:00:00 2013

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

Pumpkin Perl - the Patchset

Sat Feb 16 10:00:00 2013

The repository, the branch, the manifesto

Pumpkin Perl Redux - Comments and Responses

Fri Feb 15 14:00:00 2013

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

Names and Numbers, Brands and Identity

Thu Feb 14 14:00:00 2013

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

Your design sucks

Thu Jan 17 18:50:00 2013

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

Passion, Protectiveness, Anger and Anguish

Mon Jan 14 18:30:00 2013

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.

Merry Slidesmas!

Sun Dec 23 04:30:00 2012

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

Classy code generation

Tue Oct 16 13:45:00 2012

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

Neither Nerd nor Bro

Sat Jul 21 16:30:00 2012

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

Moo versus Any::Moose

Thu Jul 19 12:30:00 2012

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

Moo 1.0!

Wed Jul 18 21:50:00 2012

Moose surface syntax in pure perl with metaclass interoperability

Community Diary - 2012-07-14

Sat Jul 14 16:00:00 2012

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

Things I Learned In Hospital

Mon Jul 9 20:00:00 2012

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

On Premature Genderisation

Thu Jun 28 01:35:00 2012

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

Lists, pre-increment, and post-increment

Mon Jun 25 21:45:00 2012

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

Community Diary - 2012-06-23

Sat Jun 23 20:00:00 2012

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

Sandra Trout

Tue Jun 5 21:30:00 2012

A little insight into where I came from.

Announcing Hallway++

Wed May 23 21:00:00 2012

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

MooseX::Types - because typing is hard

Fri May 18 15:00:00 2012

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

Harassment is Toxic

Thu May 10 01:45:00 2012

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

On Being Part Of The Solution

Wed May 9 02:30:00 2012

Stand up for your nice people, gods damnit!

On Not Being A Problem

Tue May 8 00:30:00 2012

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

Plat-forms Redux

Wed Jan 26 04:00:00 2011

Alarms, excursions, apologia and conclusions

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

Plat-forms server setup

Sun Jan 16 20:00:00 2011

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.

Sherlock Holmes debugging

Mon Jan 10 19:00:00 2011

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.

Iron Mad

Fri May 28 18:15:00 2010

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.

Time to pick a forfeit!

Tue May 18 21:00:00 2010

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.

Exciting days ahead

Wed Apr 14 14:45:00 2010

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.


Sun Apr 4 22:00:00 2010

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

UKUUG Spring 2010 - day 2

Fri Mar 26 20:30:00 2010

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.

UKUUG Spring 2010 - day 1

Thu Mar 25 08:00:00 2010

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.

Zoom Zoom - template emotion

Wed Mar 17 21:00:00 2010

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.

You Should Hire A Dev Shop Too

Tue Mar 9 22:00:00 2010

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.

Oh Subdispatch, Oh Subdispatch

Mon Mar 1 22:00:00 2010

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

Humane Login Screens

Sun Feb 21 22:00:00 2010

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

Simple Debugging

Sat Feb 13 22:30:00 2010

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.

Show Us The Whole Code

Fri Feb 5 20:15:00 2010

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

Half A Moose

Thu Jan 28 19:45:00 2010


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.

Orlando 2010

Wed Jan 20 21:45:00 2010

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

On being a Bastard

Mon Jan 11 22:30:00 2010

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.

Love your idiots

Sun Jan 3 21:30:00 2010

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

Goto considered useful

Sat Dec 26 22:00:00 2009

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.

Choosing a library

Fri Dec 18 17:10:00 2009

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

Shaving a Moose

Wed Dec 9 20:40:00 2009

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

Countdown to Christmas

Tue Dec 1 18:00:00 2009

December is here! Where did that year go?

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

Web Simple Shipped!

Wed Nov 25 22:00:00 2009

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.

F-ck Perl 6

Tue Nov 17 22:26:00 2009

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.


Thu Nov 12 01:00:00 2009

On this day, we give thanks

It was Nov 11 when I decided to write this

Introducing Web::Simple

Wed Nov 4 01:15:00 2009

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

Pisa++ Organisers--

Mon Oct 26 17:20:00 2009

I got. Erm. Auctioned off.

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

Shifting the Furniture

Sun Oct 18 20:00:00 2009

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)

To Kill A Mockingbird

Sat Oct 10 18:20:00 2009

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, and why you have to ignore it sometimes

Fri Oct 2 17:10:00 2009

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

Beautiful Perl: A simple plugin system

Wed Sep 23 17:40:00 2009

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.

Learning to Design

Tue Sep 15 22:35:00 2009

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.

Things Not Enough People Know

Mon Sep 7 22:20:00 2009

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 ...

Iron Munger Up!

Sat Aug 29 21:50:00 2009

The Iron Munger app is now running

The badge code exists! IT'S ALIIIIIVE!

Backwards Compatibility and Migration Paths

Sat Aug 22 20:15:00 2009

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

The Power of Asking

Fri Aug 14 21:10:00 2009

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.

Test the RC! Test the RC! Test the RC!

Fri Aug 7 17:15:00 2009

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

Indirect but still fatal

Wed Jul 29 21:25:00 2009

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.

A cunning no_plan?

Tue Jul 21 18:00:00 2009

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 Definitive Guide to Catalyst

Mon Jul 13 23:20:00 2009

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.

Iron Munger! - Almost :(

Sun Jul 5 17:30:00 2009

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.

YAPC aftermath: perl5 4lyfe

Sat Jun 27 19:00:00 2009

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

The Most Important Thing

Fri Jun 19 17:30:00 2009

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

Respect is Per Community

Thu Jun 11 23:00:00 2009

... 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.

Tainted Love

Wed Jun 3 22:00:00 2009

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.

But I can't use CPAN

Tue May 26 20:20:00 2009

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.

Buy Pizza. Pay with snakes ... Eat Bicycle.

Mon May 18 22:00:00 2009

TMTOWTDI but which one makes most sense?

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

Hacking While Drunk

Mon May 11 22:00:00 2009

How ethanol can make you a better programmer

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

Madness With Methods

Mon May 4 22:10:00 2009

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: Update

Sat Apr 25 16:22:00 2009

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.

We Are Iron Man

Sat Apr 18 15:00:00 2009

Announcing the Enlightened Perl Iron Man Competition

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