Marcus Ramberg responded to my post on How I Use Catalyst, and I’d like to respond to a few points he made. Marcus wrote: I disagree that $schema->resultset(‘Person’) is a significant improvement on $c->model(‘DBIC::Person’). Me too! I don’t think the former is a significant improvement over the latter. They are, after all, more or less the same. The one big problem is that the latter version uses a nonexisting DBIC::Person namespace.
I created a new website as a fun little personal project, She Said What?! It was a fun experiment both in minimal web design, and also in minimal code. I can update it from the command line just by typing: 1 ssw 'A quote goes here|and commentary goes here' This adds a quote to the quote “database”, which is just a directory of timestamped flat files on my desktop.
Now that I’ve written about My Way of the Webapp and what Catalyst really is, I’ll explain what I don’t like about Catalyst. I’m not going to talk about things I know the Catalyst developers are aware of. In particular, the use of subroutine attributes for dispatching is horrible, and they know it. I’m excited to see CatalystX::Declare, since something like that should be the future of Catalyst controllers. Another well-known misfeature is the rampant use of subclassing for plugins and the lack of well-defined APIs.
I have this one day Moose class I’ve developed. I was supposed to give it at YAPC, but I was sick and cancelled my trip. Here’s the class summary I wrote for YAPC: This will be an interactive hands-on course all about Moose. Moose is an OO system for Perl 5 that provides a simple declarative layer of “sugar” on top of a powerful, extensible meta-model. With Moose, simple classes can be created without writing any subroutines, and complex classes can be simplified.
I’ve been working on web applications for a long time, and over the years I’ve developed a specific approach to structuring web application code. In the past few years, this has been strongly influenced by REST concepts. My approach leads me to make use of some existing concepts, like cookies and sessions, in an idiosyncratic way. Sometimes in discussions about web application I’ll refer to these idiosyncrasies, but seen in isolation they may make no sense to anyone but me.
It occurred to me today that if you look at my history as a CPAN author, you’ll see that I’ve either written or heavily participated in every popular target of re-invention on CPAN! I started off by writing an ORM, Alzabo. Back when I released it, this was one of the very first ORMs for Perl. Amusingly, I re-invented the whole ORM concept pretty much independently. I don’t think I even heard the term until after Alzabo was released.
Well, I thought I was getting better, but I was wrong. Last week my infection seems to have had a resurgence, and I’m not feeling well enough to travel. Yuval Kogman has offered to teach the Moose tutorial at OSCON, so that will still go on, assuming O’Reilly agrees to the switch. I’m still hoping to go to Italy in October. If I’m not recovered by then, I’m just going to have to get a robot body, because this meat sack is not working out so well.
A recent thread on the Mason users list reminded me of the problems I had grokking Catalyst when I first looked at it. Raymond Wan wrote “I’m skimming over the MVC part and as my system doesn’t use an SQL database, I’m wondering if Catalyst is overkill??” Those of us who know Catalyst know that this question is based on some wrong assumptions, but it’s easy to see why Raymond has those assumptions.
So a few weeks ago I got an infection that’s quite painful to have. The infection is gone but the pain lingers on, and according to my doctor can linger for months. I realized today that I am still exhausted from being sick, as well as being involved in the planning of three major events over the last six months or so - Frozen Perl, my AR group’s fundraising banquet, and our conference this past weekend.
I’ve been thinking about this idea of ruthless pragmatism over the last few days. What is ruthless pragmatism? How can we actually be ruthlessly pragmatic? Do we even want to be? Defining ruthless pragmatism is harder than you might think. The problem is that it’s easy to claim we’re being pragmatic, but I think mostly that consists of acting out our biases. If you are inclined to think that people won’t hear our (animal rights) message, you’ll probably tend towards so-called “direct action”, because you think that intimidation and property damage are the most pragmatic approach.