Re: Betsie Source Code Released

Hi,

I've looked at your sorce and despite the fact that I don't know Perl, I 
can get a rough idea of what's going on.  Well I must say you're very
adventurous to let just anyone download and redistribute it - I didn't 
want to do that with my access gateway because I thought there would be 
zillions of versions all over the web, many of which are really old.  I 
don't mind people downloading it and keeping up to date, but I get 
nightmares about being adversely judged on code I wrote years ago....

Having said that, there have been a few people who asked me for the 
location of the source, downloaded it, and disappeared.  This leaves me 
quite concerned as I have no idea what's happened (not to mention the 
fact that their versions are now out of date already).  And I'm still 
looking for permanent homes for my gateway - I'm just a student, here 
today gone tomorrow, with most things I do forgotten....

(This is not to say the gateway's useless.  It's very useful to me as 
I'm partially sighted myself.  I believe that people should be given 
maximum configurability in an interface, since everyone is different, 
and this is the main point of my gateway.  I'm just no good at getting 
anyone else interested in what I do.  I want to do research in universal 
accessibility when I graduate but nobody will take me.)

You've hard-coded a lot of details into Betsie (such as exactly which 
font size to used) whereas I've gone for lots of options.  So Betsie 
might be more suited to people who are new to computers and get 
bewildered by lots of options, whereas my gateway might be better for 
those who like to spend time fine-tuning their preferences.  I think 
both approaches have their applications and can certainly co-exist. 
(Before anyone quotes me out of context, I must quickly add that there 
is no excuse here for an application or an operating system to be 
unconfigurable.  The thing about web gateways is that there are easily 
selectable alternatives - you just go to a different web page.  With 
operating systems this is not the case - if you can't use Macintoshes 
then you can't work for any employer that exclusively uses Macintoshes, 
nor can you run any program that only runs on them.)

It's amazing how few people are interested in hosting something that 
essentially lets others use your computer at no benefit to you.  This is 
why public proxies keep closing down (and this could be a major problem 
in Y2K, when parts of the Internet could go up and down like yo-yos, 
source packet routing isn't usually honoured and in the absence of 
public proxies there will be many black holes).  I've asked the RNIB and 
they say they might be interested but they're sitting on it (they've 
been very busy for the last few months).  I don't suppose you'd like 
to put it on the BBC's server would you?  And who manages www.w3.org 
anyway?

Anyway, about the source.  One of the main differences between us is 
that your program is designed primarily to help with access to a 
particular site, whereas mine is designed as a gateway for the whole 
web.  It therefore needs to be able to cope with just about anything the 
web can throw at it - and if the web throws something at it that it 
can't cope with, I have to fix it.  For example, my gateway can cope 
with the following but Betsie can't, and there are pages out there that 
are really like this (or like part of it):

(14 lines of HTML follow)
<HTML>
<HEAD>
<META NAME="Description" CONTENT="Look > < > >">
<STYLE blah blah blah>
</HEAD>
<BODY>
<!-- comment >
<  
      APPLET  SRC="hello.class" >  <      /
APPLET>
<TABLE><TR>
<TD><A HREF="test.jpg">test</TD><TD>hello</TD>
</TR></TABLE>
</BODY></HTML>

This contains a style sheet (untouched by Betsie and hence can override 
all font choices; access gateway has an option to remove it), spaces and 
new lines at the start of an APPLET tag (Betsie processes the applets 
before it remove the spaces, so it won't remove that applet), an 
old-style comment (if the string --> does not occur in the document then 
you should treat > as a comment terminator), and the < and > signs 
within quotes in a tag (which may confuse your tag parsing).  It also 
contains the common idiom of using /TD to terminate a link; when Betsie 
removes the /TD, the link goes too far because it isn't aware of this.  
Also, the link is to a graphics file, which Betsie is unaware of and 
tries to redirect through itself.

Besides coping with this rubbish, my gateway is also meant to be more 
configurable and has a wider range of types of processing that it can 
do.  As a result of both of these things, the code gets more complicated 
(as I expect you've found out) - your Perl is about a tenth of the size 
of my C++.  If you expand Betsie to cope with more Web gizmos and laxer 
HTML (which you'll probably have to do if you want it to be able to cope 
with some of the sites that are out there), you may well find that the 
whole thing gets slower.  Not only is Perl an interpreted language, but 
the way you've done string parsing seems to introduce countless passes 
through the document.  For example, you pass right through the whole 
document removing surplus spaces from tags, and you pass through again 
to remove applets, and so on.  I don't know much Perl but this is 
probably a natural side-effect of the language.  If it's given a big 
document, that can mean quite a chunk of processing.  I take it the BBC 
have a good high-end server then!  I just make two passes, the first one 
finding out anything it needs to look ahead to find out (such as whether 
there's a META redirection), and the second doing all the work and 
generating the output.  And C++ is a lot faster than Perl.

The obvious advantage of Perl is its relative saftey, but I'm pretty 
sure I know how to write secure C++.  I agree that putting code written 
by a C++ novice on a web server is asking for disaster, but the gateway 
isn't like that.  (If anyone wants to try crashing my gateway, feel free 
to have a go and let me know how you get on.)  There comes a point when 
you can't implement everything in a scripting language.

By the way, I'm not sure what you were saying about Java security.  When
it's absolutely necessary for me to get to Java applets, I can check the
"enable applets" box in my gateway and it seems to work fine (it just
re-directs the code URL to point back to the original page).

Regards

-- Silas S Brown, St John's College Cambridge UK http://epona.ucam.org/~ssb22/

"I know of no way of judging the future but by the past" - 18th century
 American statesman Patrick Henry

Received on Wednesday, 24 February 1999 02:38:01 UTC