Handling the Ball of Mud

Or, what to do when your organically grown Perl application gets too big for its (and your) own good

Fred Moyer

Red Hot Penguin Consulting LLC

Who the heck am I?

[any material that should appear in print but not on the slide]

What's a Ball of Mud?

[any material that should appear in print but not on the slide]

The Startup

[any material that should appear in print but not on the slide]

The tools group of an organization

[any material that should appear in print but not on the slide]

Evolution of the Ball of Mud

[any material that should appear in print but not on the slide]

Evolution of the Ball of Mud

[any material that should appear in print but not on the slide]

Evolution of the Ball of Mud

[any material that should appear in print but not on the slide]

Evolution of the Ball of Mud

[any material that should appear in print but not on the slide]

Evolution of the Ball of Mud

[any material that should appear in print but not on the slide]

Here comes Downtime

[any material that should appear in print but not on the slide]

How to Handle the Ball of Mud

[any material that should appear in print but not on the slide]

How to Handle the Ball of Mud

[any material that should appear in print but not on the slide]

Frameworks are not silver bullets...

[any material that should appear in print but not on the slide]

Refactoring is a Winchester pump...

[any material that should appear in print but not on the slide]

The N-thousand line program

[any material that should appear in print but not on the slide]

The N-thousand line program


use Test::More tests => 3;

my $class = 'program';
require_ok("$class.pl");
import $class qw( addition should_die);

no strict 'refs';
${"main\:\:var"} = 5; # override globals
my $method = 'addition';
cmp_ok($method->(1,1), '==', 2, '1+1 returns 2');

$method = 'should_die';
eval { $method->() };
like($@, qr/oops/i, 'should_die() died');
[any material that should appear in print but not on the slide]

The N-thousand line program

[any material that should appear in print but not on the slide]

The test suite that runs forever

[any material that should appear in print but not on the slide]

The test suite that runs forever

[any material that should appear in print but not on the slide]

MyPAN

[any material that should appear in print but not on the slide]

MyPAN

[any material that should appear in print but not on the slide]

MyPAN

[any material that should appear in print but not on the slide]

Social Engineering

[any material that should appear in print but not on the slide]

Social Engineering

[any material that should appear in print but not on the slide]

Social Engineering

[any material that should appear in print but not on the slide]

Tools for success

[any material that should appear in print but not on the slide]

Credits

[any material that should appear in print but not on the slide]

Thank you NPW 2007!



[any material that should appear in print but not on the slide]

Shameless Plug



[any material that should appear in print but not on the slide]