The first Scheme Boston meeting took place Tuesday night September 17th at Northeastern University. About 20 people attended to hear Bruce Lewis describe his Beautiful Report Language (BRL) which is a system for creating web pages with dynamic content. What follows are my notes from the meeting. I don't have much experience with web programming so if I am misstating or glossing over some things---web related or not---others should feel free to chime in and correct them.
The talk itself was one that Bruce originally gave at an O'Reilly Open Source Conference and was entitled, "BRL Speeds Web/DB Integration." He started with some motivation for BRL. Back in 1994 Bruce found himself maintaining a system called cgiemail at MIT that allowed users to compose email from web forms. Cgiemail used perl scripts and template files to mix static and dynamic content. He had a happy experience releasing it as free software because his larger user base found and reported bugs---both in the code itself and in the documentation---so quickly that he was able to fix them before his local users even discovered them. However, they also asked for new features---required fields, access to environment variables---that required extra punctuation and other complications and that suggested that it would be useful to incorporate real programmability into the system.
By 1997 Bruce was involved in a project that required Oracle DB functionality and this made the programmability option so attractive that he evolved cgiemail to BRL-1 which integrated Scheme with HTML. BRL-1 worked but it used MIT Scheme and was fairly slow. He eventually began to study Java and its runtime system and database classes and realized that incorporating it, along with Kawa---a Scheme implementation that compiles down to bytecodes that run on the Java virtual machine---would make a more effective solution, and so modern BRL was born.
Much of the rest of the talk involved showing examples of BRL, of the sort found in the online manual available at http://brl.sourceforge.net or http://brl.codesimply.net.
One interesting observation that came up was that because of the discipline involved in using Scheme, BRL needs to declare input variables entering from HTML forms using a special construct that makes them explicit. Originally Bruce thought this was a flaw because in a language like PHP one didn't have to do that. However it turns out that the PHP way of doing things presents security problems and that that language has had to introduce ugly fixes that make it at least as cumbersome as BRL.
Also, BRL makes it easy to centralize SQL configuration and has procedures for contacting SMTP servers so that it can send mail in ways that superficially look very similar to the original cgiemail system but that are much more powerful.
Bruce's employer Eaton Vance---a mutual funds company---has made it possible for him to release BRL under the Gnu Public License. It is impossible for him to calculate the number of users worldwide who are using it. He hears from a few who find it crucial to their business but for the most part his user base is pretty quiet. (He conjectures that they are competent and don't require a lot of handholding.) Within Eaton Vance BRL is central to one project where it was able to establish itself when Bruce prototyped the system while his group was exploring alternatives. The prototype was to help define requirements but it worked so well that there was no need to do a "real" implementation in some more popular technology afterwards. But even at that company it hasn't supplanted other systems.
After the talk Win Treese as moderator led a short discussion about the Scheme Boston group itself and its future. The consensus was that the 3rd Tuesday of the month 7:30-9:00pm was a good time to meet and that Northeastern was a good location. Matthias Felleisen had said that the room we were using---206 Egan---would be available and volunteered his grad students as a pool of potential speakers. For the next meeting Paul Steckler of NEU agreed to talk on recent work with PLT Scheme related to dynamic web programming.