Programs [was LPM: Meetings and attendance]

Janine janine at emazing.com
Tue Feb 13 12:33:08 CST 2001


> >Actually, I think this would be nice to stimulate list discussion.
> >How about folks say a couple paragraphs about a program they're
> >working on, or have done in the past that is useful or neat?  We could
> >post descriptions and links (maybe even programs) on the lexington.pm
> >page.  And if there's interest they could develop into talks.

http://grapevine.emazing.com

EMAZING has about 12 million active subscribers and we send around 25 million email messages a day.  I work on the Grapevine
product, which is responsible for only a small part of that volume.  It's my primary project, but as a junior programmer most of my
tasks involve maintenance and bug smooshing.

Grapevine is email chat.  (Think "pretty mailing lists" that have no moderators and are completely anonymous.)  Grapevine has three
major components:  the web interface, the mail delivery system, and the database.  I focus on the web interface, which is just a way
for people to see what the 'Vines are all about and sign up for ones they like.  (I have already complained about the weird graphic
of the whispering grapes on the homepage.  My boss said that the grape on the right looks like he's saying, "Let me find your
seeds." :-)

Everything at EMAZING is template-driven.  One of the senior programmers here has written a tag replacement program that is similar
in function to Text::Template, and we use it all the time.  The web people know how to format the tags and insert them in pages, the
content people have tools to help them add text to the tags in the database, and the programmers pull in templates, merge the data
with the templates, and handle unresolved tags and conditionals.  There are actually two layers of templates; the designers edit
basepages which are then merged with the look-and-feel content tags to create individual templates which are then merged with daily
data to create the pages that are displayed.  (A little crazy, but it does work.)

The Grapevine mail system accepts submissions from 'Vine subscribers and sends them to everyone on that 'Vine.  During this process
email addresses are anonymized and the message content is scrubbed.  Then the messages are grouped together by domain and delivered.
We have control mechanisms in place to limit the number of messages sent at a time to each domain (important for avoiding spam
filters).  I worked on the part that handles anonymous 1-on-1 messaging, which lets two people swap messages without knowing each
other's real email address.

Perl is used for everything here.  It is our language of choice, but we are also starting to use Java to write Oracle stored
procedures.  The end result is that the hard database work is done inside the database now instead of in Perl programs, and Perl/DBI
is just calling the stored procedures and capturing the output.

Um...all the servers are running Redhat, Apache, and mod_perl.

It's hard to separate out my individual contribution to the whole Grapevine.  I've been here for almost a year, but there's still
much about the core systems that I don't know.  I'll be happy to share what I can if anyone's interested.

Janine







More information about the Lexington-pm mailing list