1. 3

    Nice! I’ve been hacking on a Smalltalky (more Selfy tbh) system in Lua + LOVE — https://youtu.be/rRMeOGc1JLQ. Will be fun to dig into yours. Is there capability for actual textual scripting or only visual?

    1. 1

      very cool! Yes there is an object inspector and a class inspector, see the “hacking” document. If you release this open source do let me know I always like to read the code of live environments.

      1. 1

        Will do! Currently still mucking about closed source :) but I’m hoping to open source it eventually.

    1. 11

      This looks like a web take on Smalltalk-based tool I saw Alan Kay doing. Everything is rich content, can be mixed together, and live edited. Eve project is another recent one that comes to mind. What prior tools did you see that influenced your work?

      1. 8

        Lively.next / Caffeine / Morphic.js and many more … complete list is here: http://fizzygum.org/docs/similar-systems/

        1. 2

          Thanks!

          1. 2

            What about OpenDoc? The composition of documents parts from different applications seems very much in line with it.

            1. 6

              author here.

              yes. Well, good UI systems support arbitrary composition of components. Java Swing and Qt for example, but many others too. I think technically we knew how to do UI composition since the beginning really.

              I think the winning “mainstream” desktop toolkits were notably not giving good composition, for many reasons 1) it was cheaper and more performant to make special cases of, say, window frames, and desktop backrounds and desktop clocks, and icons and everything else 2) persisting composite objects is way more complex than just banging out files with a specific format for a specific type of content

              there are also economic-ecosystem and security reasons why allowing arbitrary composition is not a walk in the park either

              This is why I think we are still talking about live documents today: they are a pain to persist and read back (unless you have an image system, which has other challenges), you can’t easily sell sw. packages around this concept, and promiscuity of objects can be a security nightmare. Performance is not a problem anymore (it was in the beginnings though)

              hence the mainstream desktop interfaces had to get that composition back via other (more rigid) mechanisms such as OLE.

              so I wouldn’t say OLE/OpenDoc were an inspiration per se, they are strange contraptions of some pure idea of composition that has been there for a long time…

              [edit] That said, some people really hit it out of the park with real good composition, typically Self/morphic and anything that comes out of Alan Kay’s VPRI lab. There we’re talking about arbitrary number of input devices, infinite-size desktops, capability to change any glyph of any font at will… changing glyphs in fonts I think it’s still too expensive to do today normally for example

          2. 5

            Exactly my thought. It’s so obviously inspired by that line of thinking. I just hope that the ideas take off at some point. More than happy for it to be fizzygum, though, I’m not sure it will be…

            1. 6

              They have a page highlighting that relationship too, “Fizzygum for Lispers/Smalltalkers”.

            2. 1

              Squeak for life.

            1. 4

              Very cool! Is there any plan to move the instructions to inside the system? (Right now there are URL links from Fizzygum.)

              I tried connecting a slide to random stuff like height, alpha and font size but there’s no visible effect when the slider is moved.

              Got an error when I tried to connect a slider to a window (a Window#14).

              -----------------------------------------
              
              TypeError: this.deduplicateSettersAndSortByMenuEntryString is not a function
              
              Stack:
              TypeError: this.deduplicateSettersAndSortByMenuEntryString is not a function
                  at window.BoxyAppearance.addShapeSpecificNumericalSetters (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:156489)
                  at window.WindowWdgt.window.Widget.addShapeSpecificNumericalSetters (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:41653)
                  at window.WindowWdgt.window.Widget.numericalSetters (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:131838)
                  at window.SliderMorph.openTargetPropertySelector (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:640507)
                  at window.MenuItemMorph.window.TriggerMorph.trigger (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:675255)
                  at window.MenuItemMorph.window.TriggerMorph.mouseClickLeft (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:676311)
                  at window.TextMorph.window.Widget.escalateEvent (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:133733)
                  at window.TextMorph.window.StringMorph.mouseClickLeft (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:659015)
                  at window.HandMorph.processMouseUp (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:427168)
                  at window.WorldMorph.processMouseUp (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:294255)
                  at window.WorldMorph.playQueuedEvents (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:282544)
                  at window.WorldMorph.doOneCycle (http://fizzygum.org/sandboxes/latest-stable/js/pre-compiled.js:1:284788)
                  at animloop (http://fizzygum.org/sandboxes/latest-stable/js/fizzygum-boot-min.js:1:18952)
              
              1. 3

                thanks!

                Could move the walkthroughs inside, yes, especially since “inside” one could include actual menus and buttons that one can click, so the walkthroughs would be “live”.

                In fact the Smalltalk people do that with a tool called “ProfStef”, which guides people through use cases “live”. Would be lovely to have that at some point.

                The truth though is that users need many forms of documentation: something to watch, something to scroll and reference quickly, and some step-by-step tools.

                Given limited time, precedence went to videos/readthrough.

                Thanks for bringing up the bug, I am aware that many many “connection” options are given that are actually problematic, that’s something to be worked on…

                1. 2

                  Yes! I thought ProfStef from Pharo was great for learning. Squeak was a bit too much for someone stumbling on it on the internet. But I also understand that’s not a priority. The written docs is alreayd pretty good.

                  Glad to see you also cover the differences in Lispers/Smalltalkers section. Its too bad there’s no “resume on error” yet.