PHP: a fractal of bad design

I can’t even say what’s wrong with PHP, because— okay. Imagine you have uh, a toolbox. A set of tools. Looks okay, standard stuff in there.

You pull out a screwdriver, and you see it’s one of those weird tri-headed things. Okay, well, that’s not very useful to you, but you guess it comes in handy sometimes.

You pull out the hammer, but to your dismay, it has the claw part on both sides. Still serviceable though, I mean, you can hit nails with the middle of the head holding it sideways.

You pull out the pliers, but they don’t have those serrated surfaces; it’s flat and smooth. That’s less useful, but it still turns bolts well enough, so whatever.

And on you go. Everything in the box is kind of weird and quirky, but maybe not enough to make it completely worthless. And there’s no clear problem with the set as a whole; it still has all the tools.

Now imagine you meet millions of carpenters using this toolbox who tell you “well hey what’s the problem with these tools? They’re all I’ve ever used and they work fine!” And the carpenters show you the houses they’ve built, where every room is a pentagon and the roof is upside-down. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door.

That’s what’s wrong with PHP.

12 Examples of Paragraph Typography

<blockquote class='posterous_long_quote'><p>These are supporting examples for the blog entry, The Paragraph in Web Typography & Design.</p> <p>Only standard <code>&lt;p&gt;</code> tags have been used. Some of these styles are experiments using pseudo elements and adjacent sibling selectors; browser support is not consistent. Paragraph font size is set at 1em (equivalent to 16px if browser font size is unchanged) and line height set at 1.25em. Georgia was used exclusively. No browser specific CSS has been used—any inconsistency in the rendering of line-height, baseline and element positioning has been left for cross browser comparison before implementing.</p> <ol> <li>Browser default style</li> <li>Block flush left, ragged right</li> <li>Block justified</li> <li>One em indent with boundary, flush left, ragged right</li> <li>Two lead indent without boundary, flush left, ragged right</li> <li>Indent without boundary, justified</li> <li>Outdent flush left, ragged right</li> <li>Continuous text, CSS generated pilcrow divided</li> <li>Elevated cap (versal) with bold opening</li> <li>Drop cap (versal) with bold opening</li> <li>Outdent cap (versal) with bold small caps opening</li> <li>Initial outdented block with CSS generated section and mid point dividers</li></ol></blockquote>