The Many Axes of Software Development

People want many things from software, and those desires are often contradictory. There’s a constant back and forth about what people want from CPAN modules, in particular. It seems like we have the same arguments year after year. I think talking about priorities before talking about why something is good or bad is crucial. So what are these priorities? How do they work together? Which ones are contradictory? Which ones are most important to you, and when do the priorities shift?

Epic Fantastic Ecology

I enjoy reading a good epic fantasy from time to time. Sure, it’s a well-worn genre, but I like a big story, and if it’s well-written, it can be fun. I just finished re-reading Tad Williams’ Memory, Sorrow, and Thorn trilogy (for the first time since it was published 20 years ago). It was enjoyable, despite a bunch of cliche bits. But it got me thinking about how ridiculous many fantasy worlds are when you look a little deeper.

Discoverability in REST vs Providing an API

I’m still stuck on the whole problem of the requirement that URIs for REST APIs be discoverable, not documented. It’s not so much that making them discoverable is hard, it’s that making them discoverable makes them useless for some (common) purposes. When I last wrote about REST, I got taken to task and even called a traitor (ok, I didn’t take that very seriously ;) Aristotle Pagaltzis (and Matt Trout via IRC) told me to take a look at AtomPub.

I’d Like to Be Dead Like Perl

The “Perl is Dead” meme has been going around for some time. It seems like one of those self-reinforcing things that people keep repeating, but where’s the evidence? The other half of the meme is that other dynamic languages, specifically Ruby, Python, and PHP are gaining market/mind share. That is true. I hear a lot more about Python, Ruby, and even PHP these days than I did five or ten years ago.

But I Like Docs, Roy!

Roy Fielding, the inventor of REST, wrote a blog post recently titled REST APIs must be hypertext-driven. It’s quite hard to understand, being written in pure academese, but I think I get the gist. The gist is that for an API to be properly RESTful it must be discoverable. Specifically, you should be able to point a client at the root URI (/) and have it find all the resources that the API exposes.

Favorite Concerts

I just got back from seeing The Magnetic Fields, and it was a great show. It got me thinking about the most memorable concerts I’ve seen over the years. In no particular order … Weird Al at Toad’s Place in New Haven, 1991 (or 1992). I know how deeply uncool it is to admit this, but I’ve seen Weird Al live, and it was great. I think this was the first rock concert I ever went to, in fact.

You don’t need to scale

Programmers like to talk about scaling and performance. They talk about how they made things faster, how some app somewhere is hosted on some large number of machines, how they can parallelize some task, and so on. They particularly like to talk about techniques used by monster sites like Yahoo, Twitter, Flickr, etc. Things like federation, sharding, and so on come up regularly, along with talk of MogileFS, memcached, and job queues.

A problem of multi-issue groups illustrated as a Venn Diagram

… because who doesn’t love a good Venn Diagram? CAA is committed to focusing on just one issue, and we avoid taking stances on other issues. Sometimes people question why, and I often see calls among the greater animal rights/social justice world for a multi-issue movement. There are lots problem with any multi-issue group, and the bigger your scope the bigger the problems. For example, what are your goals, what are your strategies?

Cross-posting from Movable Type to use Perl

If you’re seeing this on use Perl then the cross-poster is working. You can get it from my svn. You’ll also need to install WWW::UsePerl::Journal, which I monkey patch like crazy in the plugin. I have submitted patches to barbie, though, so hopefully that’ll go away in the future. The plugin isn’t too smart, so if you save the same entry it’ll re-crosspost each time. Patches welcome, of course.

New Moose Docs Aim to Answer “What is Moose?” and “Why Moose?”

Not so long ago I joined the Moose core team, and I recently shepherded a rather big Class::MOP (0.65) and Moose (0.56) release. Soon after there was an interesting thread on the Perl AppEngine list asking Why Moose. This is a perfectly good question. I realized that when you look at the Moose docs, it doesn’t really explain how it is conceptually different from any other Perl 5 OO helper module, nor does it really do much to show you exactly how Moose saves you work.