OK, having watched the video at https://www.youtube.com/watch?v=lqogvp1dGpk (8 minutes, so 4 minutes if you 2x it) I understand why they have such a hard time answering the question "What is Glamorous Toolkit?"
It's effectively a combination of a Smalltalk IDE, a Jupyter/Observable-style notebook environment and a tool somewhat like R Studio.
It's a hard thing to categorize, because it's not exactly the same kind of thing as anything else.
Part of the problem is that the way you use Smalltalk is pretty different from other programming languages already, due to the thing where you work within an "image" as opposed to just editing files on disk.
I emphasize with the challenge: I have a similar problem with my https://datasette.io/ project.
Glamorous seems like something no one asked for- aggregating a bunch of semi-related tools into a jack-of-all trades platform. I don't understand who it is for
It's meant as an environment in which developers can build tools for every single development problem they have. Literally. I know it can sound crazy, but that's what it is for. The claim is that this practice leads to a new way of programming called Moldable Development.
This may be too late to this thread to matter, but I've been dabbling with GT for a few months, and I like it so far.
I'm using a few of the modalities mentioned in the article.
I use it as for "Pharo development" / Smalltalk IDE. I've tried a few times to learn Pharo and Smalltalk, but I've stuck with GT more than I ever had with raw Pharo. It feels nicer graphically, and, most importantly, it lets me write notes about what I'm doing and exploring and save them as part of the image. That means I can open GT and continue right from where I left off, even if it's been a month since I looked.
I use it for "Personal knowledge management", mostly. Little projects and analyses that occur to me. Nothing fancy, things like writing up why it's easier to get heads-tails in a sequence of coin flips than heads-heads, with a bit of simulation, a writeup of the Markov chain, derivation of expected times, etc. I've done that many times before, but it feels good to have it all together in an aesthetically-pleasing form. Bits on game odds, leetcode-ish algorithms exploration, general computational fiddling.
Once I figured it out, I like the git integration for both code and notebook pages. That goes a long way to reassuring me that the things I do won't be lost. I still don't quite get the Metacello / BaselineOfX dependency management, but I'll get there.
I did a little API browsing, mostly following the "Exploring the GitHub REST API in 7'" video by Oscar Nierstrasz (https://www.youtube.com/watch?v=-vFwfwy5WZA). That series is excellent and I think does a good job of illustrating the power of the system and how it's different.
But, in general, it feels like a good "tool for thought".
The idea makes sense to me. It's basically Emacs, but using Smalltalk instead of Lisp. Instead of using plain text to create your user interface, you have access to a built-in UI toolkit. That's very neat!
What's more interesting to me is the fact that the Glamorous Toolkit UI looks perfectly crisp on my M1 MacBook screen, whereas the Pharo IDE is a blurry mess because it doesn't support "retina" screens. If GT is built on top of Pharo, then why does Pharo still not support high DPI screens?
GToolkit uses a completely parallel graphics stack to standard Pharo. The VM and library ecosystem are still there but the UI is rebuilt from scratch on a modern vector based toolkit.
The productivity of the GToolkit developers is impressive.
Having looked at the screenshots and read the text, I still have no idea what Glamorous Toolkit v1.0 is. If I had to guess, I'd say it's another attempt at 'notebook' style computing interfaces, but I suppose there's a reason the author is too coy to say that, so I am forced to conclude that I just don't know what it is, and the creator is unable or unwilling to tell me.
My current understanding is that it's similar to Emacs, but in this case it uses Smalltalk instead of Elisp.
It's an IDE who's selling point is that you should extend while coding.
If my day job uses Python, for example, is it pragmatic to use Glamorous Toolkit?
Yes, it has a few functions for editing code in some language .. but you get a lot more Python power from Intellij or Pycharm. I don't use Smalltalk but if I were, I would consider it, alongside Pharo or instead of Pharo.
If my day job used Rust, I’d be very interested in trying this. Live development with your code loaded gives you a lot of power that you don’t know you’re missing until you try it with a Common Lisp, Clojure or Smalltalk environment.
I fiddled with its python interop a bit. It's OK, but could use some expanding: it runs python code in a single venv that you'd need to populate with the packages you need. I couldn't find any support for switching venvs based on project directories, etc.
I could imagine using GT as a more hackable way to interact with code. You don't get the nice automatic features of a python IDE, but you could define graphical views for your objects, drill-down into sub-objects, and the like. But to do that, you'd also have to know some Smalltalk.
"Glamorous Toolkit is the Moldable Development Environment. Moldable Development is a new perspective on programming through which we create custom tools for every development problem. We find that this ability changes the very nature of programming."
It's an IDE that lets you easily create tools for experimenting with your code.
And, IIUC, a debugger that lets you define custom views for interesting data? For example, in the "GtLudoGame" image (the first image in the post), the rightmost picture is some sort of custom debugging view for a game state -- so you can visualize it directly as a board state, instead of as a dict or list or whatever.
Yes. That said, it took me a while using it to figure out that one non-obvious key feature here is that “easy” means that they’ve made it cheap enough where one automatically changes their behavior and actually does create ubiquitous custom tools, where in other systems extension is more an afterthought, or at least distinct from “regular programming”
The author is not unwilling to explain, he has lots of experience trying to explain and knows how hard it can be.
The best single sentence description, IMHO, is that GT (Glamorous Toolkit) is the current manifestation, implementation, proof of concept of the idea that making systems explainable through mouldable development is very powerful.
Furthermore it is a very nice tool in its own right (again IMHO).
Saying 'GT is x' where x is any of the subjects in the text is problematic. Most people will cling to one perspective, the one they are most familiar with or like the most, and mostly forget the other ones.
I've been reading much of this over the past day or so since I made the comment. I don't want to sound overly negative, but the author seems to think repetition of the phrase "moldable development" will imbue it with meaning, while my closest approach here is "notebook-style smalltalk ide."
Even when talking about "supporting" other languages, it's in terms of forcing everything into a smalltalk interface and then using that object model to introspect. None of the blog posts I've seen have convinced me that this isn't just Jupyter or Mathematica with a smalltalk kernel, and that's why I said what I did about the author's unwillingness to use common terms to describe the software. "Moldable development" doesn't mean anything.
Is it just me or does it come off as super condescending?
I feel that, if you can't explain to us concisely what the thing you've been working on for decades is about, that's a huge red flag. The most I can tell you after reading this page: it has something to do with software development, and my inclination to explore further is zero.
The article was not meant to describe everything in GT. There is a whole book delivered in the environment to cover this. You can also see it here: book.gtoolkit.com.
In the second half of the article it says that those are just examples of what is possible, but the really interesting bit is that we build these tools for every single development problem, including when we deal with external systems or languages. And this leads to a new way of programming which we call Moldable Development.
I had a fun time exploring both Glamorous Toolkit & BlueSky's @proto with https://github.com/feenkcom/gt4atproto . Neat experience. Docs & code meld nicely. Very handsome on experience.
Glad to hear it. Would you like to tell us more about what you found interesting (either here or on our Discord)? I am asking because that's my favorite public use case so far :).
I tried for an hour to set this up once. The docs were all over the place, you needed prerequisites that were hard to find and linked to 404s. Mysterious errors. Eventually my curiosity was overcome and I gave up.
There's something called Gtoolkit, I think? I had to install NetBeans to get some plugin, to get one of these tools to work, then the plugin had some other requirements. It definitely wasn't just running their binary. It was a nightmare.
You can run it from anywhere including where you downloaded that has user write access.
But you have to keep everything in the top directory and copy that around not the .app
It is not packaged as a Mac Application that is all in a .app file which you can copy to /Applications. Most of the other files should be in ~/Application Support or ~/Documents to meet normal macOS directories.
Hmm, it should work just by downloading the ready made distribution in most systems without any other prerequisites. Would you like to detail what you tried? And what do you mean by 404?
It's effectively a combination of a Smalltalk IDE, a Jupyter/Observable-style notebook environment and a tool somewhat like R Studio.
It's a hard thing to categorize, because it's not exactly the same kind of thing as anything else.
Part of the problem is that the way you use Smalltalk is pretty different from other programming languages already, due to the thing where you work within an "image" as opposed to just editing files on disk.
I emphasize with the challenge: I have a similar problem with my https://datasette.io/ project.
Sometimes, it's also a good idea to help educate the user.
empathize, not emphasize
It's not too difficult to get close.
"It's the visual equivalent of Unix pipes."
"It's a browser inspector with an infinite/unbounded amount of Miller columns." (NB: the browser here is a Smalltalk browser and not a Web browser.)
Etc.
Which makes sense as an analogy: org-mode is also famously hard to explain, and adding more dynamism just makes it harder.
Datasette is awesome btw
Deleted Comment
I'm using a few of the modalities mentioned in the article.
I use it as for "Pharo development" / Smalltalk IDE. I've tried a few times to learn Pharo and Smalltalk, but I've stuck with GT more than I ever had with raw Pharo. It feels nicer graphically, and, most importantly, it lets me write notes about what I'm doing and exploring and save them as part of the image. That means I can open GT and continue right from where I left off, even if it's been a month since I looked.
I use it for "Personal knowledge management", mostly. Little projects and analyses that occur to me. Nothing fancy, things like writing up why it's easier to get heads-tails in a sequence of coin flips than heads-heads, with a bit of simulation, a writeup of the Markov chain, derivation of expected times, etc. I've done that many times before, but it feels good to have it all together in an aesthetically-pleasing form. Bits on game odds, leetcode-ish algorithms exploration, general computational fiddling.
Once I figured it out, I like the git integration for both code and notebook pages. That goes a long way to reassuring me that the things I do won't be lost. I still don't quite get the Metacello / BaselineOfX dependency management, but I'll get there.
I did a little API browsing, mostly following the "Exploring the GitHub REST API in 7'" video by Oscar Nierstrasz (https://www.youtube.com/watch?v=-vFwfwy5WZA). That series is excellent and I think does a good job of illustrating the power of the system and how it's different.
But, in general, it feels like a good "tool for thought".
What's more interesting to me is the fact that the Glamorous Toolkit UI looks perfectly crisp on my M1 MacBook screen, whereas the Pharo IDE is a blurry mess because it doesn't support "retina" screens. If GT is built on top of Pharo, then why does Pharo still not support high DPI screens?
The productivity of the GToolkit developers is impressive.
My current understanding is that it's similar to Emacs, but in this case it uses Smalltalk instead of Elisp.
It's an IDE who's selling point is that you should extend while coding.
If my day job uses Python, for example, is it pragmatic to use Glamorous Toolkit? Yes, it has a few functions for editing code in some language .. but you get a lot more Python power from Intellij or Pycharm. I don't use Smalltalk but if I were, I would consider it, alongside Pharo or instead of Pharo.
I could imagine using GT as a more hackable way to interact with code. You don't get the nice automatic features of a python IDE, but you could define graphical views for your objects, drill-down into sub-objects, and the like. But to do that, you'd also have to know some Smalltalk.
"Glamorous Toolkit is the Moldable Development Environment. Moldable Development is a new perspective on programming through which we create custom tools for every development problem. We find that this ability changes the very nature of programming."
It's an IDE that lets you easily create tools for experimenting with your code.
The best single sentence description, IMHO, is that GT (Glamorous Toolkit) is the current manifestation, implementation, proof of concept of the idea that making systems explainable through mouldable development is very powerful.
Furthermore it is a very nice tool in its own right (again IMHO).
Saying 'GT is x' where x is any of the subjects in the text is problematic. Most people will cling to one perspective, the one they are most familiar with or like the most, and mostly forget the other ones.
There is lots of stuff to read or watch:
- https://blog.feenk.com/ - https://book.gtoolkit.com
(BTW, everything you see in the above two web sites is actually written inside GT, notebook style with active content).
But reading about it is no substitute to trying it out and experiencing it yourself, though there is a learning curve for sure.
Even when talking about "supporting" other languages, it's in terms of forcing everything into a smalltalk interface and then using that object model to introspect. None of the blog posts I've seen have convinced me that this isn't just Jupyter or Mathematica with a smalltalk kernel, and that's why I said what I did about the author's unwillingness to use common terms to describe the software. "Moldable development" doesn't mean anything.
Looks to me like basically a Jupyter notebook, but going horizontal instead of vertical.
I don't need that for reading API docs, thanks.
I feel that, if you can't explain to us concisely what the thing you've been working on for decades is about, that's a huge red flag. The most I can tell you after reading this page: it has something to do with software development, and my inclination to explore further is zero.
In the second half of the article it says that those are just examples of what is possible, but the really interesting bit is that we build these tools for every single development problem, including when we deal with external systems or languages. And this leads to a new way of programming which we call Moldable Development.
This is a great article, and convinced me to put refreshing Pharo Smalltalk and installing Glamorous on my Mac.
Are you saying you want to compile it from source, or are you unaware that there's binaries available?
https://github.com/feenkcom/pdt2famix > pdt2famix takes PHP code and produces MSE files that can be imported into Glamorous Toolkit.
There's something called Gtoolkit, I think? I had to install NetBeans to get some plugin, to get one of these tools to work, then the plugin had some other requirements. It definitely wasn't just running their binary. It was a nightmare.
But you have to keep everything in the top directory and copy that around not the .app
It is not packaged as a Mac Application that is all in a .app file which you can copy to /Applications. Most of the other files should be in ~/Application Support or ~/Documents to meet normal macOS directories.