From: hyperstring.net ltd
Subject: New toy written in Lisp
Date: 
Message-ID: <1164829429.437927.140190@80g2000cwy.googlegroups.com>
Hi Guys

Some of you will love this and some will hate it, little brainwave I
had.

http://search.hyperstring.net

It's running on our Lisp web server Lewis. We're only up to 3 servers,
they all monitor each other and send text messages if one of them falls
over, I'm hoping to be able to eventually get one to reboot the other
if it falls over under certain circumstances...this could be done with
an SSH shell or something?!

Anyway enjoy!

Paul
http://www.hyperstring.net

From: Kaz Kylheku
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <1164832428.837763.103070@j72g2000cwa.googlegroups.com>
hyperstring.net ltd wrote:
> Hi Guys
>
> Some of you will love this and some will hate it, little brainwave I
> had.
>
> http://search.hyperstring.net

Cute. But it would be more useful and straightforward (at least on
Firefox) for the search button to simply open up the search in a new
tab, rather than bringing up this GUI. On browsers without the tab
feature, it would make sense to just open up a new browser window with
the contents of the search.

Also, child windows are so ... Windows 3.1 ish. If you're going to
bring up a window with its own title bar, close button, frame with
resizing controls, etc. it should be an independent window and not a
child of the application window.  Only controls should ever be child
windows: buttons, boxes, etc.

Embedded child windows means that the application has to reimplement
window management within itself, which is annoying to the end user. For
instance, if you want to maximize a child window, it will maximize only
to the parent. You have to maximize the parent first. If you shrink the
parent, it typically clips the child windows.

In your case, the GUI also fails to conform to the surrounding
interface. The window title bars don't look anything like those of
other windows.

It's basically a silly idea which is only possible because it's an
artifact of the implementation of a windowing system (namely that every
square region on the screen that is independently event-able is a
window object). But some windows are not appropriate for some uses. You
would not use the root desktop window to implement a giant 1280x1024
push-button, right?
From: OMouse
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <1164836065.097842.151750@l39g2000cwd.googlegroups.com>
I'm not sure if there's anything cool about it. Are you talking about
the Javascript+CSS? Because you can do that with the Yahoo! User
Interface library.
Draggable, Skinnable Div -
http://developer.yahoo.com/yui/examples/container/panelskin/2.html

Sorry :/
-Rudolf
From: hyperstring.net ltd
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <1164869232.666460.35260@n67g2000cwd.googlegroups.com>
OMouse wrote:
> I'm not sure if there's anything cool about it. Are you talking about
> the Javascript+CSS? Because you can do that with the Yahoo! User
> Interface library.
> Draggable, Skinnable Div -
> http://developer.yahoo.com/yui/examples/container/panelskin/2.html
>
> Sorry :/
> -Rudolf

Ok the cleverness is actually not visible to the user - the fact is we
have total state awareness at the server - the server knows who has
which windows open and what they are doing with them - yeah, sure you
could do this just with javascript - thats the key for us to find
something you CAN'T do with javascript.  That involves some server
showing off.  For instance interacting with other users of the system -
not a problem. Perhaps we should have a sign in bit?

Anyone any ideas?
From: hyperstring.net ltd
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <1164869448.015962.16940@j44g2000cwa.googlegroups.com>
OMouse wrote:
> I'm not sure if there's anything cool about it. Are you talking about
> the Javascript+CSS? Because you can do that with the Yahoo! User
> Interface library.
> Draggable, Skinnable Div -
> http://developer.yahoo.com/yui/examples/container/panelskin/2.html
>
> Sorry :/
> -Rudolf

Also would like to point out that their example does not have maximize,
minimize and ordering the windows - i.e. bringing to the top when
needed - that is a bit more technical but again could in theory be done
in javascript.

It's a shame I can't let you see our stats package/system manager -
thats where Lewis really comes into its own, logging in and viewing
stats in a windowing environment is kinda cool because of the way you
can move them around.

We also have the facility to save the desktop on the SERVER rather than
the client which ofcourse means that if you went to another computer
i.e.. in an internet cafe  you could boot it up and carry on where you
left off.

It's not quite as simple as that javascript thing actually.
From: Zach Beane
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <m3r6vmc7rf.fsf@unnamed.xach.com>
Speaking of toys, I just released a new Lisp-powered web toy too. I
don't expect many cll readers would find it useful, but it's been
pretty popular with the "ooh! a shiny thing!" web crowd.

   http://wigflip.com/signbot/

The website is powered by mod_lisp, tbnl, and html-template. The text
is made by loading a TrueType font with zpb-ttf and then rasterizing
it with some unreleased software. The animated GIF is generated with
skippy. Signbot has made about 30,000 animated GIFs in the past three
days, and SBCL and tbnl haven't had any problems.

I have an emacs open and connected to the live server. When the mood
strikes me, I make live updates without bringing anything down. For
example, the main site only makes red signs, but someone asked me if I
could add a mode for blue signs. Without stopping anything, I added a
new special variable:

  (defparameter *blue-palette*
    #(#x00 #x00 #x00                      ; +black+
      #xFF #xFF #xFF                      ; +white+, +transparent+
      #x00 #x00 #xFF                      ; +red+
      #x00 #x00 #x66                      ; +red1+
      #x00 #x00 #x33                      ; +red2+
      #x22 #x22 #x22                      ; +darkgray+
      #x66 #x66 #x66                      ; +lightgray+
      #x77 #x77 #xFF                      ; +brightred+
      ))

Then I added a handler for a new URL:

  (wf:serve-function (lambda ()
                       (let ((signbot:*palette* signbot:*blue-palette*))
                         (signbot-interface)))
                     "/signbot/blue")

Et voila, visitors to http://wigflip.com/signbot/blue can make blue
signs.

All of the toys at http://wigflip.com/ are powered by CL to some
degree. I've had a lot of fun making them, and people seem to
genuinely enjoy them; see
http://community.livejournal.com/lj_nifty/149194.html and
http://community.livejournal.com/lj_nifty/137218.html for some
discussions.

URLS:

  tbnl:
    http://weitz.de/tbnl/

  html-template:
    http://weitz.de/html-template/

  sbcl:
    http://www.sbcl.org/

  zpb-ttf:
    http://www.xach.com/lisp/zpb-ttf/

  skippy:
    http://www.xach.com/lisp/skippy/

Zach
From: hyperstring.net ltd
Subject: Re: New toy written in Lisp
Date: 
Message-ID: <1164833931.542736.24700@l39g2000cwd.googlegroups.com>
Thanks for your responses LOVE the sign bot!

It is only our first go and we will be doing some other stuff possibly
with it in the future - the main stuff is to test our window management
system on the server, we are working on an online application at the
moment using this system and we have a management system working with
it. 

Kaz - harsh comments but noted.

Paul