pharo
Parasol
Our great sponsors
pharo | Parasol | |
---|---|---|
18 | 2 | |
1,140 | 31 | |
1.5% | - | |
10.0 | 5.9 | |
5 days ago | 2 months ago | |
Smalltalk | Smalltalk | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pharo
-
Why don't schools teach debugging, or, more fundamentally, fundamentals?
I think in part it's because the idea that programming is text and math-based is too ingrained in society.
For example, we talk about programming languages. But IMO there are also programming systems such as Smalltalk [1]. I've programmed 2 years professionally in it, currently looking for an engagement in a different language (a curiosity thing, also a resume thing).
I think Smalltalk has a lot to offer by switching the programmer's view of thinking about programming systems rather than programming languages.
Moreover, programming systems is also not where it is at. One downside that Pharo in particular has is that the community is small. A lot of plugins/libraries that are a given in other languages aren't there! For some, however, this is a strength because one gets to learn much better how to build stuff from the ground up and tinker on it by yourself. Given that there is still a lot of low hanging fruit it is easy to become a contributor.
But this part, whether a community is big or small means that I think it's smarter to think about programming ecosystems where a programming language or programming system is the central hub connecting the programming community together.
Why don't schools teach about programming communities? See my first sentence ;-)
[1] https://pharo.org - a modern Smalltalk
- Ask HN: What perfect software did you discover of recent?
-
Pharaoh - Server Side Framework for Dart
I read Pharo for just a split second
- LSP could have been better
- Ask HN: What would an IDE built for the Apple Vision Pro look like?
-
Is there a programming language that will blow my mind?
And Pharo is a good Smalltalk!
-
emacs version of Microsoft Access?
What you need is a cross platform GUI framework that still is a mutable environment allowing easy extend ability with a simple language. May I suggest Pharo Smalltalk?
- Pharo 11, the pure object-oriented language and environment is released!
-
Pharo 11
https://github.com/pharo-project/pharo/issues/9729#issuecomm...
When all the required dependencies are being found on your Fedor install we should wonder why "the VM seemed to hang and never started properly".
-
Ask HN: Alternatives to organizing code in files and folders?
Consider playing with Pharo [1], it shows how it can still use Git to store sources in background.
There is LivelyKernel [2] but some versions are more file-oriented (like Lively 4 [3)
[1] https://pharo.org/
Parasol
-
Pharo 11
IMO it's a good tool for web scraping. The reason: you can do web scraping with Parasol (i.e. Selenium [1]) and then if you need visualization tools then you can immediately use Roassal [2]. The thing is: Pharo and the fact that it's more GUI-oriented than other programming languages, allows for data visualization a bit easier.
Another use-case is: open-source software where you want to encourage users to just open up "the damn code engine" and hack straight into it, seeing it change on the fly. Like, can you just right click in Windows on a pixel and change the code that underlies it? In Pharo you can! Commercial parties would find this horrible, but it's amazing for full open-source software.
For web apps, B2B works quite well. B2C, I see scalability issues.
[1] https://github.com/SeasideSt/Parasol
[2] https://github.com/ObjectProfile/Roassal3
-
Pharo 10
```
As you can see, I've hacked the _: to be a separator of some sorts, but what it actually is, is an argument of a message. You can do all kinds of fun stuff with this. See [8].
8. When you overwrite #doesNotUnderstand then you can inspect the message and its arguments. So whether you send Object1 a:arg1 veryImportant:arg2 message:arg3, then you can inspect those arguments. In the case above, this means you can also inspect _:arg1 _:arg2 or _:arg1 _:arg2 _:arg3 ... _;argN. In other words, you can deal with variable arguments and it doesn't matter what they're called. Because of this, it's easy to create a simple DSL, if you need another separator, then simply add one. You have a lot of characters at your disposal that are quite unique [4]. I figured that out by using by using point (2) and just looking around in the environment.
__Web Development__
9. Seaside is capable of live and dynamic updating. MOOCs won't tell you this because it requires using Seaside quite differently. In short, the pattern that I see used at my work is by having server-side rendered HTML that has designated blocks as callbacks. So when you send your server-side rendered HTML, those callback blocks will transform itself into a jQuery GET/POST request. Pharo writes the jQuery for you. We also use React, but I haven't gotten around to it how it's used, I'm fairly sure we don't use anything like Redux.
10. In terms of testing, it's relatively easy to write tests. As with Go, it's all included and you're ready to test! Also note: if you want to use Selenium tests, you can use Parasol [5], it's quite easy to use.
11. The following concepts are not explained well, so I'll do it: Seaside heavily uses what we'd call middleware in NodeJS (filters in Seaside). In NodeJS/Express we also have a request object that exists during the lifetime of a request. In Seaside this is called a dynamic variable (WADynamicVariable is the class).
__Stuff I wrote out in the open__
12. I've been working on refactoring i18n in Seaside [6]. I currently find the approach Pharo uses the nicest approach, which is something along the lines of:
'You have some string that needs translation in your web app' SeasideTranslated
When you want to export a catalog file of all the strings you want to translate, then you send exportCatalog new exportCatalog and it will look through the whole image and find every tagged string and export it into a catalog (.pot) file that you can edit with POEdit (a free Mac app [7]).
13. I wrote a simple animation that shows the definition of sin and cos [8]. Most of the code is shown in that video, IMO it gives a good enough sense how to use it.
__Bottom Line Thoughts__
14. I think Pharo is a production-ready language for SaaS apps where you can easily scale by adding instances. I am not sure if it'd be production-ready for consumer facing web apps with many concurrent users.
15. It's an amazing language to create desktop applications for.
16. The debugger capabilities are awesome and there's active research on it. Time travel debugging is currently in its PoC phase (source: Pharo Days).
17. It's also a good language for live music making (source: Pharo Days where someone demo-ed some live coded acid music).
[0] https://discord.gg/QewZMZa
[1] We're hiring developers able to work in Europe and based in a European time zone. The way we use Pharo is IMO the real deal, it goes far beyond what any MOOC can teach you.
https://yesplan.be/en/vacancy/full-stack-software-engineer
[2] https://github.com/pavel-krivanek/PharoChipDesigner
[3] https://www.youtube.com/watch?v=BUEnRrUZ-Ug
[4] ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
[5] https://github.com/SeasideSt/Parasol
[6] https://github.com/SeasideSt/Seaside/tree/gettext-fix
[7] https://poedit.net/features
[8] https://drive.google.com/file/d/1Z3UwTAj4A2CRo_TXk6JNG-mN9yM...
What are some alternatives?
Cuis-Smalltalk-Dev - Active development of Cuis Smalltalk
seaside - The framework for developing sophisticated web applications in Smalltalk.
SqueakJS - A Squeak Smalltalk VM in Javascript
Teapot - Teapot micro web framework for Pharo Smalltalk
squeak.org - Squeak/Smalltalk Website
PharoChipDesigner - A little chip design game inspired by KOHCTPYKTOP: Engineer of the People by Zachtronics
CodeParadise - Framework for developing web applications and Node.js applications using Smalltalk
Learning-Cuis
Rebol3 - Source code for the Rebol [R3] interpreter
Roassal3 - The Roassal Visualization Engine
inferno-rpi - This is compilation of Labs “Porting Inferno OS to Raspberry Pi”. We decided to organize it as some set of small labs with very detailed steps of what is done to reach results and make everything easy to reproduce.
PharoByExample9 - The version of Pharo by Example for Pharo 90