From: Jeff Shrager
Subject: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190675423.609625.275140@57g2000hsv.googlegroups.com>
Dump the downloading; Blow the books!

Wanna learn Lisp THE WEB WAY:

1. Go to www.biobike.org
2. Click "Try out the BioBike demo server(no password required)"
3. Carefully read (of course you will!) the agreement and click:
   "By clicking this link I agree that I have read and understand all
of the below."
4. Enter a name, any name. (Don't use TEST or FOO -- everyone uses
TEST or FOO
   -- use something that's not likely to put you in someone else's
workspace!)
5. Don't bother the the email or password unless you want to tell us
who you are.
6. Press ENTER

You're now talking to KnowOS: A multi-headed, multi-threaded lisp
machine on the web.

Okay, so you wanna learn lisp:

6. Pull down (at the bottom) Help... and select "Live tutorials"

The first three (actually the 2nd through 4th are:

    Lisp I: Evaluation: The basics of Lisp evaluation.
    Lisp II: Data and Iteration: Lisp data structures and iteration
(loops).
    Functions: An important little Lisp lesson.

When you click on a tutorial link it will try to open in a new window
(if you have pop-ups blocked, you might have to hold the Ctrl key to
allow this). You'll want to put the tutorial page someplace where it
doesn't entirely overlap the BioBike listener because what's going to
happen is that when you press the DOIT buttons in the tutorial, it
will
Do the indicated computation over in the other window. This takes a
moment to
get used to, and is a little clunky on a small screen... Hopefully you
have
fairly large screen, although you can always just swap back and forth.

We recommend FireFox, although I actually use IE (because FireFox is
so buggy
and slow, however, some minor things won't work in IE).

Enjoy!

From: Slobodan Blazeski
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190705021.928635.160130@n39g2000hsh.googlegroups.com>
On Sep 25, 1:10 am, Jeff Shrager <········@gmail.com> wrote:
> Dump the downloading; Blow the books!
>
> Wanna learn Lisp THE WEB WAY:
>
> 1. Go towww.biobike.org
> 2. Click "Try out the BioBike demo server(no password required)"
> 3. Carefully read (of course you will!) the agreement and click:
>    "By clicking this link I agree that I have read and understand all
> of the below."
> 4. Enter a name, any name. (Don't use TEST or FOO -- everyone uses
> TEST or FOO
>    -- use something that's not likely to put you in someone else's
> workspace!)
> 5. Don't bother the the email or password unless you want to tell us
> who you are.
> 6. Press ENTER
>
> You're now talking to KnowOS: A multi-headed, multi-threaded lisp
> machine on the web.
>
> Okay, so you wanna learn lisp:
>
> 6. Pull down (at the bottom) Help... and select "Live tutorials"
>
> The first three (actually the 2nd through 4th are:
>
>     Lisp I: Evaluation: The basics of Lisp evaluation.
>     Lisp II: Data and Iteration: Lisp data structures and iteration
> (loops).
>     Functions: An important little Lisp lesson.
>
> When you click on a tutorial link it will try to open in a new window
> (if you have pop-ups blocked, you might have to hold the Ctrl key to
> allow this). You'll want to put the tutorial page someplace where it
> doesn't entirely overlap the BioBike listener because what's going to
> happen is that when you press the DOIT buttons in the tutorial, it
> will
> Do the indicated computation over in the other window. This takes a
> moment to
> get used to, and is a little clunky on a small screen... Hopefully you
> have
> fairly large screen, although you can always just swap back and forth.
>
> We recommend FireFox, although I actually use IE (because FireFox is
> so buggy
> and slow, however, some minor things won't work in IE).
>
> Enjoy!

Nice , what kind of  os/lisp/server/framework it's implemented in ?
From: Jeff Shrager
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190728653.410442.44960@y42g2000hsy.googlegroups.com>
> Nice , what kind of  os/lisp/server/framework
> it's implemented in

Since Peder answered your direct question; let me answer your indirect
question: The system (implemented almost entirely, BTW, by JP Massar)
is, with small but important exceptions, in generic common lisp. The
main small but important exception is that it relies upon the ACL
thread management system. It's slightly possible that this could be
generalized, but ACL's thread management is quite good, and quite
complex. However (and here's the answer to your second implied
question), the code is also entirely open source under and MIT
license. Instructions on how to download and set it up for yourself,
and possibly extend and generalize it, are available through the Docs
page(s) @ www.biobike.org.

A few interesting notes:

* Everything that you type is dynamically compiled, so your infinite
loops will run FAST! [Please don't try to bring down the server by
writing infinite loops, etc.; it's not entirely bullet-proof and, yes,
someone who knows what they're doing CAN bring it down! But trying to
do so is an easy, uninteresting, and anti-social exercise, and as we
all know, Lispers aren't evil! :-)

* If you explore some of the other lessons in the Live Tutorials
you'll discover that the thing has a built-in Frame system (thanks to
Mike Travers), a file system, a paren-balancing editor (although it
unfortunately isn't emacs -- best we could do in lightweight
JavaScript with the time and expertise we had HINT HINT!), and has
many other OS-like services, such as session control. We don't call it
KnowOS lightly!

* Speaking of which, there are several papers (and pages) that you
ought to read if you want to know more about this, and about the whole
BioBike vision and project. All of these are available through the
afore-mentioned docs page(s). There is, in fact, an ILC 2005 talk
describing it whose a/v I'm told is online someplace.
From: Peder O. Klingenberg
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <ks8x6vb28m.fsf@beto.netfonds.no>
Slobodan Blazeski <·················@gmail.com> writes:

> Nice , what kind of  os/lisp/server/framework it's implemented in ?

Easy enough to figure out:

<2>> (lisp-implementation-version)
:: "8.0 [64-bit Linux (AMD64)] (May 19, 2007 16:01)"
<3>> (lisp-implementation-type)
:: "Allegro CL Enterprise Edition"
<4>> *features*
:: (:SOAP-LXML :BIOWEBSERVER :BIOLISP :SPLIT-SEQUENCE :WEBLISTENER-FRAMES
 :ACLDNS :IO-TIMEOUT :BIOBIKE-UTILITIES :ASDF :CL-PPCRE :WEBLISTENER
 :NEW-TESTS :|YACC Release 0.98| :HAS-LOCKF :ALLEGRO-CL-ENTERPRISE
 :IPV6 :ACL-SOCKET :HIPER-SOCKET :PROFILER :MULTIPROCESSING :FLAVORS
 :LITTLE-ENDIAN :GSGC :COMPILER :USE-STRUCTS-IN-COMPILER :CLOS :DYNLOAD
 :DLFCN :UNIX :LINUX :AMD64 :LINUX86-64 :X86-64 :ENCAPSULATING-EFS
 :RELATIVE-PACKAGE-NAMES :MODULE-VERSIONS :IEEE :IEEE-FLOATING-POINT
 :CONFORMING-IEEE :COMMON-LISP :ANSI-CL :DRAFT-ANSI-CL-2 :X3J13
 :ALLEGRO :EXCL :FRANZ-INC :ALLEGRO-VERSION>= :ALLEGRO-VERSION=
 :NEW-ENVIRONMENTS :PROCESS7 :SYMBOL-VALUE-VECTOR :DYNLOAD-ACL-LIBRARY
 :ALLEGRO-V8.0 :64BIT :SSL-SUPPORT)

...Peder...
-- 
I wish a new life awaited _me_ in some off-world colony.
From: Slobodan Blazeski
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190708587.458027.59160@k79g2000hse.googlegroups.com>
On Sep 25, 10:03 am, ·····@news.klingenberg.no (Peder O. Klingenberg)
wrote:
> Slobodan Blazeski <·················@gmail.com> writes:
> > Nice , what kind of  os/lisp/server/framework it's implemented in ?
>
> Easy enough to figure out:
>
> <2>> (lisp-implementation-version)
> :: "8.0 [64-bit Linux (AMD64)] (May 19, 2007 16:01)"
> <3>> (lisp-implementation-type)
> :: "Allegro CL Enterprise Edition"
> <4>> *features*
> :: (:SOAP-LXML :BIOWEBSERVER :BIOLISP :SPLIT-SEQUENCE :WEBLISTENER-FRAMES
>  :ACLDNS :IO-TIMEOUT :BIOBIKE-UTILITIES :ASDF :CL-PPCRE :WEBLISTENER
>  :NEW-TESTS :|YACC Release 0.98| :HAS-LOCKF :ALLEGRO-CL-ENTERPRISE
>  :IPV6 :ACL-SOCKET :HIPER-SOCKET :PROFILER :MULTIPROCESSING :FLAVORS
>  :LITTLE-ENDIAN :GSGC :COMPILER :USE-STRUCTS-IN-COMPILER :CLOS :DYNLOAD
>  :DLFCN :UNIX :LINUX :AMD64 :LINUX86-64 :X86-64 :ENCAPSULATING-EFS
>  :RELATIVE-PACKAGE-NAMES :MODULE-VERSIONS :IEEE :IEEE-FLOATING-POINT
>  :CONFORMING-IEEE :COMMON-LISP :ANSI-CL :DRAFT-ANSI-CL-2 :X3J13
>  :ALLEGRO :EXCL :FRANZ-INC :ALLEGRO-VERSION>= :ALLEGRO-VERSION=
>  :NEW-ENVIRONMENTS :PROCESS7 :SYMBOL-VALUE-VECTOR :DYNLOAD-ACL-LIBRARY
>  :ALLEGRO-V8.0 :64BIT :SSL-SUPPORT)
>
> ...Peder...
> --
> I wish a new life awaited _me_ in some off-world colony.

The virtues of a dynamic language :) . Thanks Peder.
From: Jeff Shrager
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190955109.744242.25850@r29g2000hsg.googlegroups.com>
Many of you have tried this, now, although I don't hear anyone either
dissing or praising it.

To the person who called themself "PPH" and tried to load a whole FFT
program into the server without luck: All you had to do was put a
(progn ...) around your code, and it would have worked. I did that
without changing your code at all, and here's what results:

<2>> (FFT(test 512))
:: #(#C(256.0d0 0.0d0) #C(-9.979570373605428d-15
9.860761315262648d-31)
  #C(-9.980321873487247d-15 9.860761315262648d-31)
  #C(-3.327191516454412d-15 1.4791141972893971d-30)
  #C(-9.983328665430923d-15 9.860761315262648d-31)
  #C(-1.997116918348622d-15 3.4512664603419266d-31)
  #C(-3.3294476014614446d-15 1.4791141972893971d-30)
  #C(-1.4273719836711372d-15 3.2047474274603605d-31)
  #C(-9.995368524564203d-15 9.860761315262648d-31)
  #C(-1.1110708351921353d-15 1.7256332301709633d-31)
  #C(-2.000882353037122d-15 3.4512664603419266d-31)
  #C(-9.099720255095155d-16 8.38164711797325d-31)
  #C(-3.3384933939402325d-15 1.4791141972893971d-30)
  #C(-7.709058997206051d-16 -2.465190328815662d-32)
  #C(-1.4326547372957269d-15 2.9582283945787943d-31)
  #C(-6.690600681789584d-16 3.2047474274603605d-31)
  #C(-1.0043731838598211d-14 1.1832913578315177d-30)
  #C(-5.912986633871662d-16 -1.4791141972893971d-31)
  #C(-1.1178821245106084d-15 1.9721522630525295d-31)
  #C(-5.300168032449d-16 4.930380657631324d-31)
  #C(-2.0160439417485216d-15 2.9582283945787943d-31)
  #C(-4.805067897525651d-16 -7.395570986446986d-32)
  #C(-9.183263753422896d-16 8.38164711797325d-31)
  #C(-4.3969846507127206d-16 3.2047474274603605d-31)
  #C(-3.3750229208931554d-15 1.3805065841367707d-30)
  #C(-4.0550419682390757d-16 9.860761315262648d-32)
  #C(-7.808212219111246d-16 -4.930380657631324d-32)
  #C(-3.764549811834746d-16 3.2047474274603605d-31)
  #C(-1.4540619574215226d-15 2.9582283945787943d-31)
  #C(-3.514871241319848d-16 -4.930380657631324d-32)
  #C(-6.805577598057805d-16 3.4512664603419266d-31)
  #C(-3.2981149785005674d-16 7.642090019328552d-31)
  #C(-1.0240500178050113d-14 7.888609052210118d-31)
  #C(-3.108303403687031d-16 4.190823558986625d-31)
  #C(-6.044037252984893d-16 -9.860761315262648d-32)
  #C(-2.9408258118377046d-16 2.2186712959340957d-31)
  #C(-1.145720697018941d-15 1.9721522630525295d-31)
  #C(-2.7920689923106456d-16 4.930380657631324d-32)
  #C(-5.447579802262242d-16 5.17689969051289d-31)
  #C(-2.659161477651331d-16 7.395570986446986d-32)
  #C(-2.07832885292016d-15 3.944304526105059d-31)
  #C(-2.5397926476596506d-16 2.0954117794933126d-31)
  #C(-4.969167339029052d-16 -4.930380657631324d-32)
  #C(-2.4320823173123393d-16 2.588449845256445d-31)
  #C(-9.528420635600253d-16 8.38164711797325d-31)
  #C(-2.334485102517662d-16 0.0d0)
  #C(-4.578139242585025d-16 3.4512664603419266d-31)
  #C(-2.24571920441606d-16 3.697785493223493d-32)
  #C(-3.526889603112754d-15 1.3805065841367707d-30)
  #C(-2.1647126355703004d-16 7.395570986446986d-32)
  #C(-4.2536623042191726d-16 1.232595164407831d-31)
  #C(-2.0905621001497434d-16 9.860761315262648d-32)
  #C(-8.223254852988727d-16 -4.930380657631324d-32)
  #C(-2.0225011856218234d-16 2.465190328815662d-32)
  #C(-3.981092056705309d-16 3.4512664603419266d-31)
  #C(-1.959875495830341d-16 8.628166150854817d-32)
  #C(-1.5443376589484174d-15 3.944304526105059d-31)
  #C(-1.9021230206439016d-16 1.4791141972893971d-31)
  #C(-3.749839915601078d-16 -4.930380657631324d-32)
  #C(-1.8487584996881324d-16 2.834968878138011d-31)
  #C(-7.294351689056582d-16 3.944304526105059d-31)
  #C(-1.7993608635810539d-16 7.395570986446986d-32)
  #C(-3.5520661069011793d-16 8.38164711797325d-31)
  #C(-1.753563068881216d-16 2.0954117794933126d-31)
  #C(-1.1084237519814314d-14 1.5777218104420236d-30)
  #C(-1.7110438112843889d-16 -1.8488927466117464d-31)
  #C(-3.3818480680837446d-16 4.437342591868191d-31)
  #C(-1.671520724709458d-16 1.1093356479670479d-31)
  #C(-6.611215003206458d-16 -1.9721522630525295d-31)
  #C(-1.6347447649054282d-16 -9.860761315262648d-32)
  #C(-3.2346341562106d-16 2.2186712959340957d-31)
  #C(-1.600495544135844d-16 1.1093356479670479d-31)
  #C(-1.2674051625769513d-15 2.9582283945787943d-31)
  #C(-1.5685774346730367d-16 4.930380657631324d-32)
  #C(-3.106874734840294d-16 4.930380657631324d-32)
  #C(-1.5388162977302608d-16 1.6023737137301802d-31)
  #C(-6.098781453853254d-16 5.423418723394456d-31)
  #C(-1.5110567242635162d-16 0.0d0)
  #C(-2.99576699431744d-16 9.860761315262648d-32)
  #C(-1.4851596970893848d-16 9.860761315262648d-32)
  #C(-2.356592291099616d-15 3.944304526105059d-31)
  #C(-1.4610006016665122d-16 2.465190328815662d-32)
  #C(-2.899074702455432d-16 2.711709361697228d-31)
  #C(-1.4384675269091036d-16 8.628166150854817d-32)
  #C(-5.711115543397647d-16 -9.860761315262648d-32)
  #C(-1.4174598084537608d-16 0.0d0)
  #C(-2.8149985269561203d-16 2.9582283945787943d-31)
  #C(-1.397886775569121d-16 1.355854680848614d-31)
  #C(-1.1108899160536606d-15 9.860761315262648d-31)
  #C(-1.379666669894195d-16 2.465190328815662d-32)
  #C(-2.742081238739817d-16 -1.232595164407831d-32)
  #C(-1.3627257098060358d-16 1.0477058897466563d-31)
  #C(-5.418855326996103d-16 3.944304526105059d-31)
  #C(-1.3469972787475732d-16 8.628166150854817d-32)
  #C(-2.6791374550688915d-16 6.162975822039155d-32)
  #C(-1.3324212195208318d-16 2.8965986363584027d-31)
  #C(-4.241754059232452d-15 1.3805065841367707d-30)
  #C(-1.3189432195459707d-16 1.9721522630525295d-31)
  #C(-2.625200967632068d-16 8.628166150854817d-32)
  #C(-1.3065142745403774d-16 6.77927340424307d-32) ...)
From: Kyle McGivney
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1190978512.050757.128890@50g2000hsm.googlegroups.com>
<1>> (defun foo (x y) (print x))
::
; While compiling FOO:
Warning: Variable Y is never used.

I haven't RTFM but is there any particular reason you chose to compile
rather than eval?
From: Timofei Shatrov
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <46fd1f62.459345313@news.readfreenews.net>
On Fri, 28 Sep 2007 11:21:52 -0000, Kyle McGivney <·······@gmail.com> tried to
confuse everyone with this message:

><1>> (defun foo (x y) (print x))
>::
>; While compiling FOO:
>Warning: Variable Y is never used.
>
>I haven't RTFM but is there any particular reason you chose to compile
>rather than eval?

Rather than? It does compile and eval your expression too. Several Lisp
implementations, including SBCL and apparently Allegro, on which BioBike
is built, automatically compile any code by default.

-- 
|Don't believe this - you're not worthless              ,gr---------.ru
|It's us against millions and we can't take them all... |  ue     il   |
|But we can take them on!                               |     @ma      |
|                       (A Wilhelm Scream - The Rip)    |______________|
From: Jeff Shrager
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1191082823.953582.70880@y42g2000hsy.googlegroups.com>
On Sep 28, 4:21 am, Kyle McGivney <·······@gmail.com> wrote:
> <1>> (defun foo (x y) (print x))
> ::
> ; While compiling FOO:
> Warning: Variable Y is never used.
>
> I haven't RTFM but is there any particular reason you chose to compile
> rather than eval?

As Timofei points out, there's no conflict between compilation and
evaluation; it's mostly transparent to the user. ACL doesn't auto-
compile, but we chose to auto-compile for the two obvious reasons, one
of which you ran into immediately:

1. Things run faster. (Why make people remember to compile?!)

2. It catches many errors (like yours, above). Granted, you might have
meant to not use Y -- it's a special, or something, used below
(althuogh you'd have had to redefine PRINT, so I think that it's
simply an error in this case), but this is a very common beginner
error, and there are lots of others than the compiler catches
immediately, but which are hard to figure out if all one does is run
interpreted.

In order to do this (and other tricks), BTW, in order to do this
correctly we had to develop quite a lot of machinery: partial code
walkers, compiler wrappers, compiler error capturing mechanisms, and
all sorts of other machinery that I think would have simply been
impossible in non-Lisp languages.
From: Robert Maas, see http://tinyurl.com/uh3t
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <rem-2007sep30-003@yahoo.com>
> From:  Jeff Shrager <········@gmail.com>
> 1. Go to www.biobike.org
DONE.
> 2. Click "Try out the BioBike demo server(no password required)"
DONE.
> 3. Carefully read (of course you will!) the agreement and click:
>    "By clicking this link I agree that I have read and understand all
> of the below."
DONE.
> 4. Enter a name, any name. (Don't use TEST or FOO -- everyone uses
> TEST or FOO
>    -- use something that's not likely to put you in someone else's
> workspace!)
> 5. Don't bother the the email or password unless you want to tell us
> who you are.
Also I noticed that the radio button for Lisp is checked.
> 6. Press ENTER
Huh? I clicked the button for New Login. Isn't that the right thing
to do? Anyway, I now see a totally blank screen. What do I do next?

> 6. Pull down (at the bottom) Help... and select "Live tutorials"
There's no such thing, just a blank screen.

Back to the previous screen. With cursor after where I typed my
login name, pressing ENTER (actually RETURN on this keyboard)
merely moves cursor to email address field. Pressing RETURN again
moves cursor to password field. Pressing RETURN again moves cursor
to Lisp radio button. Pressing RETURN again gives me warning:
  One radio button must be checked at all times!

So neither following your instructions literally (pressing ENTER or
RETURN) nor doing the right thing (clicking the New Login button)
works. It seems at the moment that your Web service doesn't work at
all from here.

I looked at the source of the blank page: Properly nested html and
head and body etc. tags, but no regular markup at all, only
JavaScript, which isn't available here.

It seems you require JavaScript to teach Lisp.
Why can't you use Lisp to teach Lisp?
From: Jeff Shrager
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1191206814.201775.124540@o80g2000hse.googlegroups.com>
> I looked at the source of the blank page: Properly nested html and
> head and body etc. tags, but no regular markup at all,

There are a bunch of blanks. They may be below the fold on your
screen. If you don't have javascript, the focus to the ENTER field
will not work, so you'll have to scroll down and click into it
manually. Most of the rest should work (except, of course, the
buttons, which are run by javascript.)

only
> JavaScript, which isn't available here.
>
> It seems you require JavaScript to teach Lisp.
> Why can't you use Lisp to teach Lisp?

If you don't have javascript in your browser, you're in far worse
trouble than not being able to use BioBike.
From: Rob Warnock
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <Pb6dnZbRPKT8XZ3anZ2dnUVZ_rCtnZ2d@speakeasy.net>
Jeff Shrager  <········@gmail.com> wrote:
+---------------
| If you don't have javascript in your browser, you're in far worse
| trouble than not being able to use BioBike.
+---------------

Not really. Having JavaScript enabled while surfing the 'Net
is an open invitation to cross-site scripting and worse.
Just look at all the JavaScript security exploits listed
on SANS & CERT & elsewhere. I *never* enable JavaScript
by default, only for the minimum duration necessary when
dealing with the very few sites that require it that I *must*
visit [for financial or legal reasons]. I find that almost
all sites I really care about are quite navigable without it.


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Jeff Shrager
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <1191249815.988034.66610@19g2000hsx.googlegroups.com>
> I find that almost all sites I really care about
> are quite navigable without [javascript].

Okay, fine, well, BioBike/KnowOS is mostly usable w/o javascript, but
you'll have to scroll down to the bottom of the page and click into
the eval boxes to make it work.

(I guess we might have made put interactors at the top, and the
history under them, but oh well.)

[Now, that said, if you want to use Visual BBL (the Boxer-like wildly
Ajaxy thing described here:

  http://nostoc.stanford.edu/jeff/etc/bblvpl/bblvpl.html

you'll have to turn on javascript.]
From: Rob Warnock
Subject: Re: Learning Lisp THE WEB WAY!
Date: 
Message-ID: <x8mdnTeRU6lrNpzanZ2dnUVZ_r3inZ2d@speakeasy.net>
Madhu  <·······@meer.net> wrote:
+---------------
| * ····@rpw3.org <································@speakeasy.net> :
| | I *never* enable JavaScript by default...
| 
| You are probably a relic from earlier times...
+---------------

Heh.

+---------------
| For people coming online after `Web 2.0' not having javascript would
| indeed spell trouble. OTOH this helps give [us] oldtimers a useful rule
| of thumb: If it _needs_ javascript, it is most likely a waste of your
| time and not worth seeing.
+---------------

Exactly so.


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Jeff Shrager
Subject: New Macro Tutorial (Was: Learning Lisp THE WEB WAY!)
Date: 
Message-ID: <1191303263.213296.47320@n39g2000hsh.googlegroups.com>
I've added a new tutorial on macros to the BioBike/KnowOS set of Live
Tutorials. (Instructions on access and usage as above.)

Look for the tutorial called:

   Lisp Macros: Lisp macros let you create new syntax