
Amber Smalltalk - dkarapetyan
http://www.amber-lang.net/
======
sriku
Relatively little work on it in a long time. I think to bring smalltalk into
the web world takes a different kind of think than a straight port to Js. The
dev environment needs to seamlessly cover backend and frontend and be live
editable. That would also need protections. Few of this has been accomplished
to date. Good project for an undergraduate Cs degree student I guess.

~~~
fniephaus
Here are two other approaches:

[https://lively-kernel.org/lively4/lively4-core/start.html](https://lively-
kernel.org/lively4/lively4-core/start.html)

[https://squeak.js.org/demo/simple.html#fullscreen](https://squeak.js.org/demo/simple.html#fullscreen)

~~~
sriku
Neither of these do justice to the paradigm introduced by smalltalk. Both
cases are lifting the least significant aspect of smalltalk - the single self-
contained VM - and making it available within a browser. This is far from
acceptable from the perspective of developing systems today. It is an SPA in
the extreme and you got to take care of the backend in some other way.

What if the entire system is visible and editable live within a single IDE? -
the "entire system" including everything that's running within clients of your
service and everything that's running on all your scaled out servers .. and
everything that's running in your "IDE".

Without having to make it smalltalk, can we borrow this idea today and
implement it in JS?

~~~
throwanem
Designing a reliable system which combines widely distributed computing and
Smalltalk-style integration appears to be a significant CS research problem.

In the short term, I can imagine a system which exposes a REPL from each
backend instance and a websocket-driven REPL from each browser client, and
ties them together in a unified interface that allows enumeration and provides
convenient syntax for evaluation against multiple targets. Such a system might
offer some interesting possibilities around realtime client and server hot-
patching and problem investigation, if it could be made bulletproof enough not
to also serve as a gigantic SPoF or security vulnerability. But I don't know
if it's really similar to what you're thinking of.

~~~
sriku
The REPL way of thinking may not be the right level for this kind of a system.

I may be underestimating the complexity of this, but it does seem doable with
some clarifications to concepts. For example, in the smalltalk world, every
GUI object created is expected to be inspectable and modifiable. If we then
require that we want to call a button instantiated in every browser an
independent object, that would be a misfit. It might be adequate to treat that
button presented in the IDE context as the object that manifests on all
connected browsers. So when I look for messages sent by the button, I tap into
the logstream for those events that the system received from all browsers
connected. But when I manipulate its appearance, it reflects on all connected
browsers. I don't literally need to tap into each connected browser client.

~~~
throwanem
I probably wouldn't want to use a REPL like that much in its own right, but it
might make a good foundation on which to build something Smalltalk-esque.

------
philippeback
Actually there is one more approach:
[https://pharojs.github.io/](https://pharojs.github.io/)

Amber is interesting because of how it evolves and what it can do, like having
real compiler producing JS as output.

One can learn quite a bit by studying it.

Tools have to be better and there are some limitations but still, an
interesting experience.

------
vimota
Code sample on the homepage please!

~~~
kencausey
Click on the Try Amber button and freely look at all of the code.

~~~
PudgePacket
Clicking it does nothing.

~~~
kencausey
Are you blocking Javascript or anything? See the bottom third of this
screenshot for what I expect you to see:
[https://s3.amazonaws.com/klcother/ambersmalltalk.png](https://s3.amazonaws.com/klcother/ambersmalltalk.png)

~~~
PudgePacket
Oh hey it worked this time. Perhaps I didn't give it enough time to load
before.

~~~
robotnoises
I had a similar experience. It worked the second time I clicked.

------
FrancoDiaz
I'm not a big fan of the Smalltalk language, but I think Smalltalk's greatest
contribution to development was putting forward the idea that development
environments are important for productivity.

~~~
qwertyuiop924
Actually, Lisp did that first (as did Emacs). But yes, ST popularized the idea
(which is somewhat paradoxical, as, like Lisp, ST never actually caught on).

~~~
pjmlp
You have to thank Sun and Java for it.

Enterprise was adopting Smalltalk when Java came out.

Even Eclipse was actually Visual Age for Smalltalk refurbished.

~~~
zeveb
You're not wrong, but I read that as 'thank': had it not been for Sun & Java,
then maybe — _just_ maybe — the development industry would have advanced
beyond the 1960s/early 1970s.

Can you imagine if the standard language of enterprise development today were
Smalltalk? Can you imagine if the standard language of the Web were Lisp (or
Scheme)? Can you imagine if we'd sunk all the work into making Lisp &
Smalltalk great that we instead sunk into making Java & JavaScript not so
terrible that they cause spontaneous seppuku?

~~~
nobleach
If I'm not mistaken, Brendan Eich _wanted_ Scheme to be the language of the
browser. We ended up with JavaScript because Netscape pushed the whole "make
it look like Java" agenda. We still got first-class functions out of it. But
we also inherited a direct port of Java's Date class.

*Edit Netscape, not Sun

~~~
pjmlp
Netscape

------
philippnagel
Reminds me of [http://witheve.com](http://witheve.com), similar intentions at
least.

