[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

wish list



It has been a looong time since I last was able to sit down and
play around with Self 4.0 :-(

Here is what I would like to do if I get a chance (if someone else
wants to do them, be my guest! If I had written this list late
last year, I would have included a web browser and a Smalltalk
emulator as the two most desirable apps! ):

 - xeyes: I did create a stupid little morph that always looks
   at the first cursor, but I would redo it right this time. I
   was able to learn a lot in just the half an hour it took me
   to do this, but I used the mouseMoved: event rather than an
   activity.

 - Petri net simulator: that would be easy to do and would impress
   people around here who are Petri net fans.

 - CMOS simulator: it would be great to rewrite the simulator I
   wrote for Self 1.0 to make it totally graphical. It would be
   so much easier to do with morphs than with any other programming
   system I know that it is a real shame I haven't done it yet.

 - table morph: other people have suggested this. I have a simple
   design for this, but it wouldn't handle cells that span several
   rows or columns. It would have these slots: widths, heights and
   cells.

 - html 3.0 parser: it would be neat to upgrade David's web browser
   to handle tables (see above), centered things and text alignment,
   background images and other modern stuff.

 - HotSelf: a great (but simple) addition would be to be able to
   include Self code in www pages. All you would have to do is
   grab the text over the net and "runscript" it. No security, of
   course :-)

 - spreadsheet: Ole Madsen already wrote one, but I would like one
   based on Improv.

 - matrices: as there are many APL fans around here, I would borrow
   their matrix models. The default behavior for objects would make
   them act as a 1 by 1 matrix while vectors would be N by 1 matrices.
   We might reserve the ";" binary message for building vectors, so
   it would be easy to write "1;2;3;4;5;6 reshape: 2;3".

 - better input checking: I am the worst offender regarding checking
   input, but it would be neat to add some code to the dialog
   boxes to handle this. When the browser asked me for my proxy
   name, for example, I stupidly typed "http://www.lsi.usp.br";.
   Getting things working again after this was quite a challenge!

 - abstract types: David Ungar mentioned at ECOOP that "Any user
   could add them to Self". It would be a good idea to have some
   standard, though. I would base abstract types on the Objective-C
   protocols, though I don't really know too much about them. They
   would have:
      - a name
      - a version number
      - documentation
      - a list of message templates with documentation
      - a test suite that could verify if a Self object is an
        implementation of the abstract type, and might even give
        a score indicating the quality of implementation
   Objects could have an annotation saying which abstract types they
   implement. I am not sure if abstract types should have some kind
   of inheritance or not. Anyway, it would be a good idea to be able
   to ask an abstract type for a prototype, rather than referring to
   the prototype directly:
           protocols list aPrototype copy
   is better than:
           list copy
   if we want to allow several programmers to offer list implementations.

Please note that my list doesn't include things like "a system-wide
undo" because these things, while really needed, are best done by
enhancing the virtual machine.

-- Jecel