Pride and the Symphony

Early this morning Alicia got up to help out for an all-day women's group event. I groggily got out of bed to hug her and wish her a good day. Off she went. I put the clothes from the wash last night into the dryer, made some breakfast, then promptly crashed again for few hours.

I made another breakfast, folded the clothes, and put together directions on public transit to get to Sausalito. Easy enough, BART to SF Civic Center, and Golden Gate Transit bus number 10 from 7th & Market.

Ok, but there's a problem, see, with this bus at 7th & Market thing. About two hundred thousand flamboyantly gay people were trying to parade onto the bus, too! Oh pride, how you do fill my pockets with randomly colored condoms.

So now I'm at the Stern Grove, arriving just about halfway into the Rachmananoff piano concerto that Orli Shacham is playing with the San Francisco Symphony. Magnificent piece magnificently played! And shortly into intermission, followed by Tchaikovsky's 4th Symphony :-)

Update: quite apropos for being Pride weekend, Tchaikovsky was gay!. And the symphony was played only just ok, unfortunately.

Plugin Strategies in Open Source, Part 2

In any project, feature-creep can be a problem. In an open source project, this can be particularly acute when there are few developers. Worse yet, someone becomes super-active just until their major new feature lands and then they disappear! And then there's the problem of noisy people who won't stop whining about getting some peculiar feature, or some major new functionality, either or both of which are just not interesting to anybody else.

An effective plugin strategy actually embraces these people and their pet features, providing a mechanism for decoupling code from the code project, yet allowing key features to be injected into the running system from a separate and contained plugins area. Note the words separate and contained. Both are very important.

The plugins area must be separate because you want to protect the clear messaging of your application's features. You also want to keep plugins separate because there can be a tendency to make everything a plugin. Don't. Just don't. Really. Core features are core. They are not plugins. Nobody wants a framework that does nothing until you've loaded a jillion plugins into it in order to create a working application. Sure, you should use code modularization as a programming technique, but don't go overboard. So separate is a double-edged sword: keep the non-essential stuff away from the core applications, and keep all the essential stuff inside the core application. Sometimes it means swallowing a plugin into the app. If it makes sense, do it.

The plugins must be contained. And, ideally, also self-contained. That is, you have a directory like '/your/app/plugins/some_crappy_plugin' for each plugin. The plugins are contained within '/your/app/plugins' and each one is further self-contained another directory level below that. Then, provide an API that allows the plugins to act at a distance. Yes, act at a distance. Normally this is something that you don't want because it is hard to figure out. But in the case of plugins, it is just right. The plugin does not need to patch into the main app code, but rather register itself with the main app and declare which of its functions should be called from which parts of the main app. It's runtime integration, runtime configurability, and runtime enable/disable. Sure it can be slower. But it's so much better than having people distributing patches that implement their functionality by hacking up your beautiful code.

Originally published at HydricAcid. You can comment here or there.


Trains, planes and automobiles...

Forgot about boats!

The next 3 days involve: a boat, to catch a bus, to get a train, to go to Bangkok, to pick up my spiffy new suit, and haggle for a tuk-tuk to catch a plane to fly to New York and then to San Francisco!

Cambodia... frickin' awesome and totally seriously really awesome and cheap and awesome! If I'd known, I'd have planned for a week in Siem Reap and Phnom Penh! Angkor Wat is definitely at least two full days worth, just to get the basics. Seriously, don't cut your Cambodia vacation short!

In Thailand...

...they have lots of tuk tuks and many Internets. And, sometimes when you're not so lucky, the Internet drives like a broke ass tuk tuk with lots of stops and detours along the way. Also I just had the best falafel in years today.