boutell: (Default)
Dear Super Badrats,

I launched a new website yesterday. What Shall We... is an insanely simple way to plan dinner, drinks, a movie party, or pretty much anything that isn't formal with people that you place at least a little trust in. I'm gunning for a level of simple that just doesn't happen with tools that require accounts (who wants another account anywhere ever?) and limit the amount of input that your peers are allowed to give in the decision. I'm also shooting for realtime here - you can watch people vote and suggest stuff on the fly. Which hopefully encourages folks to stay involved and come to consensus on the decision.

Please give it a look-see and let me know what you think!

What Shall We...

boutell: (Default)
Thanks to all, especially [ profile] iamo, for the thoughtful responses to my question about fastcgi.

I eventually figured out that the fastcgi "dynamic server" could live in a shared folder, resulting in only one set of PHP processes, if I used a simple Alias directive to map that path into all of the virtual sites.

With that change I was able to do this:
<IfModule mod_fastcgi.c>
  # One shared PHP-managed fastcgi for all sites
  Alias /fcgi /var/local/fcgi
  # IMPORTANT: without this we get more than one instance
  # of our wrapper, which itself spawns 20 PHP processes, so
  # that would be Bad (tm)
  FastCgiConfig -idle-timeout 20 -maxClassProcesses 1
  <Directory /var/local/fcgi>
    Options ExecCGI
  AddType application/x-httpd-php5 .php
  AddHandler fastcgi-script .fcgi
  Action application/x-httpd-php5 /fcgi/php-cgi-wrapper.fcgi

Coupled with the wrapper script I showed before, that works like a big working thing.

Then I switched Apache to the worker MPM rather than the prefork MPM (again, thanks for the suggestions), which really blew performance for static files through the roof.

The only remaining catch: no support for php_value settings in .htaccess files. Doh. Fortunately the settings I had in place there were easily shared among the virtual sites in question, so I swept them to php.ini.

(Yes, I know I really shouldn't have .htaccess files on sites where I'm concerned about performance anyway.)

Thanks again for the tips!
boutell: (Default)
The Symfony plugins site has implemented a clever scheme of "I Use It" buttons. These let you share the fact that you're actually using a plugin, as long as you have a developer account, which anybody who's created or contributed to a plugin does.

If you're using any of my Symfony plugins, kindly vote for them. Thanks!
boutell: (Default)
We're doing a lot of groovy stuff lately.

Two big things and one little thing:

1. pkContextCMSPlugin is a content management system written as a Symfony plugin. It emphasizes editor-friendly context-sensitive features. Double-click on content to edit, create and rename pages via controls in the breadcrumb trail, reorder pages by dragging them in the side navigation... as a general rule, we don't believe in dumb, ugly, modal admin pages.

2. pkMediaPlugin is a repository for images, and a meta-repository for video. (The video is actually hosted by YouTube. We plan to add support for more back ends, since they pretty much all have sexy APIs now.) pkMediaPlugin isn't just for Symfony developers; you can set it up in a Symfony project and then utilize the media repository you've created from other sites. You can easily create an interface to allow users to select media, put them in a particular order, and return to your application with that information. Then talk to our JSON-based API to find out everything there is to know about those images and videos. Then request them in any size and cropping style... and if you request that same version again, automatically get it delivered instantly by Apache as a static file.

3. We use a Campfire chatroom to keep up with what's going on during the day, and we use lots of Subversion version control repositories. So I wrote svncampfire, which provides updates in the chatroom when commits are made to folders we are about. Across several repositories, not all of which we control. If you have similar needs, check it out.

Is all this stuff in PHP? Yes. Does that mean you can't use it if you're not a PHP person? Well, you certainly don't need to be a PHP expert to benefit from svncampfire. pkMediaPlugin has a documented, RESTful API that responds with simple JSON objects, so you can use that too provided you're willing to set up a symfony PHP project to host it. pkContextCMSPlugin is for PHP developers (and their lucky clients) right now, but we're in the process of working out some exciting strategies to bring it directly to front end developers, and even directly to folks who don't know HTML and CSS.
boutell: (Default)
I wrote tbDuplicateKeyPlugin today on the train home from Connecticut. tbDuplicateKeyPlugin extends Symfony's admin generator to produce reasonable validation errors when MySQL complains about a duplicate key.

