Pharo in the Browser with WebAssembly

(massimo-nocentini.github.io)

113 points | by xkriva11 8 hours ago ago

32 comments

  • jsrcout 3 hours ago ago

    I still remember the Byte issue on Smalltalk from 1981 [0]. To high school me it was The Future for sure. It looked so cool. I had no way to try it on the family Apple II+ [1] though.

    Trying out various Smalltalk-family systems in recent years showed the advantages of implementing the entire system in one language and running it in one image. There's a refreshing coherence and predictability to everything, and pervasive simplicity instead of fractal complexity.

    You can browse the entire codebase in a single window - language/compiler, math operations (except for the base primitives I believe), data structures, graphics, window system, all nicely organized. Methods, even critical ones, are mostly small, straightforward, and cruft-free. Many are just a line or two.

    Smalltalk gives the developer immense power. You work directly "in the code"; your changes are live instantly. You can trivially modify the system itself - just go there and start typing. All in the same browser window. You can easily look inside any running program, change its data and even its code, and just keep going. Even now it feels futuristic.

    You get powerful graphics and a window system out of the box instead of the usual story where you select OpenGL/Vulkan/GUI/DOM libraries and configure tools like make/rpm/docker/pip/npm. That's probably the most "science fiction-y" aspect by far.

    In short, this was the "Jetsons" future that seemed possible back when I was getting started. The future we actually got, of course, is far less elegant and unified, and far more messy and practical. That's probably for the best. But I still love Smalltalk.

    [0] https://archive.org/details/byte-magazine-1981-08

    [1] https://archive.org/details/byte-magazine-1985-05/page/155 (At the time I was sad because we didn't have the extra memory it needed. Now I'm more impressed that it was even possible.)

  • pmkary 2 hours ago ago

    Can't believe what I'm seeing with my own eyes that Pharo is this fast, on a browser, on a mobile. I mean I get it that things have advanced and so much more insane things are out there (like running OS X Tiger with Infinite Mac, or SketchUp web, or...) but this still shocks me. Tech is advancing too fast for my monkey brain to pace with.

  • lynndotpy 5 hours ago ago

    I played around with Pharo some time in 2017 or 2018, making a Minesweeper clone in it.

    I really _really_ like environments where rapid and immediate iteration is possible, especially for any project with any artistry or exploration in its construction. One thing is that (in some cases) you see intermediate, emergent, or unintended results you'd not have seen otherwise.

    Although not a particularly interesting unintended result, a logic problem (iirc) had the Minesweeper expand happen with each action (i.e. propagating cleared cells with each step rather than in an instant).

  • ajasmin 6 hours ago ago

    Nice!

    So I assume this is the byte code interpreter compiled with Emscriptem? Didn’t Squeak have a similar try it out page?

    I would assume there’s no attempt at Jitting or pre-compiling some of the image code, which would be a feat given Smalltalk dynamic nature and webassembly limited execution model.

    I was hopping to have something like this to play with. How can you build the code?

  • Cieric 5 hours ago ago

    I've never used Pharo before, but in my firefox it renders up and to the left too much. I'm not sure how the mouse is translated to the canvas but it seems like there is an issue with it (or vice versa and it's the weird canvas scaling). Removing `transform: scale(calc(1 / var(--world-dpr, 1)));` from the canvas css seems to fix it for me though.

  • simonsarris 6 hours ago ago

    I was hoping it was the 1999 video game alas

    • nathell 6 hours ago ago

      That one's spelled Pharaoh.

  • mike_ivanov 4 hours ago ago

    How come it is much snappier and uses less CPU than the same native version? I honestly don't understand how this is possible.

    • bmacho 4 hours ago ago

      Snappy? It's slow as molass here, e.g. file viewer needs half a second to preview a text file.

      • mike_ivanov 3 hours ago ago

        I'm on FF159 - which is yours?

        • mike_ivanov 3 hours ago ago

          Just have tried in Chrome - almost unusable. FF makes a HUGE difference (on my machine)

  • AdmiralAsshat 7 hours ago ago

    Neat concept for playing with Pharo...but doesn't having it in the browser kinda defeat the purpose?

    • Qem 5 hours ago ago

      Nice for those trying it from locked down machines. It's a common situation people spending most of their screen time on computers where the user has no admin privileges.

  • simultsop 8 hours ago ago

    I wandered about this a while ago, when VSCode went into Web. Later, after realizing how much download had to take place to have a remote OS ran, again the experience is very hacky with current hardware to software friction. It needs lots of drivers and resources to align experience with an actual OS.

  • popcar2 7 hours ago ago

    It seems to break when zooming in/out on Firefox (Linux). Zooming in reduces the size of the viewport and makes clicking the mouse happen somewhere else.

  • treyd 7 hours ago ago

    This webapp seems to break the back button on Android.

    • stronglikedan 7 hours ago ago

      It never goes forward, so there's nothing to go back to, even on Chrome for Windows.

  • thrance 5 hours ago ago

    Hijacked my back button on Android/FireFox...

  • nater5000 3 hours ago ago

    This title reads like Tamarian dialogue lol

  • rvz 7 hours ago ago

    Obviously this post has been boosted quickly and mysteriously in 16 mins and it feels quite premature and it doesn't even look remarkable at all.

    Use with caution.

    • lynndotpy 5 hours ago ago

      I upvoted it because I have fond feelings and memories of Pharo. The warm fuzzies aside, even if someone hasn't used it, it's one of those places that remind us of the delight of programming and computation. Like, "Oh, yeah, I used to feel optimistic and happy about the Computer when I was programming in basic a thousand years ago."

      • jsrcout 3 hours ago ago

        Thanks, you captured it exactly. (And inspired my comment on this page).

    • xkriva11 7 hours ago ago

      As the author of this post, I have to say that I, too, was surprised by how well it's doing. But people at HN are generally very receptive to Lisp/Smalltalk posts, and lately, at least one Smalltalk-related post has appeared on the front page every week.

      • DTrejo 7 hours ago ago

        Great post! Doing anything with moose? Looking forward to a post :)

        • xkriva11 6 hours ago ago

          I only did the post on HN, not the project ;)

    • echelon 7 hours ago ago

      It's Pharo, which has a small but loving community.

      Several of my friends love it.

      • da02 7 hours ago ago

        What do they use it for?

        • norberthartl 2 hours ago ago

          The backend of http://www.apptivegrid.de is 100% pharo including database, workflow engine, work queues and much more

        • jrootabega 6 hours ago ago

          BESIDES European conference presentations. Seriously, that's all I can ever seem to find.

          • melvinroest 4 hours ago ago

            Yesplan [1] uses it. It’s a B2B SaaS that allows you to plan your musicals (and similar events) end to end.

            [1] https://yesplan.be/en