Web Developer Position Available in Virginia

I forget sometimes that I have this soapbox. We are looking for a web developer. A 2.0 kind of developer. Here’s the job description I wrote, that was turned down:

Do you know the difference between usability testing and asking people what they think of your web site? Do you know the difference between HTML 4.0 and XHTML and do you know when to use one and not the other? Do you know what csszengarden is, how it is done, and why it matters? Do you know what a content management system is (and you do know that Frontpage isn’t one, right)? Do elegance and simplicity mean something special to you?

We need you. If you have seen some of our web sites, you know we really need you. This is the easiest job in the world because it is so easy to improve what we have. This is the hardest job in the world because we want our web presence to be great. In fact, we want it not just to be great, we want it to be world-class. We know about CMS, CSS, Javascript, Wikis, Weblogs, Web 2.0, DOM, JSP, PHP, Ruby on Rails, AJAX, (pick your own buzzwords) and we even have the skills. We just have not had time or resources to pick and choose and implement them in a coherent, planned, professional way. Now we do and that is your job, but you’ll be a key member of a team that has the skills and committment to work together to serve the students, faculty, staff and community colleges of Virginia.

Ready for a challenge and the opportunity to create amazing things?

Here’s the more mundane description we went with (pdf).

And on a serious note, I love working here, this is a great job with great people and a great opportunity to really make a difference and add a litany of skills and projects to your resume, in an enterprise that really makes a difference. I think the pay is good, as are the benefits.

Exim configuration for Mailman with Redhat RPMs

I’ve been working on installing Mailman at our institution. It’s been interesting and fun (I’ve been working particularly on altering the default design), but we ran into a problem that had me scratching my head for the past couple of days.

When I tried to send e-mail to a list, I got the following error in the Exim log:

Child process of mailman_transport transport returned 127 (could mean unable to exec or command does not exist)

I finally tracked the issue down with lots of help from another pair of eyes from a colleague. When you install using Redhat RPMs, mailman messages and list data are stored in /var/lib/mailman, but the binaries and other installation files are stored in /usr/lib/mailman. The Exim instructions for Mailman go like this:


# By default this is set to "/usr/local/mailman"
# On a Red Hat/Fedora system using the RPM use "/var/mailman"
# On Debian using the deb package use "/var/lib/mailman"
# This is normally the same as ~mailman
MM_HOME=/var/mailman
#
<snip>
#
# These values are derived from the ones above and should not need
# editing unless you have munged your mailman installation
#
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck

See the problem? The list check on a Redhat RPM needs to point to one place (/var/lib/mailman), and the wrapper needs to point to another (/usr/lib/mailman), so one can work, but not the other – the other error we were getting was “local delivery failed” (when the MM_HOME value was set to /usr/lib/mailman the Exim mailman_router would fail because the config.pck file was actually in /var/lib/mailman) – you can also test these at the command line with /usr/sbin/exim -bt <listname>@<yourhost>.

The solution was to hard-code the list check in exim.conf:


MM_HOME=/usr/lib/mailman
...
<snip>
...
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=/var/lib/mailman/lists/${lc::$local_part}/config.pck

Hopefully this will help anyone else who might run into this problem.