In English, that means that users get reasonable messages about things like duplicate names without a lot of additional effort on my part. Little gaps like that are coming up more often since I started giving out accounts to studio heads on Salsadelphia.

LJ-cut for source code and Barry White jokes. )
boutell: (Default)
Band name: "symfony sync production go"
boutell: (Default)

In seriously geeky news, a new release of sfGuardPlugin appeared today. It includes my group filter stuff. Looks like Fabien ported it to Symfony 1.1 as well. Neat.

Those who have already overridden the heck out of generator.yml will want to add _groups to the filters: list in that file. Those who are using the stock generator.yml, or just adding additional stuff in the usual way, won't need to do a goldarn thing.

Speaking of seriously geeky, is anyone else out there in reading-Tom's-LJ-land actually using Symfony?

While we're at it, for those who know what such things are, what's your preferred web development framework?

I won't try to come up with a formal poll here because I'd just leave out stuff. Examples that spring immediately to mind: Symfony, Zend, Drupal, Joomla, Zope, Rails, Struts, Cake. Tell me all about the awesome stuff I forgot to mention.
boutell: (Default)
I've been a busy contributor to the Symfony framework lately.

Academic folks are increasingly excited about Shibboleth, a system that allows students, faculty and staff to log on to many different web applications and even permits schools to authenticate logins by students at other schools. It does lots of other stuff too, but those are the basics. One of our primary clients is big on Shibboleth, and we've integrated it with Symfony... more than once, in different ways, on different projects.

Doing stuff more than once, of course, is usually a big waste of time and a violation of the DRY rule (Don't Repeat Yourself). So this week we released sfShibbolethPlugin, which builds on the well-known sfGuardPlugin, making it easy to add Shibboleth authentication to a Symfony application. In English, that means students can log in without the need for a separate database of usernames and passwords just for your application.

Shibboleth can do a lot of things and sfShibbolethPlugin doesn't support all of them, not even close. But it's quite useful out of the box. And it has some nice features, including support for snagging the user's display name ("real" name) from Shibboleth if you have access to that... and features that make it easy to add a "registration page" where users can provide any information you consider essential that is not provided by Shibboleth. When users first log in, they are firmly directed to the registration page, and can't do anything else until they complete it (well, they can log out and go away). This comes in especially handy if Shibboleth is providing only a username and you need a full name and an email address.

Speaking of sfGuardPlugin, that plugin provides a reasonable interface for managing users: you can easily grant them membership in various groups and so forth. But at the moment, I'm building a system that will likely have thousands of users. And the thought of not being able to filter those users by group didn't give me a warm fuzzy feeling. So I added that feature, and realized I wouldn't be the only one who needed it.

Today I received commit privileges on sfGuardPlugin itself (thank you, Fabien) and contributed support for filtering the list of users by group back to the sfGuardUser module. That code hasn't appeared in a new official release of the plugin yet, but those who use Symfony 1.0 can get it right now by fetching the current 1.0 branch directly from subversion (this part, I won't even try to translate into normal-glish).

And of course there's last month's sfTagtoolsPlugin, which allows for typeahead (auto-complete) of tags, much like that Flicker provides as you're typing in the tags field.

So far I've been coding in Symfony 1.0, and my plugins haven't been tried in a Symfony 1.1 or 1.2 environment. I'm watching the newer versions of Symfony with interest, but so far too many things we need in our work are undocumented or absent. That will change soon, I'm sure. Meanwhile 1.0 is rock-solid for us.

Hey, cool

Jun. 28th, 2008 08:18 pm
boutell: (Default)
Fabien Potencier accepted my Symfony bugfix for the next bugfix release in the 1.0.x series after all.

(It was previously reclassified by someone other than Fabien, this was his first weigh-in on the subject.)

Knowing that the man most responsible for Symfony viewed the issue similarly gives me a good feeling about using it. Which is important, because we use it a lot.
boutell: (Default)

Apparently the Symfony bug I reported last week won't be fixed in the 1.0.x series. I just dropped a line to the symfony-users list so that others who feel it is a bug can choose to fix it.
The details of that message follow. )

September 2014

2122232425 2627


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 17th, 2017 10:10 pm
Powered by Dreamwidth Studios