I use it for my interactive-fiction backend and to host save files for another game.
Nothing fancy, just a web server getting file and saving them. Like a KV-storage.
I have deployed it to dogital ocean on 2017. I have not TOUCHED it since then. Still running good. And I can access the Pharo GUI via the web VNC just from my browser with full access to the IDE and dev env.
The cons: I forgot how to run that docker image. If it fails I am in troubles reminding myself how to run it one more time. 6 years have passed...
Awesome, I’ve been learning Docker lately and asked ChatGPT how to do this. It told me to run inspect and that there was not a way to get the command used to launch the container. Thanks for sharing.
> And I can access the Pharo GUI via the web VNC just from my browser with full access to the IDE and dev env.
That's a thing I read about elsewhere, and it sounds like it has or had an integrated VNC Server - is that true (meaning run it heqdless from cli via ssh and connect to it through that), or do you need an X and leave Pharo "opened"? Any pointers appreciated ;-)
Some of us (me, for example :) have to spend multiple weeks a year to draw the design architecture of certain parts of the product. During engineering meetings everybody raised the same question: i commit to new area in product, how can I understand what are the components and how to do certain things? You can ask your colleagues but they might know it as well.
So I decided to document main flows and designs in PlantUML diagrams. having these diagrams greatly improved onboarding process, cause you can quickly glance what component does what and what are the dependencies (the code base was in JS, so it is usually quite limited on refactoring/figuring out wtf is going on).
But the problem with such approach is: diagram quickly gets out of date. Someone makes the change and the diagram makes no sense at all now. With what I saw in Gtoolkit, you can always query the real source code and build custom dev tools that always produce current and real overview of the system. I would love to have a starter kit for JS projects that you can drag and drop and start building your own tooling for your product.
How fast are your components really changing though? I write a lot of documentation for the systems I work on and rarely find old diagrams not making sense at all. Maybe smaller projects might have more changes going on but I find I have to add things more often than completely scrapping docs (the specific product I work on is almost 10 years old although the company I work for is a lot older)
You often see stuff as simple as a README get out of date. Lowering the barrier of entry to write documentation is hardly a bad thing, but the problem remains that said documentation takes time and work to stay relevant.
I am still in love of Settlers III and IV. I used to play with my sister via some direct LAN feature. Still remember how she gathered shitload of level 3 generals and I discovered that by using spies. I placed spies in the forest directly behind the tree. He was not visible until the soldier comes nearby. In this way I found her huge army. I gathered 40 elite vikings and did a special operation: 4 ferries dropped them just into the heart of her kingdom: mountains. I was able to completely destroy her economy before she could return her army. Then my looters took everything and she lost :D
Settlers V was naahhh and their latest browser based game was a disappointment as well.
I have been using Pharo as the backend for my turn-based game. It is such a relief to have the always ready live environment. Together with Flutter (another live env) I can create new backend services in a matter of minutes. For example: in Pharo I just add new field to the response. In Flutter app, without any restarts, I debug the REST call, check the response, modify my inner objects to accept this new field and boom, client and server can talk to each other again! Plus in Inspector I can watch the data changes after each REST calls. I do not have to issue an sql query or stop server in debug mode and recall the REST in order to catch breakpoint. The Inspector window is always there!
All this is done without any restarts of the server/client app. I have even created a smalltalk-to-dart code generator:
Haha! We did the same with our interactive-fiction game. At first we started with Twine but quickly switched to Inky format. But their libs for Java/Objective-C are not very good so I had to create my own ports to it. In the end we ended up with creating are own interactive fiction JSON format. All editors can do JSON, you do not require a special software to do it (ASAIR Inky required .NET SDK to be installed...)
My friend and I used the Twine and then Inkle formats for our interactive fiction game. But these formats produce unreadable JSONs and require custom editors to edit them. Also, their libs for Java/Objective-C had a lot of bugs :( And learning a new DSL to write a book takes too much time...
As a result we created a new interactive fiction format:
I kind of wish we had a format that was more readable than JSON, with whitespace instead of brackets, but then I start wishing for references and things like that, and realize I've arrived at YAML, which is nobody's notion of a good idea.
My wife has played some of those! She's a huge fan of the point and click adventures, I should see if her Steam library is sharing. Thank you for the reminder :)
this looks really interesting as a format; I agree that Twine is hard to engage with, the editor code is a mess and the generated format isn't clean. But it is quite fun and quick to use as a visual story "map" editor.
For your file format, I can't see the runtime inside the github repos, is that also available?
Nothing fancy, just a web server getting file and saving them. Like a KV-storage.
I have deployed it to dogital ocean on 2017. I have not TOUCHED it since then. Still running good. And I can access the Pharo GUI via the web VNC just from my browser with full access to the IDE and dev env.
The cons: I forgot how to run that docker image. If it fails I am in troubles reminding myself how to run it one more time. 6 years have passed...