Eastwards from London Bridge at night

I know you might have already seen it on Flickr, but I still love it.

  • "I don’t blame The Cure. That was your call. The Cure is just out there, like car horns or people who make noise when they cry. The Cure is a choice. When we hear Michael, it is not a choice to feel the beat. It is not a choice to cock your head and straighten all the fingers on your right hand." And, in a sea of media nonsense, still the best eulogy was written by an illustrated cat in a thong.
  • "Design, culture, scale, space, superpowers. Key concepts: design and contributing to culture; ourselves as individuals and the big picture; taking action. …other topics covered include million mile tomatoes, President John F Kennedy as a yogic master, superpowers and the tools of production." I am very lucky to work with smart people. I do not know what to do with my 100 hours.

CodeIgniter really is turning out to be The Little PHP Framework That Could. I’ve now dived pretty deep into it and still have few complaints; as I’ve said before, it makes all the boring stuff easy, has almost no “magic”, and stays out of the way.

As the application moves towards production, though, I began to miss a few things from Rails – notably, its ExceptionNotifier plugin. ExceptionNotifier will send you an email every time there’s an error on the site, which is really very useful with production applications.

So I investigated alternatives for CodeIgniter. I stumbled across this Stack Overflow post, which basically outlines exactly what I was looking for.

Except it doesn’t work.

Never mind! We can fix that, and the end result is MY_Exceptions.php:

(You might want to “view raw” on that – there’s some funky syntax-highlighting going on).

This really does work out-of-the-box with CodeIgniter 1.7.x. You just drop it into system/application/library, call it MY_Exceptions.php, and it’ll extend the existing Exceptions library. Obviously, you’re going to need to change a lot of the obvious details like email addresses you want things sent to, and the name of the production domain you’ve configured in your app’s config.php. You also need to make sure the error log level is set to “1” or higher in that config.php file. But that’s about it; it really does work, and means that in production alone, you’ll get email from your app when a PHP error gets thrown, along with not only the line number and file the error was thrown in, but the URL that the user was accessing to generate the problem.

Not bad for an hour’s work. And, because it’s a Gist, you can either copy and paste, or just clone it straight into your application.