Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...> If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article. Thanks. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Very nice. Thanks. Aik-Siong Koh -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi 2017-10-04 12:30 GMT+02:00 horrido <horrido.hobbies@gmail.com>:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern- smalltalk-38e132c46053>
If you would like to suggest some edits, I'm all ears. Anything to improve
the impact of the article.
As you mentioned IoT part it would be nice to add link to PharoThings project https://github.com/pharo-iot/PharoThings.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi Richard, I would change the link text where machine learning refers to BioSmalltalk. Actually it is more a library for Bioinformatics. Cheers, Hernán 2017-10-04 7:30 GMT-03:00 horrido <horrido.hobbies@gmail.com>:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
What I like most about this article is the comparisons with common trends (Pharo is to Smalltalk like Clojure is to Lisp) that bridge the gap between audiences. I would add some link to Cuis Smalltalk in the mention of the Smalltalk families, because of its minimalist approach. Also, may be you can add some mention to Grafoscopio [1] to complement the link about medicine data visualization. That link is getting old, but Grafoscopio community is moving and making other new project on data activism, visualization and storytelling, with more links to deep in (and upcoming news soon). [1] http://mutabit.com/grafoscopio/index.en.html Thanks, Offray On 04/10/17 05:30, horrido wrote:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Nice article. I like the way you've structured it and pushed the "updated" angle. I feel a bit too strong a claim is laid on Pharo producing the CogVM. Much of the Cog + Spur + 64bit VM work was originally done for Squeak with Pharo riding the coat-tails of that work. Lately Pharo community has been involved in improving VM with hotspot optimisation with Sista and moving towards making Pharo embeddable.. (@Clement, is "hotspot optimsation" fair as a short tagline for inter-language comparison?) So maybe say "the Pharo project has been involved in producing: ... * the 64-bit Spur/Cog VM (used also by Squeak, Cuis and Newspeak) * hotspot optimisation with Sista * working towards embedding Pharo as a game scripting language" (not sure on that last one) cheers -ben On Wed, Oct 4, 2017 at 6:30 PM, horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern- smalltalk-38e132c46053>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Yes, the "updated" angle was the crucial tactic. Thanks. I just wanted to inform you that in just 48 hours since publication, this article has gathered over 11,000 views! This is a new record for me. Fastest rising. I am astounded by the number; I really didn't expect it. It's a very, very nice way to end my campaign on a high note. Hopefully, Pharo (and Smalltalk) will become more popular. Cheers. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cool! Waiting for the updated version with this mailing list feedback on it. Cheers, Offray On 05/10/17 19:35, horrido wrote:
Yes, the "updated" angle was the crucial tactic. Thanks.
I just wanted to inform you that in just 48 hours since publication, this article has gathered over 11,000 views! This is a new record for me. Fastest rising.
I am astounded by the number; I really didn't expect it. It's a very, very nice way to end my campaign on a high note. Hopefully, Pharo (and Smalltalk) will become more popular.
Cheers.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Thanks I think that this is really nice. Thanks for your time. On Fri, Oct 6, 2017 at 2:42 AM, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Cool! Waiting for the updated version with this mailing list feedback on it.
Cheers,
Offray
On 05/10/17 19:35, horrido wrote:
Yes, the "updated" angle was the crucial tactic. Thanks.
I just wanted to inform you that in just 48 hours since publication, this article has gathered over 11,000 views! This is a new record for me. Fastest rising.
I am astounded by the number; I really didn't expect it. It's a very, very nice way to end my campaign on a high note. Hopefully, Pharo (and Smalltalk) will become more popular.
Cheers.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I've incorporated some of the suggestions. Thanks. Here's a very lively discussion at Hacker News: https://news.ycombinator.com/item?id=15399442 The article has sparked a raging debate. Hacker News readers seem to really like the article, as it has garnered 150 points, /more than any other article that I've ever posted!/ (Even my original TechBeacon article <https://techbeacon.com/how-learning-smalltalk-can-make-you-better-developer> -- which launched my campaign! -- only got 115 points.) You should all participate in the discussion and help to dispel the many misconceptions people have about Pharo/Smalltalk. I find a great deal of ignorance out there, and *only you folks* can address it properly. Thanks. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I received this comment from someone who complained: *What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language. https://www.gnu.org/software/smalltalk/manual-base/html_node/* I pointed to Pharo's documentation but then he came back with: *Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)* It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint? Thanks. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
"It's Smalltalk. Read the code, Luke."? On Oct 6, 2017 08:55, "horrido" <horrido.hobbies@gmail.com> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 6 Oct 2017, at 14:54, horrido <horrido.hobbies@gmail.com> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative. The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Thanks. I gave your answer verbatim. I also added the following paragraph: The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming. Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I saw this comment, and wonder if we might have an intro video (or cartoon) of how to run the ProfStef tutorial in the first few minutes of opening your first image.
They need to work on the presentation. How do you get started ? How does the code look like ? etc. Not just "download this program and buy this book" reply
yes, time, resources, someoneHasToDoIt all apply. just a random thought, cheers -ben On Fri, Oct 6, 2017 at 9:47 PM, horrido <horrido.hobbies@gmail.com> wrote:
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not
even
VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
This is fun because I was thinking that we should add to the main page a videos of the counter coding in the debugger and GTInspector. We have the mooc videos showing ProfStef so we have nearly everything we need and now they are available (should upload them with english voice). Stef On Fri, Oct 6, 2017 at 5:39 PM, Ben Coman <btc@openinworld.com> wrote:
I saw this comment, and wonder if we might have an intro video (or cartoon) of how to run the ProfStef tutorial in the first few minutes of opening your first image.
They need to work on the presentation. How do you get started ? How does the code look like ? etc. Not just "download this program and buy this book" reply
yes, time, resources, someoneHasToDoIt all apply. just a random thought, cheers -ben
On Fri, Oct 6, 2017 at 9:47 PM, horrido <horrido.hobbies@gmail.com> wrote:
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hey, guys, I'm mentioned in this O'Reilly newsletter <http://post.oreilly.com/form/oreilly/viewhtml/9z1zgj2l150hp80ah3enjvhjhqcnr2...> !!! All because of the Pharo article. I wonder, is my campaign /actually/ succeeding? If so, I can die happy. ;-) -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Mon, Oct 9, 2017 at 2:45 PM, horrido <horrido.hobbies@gmail.com> wrote:
Hey, guys, I'm mentioned in this O'Reilly newsletter <http://post.oreilly.com/form/oreilly/viewhtml/9z1zgj2l150hp80ah3enjvhjhqcnr2...> !!! All because of the Pharo article.
I wonder, is my campaign /actually/ succeeding? If so, I can die happy. ;-)
Great! But do not die yet we have more to do :). Stef
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners). Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful). I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance. horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
A Bluebook updated picture would be great. And I am sure Roassal could produce it right away. Phil On Oct 10, 2017 15:58, "horrido" <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation
for
the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Tue, Oct 10, 2017 at 3:58 PM, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
This is why I started to comment even the classes that we all know You see having a lovely comment on Association, Array, OrderedCollection with all the love we can is the best welcoming.
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
Totally agree. Now the good aspect is that ANY pharoers can help making such class/method comments great. It takes 5 to 10 min. And I started to add executable examples " 3 + 2
5 "
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
In the past we generate a javadoc but nobody looked at it.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system). I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything... My 2 cents. On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation
for
the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly. Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view. Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task. On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo.
Of
these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow). My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs). Cheers, Offray On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.Â
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.Â
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com <mailto:vitormcruz@gmail.com>> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com <mailto:jpfersich@gmail.com>> wrote:
> On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com <mailto:horrido.hobbies@gmail.com>> wrote: > > Interestingly, I'm getting a fair amount of pushback on this. Personally, I > think it would be very helpful to have a live (updatable, so as to keep it > current) reference page for the class library, something that developers can > easily look up what they need. After all, most of the power of Pharo comes > from the class library and we need to make it as accessible as possible to > less experienced Pharoers (i.e., beginners). > > Exploring the class library through the System Browser is very inefficient. > This is further exacerbated by the fact that many classes and methods are > simply not well-documented (containing a cursory remark which is just barely > useful). > I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
> I realize that creating a live reference page is not easy to do. In fact, > it's a lot of work. But the absence of such a page is a real obstacle to > Pharo acceptance. > > > > horrido wrote >> Thanks. I gave your answer verbatim. I also added the following paragraph: >> >> The problem I find with todayâs developers is that they are rather >> closed-minded. They are rigid and inflexible, and not willing to adapt to >> new and different ways of doing things. In my generation (circa >> 1980â1990), >> people didnât have a problem with trying different technologies. Thatâs >> why >> I had no issue with learning Smalltalk 10 years ago, after I had retired >> from a 20-year-long career in C systems programming and FORTRAN scientific >> programming. >> >> >> >> Sven Van Caekenberghe-2 wrote >>>> On 6 Oct 2017, at 14:54, horrido < >> >>> horrido.hobbies@ >> >>> > wrote: >>>> >>>> I received this comment from someone who complained: >>>> >>>> *What about the lack of documentation? From time to time Iâve checked >>>> some >>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of >>>> these, only GNU-SmallTalk appears to have a free, official programming >>>> guide >>>> and core library reference that any serious programmer expects from a >>>> language. >>>> >>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/* >>>> >>>> I pointed to Pharo's documentation but then he came back with: >>>> >>>> *Then show me a link of the free, maintained reference documentation for >>>> the >>>> classes that form âthe core libraryâ, like this one for Python >>>> (https://docs.python.org/3/library/index.html)* <https://docs.python.org/3/library/index.html%29*> >>>> >>>> It's true, most Smalltalks do not have a core library reference, not >>>> even >>>> VisualWorks! So what is the proper response to this complaint? >>> >>> The first answer is that Pharo/Smalltalk is unique in that a running >>> system/IDE contains _all_ source code, _all_ documentation (class, >>> method, >>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very >>> easy, accessible way. It takes some getting used to, but this is actually >>> better and much more powerful than any alternative. >>> >>> The second answer is that there are lots of books and articles that take >>> the classic/structured book/paper approach. There is >>> http://books.pharo.org, http://themoosebook.org, >>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many >>> more. >>> >>>> Thanks. >>>> >>>> >>>> >>>> -- >>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >>>> >> >> >> >> >> >> -- >> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html > > > > > > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >
Docs are available in static online html format , at least the book I was working on Pharo By Example You can find those links here https://github.com/SquareBracketAssociates/UpdatedPharoByExample Our documentation system , Pillar , outputs pdf , html and markdown files. If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to. Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve
checked
some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier http://www.kilon-alios.com Pillar of course is not made for generating websites but itâs an awesome Pharo library that allows for great degree of freedom so I thought , why not ? On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Docs are available in static online html format , at least the book I was working on
Pharo By Example
You can find those links here
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
Our documentation system , Pillar , outputs pdf , html and markdown files.
If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to.
Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve
checked
some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Yes. I know them. I mean API docs as static files. I don't really sold on them compared with a live system and I don't think static API docs are critical for Pharo success. Cheers, Offray On 11/10/17 09:52, Dimitris Chloupis wrote:
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier
Pillar of course is not made for generating websites but itâs an awesome Pharo library that allows for great degree of freedom so I thought , why not ? On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis <kilon.alios@gmail.com <mailto:kilon.alios@gmail.com>> wrote:
Docs are available in static online html format , at least the book I was working on
Pharo By Example
You can find those links here
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
Our documentation system , Pillar , outputs pdf , html and markdown files.
If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to.
Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>> wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.Â
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.Â
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com <mailto:vitormcruz@gmail.com>> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com <mailto:jpfersich@gmail.com>> wrote:
> On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com <mailto:horrido.hobbies@gmail.com>> wrote: > > Interestingly, I'm getting a fair amount of pushback on this. Personally, I > think it would be very helpful to have a live (updatable, so as to keep it > current) reference page for the class library, something that developers can > easily look up what they need. After all, most of the power of Pharo comes > from the class library and we need to make it as accessible as possible to > less experienced Pharoers (i.e., beginners). > > Exploring the class library through the System Browser is very inefficient. > This is further exacerbated by the fact that many classes and methods are > simply not well-documented (containing a cursory remark which is just barely > useful). > I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
> I realize that creating a live reference page is not easy to do. In fact, > it's a lot of work. But the absence of such a page is a real obstacle to > Pharo acceptance. > > > > horrido wrote >> Thanks. I gave your answer verbatim. I also added the following paragraph: >> >> The problem I find with todayâs developers is that they are rather >> closed-minded. They are rigid and inflexible, and not willing to adapt to >> new and different ways of doing things. In my generation (circa >> 1980â1990), >> people didnât have a problem with trying different technologies. Thatâs >> why >> I had no issue with learning Smalltalk 10 years ago, after I had retired >> from a 20-year-long career in C systems programming and FORTRAN scientific >> programming. >> >> >> >> Sven Van Caekenberghe-2 wrote >>>> On 6 Oct 2017, at 14:54, horrido < >> >>> horrido.hobbies@ >> >>> > wrote: >>>> >>>> I received this comment from someone who complained: >>>> >>>> *What about the lack of documentation? From time to time Iâve checked >>>> some >>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of >>>> these, only GNU-SmallTalk appears to have a free, official programming >>>> guide >>>> and core library reference that any serious programmer expects from a >>>> language. >>>> >>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/* >>>> >>>> I pointed to Pharo's documentation but then he came back with: >>>> >>>> *Then show me a link of the free, maintained reference documentation for >>>> the >>>> classes that form âthe core libraryâ, like this one for Python >>>> (https://docs.python.org/3/library/index.html)* <https://docs.python.org/3/library/index.html%29*> >>>> >>>> It's true, most Smalltalks do not have a core library reference, not >>>> even >>>> VisualWorks! So what is the proper response to this complaint? >>> >>> The first answer is that Pharo/Smalltalk is unique in that a running >>> system/IDE contains _all_ source code, _all_ documentation (class, >>> method, >>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very >>> easy, accessible way. It takes some getting used to, but this is actually >>> better and much more powerful than any alternative. >>> >>> The second answer is that there are lots of books and articles that take >>> the classic/structured book/paper approach. There is >>> http://books.pharo.org, http://themoosebook.org, >>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many >>> more. >>> >>>> Thanks. >>>> >>>> >>>> >>>> -- >>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >>>> >> >> >> >> >> >> -- >> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html > > > > > > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >
What about a seaside-based system browser oriented towards code documentation? That would fit both paradigms: html-like reference + live browsing. You could even make it buzzword compliant: have a REST interface to documentation and code. Note how the panes in a system browser could make for a nice URI: just look for pharo://Kernel/Number/mathematical%20functions/raisedTo: And we could even include version numbers, etc.... pharo://6.1/Kernel/Number/mathematical%20functions/raisedTo: Not very different from the github url for the pharo project relevant file... https://github.com/pharo-project/pharo/blob/development/src/Kernel.package/N... Thierry 2017-10-11 17:01 GMT+02:00 Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com>:
Yes. I know them. I mean API docs as static files. I don't really sold on them compared with a live system and I don't think static API docs are critical for Pharo success.
Cheers,
Offray
On 11/10/17 09:52, Dimitris Chloupis wrote:
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier
Pillar of course is not made for generating websites but itâs an awesome Pharo library that allows for great degree of freedom so I thought , why not ? On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Docs are available in static online html format , at least the book I was working on
Pharo By Example
You can find those links here
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
Our documentation system , Pillar , outputs pdf , html and markdown files.
If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to.
Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is- much-harder-to-find-anything-in-the-environment-c6bdd44f6eea
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve
checked
some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo- Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo- Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 11 Oct 2017, at 17:18, Thierry Goubier <thierry.goubier@gmail.com> wrote:
What about a seaside-based system browser oriented towards code documentation? That would fit both paradigms: html-like reference + live browsing.
You could even make it buzzword compliant: have a REST interface to documentation and code.
Note how the panes in a system browser could make for a nice URI: just look for
pharo://Kernel/Number/mathematical%20functions/raisedTo:
And we could even include version numbers, etc....
pharo://6.1/Kernel/Number/mathematical%20functions/raisedTo:
Not very different from the github url for the pharo project relevant file...
https://github.com/pharo-project/pharo/blob/development/src/Kernel.package/N...
Indeed. Too bad there are plans to put everything in one file (booo) ;-)
Thierry
2017-10-11 17:01 GMT+02:00 Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com>: Yes. I know them. I mean API docs as static files. I don't really sold on them compared with a live system and I don't think static API docs are critical for Pharo success.
Cheers,
Offray
On 11/10/17 09:52, Dimitris Chloupis wrote:
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier
Pillar of course is not made for generating websites but itâs an awesome Pharo library that allows for great degree of freedom so I thought , why not ? On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis <kilon.alios@gmail.com> wrote: Docs are available in static online html format , at least the book I was working on
Pharo By Example
You can find those links here
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
Our documentation system , Pillar , outputs pdf , html and markdown files.
If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to.
Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote: The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote: I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 11 Oct 2017, at 17:18, Thierry Goubier <thierry.goubier@gmail.com> wrote:
What about a seaside-based system browser oriented towards code documentation? That would fit both paradigms: html-like reference + live browsing.
You could even make it buzzword compliant: have a REST interface to documentation and code.
Note how the panes in a system browser could make for a nice URI: just look for
pharo://Kernel/Number/mathematical%20functions/raisedTo:
And we could even include version numbers, etc....
pharo://6.1/Kernel/Number/mathematical%20functions/raisedTo:
Not very different from the github url for the pharo project relevant file...
https://github.com/pharo-project/pharo/blob/development/src/Kernel.package/N... <https://github.com/pharo-project/pharo/blob/development/src/Kernel.package/N...>
There is http://files.pharo.org/doc/ <http://files.pharo.org/doc/>, too. Marcus
Seaside for html live docs browsing seems a good idea. How do you create something like [1]?: [1] http://files.pharo.org/doc/4.0/#packageList=package.html&classList=package/K... Cheers, Offray On 11/10/17 10:31, Marcus Denker wrote:
On 11 Oct 2017, at 17:18, Thierry Goubier <thierry.goubier@gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
What about a seaside-based system browser oriented towards code documentation? That would fit both paradigms: html-like reference + live browsing.
You could even make it buzzword compliant: have a REST interface to documentation and code.
Note how the panes in a system browser could make for a nice URI: just look for
pharo://Kernel/Number/mathematical%20functions/raisedTo:
And we could even include version numbers, etc....
pharo://6.1/Kernel/Number/mathematical%20functions/raisedTo:
Not very different from the github url for the pharo project relevant file...
https://github.com/pharo-project/pharo/blob/development/src/Kernel.package/N...
There is http://files.pharo.org/doc/, too.Â
Marcus
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;) There is a solution, not a great solution but it can do this. You can kinda do this via metacello and filetree, because when you export to git , it coverts class and method comments to markdown that can be viewed like online documentation . They are saved as README.md which is the standard for github. That means you can use markdown inside the class and method comments , and then convert that to HTML . Tons of markdown to html coverters out there so it would not be a problem. Of course Pharo users may not be happy to read comments in markdown but then markdown has minimal syntax so it should not be such a major issue. The real problem is the class comments itself, if you lack comments talking about automated API reference documentation sounds the least of the problems. Cannot blame developers, documentation is as much work as writting the code and I can understand that some may find it much less pleasant than I do :) I tried my best to help on the documentation department but we need more people because its an effort not only to document but also to keep the documentation updated. One of the perk working in an enviroment improving very fast, but you wont get any complain from me about this ;) On Wed, Oct 11, 2017 at 6:02 PM Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
Yes. I know them. I mean API docs as static files. I don't really sold on them compared with a live system and I don't think static API docs are critical for Pharo success.
Cheers,
Offray
On 11/10/17 09:52, Dimitris Chloupis wrote:
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier
Pillar of course is not made for generating websites but itâs an awesome Pharo library that allows for great degree of freedom so I thought , why not ? On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Docs are available in static online html format , at least the book I was working on
Pharo By Example
You can find those links here
https://github.com/SquareBracketAssociates/UpdatedPharoByExample
Our documentation system , Pillar , outputs pdf , html and markdown files.
If the book in question is built like PBE with CI of Inria where most Pharo related official projects are built then it should have at least pdf and html with online access so you can easily link to.
Donât quote me on this but I think the html output of pillar generate links even for paragraphs you can do an even more process linking to the documentation. On Wed, 11 Oct 2017 at 17:40, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com> wrote:
On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with todayâs developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didnât have a problem with trying different technologies. Thatâs why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time Iâve
checked
some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;)
Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings? After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it. Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc. Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations. But it would be nice to make it more transparent where/how can one submit feature request for Pillar? Fogbugs issue trakcer is certainly not the ideal place these days... Sincerely, Gour -- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
On ven. 13 oct. 2017 at 12:05, Gour <gour@atmarama.com> wrote:
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;)
Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings?
After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it.
Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc.
Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations.
But it would be nice to make it more transparent where/how can one submit feature request for Pillar?
Hi, I don't have much time so, fast answer: https://github.com/pillar-markup/pillar/issues
Fogbugs issue trakcer is certainly not the ideal place these days...
Sincerely, Gour
-- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
--
Cyril Ferlicot https://ferlicot.fr http://www.synectique.eu 2 rue Jacques Prévert 01, 59650 Villeneuve d'ascq France
Why exporting to latex, html and markdown is not enough for you ? On Fri, Oct 13, 2017 at 1:05 PM Gour <gour@atmarama.com> wrote:
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;)
Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings?
After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it.
Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc.
Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations.
But it would be nice to make it more transparent where/how can one submit feature request for Pillar?
Fogbugs issue trakcer is certainly not the ideal place these days...
Sincerely, Gour
-- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
On Fri, 13 Oct 2017 10:43:27 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Why exporting to latex, html and markdown is not enough for you ?
Well, I usuallyconsider latex/html as more suitable as output formats, while standard markdown is semantically too poor for input format, but I'll test how Pillar's outputs are suitable as Pandoc's inputs. Sincerely, Gour -- It is far better to discharge one's prescribed duties, even though faultily, than another's duties perfectly. Destruction in the course of performing one's own duty is better than engaging in another's duties, for to follow another's path is dangerous.
Interoperability with pandoc is desirable Some people want MSWord documents and they provide input in the form of MSWord documents. Or LibreOffice ODT. pandoc handles that well for a subset of MSWord options. pandoc allows you as well to write a custom output format -- in this case Pillar. E.g. conversion from MSWord docx to Pillar is possible. It would need somebody to look into the issue of doing some Lua scripting. pandoc has Lua embedded for output generation. --Hannes P.S. I will have some time later for Pillar issues (not Lua), but the document model and generation of slides. Still open issue on my list is rendering Pillar on Morphic, in particular slide. On 10/13/17, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Why exporting to latex, html and markdown is not enough for you ?
On Fri, Oct 13, 2017 at 1:05 PM Gour <gour@atmarama.com> wrote:
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;)
Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings?
After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it.
Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc.
Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations.
But it would be nice to make it more transparent where/how can one submit feature request for Pillar?
Fogbugs issue trakcer is certainly not the ideal place these days...
Sincerely, Gour
-- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
Hi, I have created a document in Grafoscopio. The source file is a single Grafoscopio notebook in STON [1] (~600kb), the output is a single Pandoc's Markdown file[2] (~500kb), and you can produce the output as a PDF file like in [3] (~13Mb). Pandoc has a lot of maturity and a community with a lot of momentum, dedicated mainly to light documentation. If we have support for Pandoc's Markdown on Pharo, we can leverage on that knowledge and tools without reinventing the wheel. Of course using AST and a lot of infrastructure behind Pillar can be used, without falling in love with its syntax. [1] http://mutabit.com/repos.fossil/mapeda/doc/tip/mapeda.ston [2] http://mutabit.com/repos.fossil/mapeda/doc/tip/mapeda.markdown [3] http://mutabit.com/repos.fossil/mapeda/uv/mapeda.pdf Cheers, Offray On 13/10/17 08:21, H. Hirzel wrote:
Interoperability with pandoc is desirable
Some people want MSWord documents and they provide input in the form of MSWord documents. Or LibreOffice ODT.
pandoc handles that well for a subset of MSWord options.
pandoc allows you as well to write a custom output format -- in this case Pillar.
E.g. conversion from MSWord docx to Pillar is possible.
It would need somebody to look into the issue of doing some Lua scripting. pandoc has Lua embedded for output generation.
--Hannes
P.S. I will have some time later for Pillar issues (not Lua), but the document model and generation of slides. Still open issue on my list is rendering Pillar on Morphic, in particular slide.
On 10/13/17, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Why exporting to latex, html and markdown is not enough for you ?
On Fri, Oct 13, 2017 at 1:05 PM Gour <gour@atmarama.com> wrote:
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;) Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings?
After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it.
Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc.
Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations.
But it would be nice to make it more transparent where/how can one submit feature request for Pillar?
Fogbugs issue trakcer is certainly not the ideal place these days...
Sincerely, Gour
-- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
epub already works. Now it should be improved. Doing an pandoc exporter should not be that difficult. If you do it I will integrate it. On Fri, Oct 13, 2017 at 12:03 PM, Gour <gour@atmarama.com> wrote:
On Wed, 11 Oct 2017 17:18:54 +0000 Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Well there is a move towards Pillar for class and method commands so who knows maybe we will have that soon enough ;)
Let me say that I'm very happy seeing that Pillar is moving forward (e.g. addition of support for footnotes) as well as plan for the future (*.epub support) since I'm considering whether it could serve as single-source markup for all of one's writings?
After migrating from Python-powered static-site-generator (to Hugo) and rst markup I was considering to use AsciiDoc(tor) markup for all my content, but, so far, due to using Emacsm settled to use org-mode instead. Haven't tried with slides (yet), but there is Pandoc support for it.
Therefore, I'd rather see Pillar support in Pandoc which would buy us even more import/export capabilities for free instead of focusing on single formats like *.odt, *.epub etc.
Pillar with 1st class support in Pandoc would, imho, improve status of Pharo itself making it along with Pillar exceelent tool for development as well as for all writing needs - articles, books, documentation, slide-presentations.
But it would be nice to make it more transparent where/how can one submit feature request for Pillar?
Fogbugs issue trakcer is certainly not the ideal place these days...
Sincerely, Gour
-- Everyone is forced to act helplessly according to the qualities he has acquired from the modes of material nature; therefore no one can refrain from doing something, not even for a moment.
I can't remember ever using API docs in any language, dynamic or not.  They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs, unless the methods are nothing but getters and setters (which I've never understood the point of) ?  (I know, most give (int somename, int someothername, String whatever), but how often do are method names well thought through enough to imply definitively what the method needs?.  It's my biggest issue with Algol-style syntax - the method caller is supposed to know how it works, rather than whoever actually wrote it.  It's probably at least one of the reasons for the amount of OSS in Java, and more recently in JavaScript (though the latter is more no- style than Algol-style).  I nearly always download the source to OSS libs although I rarely ever bother building it, so I know what a method does with the params, and I can be sure what params to give it. One of my favourite language fails can be reproduced by doing this: Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter.  Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value.  Guess what? The value is whatever you changed it to in your other local variable, although the API docs claim javac won't compile it. I tested this with Java 8,  I haven't bothered to see if it was always like that or if they took the rule out of javac because it interfered with some syntactic parmesan, such as lambdas.  I should copy my test code into VisualAge for Java and see if in fact it compiles with JDK 1.4.2, or if javac was changed in between 4 and 8, since the addition of various flavours of syntactic parmesan mostly started with Java 5. Not that it's all that important in one sense.  If 'private' and 'final' were supposed to be guides for other developers to be careful if they're thinking about changing it, fine, anyone who doesn't isn't all that good a developer.  But given the number of 'not very good' developers I've had the misfortune to work with in Java, it's more problematic than it should be.  It also makes the pattern of a private field with a public setter even more useless, since the setter isn't needed to change the value.  I always get dinged by whatever lint companies use for not bothering with that pattern, though, and pointing out that declaring the fields public accomplishes exactly the same thing never helps my case, because whatever lint they use, it has to be right, there's no way a non-lint developer might be right. Andrew Glynn -----Original Message----- Date: Wed, 11 Oct 2017 10:01:20 -0500Subject: Re: [Pharo-users] Behold Pharo: The Modern SmalltalkTo: pharo-users@lists.pharo.orgReply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org>From: Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com>               Yes. I know them. I mean API docs as static files. I don't really       sold on them compared with a live system and I don't think static       API docs are critical for Pharo success.     Cheers,     Offray             On 11/10/17 09:52, Dimitris Chloupis       wrote:        Â
Ah       and my static website was built with Pillar and Bootstrap, using       bootstrap templates was easy because Pillar supports mustache that       makes html manipulation much easierÂ
     Â
      http://www.kilon-alios.com
     Â
      Pillar of course is not made for generating websites but itâs an       awesome Pharo library that allows for great degree of freedom so I       thought , why not ?
              On Wed, 11 Oct 2017 at 17:48, Dimitris Chloupis           <kilon.alios@gmail.com> wrote:
               Â
Docs are           available in static online html format , at least the book I           was working onÂ
         Â
          Pharo By ExampleÂ
         Â
          You can find those links here
         Â
          https://github.com/SquareBracketAssociates/UpdatedPharoBy Example
         Â
          Our documentation system , Pillar , outputs pdf , html and           markdown files.Â
         Â
          If the book in question is built like PBE with CI of Inria           where most Pharo related official projects are built then it           should have at least pdf and html with online access so you           can easily link to.
         Â
          Donât quote me on this but I think the html output of pillar           generate links even for paragraphs you can do an even more           process linking to the documentation.Â
                      On Wed, 11 Oct 2017 at 17:40, Offray Vladimir               Luna Cárdenas <offray.luna@mutabit.com>               wrote:
                       Â
                              The more I use Pharo, the less I use web                   documentation. For me seems pretty suboptimal compared                   to live environment with code browser and GT- Spotter.                   Regarding the comment on Medium, it also took me                   little to find #raisedTo:, so the millage can vary.                   What I was missing was proper books for particular                   domains, but Pharo books are covering that. I don't                   know if a Q&A site could improve search-ability                   for newbies (certainly you can find little stuff in                   Stack Overflow).                 My bet is about trying to create more "end user"                   tools (Grafoscopio is kind of this), besides tools for                   developers. There is a broad community of people who                   can be active contributors and members of the                   community, welcome Pharo and live coding a lot and                   don't complain that much about stuff that is not                   already pretty similar to what they already know                   (being that only English MOOC or online static html                   docs).                 Cheers,                 Offray
                                            Â
                On                   11/10/17 07:34, Dimitris Chloupis wrote:
                               Â
                  for me it is a yes and no situation,                     yes its very coold to have your entire system in                     your fingertips but Pharo has serious issues with                     code organisation and I find the lack of namespaces                     quite inconvenient. You have to be careful how to                     name your classes which does not sound to me very                     OOP friendly.                    Â
                                        Also the IDE does not handle spaggetification                       very well, sure you can find implementors ,                       senders etc but if the execution chain is complex                       , welcome to spaggeti hell. But that is a problem                       with most other IDEs if not all as well. Problem                       is in this case that we have the very good rule of                       using sort methods which multiplies this problem                       and makes navigation even harder. Code becomes                       much easier to read per method and messages but                       much harder to understand in a bird eye view.                    Â
                                        Some of that pain has been aleviated with the                       introduction of GTSpotter which I have praised                       quite a lot and I will continue to do so. But yeah                       there are more needed to be done in the department                       to make Pharo code navigation a more comfortable                       task.                                    Â
                                      On Wed, Oct 11, 2017 at 2:57 PM Vitor                       Medina Cruz <vitormcruz@gmail.com>                       wrote:
                                       Â
                                                                        I dunno, maybe Iâm weird, but I find                           the System Browser a fantastic way to explore                           the class library. If you find a class or                           method that isnât well documented, write a                           comment and send a change request. Stef told                           me this ages ago. I might add, if you find a                           bug you should write a test that exercises the                           bug and submit it on fogbugz (the bug tracking                           system).
                                               Â
                                                                    I will reference of response of                           mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much -harder-to-find-anything-in-the-environment-c6bdd44f6eea                         My 2 cents.                        Â
                                               Â
                                           Â
                        On Tue, Oct 10, 2017 at                           11:59 PM, john pfersich <jpfersich@ gmail.com>                           wrote:
                         Â
                              > On Oct 10, 2017, at 09:58, horrido                               <horrido.hobbies@gmail.com>                               wrote:
                              >
                              > Interestingly, I'm getting a fair                               amount of pushback on this. Personally, I
                              > think it would be very helpful to                               have a live (updatable, so as to keep it
                              > current) reference page for the class                               library, something that developers can
                              > easily look up what they need. After                               all, most of the power of Pharo comes
                              > from the class library and we need to                               make it as accessible as possible to
                              > less experienced Pharoers (i.e.,                               beginners).
                              >
                              > Exploring the class library through                               the System Browser is very inefficient.
                              > This is further exacerbated by the                               fact that many classes and methods are
                              > simply not well-documented                               (containing a cursory remark which is just                               barely
                              > useful).
                              >
                            I dunno, maybe Iâm weird, but I find                             the System Browser a fantastic way to                             explore the class library. If you find a                             class or method that isnât well documented,                             write a comment and send a change request.                             Stef told me this ages ago. I might add, if                             you find a bug you should write a test that                             exercises the bug and submit it on fogbugz                             (the bug tracking system).
                                                         Â
                                > I realize that creating a live                                 reference page is not easy to do. In                                 fact,
                                > it's a lot of work. But the absence                                 of such a page is a real obstacle to
                                > Pharo acceptance.
                                >
                                >
                                >
                                > horrido wrote
                                >> Thanks. I gave your answer                                 verbatim. I also added the following                                 paragraph:
                                >>
                                >> The problem I find with todayâs                                 developers is that they are rather
                                >> closed-minded. They are rigid                                 and inflexible, and not willing to adapt                                 to
                                >> new and different ways of doing                                 things. In my generation (circa
                                >> 1980â1990),
                                >> people didnât have a problem                                 with trying different technologies.                                 Thatâs
                                >> why
                                >> I had no issue with learning                                 Smalltalk 10 years ago, after I had                                 retired
                                >> from a 20-year-long career in C                                 systems programming and FORTRAN                                 scientific
                                >> programming.
                                >>
                                >>
                                >>
                                >> Sven Van Caekenberghe-2 wrote
                                >>>> On 6 Oct 2017, at                                 14:54, horrido <
                                >>
                                >>> horrido.hobbies@
                                >>
                                >>> > wrote:
                                >>>>
                                >>>> I received this comment                                 from someone who complained:
                                >>>>
                                >>>> *What about the lack of                                 documentation? From time to time Iâve                                 checked
                                >>>> some
                                >>>> SmallTalk                                 implementations like Squeak,                                 GNU-Smalltalk and now Pharo. Of
                                >>>> these, only                                 GNU-SmallTalk appears to have a free,                                 official programming
                                >>>> guide
                                >>>> and core library                                 reference that any serious programmer                                 expects from a
                                >>>> language.
                                >>>>
                                >>>> https://www.gnu.org/so ftware/smalltalk/manual-base/html_node/*
                                >>>>
                                >>>> I pointed to Pharo's                                 documentation but then he came back                                 with:
                                >>>>
                                >>>> *Then show me a link of                                 the free, maintained reference                                 documentation for
                                >>>> the
                                >>>> classes that form âthe                                 core libraryâ, like this one for Python
                                >>>> (https://docs.python.o rg/3/library/index.html)*
                                >>>>
                                >>>> It's true, most                                 Smalltalks do not have a core library                                 reference, not
                                >>>> even
                                >>>> VisualWorks! So what is                                 the proper response to this complaint?
                                >>>
                                >>> The first answer is that                                 Pharo/Smalltalk is unique in that a                                 running
                                >>> system/IDE contains _all_                                 source code, _all_ documentation (class,
                                >>> method,
                                >>> help, tutorial), _all_ unit                                 tests and _all_ runnable examples in a                                 very
                                >>> easy, accessible way. It                                 takes some getting used to, but this is                                 actually
                                >>> better and much more                                 powerful than any alternative.
                                >>>
                                >>> The second answer is that                                 there are lots of books and articles                                 that take
                                >>> the classic/structured                                 book/paper approach. There is
                                >>> http://books.pharo.org,                                 http://themoosebook.org,
                                >>> http://book.seaside.st/ book,                                 http://medium.com/concernin g-pharo                                 and many
                                >>> more.
                                >>>
                                >>>> Thanks.
                                >>>>
                                >>>>
                                >>>>
                                >>>> --
                                >>>> Sent from: http://foru m.world.st/Pharo-Smalltalk-Users-f1310670.html
                                >>>>
                                >>
                                >>
                                >>
                                >>
                                >>
                                >> --
                                >> Sent from: http://forum. world.st/Pharo-Smalltalk-Users-f1310670.html
                                >
                                >
                                >
                                >
                                >
                                > --
                                > Sent from: http://forum.w orld.st/Pharo-Smalltalk-Users-f1310670.html
                                >
                               Â
                                                                                   Â
                                               Â
                                         Â
                                 Â
               Â
                         Â
                 Â
         Â
     Â
Am 13.10.2017 5:50 PM schrieb "Andrew Glynn" <aglynn42@gmail.com>: I can't remember ever using API docs in *any* language, dynamic or not. They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs, Isn't this exactly what an apidoc is for? Additional documentation to describe the methods and arguments purpose. Maybe you have just seen poorly documented libraries? One of my favourite language fails can be reproduced by doing this: Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter. Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value. Maybe you should re-read about javas final keyword. It is not to meant making something immutable , you can just not reassign a new value. Java final != c++ const
I understand why it occurs, both the private and the final keyword affect the reference rather than the object. However, to quote someone else "That the value of a private field can be changed without a public setter implies that encapsulation is weak at best, and shouldn't be counted on to protect key values, even in combination with the final keyword."  Even that comment, though, brings in the notion of a 'value' that's not an object. My point initially was not about the code, but about the Java API doc that also claims attempting to change the value will result in a compile error. Although keywords affect references, the documentation states that it affects 'the value', which is at best ambiguous. There's inevitably a conflation of passing by value and passing by reference in Java by former C/C++ programmers, since it looks like PBV to a C/C++ programmer while always in fact being PBR.  When copying syntax inverting the meaning of the syntax is counterproductive. There are also numerous issues around type erasure (mainly that it works for collections, even simple collections such as vectors, but not for arrays) and the resulting need for Java to allow invalid type casts in certain cases even though they can result in uncaught runtime exceptions. Since the fact that they are invalid is explicit in the API doc, that they are allowed because there's no other way to do it is problematic. Using lambdas or the streaming API within Java EE is another undocumented problem, or set of problems ( it was good fortune for me personally - when some software using the streaming API in an EE container consistently failed and the developer had no idea why, the company gave me the project I implemented it in Pharo, ⺠).  Oracle did at one point have a note on the Java EE 7 download page to the effect that Java EE 7 shouldn't be used with Java SE 8, but that was 'disappeared' when Java SE 7 was no longer supported and Java EE 7 was still the latest version.  Since Java EE 8 is not even on the horizon, while SE 9 is due 'any minute now', I have to wonder if EE is simply dead.  The requests from IBM, SAP and others to take over EE imply they at least suspect the same. I'd rather have no API documentation than documentation of the sort represented by the Java API doc.  Not that I think it's all intentional, though perhaps the primitives and scalars that are in fact objects and collections may have been to muffle wailing from C/C++ programmers that the lack of primitives and scalars would kill performance.  I suspect it's more often a result of unsuccessfully mode-switching, though, between the rules of the language you're implementing and those of the language you're implementing in, but that only makes the case for languages implemented in themselves stronger. Andrew -----Original Message----- Date: Fri, 13 Oct 2017 18:39:59 +0200 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Reply-to: Any question about pharo is welcome <pharo- users@lists.pharo.org> From: Nicolai Hess <nicolaihess@gmail.com> Am 13.10.2017 5:50 PM schrieb "Andrew Glynn" <aglynn42@gmail.com>: I can't remember ever using API docs in any language, dynamic or not. They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs, Isn't this exactly what an apidoc is for? Additional documentation to describe the methods and  arguments purpose. Maybe you have just seen poorly documented libraries? One of my favourite language fails can be reproduced by doing this: Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter. Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value.  Maybe you should re-read about javas final keyword. It is not to meant making something immutable , you can just not reassign a new value. Java final != c++ const
2017-10-13 22:04 GMT+02:00 Andrew Glynn <aglynn42@gmail.com>:
I understand why it occurs, both the private and the final keyword affect the reference rather than the object. However, to quote someone else "That the value of a private field can be changed without a public setter implies that encapsulation is weak at best, and shouldn't be counted on to protect key values, even in combination with the final keyword." Even that comment, though, brings in the notion of a 'value' that's not an object.
and who did you quote ?
My point initially was not about the code, but about the Java API doc that also claims attempting to change the *value* will result in a compile error. Although keywords affect references, the documentation states that it affects 'the value', which is at best ambiguous.
I can not see what is wrong here. You are problably confused by - the value of a *variable* - and the value an *object* represents (its object state) the first can not be changed for a final variables the last can only be preserved, if the object is immutable.
There are also numerous issues around type erasure
... this seems a bit off topic
I'd rather have *no* API documentation than documentation of the sort represented by the Java API doc.
I think a java api doc like documentation would help. For newcomers, that not yet know ( or know how to find) the in-image help. And even so we can easily browse our code with comments and class comments, an API-doc could provide the help from a different view (group by collaboration rather then by class hierarchy or packages), give an "overall" view or provide additional code examples.
Not that I think it's all intentional, though perhaps the primitives and scalars that are in fact objects
How are java primitives "in fact" objects ? They are "in fact" primitives. This is different from smalltakl where some *objects* like Smallinteger are implemented as primitives (or immediates) but still objects on the (smalltalk) code level.
and collections may have been to muffle wailing from C/C++ programmers that the lack of primitives and scalars would kill performance. I suspect it's more often a result of unsuccessfully mode-switching, though, between the rules of the language you're implementing and those of the language you're implementing *in*, but that only makes the case for languages implemented in themselves stronger.
Andrew
-----Original Message-----
Date: Fri, 13 Oct 2017 18:39:59 +0200 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Reply-to: Any question about pharo is welcome <pharo- users@lists.pharo.org> From: Nicolai Hess <nicolaihess@gmail.com>
Am 13.10.2017 5:50 PM schrieb "Andrew Glynn" <aglynn42@gmail.com>: I can't remember ever using API docs in any language, dynamic or not. They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs,
Isn't this exactly what an apidoc is for? Additional documentation to describe the methods and arguments purpose.
Maybe you have just seen poorly documented libraries?
One of my favourite language fails can be reproduced by doing this:
Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter. Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value.
Maybe you should re-read about javas final keyword. It is not to meant making something immutable , you can just not reassign a new value.
Java final != c++ const
Well oh Well, Python is stupid.... Very, very stupid To my suprise live coding in Python its actually easier to what I expected and almost the same, from user perspective to that of pharo.Minus the IDE conveiniece of course. But a pain in the hat to find the proper way to do it. I was reloading modules, was thining of implementing become to python , which basically means replacing references to old instance object with references to new objects , then I thought that it would be more efficient to just reference the new methods to the instances and after a TON of testing I realized this is dead simple and for some reason python hides it very well. All the above were completely unecessary. Insance methods are referencing functions in the class object. Apparently functions in a class are taken as class methods and functions with self as first argument are considered instance methods. Which means I just copy paste the code of the method to the debugger, and assign it back to the existing live class and all instances are updated automagically. No need for become, no need to update instances manually no need to even reload the module. Similarly you can delete methods and add methods on the fly always live. Renaming a method is basically deleting and assigning . Renaming the class is the same. As is for class and instance variables. So anything can change on the fly. Names are there for your pleasure, in the end all that matters are the references.Its objects all the way down. The equivelant of a python instance method defiition and live updae , the python way, on Pharo would be MyClass instanceMethodName:= myMessage firstArg:self arg2: foo1 arg3: foo2.... |locals| code stuff and you python "call it" or message it MyClass insanceMethodName arg2:foo1 arg3: foo2 , no need to use self when calling it. Self is automatically passed because from the definition python knows this is suppose to be an insance method. or you could put a block after the assigment , because the name of the message is assigned by the assignment anyway, for class method you ommit the first argument of self. Calling is the same. This replaces a method or adds it if does not exist. All instances of that live class are immediately poitining to the new method. So the class is basically a collection of references. So all I have to do now is to wrap the copy paste and assignment in a single shortcut or button and I am ready to fly to live coding land. Days wasted chasing my tail but at least I learned a lot about python objects which are basically dictionaries objects (for variables) plus function objects (for class and instance methods) wrap inside an object, or rather referenced, called a class. Storing the live state , similar to fuel, is supported by the pickle library. Why on earth python made it so hard something so simple to understand ? no idea .I dont even need to make a live coding enviroment library as I assumed, its already there, hiding under the cover too scared to come out. Now I know why none or almost none does live coding in Python.
Just to lead this back to the original question. What you say is undoubtedly true. It is not, however, necessarily something that a beginner will understand or be able to share in. So, to a certain degree this may be a trap caused by having the excellent environment. The newbie who is not used to it and tries to get somehow organised before diving in will be scared off. (I do realise that this is a matter of the time being available, but the fact remains that people coming from the outside may be held back this apparent lack of information, even though it is only a lack of information external to the image. It's the difference between the converted who are already going with the flow and those who want to dip a toe into the water.) On 12/10/17 01:09, Offray Vladimir Luna Cárdenas wrote:
The more I use Pharo, the less I use web documentation. For me seems pretty suboptimal compared to live environment with code browser and GT-Spotter. Regarding the comment on Medium, it also took me little to find #raisedTo:, so the millage can vary. What I was missing was proper books for particular domains, but Pharo books are covering that. I don't know if a Q&A site could improve search-ability for newbies (certainly you can find little stuff in Stack Overflow).
My bet is about trying to create more "end user" tools (Grafoscopio is kind of this), besides tools for developers. There is a broad community of people who can be active contributors and members of the community, welcome Pharo and live coding a lot and don't complain that much about stuff that is not already pretty similar to what they already know (being that only English MOOC or online static html docs).
Cheers,
Offray
On 11/10/17 07:34, Dimitris Chloupis wrote:
for me it is a yes and no situation, yes its very coold to have your entire system in your fingertips but Pharo has serious issues with code organisation and I find the lack of namespaces quite inconvenient. You have to be careful how to name your classes which does not sound to me very OOP friendly.
Also the IDE does not handle spaggetification very well, sure you can find implementors , senders etc but if the execution chain is complex , welcome to spaggeti hell. But that is a problem with most other IDEs if not all as well. Problem is in this case that we have the very good rule of using sort methods which multiplies this problem and makes navigation even harder. Code becomes much easier to read per method and messages but much harder to understand in a bird eye view.
Some of that pain has been aleviated with the introduction of GTSpotter which I have praised quite a lot and I will continue to do so. But yeah there are more needed to be done in the department to make Pharo code navigation a more comfortable task.
On Wed, Oct 11, 2017 at 2:57 PM Vitor Medina Cruz <vitormcruz@gmail.com <mailto:vitormcruz@gmail.com>> wrote:
I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
I will reference of response of mine to a similar opinion made by Richard: https://medium.com/@vitormcruz/i-disagree-it-is-much-harder-to-find-anything...
My 2 cents.
On Tue, Oct 10, 2017 at 11:59 PM, john pfersich <jpfersich@gmail.com <mailto:jpfersich@gmail.com>> wrote:
> On Oct 10, 2017, at 09:58, horrido <horrido.hobbies@gmail.com <mailto:horrido.hobbies@gmail.com>> wrote: > > Interestingly, I'm getting a fair amount of pushback on this. Personally, I > think it would be very helpful to have a live (updatable, so as to keep it > current) reference page for the class library, something that developers can > easily look up what they need. After all, most of the power of Pharo comes > from the class library and we need to make it as accessible as possible to > less experienced Pharoers (i.e., beginners). > > Exploring the class library through the System Browser is very inefficient. > This is further exacerbated by the fact that many classes and methods are > simply not well-documented (containing a cursory remark which is just barely > useful). > I dunno, maybe Iâm weird, but I find the System Browser a fantastic way to explore the class library. If you find a class or method that isnât well documented, write a comment and send a change request. Stef told me this ages ago. I might add, if you find a bug you should write a test that exercises the bug and submit it on fogbugz (the bug tracking system).
> I realize that creating a live reference page is not easy to do. In fact, > it's a lot of work. But the absence of such a page is a real obstacle to > Pharo acceptance. > > > > horrido wrote >> Thanks. I gave your answer verbatim. I also added the following paragraph: >> >> The problem I find with todayâs developers is that they are rather >> closed-minded. They are rigid and inflexible, and not willing to adapt to >> new and different ways of doing things. In my generation (circa >> 1980â1990), >> people didnât have a problem with trying different technologies. Thatâs >> why >> I had no issue with learning Smalltalk 10 years ago, after I had retired >> from a 20-year-long career in C systems programming and FORTRAN scientific >> programming. >> >> >> >> Sven Van Caekenberghe-2 wrote >>>> On 6 Oct 2017, at 14:54, horrido < >> >>> horrido.hobbies@ >> >>> > wrote: >>>> >>>> I received this comment from someone who complained: >>>> >>>> *What about the lack of documentation? From time to time Iâve checked >>>> some >>>> SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of >>>> these, only GNU-SmallTalk appears to have a free, official programming >>>> guide >>>> and core library reference that any serious programmer expects from a >>>> language. >>>> >>>> https://www.gnu.org/software/smalltalk/manual-base/html_node/* >>>> >>>> I pointed to Pharo's documentation but then he came back with: >>>> >>>> *Then show me a link of the free, maintained reference documentation for >>>> the >>>> classes that form âthe core libraryâ, like this one for Python >>>> (https://docs.python.org/3/library/index.html)* <https://docs.python.org/3/library/index.html%29*> >>>> >>>> It's true, most Smalltalks do not have a core library reference, not >>>> even >>>> VisualWorks! So what is the proper response to this complaint? >>> >>> The first answer is that Pharo/Smalltalk is unique in that a running >>> system/IDE contains _all_ source code, _all_ documentation (class, >>> method, >>> help, tutorial), _all_ unit tests and _all_ runnable examples in a very >>> easy, accessible way. It takes some getting used to, but this is actually >>> better and much more powerful than any alternative. >>> >>> The second answer is that there are lots of books and articles that take >>> the classic/structured book/paper approach. There is >>> http://books.pharo.org, http://themoosebook.org, >>> http://book.seaside.st/book, http://medium.com/concerning-pharo and many >>> more. >>> >>>> Thanks. >>>> >>>> >>>> >>>> -- >>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >>>> >> >> >> >> >> >> -- >> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html > > > > > > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html >
On 12-10-17 08:30, Markus Stumptner wrote:
Just to lead this back to the original question. What you say is undoubtedly true. It is not, however, necessarily something that a beginner will understand or be able to share in.
That is a very important point. It also explains a lot of why we are missing certain things that developers coming from other environments take for granted: they simply provide less value to experienced smalltalkers. And that is indeed a barrier to entry. I remember sharply my first looking at squeak, and just not understanding how I could create a new class or method in a browser. Another was that I have been programming in seaside for a year without using senders and implementers. Pair programming for an hour with Philippe Marschall showed me so much invisible/hidden functionality. Other (mainstream) environments don't provide the immediate feedback of navigating, inspecting and manipulating the whole environment, and therefore newcomers have no appropriate expectations (internal model), and are clueless on what they are able to do in Pharo. Combined with the lack of systematic visual clues and the high density of the class library that makes it not easy to learn. Stephan
The one things I trully miss, even know that I am "experieced" Pharo coder, depending on your standards, is python namespaces I dont care about the dot syntax but containers of containers at language level that will make me avoid giving weird names to my Pharo classes to avoid potential collisions is a must have for me. It would also make the System Browser experience much smoother not only for beginners but also experts in Pharo. Also again under the threat of being thrown tomoatoes (probably justified) I would not mind a more modular approach to image format, for example having mutlipe files instead one monolithic. Not as a mandatory thing just something optional, the ability to break an image to pieces , send those pieces around so people do not have to close their image to open yours. Fuel covers this case nicely but again it could become a bit more "out of the box" and more automatic. . On Thu, Oct 12, 2017 at 11:22 AM stephan <stephan@stack.nl> wrote:
On 12-10-17 08:30, Markus Stumptner wrote:
Just to lead this back to the original question. What you say is undoubtedly true. It is not, however, necessarily something that a beginner will understand or be able to share in.
That is a very important point. It also explains a lot of why we are missing certain things that developers coming from other environments take for granted: they simply provide less value to experienced smalltalkers. And that is indeed a barrier to entry.
I remember sharply my first looking at squeak, and just not understanding how I could create a new class or method in a browser. Another was that I have been programming in seaside for a year without using senders and implementers. Pair programming for an hour with Philippe Marschall showed me so much invisible/hidden functionality.
Other (mainstream) environments don't provide the immediate feedback of navigating, inspecting and manipulating the whole environment, and therefore newcomers have no appropriate expectations (internal model), and are clueless on what they are able to do in Pharo. Combined with the lack of systematic visual clues and the high density of the class library that makes it not easy to learn.
Stephan
I'll second that. Having separate namespaces would be really good. VisualWorks has them. Why not Pharo? kilon.alios wrote
The one things I trully miss, even know that I am "experieced" Pharo coder, depending on your standards, is python namespaces
I dont care about the dot syntax but containers of containers at language level that will make me avoid giving weird names to my Pharo classes to avoid potential collisions is a must have for me. It would also make the System Browser experience much smoother not only for beginners but also experts in Pharo.
Also again under the threat of being thrown tomoatoes (probably justified) I would not mind a more modular approach to image format, for example having mutlipe files instead one monolithic. Not as a mandatory thing just something optional, the ability to break an image to pieces , send those pieces around so people do not have to close their image to open yours. Fuel covers this case nicely but again it could become a bit more "out of the box" and more automatic. .
On Thu, Oct 12, 2017 at 11:22 AM stephan <
stephan@
> wrote:
On 12-10-17 08:30, Markus Stumptner wrote:
Just to lead this back to the original question. What you say is undoubtedly true. It is not, however, necessarily something that a beginner will understand or be able to share in.
That is a very important point. It also explains a lot of why we are missing certain things that developers coming from other environments take for granted: they simply provide less value to experienced smalltalkers. And that is indeed a barrier to entry.
I remember sharply my first looking at squeak, and just not understanding how I could create a new class or method in a browser. Another was that I have been programming in seaside for a year without using senders and implementers. Pair programming for an hour with Philippe Marschall showed me so much invisible/hidden functionality.
Other (mainstream) environments don't provide the immediate feedback of navigating, inspecting and manipulating the whole environment, and therefore newcomers have no appropriate expectations (internal model), and are clueless on what they are able to do in Pharo. Combined with the lack of systematic visual clues and the high density of the class library that makes it not easy to learn.
Stephan
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
horrido wrote
Having separate namespaces would be really good. VisualWorks has them. Why not Pharo?
I can't remember ever hearing disagreement on this subject. It seems the only questions have been: 1) how to do them *right*, and 2) where they fall on the endless prioritized todo list ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
For me there is also question 3) How closely they are related to the bootstrap project namespaces afterall is all about modularity which is the goal of bootstrap as well . no ? So maybe we should not view them as a separate project and more as boostrap v2 , after v1 is released of course Proably Pharo 9 or 10 should be a good period to focus on them. Bootstrap will have matured and stabilize and then we can go the extra step of namespaces. Also in Delphi , besides namespaces which is purely a language construct we had "Components" , think of them as namespaces but meant to work convenient in a IDE enviroment. I really like it as an idea and Delphi based its whole library on components. Again pure objects of course, with some metadata for the IDE to use, like category, dependencies etc So if namespaces is the bridge between bootstrap and the language , Components can be the bridge between bootsrap and the IDE , because their role was to assembly libraries together via drag and drop and make code like legos. So it can be Components containing namespaces, namespaces containing objects. Thats one idea that worked well enough in practice to make Borland very profitable. It applied it both in Delphin and C++ Builder products. The library was called VCL (Visual Component Library) and still exists today after decades of use. Metacello also can come to this game on the basis that nowdays everything is online , Components could abstract git and other version controls and offer a convenient drag and drop from the github directly to the comforts of you image with no extra tool needed like Iceberg. You can then use Iceberg to commit back to the repo. It can really come together quite nicely if Components function as in Delphi, a common protocol for object to communicate for IDE convenience, without braking the existing legacy code in Pharo. Well thats just an idea, based on my personal experience. On Thu, Oct 12, 2017 at 3:53 PM Sean P. DeNigris <sean@clipperadams.com> wrote:
horrido wrote
Having separate namespaces would be really good. VisualWorks has them. Why not Pharo?
I can't remember ever hearing disagreement on this subject. It seems the only questions have been: 1) how to do them *right*, and 2) where they fall on the endless prioritized todo list
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Plus, namespaces are difficult to implement. It could tear your class library to pieces Brad Selfridge 913-269-2385
On Oct 12, 2017, at 9:10 AM, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
For me there is also question 3) How closely they are related to the bootstrap project
namespaces afterall is all about modularity which is the goal of bootstrap as well . no ? So maybe we should not view them as a separate project and more as boostrap v2 , after v1 is released of course Proably Pharo 9 or 10 should be a good period to focus on them. Bootstrap will have matured and stabilize and then we can go the extra step of namespaces.
Also in Delphi , besides namespaces which is purely a language construct we had "Components" , think of them as namespaces but meant to work convenient in a IDE enviroment. I really like it as an idea and Delphi based its whole library on components. Again pure objects of course, with some metadata for the IDE to use, like category, dependencies etc
So if namespaces is the bridge between bootstrap and the language , Components can be the bridge between bootsrap and the IDE , because their role was to assembly libraries together via drag and drop and make code like legos. So it can be Components containing namespaces, namespaces containing objects.
Thats one idea that worked well enough in practice to make Borland very profitable. It applied it both in Delphin and C++ Builder products. The library was called VCL (Visual Component Library) and still exists today after decades of use.
Metacello also can come to this game on the basis that nowdays everything is online , Components could abstract git and other version controls and offer a convenient drag and drop from the github directly to the comforts of you image with no extra tool needed like Iceberg.
You can then use Iceberg to commit back to the repo.
It can really come together quite nicely if Components function as in Delphi, a common protocol for object to communicate for IDE convenience, without braking the existing legacy code in Pharo.
Well thats just an idea, based on my personal experience.
On Thu, Oct 12, 2017 at 3:53 PM Sean P. DeNigris <sean@clipperadams.com> wrote: horrido wrote
Having separate namespaces would be really good. VisualWorks has them. Why not Pharo?
I can't remember ever hearing disagreement on this subject. It seems the only questions have been: 1) how to do them *right*, and 2) where they fall on the endless prioritized todo list
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Wed, Oct 11, 2017 at 10:39 PM, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
The more I use Pharo, the less I use web documentation.
That is a familiar path, but still an obstacle for people to get over in trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again." For example, Stef mentioned that the Pharo web docs were dropped because were't used much. But perhaps their value is not for regular use by the community, but more for outsiders evaluating Pharo, or newcomers transitioning from their old workflow to a Pharo one. In that case their value eliminating one barrier of entry is much greater than measured from the number of page hits. btw, What I like about Richards's articles is that... most of our community's articles are for people already using Pharo, even if only a newcomer of a few days working through an introductory tutorial. Richard's articles target outsiders and one of the side benefits for *me* is that it pulls in critical outside perspectives to remind me of the barriers-of-entry stopping people using Pharo. Take for instance the common angst people have against working in an Image in Smalltalk. There are some legitimate concerns with ending up in a state you can't recreate, which we are addressing this with the bootstrapping projects. But I think we might publicize this better to outsiders. For example... Mr Smith knows nothing about Smalltalk and takes an interest in Pharo. Smith discusses with colleague Jones who presents a poor opinion of the Smalltalk Image approach. So Smith never tries Pharo! Alternatively, if Smith has already read in an FAQ about this common argument and how we address it by our bootstrap process, he can inform Jones', and maybe now we've got two curious newcomers. cheers -ben
That is a familiar path, but still an obstacle for people to get over in trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again."
****WARNING LONG POST AHEAD**** There numerous reason why this kind of thinking is fundamental flawed, if not completely wrong 1) How you get people to run in this race ? 2) What makes you think that people participating in the race doing to get first or even finish ? 3) How you are certain that those barriers are not the very reason people participate ? The fundamental problem is that if you base your assumption that people are motivated on avoidance of pain, this is a very popular argument by the way, you going to be severely disapointed. From the very first fact that there is a 90% chance that right now that you use almost 100% of your time one of the worst software to be ever created. Microsoft Windows. Of course you can throw claims to me that peope use Windows because that is what's popular and widely available, but then so is MacOS is by far the easiest to use OS out there. When you pit Windows vs Macos a such taboo subject , fuel to so many flame wars, there is one thing that both sides agree on and that is that MacOS is far easier to use , perdiod. The rest of the debate which OS is the best is up in the air and frankly not the point of my argument. The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting. Of course Windows is not the only example (C/C++ , Java , Web dev, computer games and the list is just endless)of the machocistic nature of human beings. I dont need to look far, my own story about how I started coding is more than enough . I am going to ramble about my initiation to the realm of coding , so feel free to ignore the rest of my post but what the hell here we go.
From an early age , no idea when, I was exposed to the idea of the computer. Never used one before or saw on in person other than what I saw in the TV I asked my father to get me one and he agreed on the ground that I wont use it just to play games but to learn how to code. My father had no idea what coding is, had no idea what technology is, to this day he hates technology and he refuses to learn even how to close a window. None , friend , relative or random stranger I knew used a computer.
So I got this weird thing called computer and turned it on, of course motivated to play games like any other kind in my age, I was 9 years old at the time, december 1988. But I had a sense of honor even from that age so I had to keep my promise. So I did and I was fascinated by it, to the degree that I was coding as much I was playing games. Problem is that it was mainly masochistic venture. I had one book and one book alone, none that had any clue how to show how to turn this thing on and of course no internet, no schools, no magazines I could afford to buy or even know where to buy them . So in 3 years, I made nothing special, only tiny fragments of code and I was still struggling with basic concept like looping. Yes, looping. But I already was doing things that a greek kid did not suppose to do and I did not even fit the geek stereotype at the time (not that the term existed at the time, I still does not exist in my language), I had tons of friends, I was anything but shy , I was the craziest nosiest kid suffering from the annoying syndrom of hyperactivity and with very lmited attention span. I was the absolute worst candidate to learn how to code, yet I did . Sort of. Then my father decided to send me, after me begging on my knees, on a prrivate school, that just opened near our neighborhood for learning. At the time time I only still had the same computer, Amstrad CPC 6128 and knew the very basics of Locomotive Basic which was used also by the computer as a bash like language for its OS. I went 3 years, the first year I did ok, an average student even though I had by far the most experience than other kids we learned GWBASIC. The second year I did terrible, we learned DBASE and the third we learned CLIPPER and blow any other student completely away, I was the only to graduate with 99.8% and our teacher was super strict on the matter of grades. But I wanted more. So I went and learned C++ and assembly because why not and when I told my teacher that, he was looking me with his eye wide open, took me quite a lenghy discussion to convince him that this was true. The reason why the first year I did average was that it was too easy. I was already familiar with Basic , sure I was struggling with basic concepts when I started but under the wing of the teacher (he was a great teacher, professional coder and highly skilled at helping you understand even the most difficult concepts) and full access to multiple books in few months became a walk in the park. The second year was a disaster, partly because our teacher decided to hire a relative of his to teach us DBASE and the guy was a moron wasting his time with telling jokes. The truth is that I did not like and still dont like database coding. Clipper I fall in love with it at the time because still a database orientated language but our teacher tought us, his relative got sacked as soon as he learned that he sucked, that happened one year after because none of the kids had the courage to go tell him and it was probably a parent the told him and did so well I was even offered to make a database for a considerable amount of money. Said no. Again not interested. My story is nothing special, I heard it in slightly diffirent versions by countless others in a similar situation however my point is not to brag, because lets face it I was just merely learning languages and not doing any serious coding , my point is that the drive behind it was the pain. Was the obstacles. Was the challange. Pharo for me is also the same story. At the time I was coding in Python, super easy, got the job done, had no intention learning another language because why bother when they all look the same and they would have been much less powerful than Python. I was super happy with Python and still is one of my favorite language as you all know. Then I saw people on forums rambling about this weird language called Lisp , I was interested, google a tutorial , saw the parentheses , said "hell no!" and carried on coding in python. Then even more people claiming that it was so amazing, that it can cure cancer and make you super sexy. I always wanted to be super sexy so I said, ok lets give this a serious try. So I bought a book called "Land of Lisp" very fun to read, terrible teaching material, messy and all over the place. Community was terrible too (Common Lisp), at least some people, rude, snobs, evangelistic and plain stupid. A minority of people but still enough to ruin your day.Then I was introduced to emacs, another super painful experience, thoroughly enjoyed and one day I mentioned how cool it would be if one could combine the simplicity of Lisp with emacs but via a GUI IDE and without elisp which was hog slow. People immediately recommended Squeak, I though they were messing with me because none would pick such a ridiculous name for a language. Looked to me like a toy language for kids and then it hit my face like a train. Pain, pain and more pain. But it was well worth, I was completely blown away from the elegance of Smalltalk. The learning curve of Smalltalk and Lisp are plain insane. Made learningh DOS Assembly a walk in the park in comparison. But frankly thats half of the fun. Many obstacles, many challanges. And there lies my point that an obstacle is a good thing when it becomes an interesting challange. You have to have at least a degree of masochism to learn how to code in any language. Of course the question is what makes an interesting challange and welcome to the abyss that is called "human brain". None knows and we are not anywhere close in finding out. What we know is that documentation is super important , whether you are a masochist or not, you need it to progress. Problems is that documentation is hard to create and maintain, again masochism required. So we should not just worry about making it easier for people to reach documentation we should make it easier for people to maintain it. Because even masochism has its limits. Those limits are as far it is a pleasureable pain. So congratulations to anyone reading this long post , you already proven my point. Thus, let embrace the pain of Pharo and the pain of smalltalk and instead of trying to make it easy, boring and usual. Lets turn it to a challange, lets turn it to a painful yet pleasureable experience I think to that extend we in a very good path, I think Pharo is definetly a fun experience to use and learn. A huge plus also for Pharo is the community and how welcoming it is, we take for granted but my experience with Python was not the best either. I joined the IRC channel, other than having to endure the stupidity of "say lol 3 times and you are banned" , too many wars over languages and how superior Python is than anything else. Guido is god and blah blah blah... No thanks. People here are open minded, still "religious" about Smaltalk but they actually want to help , not to teach, actually help. I think we are a bit too obsessed on how to make Pharo popular, Smalltalkers suffer from this insecurity of the "failure" of the "best language of the world" not only to become popular but also to convince coders that "is not a a relic of the past". But we are fine, documentation is doing grear, Pharo is improving rapidly , the community is welcoming as ever. All we need is embrace our successes and our failures, reject the hype, consider the crticism and accept it or reject it and generally carry on doing what we all love. Improving Pharo. ;)
I agree with you that difficulty is half the fun, assuming you're a developer - developers solve problems, so if there weren't any we'd be a bit out of luck.  For myself I've somehow never, in a 26+ year career, worked on maintaining code. I've only ever written new code. in fact  I usually wind up with the things nobody, me included, has a clue of how to do, tending to make them even more difficult.  On a project last year the 'technical unknowns' could be boiled down from the 5 page document I was given to one word, 'everything', including what the customer (the government, unsurprisingly), actually meant by any of the terms used in the requirements, since even common networking terms like VPN mean something different to government employees, apparently, than to anyone else in the world. It's rewriting the same or incredibly similar rote code because we start from the same basic point on every project that gets on my nerves; writing new and often difficult code, or learning new and often difficult languages, even learning unfamiliar domain specific terminology, are the reasons I'm still a developer.  Difficulty though ought to come with a bit of power.  JavaScript can be extremely difficult, but when it's difficult and the result is that a page widget appears in the right place, it doesn't feel like much of an accomplishment.  Electron apps can be difficult, though the difficulty isn't in writing them, but in building them and getting them to actually run, especially if you're supporting Mac as well as Windows. Unless I'm writing a VM (which I haven't done very much of at all) the difficulties with CLANG, SLANG, along with about a dozen other tools, just to build a simple application, doesn't feel like much of an accomplishment either. At least not to me, I guess it does to some people though.  I have noticed a squeaky wheel effect: technologies that 'just work' get quickly forgotten, because there aren't 3 million people on slashdot or wherever asking questions about how to get them to work. JINI (now Apache River) is a good example (especially in Java, where not much 'just works'), when the new cars that automagically connect your cell phone and tablet to their own 4G were designed, they had to write JINI clients for C and whatever other languages they use, because that's what does all the automagic.  But not many people even remember it exists. One thing I do disagree with you on is that people prefer Windows. It seems to me that Windows is more popular due to price, and maybe due to the relative ease of controlling access centrally, more than anything, and even given the lower prices on (at least as far as obvious specs go) equivalent machines, I can't think of anyone I know off the top of my head who would use Windows if they could afford a Mac, and everyone I know who can, does use one.  I had to write a Mac app for Charles Schwab that would run on any home Mac (down to G4 based Macs with a half gig of RAM that could run at best OS X 10.5) with equivalent features to a Windows app that required 16GB RAM to load and 24GB to run decently, because the majority of the professional stock traders who use Windows all day at work have Macs at home (of course they can largely afford them).  If I'm not developing or testing I admittedly most often use a Macbook myself.  I do use Windows on my tablet, since it can run a full version of Win 10 x64 (not the useless RT version) and therefore nearly any Windows program.  I won the tablet at HP at the xmas party though, and with a quad-core Atom CPU and 8GB RAM it's not really an average tablet. Even then, I only use it if stuck somewhere for a while with nothing to do. So I have to admit, if I'm not developing I don't enjoy difficulty much.  Nor do most of the end users I know. I do know a few masochists who prefer Linux to Mac, most of whom don't run a UI.  The few who do use MATE, which while being both ugly and lacking any notable capabilities, never mind applications, doesn't use much memory.  Exactly why a third of a GB of RAM is relevant today I'm not sure, when both Atom and Sublime Text use more memory than Ubuntu, Kubuntu or OS X for that matter, but they seem to feel it's radically important.  Sublime Text makes me think of Hegel's definition of The Sublime: "the night where all cows are black" âº. I'll use Linux if my Thinkpad is handier. It runs OEL with KDE, so it's not difficult (unless you want anything by Adobe, lol), and it's pretty quick. Though ironically the Macbook is still quicker, though it has half the RAM and an i7 that's 2 generations older.  I visited a friend at the IBM lab I used to work at a few months ago, and since they know me pretty well at security, I had no problem getting a visitor badge.  Walking through the area where they write among other things, DB2 UDB, InfoSphere, WebSphere and associated products, and all of ibm.com I glanced in the cubicles as I went to my friend's desk, and the majority of the developers were using Macbooks. The only people with Thinkpads were managers.  So maybe developers like difficulty, but not quite as much with things that are supposed to be already developed.  It could just be easier to give them Macbooks than to try to get security to let them have local admin rights on Windows ... Best quote I've seen on Windows, particularly given the source: "With luck, this will start Windows, and a dialogue box will appear and tell you the default drive onto which IADS will be installed.  If Windows doesn't start up, you could always try launching Windows manually." - IADS Manual, U.S. Army.  Since IADS requires Windows 7 at minimum, exactly how you 'launch it manually' is beyond me, but then again I'm not in the military, and they seem to be able to write software in ADA (software that runs, even).  Although the Army writes IADS, it's used by virtually every government department, not only in the U.S. but in Canada as well - it's AFAIK the only open source, free, true WYSIWYG SGML editor, and given FrameMaker is $999 a license, free becomes relevant when you have a lot of employees. It has to have the worst name of any software in the world, excepting maybe Eclipse VIATRA. cheersAndrew Glynn   -----Original Message----- Date: Fri, 13 Oct 2017 07:00:46 +0000Subject: Re: [Pharo-users] Behold Pharo: The Modern SmalltalkTo: Any question about pharo is welcome <pha ro-users@lists.pharo.org>Reply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org>From: Dimitris Chloupis <kilon.alios@gmail .com>
That is a familiar path, but still an obstacle for people to get over in trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again."
 ****WARNING LONG POST AHEAD**** There numerous reason why this kind of thinking is fundamental flawed, if not completely wrong 1) How you get people to run in this race ? 2) What makes you think that people participating in the race doing to get first or even finish ? 3) How you are certain that those barriers are not the very reason people participate ? The fundamental problem is that if you base your assumption that people are motivated on avoidance of pain, this is a very popular argument by the way, you going to be severely disapointed. From the very first fact that there is a 90% chance that right now that you use almost 100% of your time one of the worst software to be ever created. Microsoft Windows. Of course you can throw claims to me that peope use Windows because that is what's popular and widely available, but then so is MacOS is by far the easiest to use OS out there. When you pit Windows vs Macos a such taboo subject , fuel to so many flame wars, there is one thing that both sides agree on and that is that MacOS is far easier to use , perdiod. The rest of the debate which OS is the best is up in the air and frankly not the point of my argument. The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting. Of course Windows is not the only example  (C/C++ , Java , Web dev, computer games and the list is just endless)of the machocistic nature of human beings. I dont need to look far, my own story about how I started coding is more than enough . I am going to ramble about my initiation to the realm of coding , so feel free to ignore the rest of my post but what the hell here we go.Â
From an early age , no idea when, I was exposed to the idea of the computer. Never used one before or saw on in person other than what I saw in the TV I asked my father to get me one and he agreed on the ground that I wont use it just to play games but to learn how to code. My father had no idea what coding is, had no idea what technology is, to this day he hates technology and he refuses to learn even how to close a window. None , friend , relative or random stranger I knew used a computer.
So I got this weird thing called computer and turned it on, of course motivated to play games like any other kind in my age, I was 9 years old at the time, december 1988. But I had a sense of honor even from that age so I had to keep my promise. So I did and I was fascinated by it, to the degree that I was coding as much I was playing games. Problem is that it was mainly masochistic venture. I had one book and one book alone, none that had any clue how to show how to turn this thing on and of course no internet, no schools, no magazines I could afford to buy or even know where to buy them . So in 3 years, I made nothing special, only tiny fragments of code and I was still struggling with basic concept like looping. Yes, looping.  But I already was doing things that a greek kid did not suppose to do and I did not even fit the geek stereotype at the time (not that the term existed at the time, I still does not exist in my language), I had tons of friends, I was anything but shy , I was the craziest nosiest kid suffering from the annoying syndrom of hyperactivity and with very lmited attention span. I was the absolute worst candidate to learn how to code, yet I did . Sort of. Then my father decided to send me, after me begging on my knees, on a prrivate school, that just opened near our neighborhood for learning. At the time time I only still had the same computer, Amstrad CPC 6128 and knew the very basics of Locomotive Basic which was used also by the computer as a bash like language for its OS. I went 3 years, the first year I did ok, an average student even though I had by far the most experience than other kids we learned GWBASIC. The second year I did terrible, we learned DBASE and the third we learned CLIPPER and blow any other student completely away, I was the only to graduate with 99.8% and our teacher was super strict on the matter of grades. But I wanted more. So I went and learned C++ and assembly because why not and when I told my teacher that, he was looking me with his eye wide open, took me quite a lenghy discussion to convince him that this was true. The reason why the first year I did average was that it was too easy. I was already familiar with Basic , sure I was struggling with basic concepts when I started but  under the wing of the teacher (he was a great teacher, professional coder and highly skilled at helping you understand even the most difficult concepts) and full access to multiple books in few months became a walk in the park. The second year was a disaster, partly because our teacher decided to hire a relative of his to teach us DBASE and the guy was a moron wasting his time with telling jokes. The truth is that I did not like and still dont like database coding. Clipper I fall in love with it at the time because still a database orientated language but our teacher tought us, his relative got sacked as soon as he learned that he sucked, that happened one year after because none of the kids had the courage to go tell him and it was probably a parent the told him and did so well I was even offered to make a database for a considerable amount of money. Said no. Again not interested. My story is nothing special, I heard it in slightly diffirent versions by countless others in a similar situation however my point is not to brag, because lets face it I was just merely learning languages and not doing any serious coding , my point is that the drive behind it was the pain. Was the obstacles. Was the challange. Pharo for me is also the same story. At the time I was coding in Python, super easy, got the job done, had no intention learning another language because why bother when they all look the same and they would have been much less powerful than Python. I was super happy with Python and still is one of my favorite language as you all know. Then I saw people on forums rambling about this weird language called Lisp , I was interested, google a tutorial , saw the parentheses , said "hell no!" and carried on coding in python. Then even more people claiming that it was so amazing, that it can cure cancer and make you super sexy. I always wanted to be super sexy so I said, ok lets give this a serious try. So I bought a book called "Land of Lisp" very fun to read, terrible teaching material, messy and all over the place. Community was terrible too (Common Lisp), at least some people, rude, snobs, evangelistic and plain stupid. A minority of people but still enough to ruin your day.Then I was introduced to emacs, another super painful experience, thoroughly enjoyed and one day I mentioned how cool it would be if one could combine the simplicity of Lisp with emacs but via a GUI IDE and without elisp which was hog slow. People immediately recommended Squeak, I though they were messing with me because none would pick such a ridiculous name for a language. Looked to me like a toy language for kids and then it hit my face like a train. Pain, pain and more pain. But it was well worth, I was completely blown away from the elegance of Smalltalk. The learning curve of Smalltalk and Lisp are plain insane. Made learningh DOS Assembly a walk in the park in comparison. But frankly thats half of the fun. Many obstacles, many challanges. And there lies my point that an obstacle is a good thing when it becomes an interesting challange. You have to have at least a degree of masochism to learn how to code in any language. Of course the question is what makes an interesting challange and welcome to the abyss that is called "human brain". None knows and we are not anywhere close in finding out. What we know is that documentation is super important , whether you are a masochist or not, you need it to progress. Problems is that documentation is hard to create and maintain, again masochism required. So we should not just worry about making it easier for people to reach documentation we should make it easier for people to maintain it. Because even masochism has its limits. Those limits are as far it is a pleasureable pain. So congratulations to anyone reading this long post , you already proven my point. Thus, let embrace the pain of Pharo and the pain of smalltalk and instead of trying to make it easy, boring and usual. Lets turn it to a challange, lets turn it to a painful yet pleasureable experience I think to that extend we in a very good path, I think Pharo is definetly a fun experience to use and learn. A huge plus also for Pharo is the community and how welcoming it is, we take for granted but my experience with Python was not the best either. I joined the IRC channel, other than having to endure the stupidity of "say lol 3 times and you are banned" , too many wars over languages and how superior Python is than anything else. Guido is god and blah blah blah... No thanks. People here are open minded, still "religious" about Smaltalk but they actually want to help , not to teach, actually help. I think we are a bit too obsessed on how to make Pharo popular, Smalltalkers suffer from this insecurity of the "failure" of the "best language of the world" not only to become popular but also to convince coders that "is not a a relic of the past".  But we are fine, documentation is doing grear, Pharo is improving rapidly , the community is welcoming as ever. All we need is embrace our successes and our failures, reject the hype, consider the crticism and accept it or reject it and generally carry on doing what we all love. Improving Pharo. ;)
I completely agree with Ben. As for Dimitris, I have some points: There numerous reason why this kind of thinking is fundamental flawed, if
not completely wrong
1) How you get people to run in this race ?
2) What makes you think that people participating in the race doing to get first or even finish ?
3) How you are certain that those barriers are not the very reason people participate ?
The fundamental problem is that if you base your assumption that people are motivated on avoidance of pain, this is a very popular argument by the way, you going to be severely disapointed. From the very first fact that there is a 90% chance that right now that you use almost 100% of your time one of the worst software to be ever created.
Microsoft Windows.
Of course you can throw claims to me that peope use Windows because that is whatâs popular and widely available, but then so is MacOS is by far the easiest to use OS out there. When you pit Windows vs Macos a such taboo subject , fuel to so many flame wars, there is one thing that both sides agree on and that is that MacOS is far easier to use , perdiod. The rest of the debate which OS is the best is up in the air and frankly not the point of my argument.
I think you are missing one point here: people get used to Windows, using windows with all itâs quirks and nonsenses became strong reinforced habits for most people, and that is something REALLY hard change. The fact is , we love pain, we love barriers, we love doors that slam into
our face. We love challange. But only if we find it interesting.
See, I think thatâs not the point, the point is that people are very resistant to any change in their habits, so much thatâs usually better to short-circuit into their habits to make a change instead of trying to force a hard change on them. That is why I think Ben point of view is not flawed at all, on the contrary, removing barriers is a way to make Pharo seems more like what people are habituated, short-circuiting peoples habits into Pharo usage. Withing time, people better understanding of Pharo may trigger small, but incremental, changes to itâs habits to get the âA-ha!!!â moment where live code and all wonders of Pharo make sense. I frankly read very loosely the rest of you answer ( :) :P ), but I get you are not interested in making Pharo popular rather than get really interested, open minded people on borad so to make it even more amazing, but I also disagree here (in part :) ). There are lotâs of people who could do better for the community if the entrance were easier, more popularity could means more opportunity in job field and, in a more philosophical matter, a way to make the whole current programming field better. Of course, with more popularity comes disadvantages as well, some of which you already said, which can be addressed, but if this is price to pay I personally think it is worth it. On Fri, Oct 13, 2017 at 4:00 AM, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
That is a familiar path, but still an obstacle for people to get over in
trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again."
****WARNING LONG POST AHEAD****
There numerous reason why this kind of thinking is fundamental flawed, if not completely wrong
1) How you get people to run in this race ? 2) What makes you think that people participating in the race doing to get first or even finish ? 3) How you are certain that those barriers are not the very reason people participate ?
The fundamental problem is that if you base your assumption that people are motivated on avoidance of pain, this is a very popular argument by the way, you going to be severely disapointed. From the very first fact that there is a 90% chance that right now that you use almost 100% of your time one of the worst software to be ever created.
Microsoft Windows.
Of course you can throw claims to me that peope use Windows because that is what's popular and widely available, but then so is MacOS is by far the easiest to use OS out there. When you pit Windows vs Macos a such taboo subject , fuel to so many flame wars, there is one thing that both sides agree on and that is that MacOS is far easier to use , perdiod. The rest of the debate which OS is the best is up in the air and frankly not the point of my argument.
The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting.
Of course Windows is not the only example (C/C++ , Java , Web dev, computer games and the list is just endless)of the machocistic nature of human beings. I dont need to look far, my own story about how I started coding is more than enough . I am going to ramble about my initiation to the realm of coding , so feel free to ignore the rest of my post but what the hell here we go.
From an early age , no idea when, I was exposed to the idea of the computer. Never used one before or saw on in person other than what I saw in the TV I asked my father to get me one and he agreed on the ground that I wont use it just to play games but to learn how to code. My father had no idea what coding is, had no idea what technology is, to this day he hates technology and he refuses to learn even how to close a window. None , friend , relative or random stranger I knew used a computer.
So I got this weird thing called computer and turned it on, of course motivated to play games like any other kind in my age, I was 9 years old at the time, december 1988. But I had a sense of honor even from that age so I had to keep my promise. So I did and I was fascinated by it, to the degree that I was coding as much I was playing games. Problem is that it was mainly masochistic venture. I had one book and one book alone, none that had any clue how to show how to turn this thing on and of course no internet, no schools, no magazines I could afford to buy or even know where to buy them . So in 3 years, I made nothing special, only tiny fragments of code and I was still struggling with basic concept like looping.
Yes, looping.
But I already was doing things that a greek kid did not suppose to do and I did not even fit the geek stereotype at the time (not that the term existed at the time, I still does not exist in my language), I had tons of friends, I was anything but shy , I was the craziest nosiest kid suffering from the annoying syndrom of hyperactivity and with very lmited attention span.
I was the absolute worst candidate to learn how to code, yet I did . Sort of. Then my father decided to send me, after me begging on my knees, on a prrivate school, that just opened near our neighborhood for learning. At the time time I only still had the same computer, Amstrad CPC 6128 and knew the very basics of Locomotive Basic which was used also by the computer as a bash like language for its OS.
I went 3 years, the first year I did ok, an average student even though I had by far the most experience than other kids we learned GWBASIC. The second year I did terrible, we learned DBASE and the third we learned CLIPPER and blow any other student completely away, I was the only to graduate with 99.8% and our teacher was super strict on the matter of grades. But I wanted more.
So I went and learned C++ and assembly because why not and when I told my teacher that, he was looking me with his eye wide open, took me quite a lenghy discussion to convince him that this was true.
The reason why the first year I did average was that it was too easy. I was already familiar with Basic , sure I was struggling with basic concepts when I started but under the wing of the teacher (he was a great teacher, professional coder and highly skilled at helping you understand even the most difficult concepts) and full access to multiple books in few months became a walk in the park. The second year was a disaster, partly because our teacher decided to hire a relative of his to teach us DBASE and the guy was a moron wasting his time with telling jokes. The truth is that I did not like and still dont like database coding. Clipper I fall in love with it at the time because still a database orientated language but our teacher tought us, his relative got sacked as soon as he learned that he sucked, that happened one year after because none of the kids had the courage to go tell him and it was probably a parent the told him and did so well I was even offered to make a database for a considerable amount of money. Said no. Again not interested.
My story is nothing special, I heard it in slightly diffirent versions by countless others in a similar situation however my point is not to brag, because lets face it I was just merely learning languages and not doing any serious coding , my point is that the drive behind it was the pain. Was the obstacles. Was the challange.
Pharo for me is also the same story. At the time I was coding in Python, super easy, got the job done, had no intention learning another language because why bother when they all look the same and they would have been much less powerful than Python. I was super happy with Python and still is one of my favorite language as you all know. Then I saw people on forums rambling about this weird language called Lisp , I was interested, google a tutorial , saw the parentheses , said "hell no!" and carried on coding in python. Then even more people claiming that it was so amazing, that it can cure cancer and make you super sexy. I always wanted to be super sexy so I said, ok lets give this a serious try. So I bought a book called "Land of Lisp" very fun to read, terrible teaching material, messy and all over the place. Community was terrible too (Common Lisp), at least some people, rude, snobs, evangelistic and plain stupid. A minority of people but still enough to ruin your day.Then I was introduced to emacs, another super painful experience, thoroughly enjoyed and one day I mentioned how cool it would be if one could combine the simplicity of Lisp with emacs but via a GUI IDE and without elisp which was hog slow. People immediately recommended Squeak, I though they were messing with me because none would pick such a ridiculous name for a language. Looked to me like a toy language for kids and then it hit my face like a train.
Pain, pain and more pain.
But it was well worth, I was completely blown away from the elegance of Smalltalk.
The learning curve of Smalltalk and Lisp are plain insane. Made learningh DOS Assembly a walk in the park in comparison.
But frankly thats half of the fun.
Many obstacles, many challanges.
And there lies my point that an obstacle is a good thing when it becomes an interesting challange. You have to have at least a degree of masochism to learn how to code in any language. Of course the question is what makes an interesting challange and welcome to the abyss that is called "human brain". None knows and we are not anywhere close in finding out.
What we know is that documentation is super important , whether you are a masochist or not, you need it to progress. Problems is that documentation is hard to create and maintain, again masochism required. So we should not just worry about making it easier for people to reach documentation we should make it easier for people to maintain it. Because even masochism has its limits. Those limits are as far it is a pleasureable pain.
So congratulations to anyone reading this long post , you already proven my point.
Thus, let embrace the pain of Pharo and the pain of smalltalk and instead of trying to make it easy, boring and usual. Lets turn it to a challange, lets turn it to a painful yet pleasureable experience
I think to that extend we in a very good path, I think Pharo is definetly a fun experience to use and learn.
A huge plus also for Pharo is the community and how welcoming it is, we take for granted but my experience with Python was not the best either. I joined the IRC channel, other than having to endure the stupidity of "say lol 3 times and you are banned" , too many wars over languages and how superior Python is than anything else. Guido is god and blah blah blah... No thanks.
People here are open minded, still "religious" about Smaltalk but they actually want to help , not to teach, actually help.
I think we are a bit too obsessed on how to make Pharo popular, Smalltalkers suffer from this insecurity of the "failure" of the "best language of the world" not only to become popular but also to convince coders that "is not a a relic of the past".
But we are fine, documentation is doing grear, Pharo is improving rapidly , the community is welcoming as ever. All we need is embrace our successes and our failures, reject the hype, consider the crticism and accept it or reject it and generally carry on doing what we all love.
Improving Pharo.
;)
On 13/10/17 08:52, Vitor Medina Cruz wrote:
I completely agree with Ben.
As for Dimitris, I have some points: [...]
The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting.
See, I think thatâs not the point, the point is that people are very resistant to any change in their habits, so much thatâs usually better to short-circuit into their habits to make a change instead of trying to force a hard change on them. That is why I think Ben point of view is not flawed at all, on the contrary, removing barriers is a way to make Pharo seems more like what people are habituated, short-circuiting peoples habits into Pharo usage. Withing time, people better understanding of Pharo may trigger small, but incremental, changes to itâs habits to get the âA-ha!!!â moment where live code and all wonders of Pharo make sense.
I frankly read very loosely the rest of you answer ( :) :P ), but I get you are not interested in making Pharo popular rather than get really interested, open minded people on borad so to make it even more amazing, but I also disagree here (in part :) ). There are lotâs of people who could do better for the community if the entrance were easier, more popularity could means more opportunity in job field and, in a more philosophical matter, a way to make the whole current programming field better. Of course, with more popularity comes disadvantages as well, some of which you already said, which can be addressed, but if this is price to pay I personally think it is worth it.
[...]
On Fri, Oct 13, 2017 at 4:00 AM, Dimitris Chloupis <kilon.alios@gmail.com <mailto:kilon.alios@gmail.com>> wrote:
That is a familiar path, but still an obstacle for people to get over in trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again."
[...]
Â
The learning curve of Smalltalk and Lisp are plain insane. Made learningh DOS Assembly a walk in the park in comparison.Â
But frankly thats half of the fun.Â
Many obstacles, many challanges.Â
And there lies my point that an obstacle is a good thing when it becomes an interesting challange. You have to have at least a degree of masochism to learn how to code in any language. Of course the question is what makes an interesting challange and welcome to the abyss that is called "human brain". None knows and we are not anywhere close in finding out.Â
What we know is that documentation is super important , whether you are a masochist or not, you need it to progress. Problems is that documentation is hard to create and maintain, again masochism required. So we should not just worry about making it easier for people to reach documentation we should make it easier for people to maintain it. Because even masochism has its limits. Those limits are as far it is a pleasureable pain.Â
So congratulations to anyone reading this long post , you already proven my point.
I read it the same way as Vitor did also (I don't know why my mail client marked some part of this thread as unread), so answering Dimitris mail is not a probe of being pain lovers ( :-P ).
A huge plus also for Pharo is the community and how welcoming it is, we take for granted but my experience with Python was not the best either. I joined the IRC channel, other than having to endure the stupidity of "say lol 3 times and you are banned" , too many wars over languages and how superior Python is than anything else. Guido is god and blah blah blah... No thanks.Â
People here are open minded, still "religious" about Smaltalk but they actually want to help , not to teach, actually help.Â
I think we are a bit too obsessed on how to make Pharo popular, Smalltalkers suffer from this insecurity of the "failure" of the "best language of the world" not only to become popular but also to convince coders that "is not a a relic of the past". Â
But we are fine, documentation is doing grear, Pharo is improving rapidly , the community is welcoming as ever. All we need is embrace our successes and our failures, reject the hype, consider the crticism and accept it or reject it and generally carry on doing what we all love.Â
Improving Pharo.Â
;)
I think, as I have said and mentioned in the thread, that the issue is having the proper community size (but I don't know how to calculate that). This, in my case means to show Pharo to non-developers (like myself): activists, journalist, (non-software) researchers and so on, and show them something similar (not equal) to what they know, but with advantages. So we start by learning Markdown, using Grafoscopio to write structured documents with markdown, then using it to learn how to create the same visualizations that you could do in a spreadsheet (pie and bar charts), , but with coding and then using coding to create visualization you can not get in as premade in any point and click interface. That path from what they know (mostly spreed sheets and word processing) to what is possible with coding has being worthy and more pleasant to traverse that the classical (and dumb) "hello world!" introductions to programming or even other "data science" course that are tools focused. We use the idea of moldable tools to "escape the tools". That means that you need to learn how to think symbolically (coding) to express the features you want the tool to have. Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents. Cheers, Offray
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit. I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program. I checked out squeak.org and found the same documentation issue! Why is this??? Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 4 December 2017 at 12:15, horrido <horrido.hobbies@gmail.com> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
Thanks for passing that on. Documentation has been improving but a quick start would probably be useful. Its the sort of thing I look for in other systems to skim to evaluate how interesting they are and if they are worth investing time in. cheers -ben
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
Hi We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything. Stef On Mon, Dec 4, 2017 at 5:15 AM, horrido <horrido.hobbies@gmail.com> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website. However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote: Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below. I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download. A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!* Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On Tue, Dec 5, 2017 at 5:49 AM, horrido <horrido.hobbies@gmail.com> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 5 December 2017 at 14:50, Stephane Ducasse <stepharo.self@gmail.com> wrote:
On Tue, Dec 5, 2017 at 5:49 AM, horrido <horrido.hobbies@gmail.com> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I guess this is to make `pharo` look "normal" when used for non-gui scripting from the command line. It still bites me occasionally depending on what context I've been working in, but I can live with that. This is the sort of thing a Quick Start will be good for. cheers -ben
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super
busy.
You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
On Tue, Dec 5, 2017 at 5:49 AM, horrido <horrido.hobbies@gmail.com> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
Iâm also very interested as I want to give my students a very quick overview so they can use Pharo to manipulate some web/ICT concepts (like client request cycle, request processing). So I planned to do a simple tutorial « for those who know only basic procedural programming ». Actually I will not show the power of OOP. But that is ok for me. Iâll setup a classes so that they can act as a « db » to student and give them some methods (essentially set up a (web) server, and clients). So If you want, Iâll be happy to review your tutorial. And BTW, I see some people complaining about documentation. I repeat myself, but after what I used to know back in 2003-2009⦠I really can tell the situation has improved a lot !!! Of course this is not perfect but I find it far better. Iâve just seen this LearningOOPWithPharo. This is excellent !!! Iâm reading it with a lot of interest. Congrats all and Stephane especially. https://github.com/SquareBracketAssociates/LearningOOPWithPharo So the situation is far better. MOOC + plenty of booklets. Since I agree a quick beginner guide will be useful. Concerning image comments (class and methods), people often say that writing a comment, a test, a method comment is already an important contribution⦠and I agree BUT, the process is not easy at all. It is kind of intimidating⦠Itâs for me and I donât consider myself as a « beginner », more a journeyer. So, I was thinking of something that would be cool and fun to do. The idea would be to have an online image « opened » for contribution online. ie., a kind of wiki image that exposes all the code of a standard image and where we could update class/method comments and eventually create tests. It shouldnât be difficult to do with Zinc or whatever. Just to avoid crashes or image destruction, it should be limited to simple contributions (comments first then tests maybe). Then, a core dev should be able to manage contributions and push them in official repositories. As a side effect, we would have an (another) updated PharoDoc (~JavaDoc) that is kind of useless but that newcomers always ask for. What do you think ? Useful/useless ? I could give it a shot. Cheers, Cédrick
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Then clearly there is something seriously wrong with the Default GNU/Linux download. It does not contain a file called 'pharo-ui'. Moreover, since the Pharo6.1.image file is located in the 'shared' folder, you'd have to CD to 'shared' to execute your command. No mention of this anywhere! How is a newbie to know??? Also, there is absolutely no indication that: (a) you need to download a VM; and (b) where you can obtain this VM from. All in all, this Linux support is quite messed up. It would be safer to remove it completely from pharo.org, rather than confusing the hell out of a visitor to pharo.org. Stephane Ducasse-3 wrote
On Tue, Dec 5, 2017 at 5:49 AM, horrido <
horrido.hobbies@
> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hmm, yes, http://files.pharo.org/platform/Pharo6.1-linux.zip seems broken, duh. $ curl get.pharo.org | bash works fine though. It is not possible to offer a single solution for 'Linux' as there are 100s of distributions, package managers, and individual preferences and tastes. That is what GNU/Linux is for. It also assumes you know what you are doing (i.e. understand the command line).
On 5 Dec 2017, at 16:10, horrido <horrido.hobbies@gmail.com> wrote:
Then clearly there is something seriously wrong with the Default GNU/Linux download. It does not contain a file called 'pharo-ui'.
Moreover, since the Pharo6.1.image file is located in the 'shared' folder, you'd have to CD to 'shared' to execute your command. No mention of this anywhere! How is a newbie to know???
Also, there is absolutely no indication that: (a) you need to download a VM; and (b) where you can obtain this VM from. All in all, this Linux support is quite messed up. It would be safer to remove it completely from pharo.org, rather than confusing the hell out of a visitor to pharo.org.
Stephane Ducasse-3 wrote
On Tue, Dec 5, 2017 at 5:49 AM, horrido <
horrido.hobbies@
> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 5 Dec 2017, at 16:36, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Hmm, yes, http://files.pharo.org/platform/Pharo6.1-linux.zip seems broken, duh.
$ curl get.pharo.org | bash
works fine though.
It is not possible to offer a single solution for 'Linux' as there are 100s of distributions, package managers, and individual preferences and tastes. That is what GNU/Linux is for. It also assumes you know what you are doing (i.e. understand the command line).
There is this, too: https://pharo.fogbugz.com/f/cases/20799/Update-Linux-Download-instructions I will update the website this week. We need to improve in general the download⦠so much todo.
On 5 Dec 2017, at 16:10, horrido <horrido.hobbies@gmail.com> wrote:
Then clearly there is something seriously wrong with the Default GNU/Linux download. It does not contain a file called 'pharo-ui'.
Moreover, since the Pharo6.1.image file is located in the 'shared' folder, you'd have to CD to 'shared' to execute your command. No mention of this anywhere! How is a newbie to know???
Also, there is absolutely no indication that: (a) you need to download a VM; and (b) where you can obtain this VM from. All in all, this Linux support is quite messed up. It would be safer to remove it completely from pharo.org, rather than confusing the hell out of a visitor to pharo.org.
Stephane Ducasse-3 wrote
On Tue, Dec 5, 2017 at 5:49 AM, horrido <
horrido.hobbies@
> wrote:
Understood. I'm working on a Pharo Quick Start guide. If it passes muster with you guys, you may want to link to it, or incorporate its contents into the pharo.org website.
Sure let us know.
However, I've stumbled on an odd obstacle: downloading and running the Default GNU/Linux zip file. According to the Linux installation page, and I quote:
Version 6.1 for several common GNU/Linux configurations. The zip files contain everything necessary. Just download and run the executable. For more download options, see the sections below.
./pharo-ui Pharo61.image &
I am unable to "run the executable" without further explanation. I'm guessing that it's missing the Pharo VM, which apparently isn't included in the download.
Why would it be?
A newbie looking at this installation page and trying to get started with Pharo under Linux would be totally confused and frustrated. Hell, *I'm totally confused and frustrated!*
As you see this can be fixed without losing more time on that.
Stephane Ducasse-3 wrote
Hi
We have a full mooc with 90 videos, we have books. And we are super busy. You see we cannot do everything.
Stef
On Mon, Dec 4, 2017 at 5:15 AM, horrido <
horrido.hobbies@
> wrote:
Speaking of which, one of my readers said he tried out Pharo recently and found the documentation wanting. He was expecting a Getting Started guide at the pharo.org website and couldn't find one. So he had to blunder around a bit.
I told him he could've looked at "Chapter 2: A quick tour of Pharo" in the *Pharo by Example 5* book, but he's right. There ought to be something obvious at the pharo.org website that helps a newbie get Pharo up and running, understand how to basically use the Pharo IDE, and write the standard "Hello World" program.
I checked out squeak.org and found the same documentation issue! Why is this???
Offray Vladimir Luna Cárdenas-2 wrote
Documentation is going well. In fact the stuff that kept me away of Squeak, despite of its potential was the lack of documentation. "The artifact is the curriculum" was to powerful but too heavy. You need a way to understand how to deconstruct and navigate the artifact that is usually anchored with the culture you have (books and reading) instead of only launching inspectors os browsing the code. Grafoscopio is my attempt to fill that gap between the world of objects/simulations and the world of scripts/documents.
Cheers,
Offray
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I've encountered another issue, this time with the macOS download... After I download the zip file, I unzip the file and move the Pharo application to the Applications folder. Then I have to right-click on the Pharo application and select open (double-clicking prevents me from opening the file at all). This last step fails (Pharo crashes), but if I repeat it, it works. Thereafter, I may double-click to open the file anytime. I can't add these instructions to my Pharo Quick Start guide without sounding like an ass. I shall have to wait until all download issues are resolved before I can complete the guide. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
If you are working with Mac and Gnu/Linux, your quick start could start by: 1. Create the folder for your Pharo program, download it and Launch it. For that, open your Terminal and type: ``` mkdir -p ~/Programs/Pharo/ cd ~/Programs/Pharo/ |curl get.pharo.org/64/ | bash ./pharo-ui Pharo.image | ``` You only need 2 and 4 steps to relaunch Pharo, once installed, but Mac and several variants of Gnu/Linux offer a quick launcher for running programs. Is not the smoothest intro to Pharo, but is not a big issue either and in that way you can continue your guide knowing that readers in Linux and Mac have a working Pharo System. Hope this helps, Offray On 05/12/17 13:18, horrido wrote:
I've encountered another issue, this time with the macOS download...
After I download the zip file, I unzip the file and move the Pharo application to the Applications folder. Then I have to right-click on the Pharo application and select open (double-clicking prevents me from opening the file at all). This last step fails (Pharo crashes), but if I repeat it, it works.
Thereafter, I may double-click to open the file anytime.
I can't add these instructions to my Pharo Quick Start guide without sounding like an ass. I shall have to wait until all download issues are resolved before I can complete the guide.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I also find this way simple and the best to me. curl get.pharo.org/64/ | bash ./pharo-ui Pharo.image Donât really need to say to create a dir or maybe pass it as a parameter in curl. The other way to install through that download one file is nice at first but I find it no convenient especially when doing a âsave asâ... I also have recurrent problem with student on windows (through the first download link) where pharo complains it has no source file (whereas it is there). Cheers, Cédrick
Le 7 déc. 2017 à 00:55, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> a écrit :
curl get.pharo.org/64/ | bash ./pharo-ui Pharo.image
Yes. Creating directories are just extra steps so Pharo and its images is just a good practice to not let it pollute your home directory... as most programs do these days. Cheers, Offray On 07/12/17 05:01, Cédrick Béler wrote:
I also find this way simple and the best to me.
curl get.pharo.org/64/ <http://get.pharo.org/64/> | bash ./pharo-ui Pharo.image
Donât really need to say to create a dir or maybe pass it as a parameter in curl.Â
The other way to install through that download one file is nice at first but I find it no convenient especially when doing a âsave asâ... Â I also have recurrent problem with student on windows (through the first download link) where pharo complains it has no source file (whereas it is there).Â
Cheers,
CédrickÂ
Le 7 déc. 2017 à 00:55, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>> a écrit :
curl get.pharo.org/64/ <http://get.pharo.org/64/> | bash ./pharo-ui Pharo.image
I meant: Creating directories are just extra steps so Pharo and its images keep the good practice to not let them pollute your home directory... as most programs do these days. Cheers, Offray On 07/12/17 09:49, Offray Vladimir Luna Cárdenas wrote:
Yes. Creating directories are just extra steps so Pharo and its images is just a good practice to not let it pollute your home directory... as most programs do these days.
Cheers,
Offray
On 07/12/17 05:01, Cédrick Béler wrote:
I also find this way simple and the best to me.
curl get.pharo.org/64/ <http://get.pharo.org/64/> | bash ./pharo-ui Pharo.image
Donât really need to say to create a dir or maybe pass it as a parameter in curl.Â
The other way to install through that download one file is nice at first but I find it no convenient especially when doing a âsave asâ... Â I also have recurrent problem with student on windows (through the first download link) where pharo complains it has no source file (whereas it is there).Â
Cheers,
CédrickÂ
Le 7 déc. 2017 à 00:55, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>> a écrit :
curl get.pharo.org/64/ <http://get.pharo.org/64/> | bash ./pharo-ui Pharo.image
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway. Feedback welcome. Note that I chose wget instead of curl because many Linux distros do not have curl installed. I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10). -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Thanks Richard. I like when you are doing :) On Thu, Dec 7, 2017 at 8:38 PM, horrido <horrido.hobbies@gmail.com> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I read it and it is good and to the point. I was thinking if we could have a class named something else than Hello May be Repeater new say: 'Hello' ? Stef On Thu, Dec 7, 2017 at 8:43 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Thanks Richard. I like when you are doing :)
On Thu, Dec 7, 2017 at 8:38 PM, horrido <horrido.hobbies@gmail.com> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Once the pharo quick start guide is ready we will add it to the documentation. On Thu, Dec 7, 2017 at 8:45 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
I read it and it is good and to the point. I was thinking if we could have a class named something else than Hello May be Repeater new say: 'Hello' ?
Stef
On Thu, Dec 7, 2017 at 8:43 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Thanks Richard. I like when you are doing :)
On Thu, Dec 7, 2017 at 8:38 PM, horrido <horrido.hobbies@gmail.com> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Excellent work, Richard! May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit. This will be a great help for people who drop by out of curiosity. On Thu, Dec 7, 2017 at 11:38 AM, horrido <horrido.hobbies@gmail.com> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2 Yes, it's a definite improvement. Thanks. Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido <
horrido.hobbies@
> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one. That being said, I have always felt that hello world is kind of a strange introduction to programming: http://mutabit.com/offray/blog/en/entry/dumb-hello-world Cheers, Offray On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Done. Class #Hello is now #Greeter in package "HelloDemo". I presume we're good to go, then? Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
To me the Hello World in Smalltalk was always just writing: 'Hello world' 2017-12-07 19:35 GMT-03:00 horrido <horrido.hobbies@gmail.com>:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
hernanmd wrote
To me the Hello World in Smalltalk was always just writing: 'Hello world'
+1. While putting it in a class shows a few more of the system's features, it also makes it seem more complex than other languages, when that's not really true. Why not just PrintIt: 'Hello world'? If it seems important to show classes, maybe start with PrintIt: 'Hello world' and step-by-step build through `Transcript show: 'Hello world'` to the class-based solution. ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I'm not sure what you mean by *PrintIt:*. If you mean type 'Hello World' in the Playground and just *Print it*, that's not really a "program." Sean P. DeNigris wrote
hernanmd wrote
To me the Hello World in Smalltalk was always just writing: 'Hello world'
+1. While putting it in a class shows a few more of the system's features, it also makes it seem more complex than other languages, when that's not really true. Why not just PrintIt: 'Hello world'? If it seems important to show classes, maybe start with PrintIt: 'Hello world' and step-by-step build through `Transcript show: 'Hello world'` to the class-based solution.
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Now thatâs what I call a great way to promote something. Excellent work, short to the point. In the future you could combine small code snippets together with the rest of your arguments for explaining the awesomeness of Pharo. Apple does this very well and in similar style to what you have done here. I love the size , quick to read, easy to understand. On Fri, 8 Dec 2017 at 16:42, horrido <horrido.hobbies@gmail.com> wrote:
I'm not sure what you mean by *PrintIt:*. If you mean type 'Hello World' in the Playground and just *Print it*, that's not really a "program."
Sean P. DeNigris wrote
hernanmd wrote
To me the Hello World in Smalltalk was always just writing: 'Hello world'
+1. While putting it in a class shows a few more of the system's features, it also makes it seem more complex than other languages, when that's not really true. Why not just PrintIt: 'Hello world'? If it seems important to show classes, maybe start with PrintIt: 'Hello world' and step-by-step build through `Transcript show: 'Hello world'` to the class-based solution.
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Maybe the core of the suggestion is start with the Playground and then go to the code browser, that's my workflow coming from other languages like Python and Scheme, and having the playground to emulate REPL before going to code browser has been really refreshing and also "going from scripting to object" is a well received approach in our Data Weeks. So the Pharo Quick Start, after providing the installation instrucctions could be something like: """ The classical "Hello World!" program can be done in one line in Pharo, as in most dynamic languages by opening the Playground ("Cmd + Shif + o" shortcut on Mac o "Ctrl + Shift + o" on Windows) and writing "Transcript show: 'Hello World!" (see figure below), but we are going to learn also how to put this simple script into the Code Browser, a place where much of the Pharo power resides. ^ Up: The "Hello World!" example as a one-liner script ran in the Playground. """ and then I would add the succinct explanation you are doing about how to create the Greeter. Cheers, Offray On 08/12/17 09:41, horrido wrote:
I'm not sure what you mean by *PrintIt:*. If you mean type 'Hello World' in the Playground and just *Print it*, that's not really a "program."
Sean P. DeNigris wrote
hernanmd wrote
To me the Hello World in Smalltalk was always just writing: 'Hello world' +1. While putting it in a class shows a few more of the system's features, it also makes it seem more complex than other languages, when that's not really true. Why not just PrintIt: 'Hello world'? If it seems important to show classes, maybe start with PrintIt: 'Hello world' and step-by-step build through `Transcript show: 'Hello world'` to the class-based solution.
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Thanks to all your feedback, the Pharo Quick Start guide gets better and better. Now, the reader will *really* see how easy Pharo is by the end of the second section. The rest of the guide deals with the System Browser. I'm very happy about this because I keep hearing crapola from JavaScript developers saying how low the entry barrier for JavaScript is (everybody has a web browser; all you need is a text editor and you can see immediate results). I wanted to drive home the point that the entry barrier for Pharo is exceptionally low, too. And it's just as low as for Elixir, Julia, Nim, Racket, and other languages I've recently tried. Offray Vladimir Luna Cárdenas-2 wrote
Maybe the core of the suggestion is start with the Playground and then go to the code browser, that's my workflow coming from other languages like Python and Scheme, and having the playground to emulate REPL before going to code browser has been really refreshing and also "going from scripting to object" is a well received approach in our Data Weeks.
So the Pharo Quick Start, after providing the installation instrucctions could be something like:
""" The classical "Hello World!" program can be done in one line in Pharo, as in most dynamic languages by opening the Playground ("Cmd + Shif + o" shortcut on Mac o "Ctrl + Shift + o" on Windows) and writing "Transcript show: 'Hello World!" (see figure below), but we are going to learn also how to put this simple script into the Code Browser, a place where much of the Pharo power resides.
^ Up: The "Hello World!" example as a one-liner script ran in the Playground.
""" and then I would add the succinct explanation you are doing about how to create the Greeter.
Cheers,
Offray
On 08/12/17 09:41, horrido wrote:
I'm not sure what you mean by *PrintIt:*. If you mean type 'Hello World' in the Playground and just *Print it*, that's not really a "program."
Sean P. DeNigris wrote
hernanmd wrote
To me the Hello World in Smalltalk was always just writing: 'Hello world' +1. While putting it in a class shows a few more of the system's features, it also makes it seem more complex than other languages, when that's not really true. Why not just PrintIt: 'Hello world'? If it seems important to show classes, maybe start with PrintIt: 'Hello world' and step-by-step build through `Transcript show: 'Hello world'` to the class-based solution.
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
amgfcildhiemjbph.png (21K) <http://forum.world.st/attachment/5060126/0/amgfcildhiemjbph.png>
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi Richard Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article. Stef On Thu, Dec 7, 2017 at 11:35 PM, horrido <horrido.hobbies@gmail.com> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
if Pharo could have a emacs version or face or something that would advertise more functions that you can get from the Pharo version or maybe link the two versions Pharo and emacsVimPharo so there is like a migration path to Pharo or they could work together that could be lower the barrier to entry i saw emacs vim guy who could also hate to learning something new On Fri, Dec 8, 2017 at 1:08 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Hi Richard
Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article.
Stef
On Thu, Dec 7, 2017 at 11:35 PM, horrido <horrido.hobbies@gmail.com> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> ; . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
isn't GNU Smalltalk a emacs Smalltalk? maybe making a migration path from GNU to Pharo could be good? On Fri, Dec 8, 2017 at 1:33 PM, Kjell Godo <squeaklist@gmail.com> wrote:
if Pharo could have a emacs version or face or something that would advertise more functions that you can get from the Pharo version or maybe link the two versions Pharo and emacsVimPharo so there is like a migration path to Pharo or they could work together that could be lower the barrier to entry i saw emacs vim guy who could also hate to learning something new
On Fri, Dec 8, 2017 at 1:08 PM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Hi Richard
Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article.
Stef
On Thu, Dec 7, 2017 at 11:35 PM, horrido <horrido.hobbies@gmail.com> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab709 44ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Sm alltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
We often get suggestions for such bindings. While in general it would be a great thing and I often promote lowering barriers of entry, I feel in this context "pure text mode" developers are more likely to find many other barriers with Pharo not fitting their familiar development paradigm. Such bindings are not the low hanging fruit for enticing developer to try Pharo and a better market is targeting those needing a better IDE. The more likely path to emacs/vim is pharo as a shell command which leaves a user's workflow around editing unchanged. cheers -ben On 9 December 2017 at 05:35, Kjell Godo <squeaklist@gmail.com> wrote:
isn't GNU Smalltalk a emacs Smalltalk? maybe making a migration path from GNU to Pharo could be good?
On Fri, Dec 8, 2017 at 1:33 PM, Kjell Godo <squeaklist@gmail.com> wrote:
if Pharo could have a emacs version or face or something that would advertise more functions that you can get from the Pharo version or maybe link the two versions Pharo and emacsVimPharo so there is like a migration path to Pharo or they could work together that could be lower the barrier to entry i saw emacs vim guy who could also hate to learning something new
On Fri, Dec 8, 2017 at 1:08 PM, Stephane Ducasse <stepharo.self@gmail.com
wrote:
Hi Richard
Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article.
Stef
On Thu, Dec 7, 2017 at 11:35 PM, horrido <horrido.hobbies@gmail.com> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab709 44ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Sm alltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Nope , nothing to do with Emacs GNU Smalltalk is Smalltalk without.... welll... Smalltalk Which is why almost none is using it. There is a project to use Pharo from inside Emacs called Shamoo. Frankly you will be sacrificing a lot of IDE goodies leaving Pharo. Neither Emacs or vim are proper IDEs , they are text editors pretending to be IDEs and failing miserably at it. On the other hand Pharo IS an IDE playing ball with big boys. Making shortcuts in Pharo is no big deal, if 10% of people asking for Emacs or vim shortcuts bothered creating just 10 shortcuts each we would have by now at least 100 Emacs shortcuts in Pharo. When one say that needs something that He or she is not willing to do even 1% of its work, then he does not need it enough for others to bother. Itâs the difference between hype and actual desire. On Fri, 8 Dec 2017 at 23:35, Kjell Godo <squeaklist@gmail.com> wrote:
isn't GNU Smalltalk a emacs Smalltalk? maybe making a migration path from GNU to Pharo could be good?
On Fri, Dec 8, 2017 at 1:33 PM, Kjell Godo <squeaklist@gmail.com> wrote:
if Pharo could have a emacs version or face or something that would advertise more functions that you can get from the Pharo version or maybe link the two versions Pharo and emacsVimPharo so there is like a migration path to Pharo or they could work together that could be lower the barrier to entry i saw emacs vim guy who could also hate to learning something new
On Fri, Dec 8, 2017 at 1:08 PM, Stephane Ducasse <stepharo.self@gmail.com
wrote:
Hi Richard
Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article.
Stef
On Thu, Dec 7, 2017 at 11:35 PM, horrido <horrido.hobbies@gmail.com> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide < https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 9 Dec 2017, at 07:44 , Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Making shortcuts in Pharo is no big deal, if 10% of people asking for Emacs or vim shortcuts bothered creating just 10 shortcuts each we would have by now at least 100 Emacs shortcuts in Pharo. When one say that needs something that He or she is not willing to do even 1% of its work, then he does not need it enough for others to bother.
In September, I posted an Issue on pharo.fogbuz <https://pharo.fogbugz.com/f/cases/20466/Keyboard-Shortcuts>: making keyboard shortcuts for the Pharo Smalltalk editor is not easy, but should be. No one has responded to that issue saying that it really is easy, and explaining how to do it. So if you know, I invite you to work on this issue. tl;dr: I though that it was easy too, but after spending a couple of days trying to figure it out, gave up. If 10% of the energy expended in this thread had gone into fixing open issues, then Pharo would be getting better every day.
Envoyé de mon iPhone
Le 9 déc. 2017 à 11:05, Prof. Andrew P. Black <black@cs.pdx.edu> a écrit :
On 9 Dec 2017, at 07:44 , Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Making shortcuts in Pharo is no big deal, if 10% of people asking for Emacs or vim shortcuts bothered creating just 10 shortcuts each we would have by now at least 100 Emacs shortcuts in Pharo. When one say that needs something that He or she is not willing to do even 1% of its work, then he does not need it enough for others to bother.
In September, I posted an Issue on pharo.fogbuz: making keyboard shortcuts for the Pharo Smalltalk editor is not easy, but should be. No one has responded to that issue saying that it really is easy, and explaining how to do it. So if you know, I invite you to work on this issue. tl;dr: I though that it was easy too, but after spending a couple of days trying to figure it out, gave up.
If 10% of the energy expended in this thread had gone into fixing open issues, then Pharo would be getting better every day.
+1 Less talk more Pharo !
The beginner way ------ 1. Open Pharo 6 2. Go to Welcome window 3. Go to Keymap Browser tab 4. Right click on a shortcut entry (for example global shortcut for close window) 5. Choose Inspect Action 6. Go to Source Code tab 7. Profit The Pharo coder way ---- Or go to SystemWindow class >> buildShortcutsOn: or got to NautilusWindow class >> build....ShortcutsOn: (any method will do) or search for any method using the <keymap> pragma On Sat, Dec 9, 2017 at 12:06 PM Prof. Andrew P. Black <black@cs.pdx.edu> wrote:
On 9 Dec 2017, at 07:44 , Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Making shortcuts in Pharo is no big deal, if 10% of people asking for Emacs or vim shortcuts bothered creating just 10 shortcuts each we would have by now at least 100 Emacs shortcuts in Pharo. When one say that needs something that He or she is not willing to do even 1% of its work, then he does not need it enough for others to bother.
In September, I posted an Issue on pharo.fogbuz <https://pharo.fogbugz.com/f/cases/20466/Keyboard-Shortcuts>: making keyboard shortcuts for the Pharo Smalltalk editor is not easy, but should be. No one has responded to that issue saying that it really is easy, and explaining how to do it. So if you know, I invite you to work on this issue. tl;dr: I though that it was easy too, but after spending a couple of days trying to figure it out, gave up.
If 10% of the energy expended in this thread had gone into fixing open issues, then Pharo would be getting better every day.
Pharo: The Next Ten Minutes <https://medium.com/@richardeng/pharo-the-next-ten-minutes-a17899dc9a58> . Feedback welcome. I will be leaving for vacation on Sunday for two weeks. Feedback should be given to me asap. Thanks. Stephane Ducasse-3 wrote
Hi Richard
Thanks this is nice. I like Greeter :) The suggestion of Ben are fun for the next one. I will add a link to your article.
Stef
On Thu, Dec 7, 2017 at 11:35 PM, horrido <
horrido.hobbies@
> wrote:
Done. Class #Hello is now #Greeter in package "HelloDemo".
I presume we're good to go, then?
Offray Vladimir Luna Cárdenas-2 wrote
May be the class name could be changed a little bit to allow more flexibility using the Pharo Quick Start as a base. Something like "Greeter" and "Greeter new say: 'Hello world!'" or "Greeter new sayIt" could be implemented from there. Nice to see more and more documentation around Pharo, including this one.
That being said, I have always felt that hello world is kind of a strange introduction to programming:
http://mutabit.com/offray/blog/en/entry/dumb-hello-world
Cheers,
Offray
On 07/12/17 15:31, horrido wrote:
I've revised the draft slightly for the comments given here: https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2
Yes, it's a definite improvement. Thanks.
Richard Sargent wrote
Excellent work, Richard!
May I offer the small criticism against using #initialize for the method name? I think a name like #sayIt (for example) and invocation like "Hello new sayIt" would make it explicit.
This will be a great help for people who drop by out of curiosity.
On Thu, Dec 7, 2017 at 11:38 AM, horrido < horrido.hobbies@ > wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
An extra thing for the first article, maybe change the package name from "HelloDemo" to "HelloWorld" On 9 December 2017 at 11:37, horrido <horrido.hobbies@gmail.com> wrote:
Pharo: The Next Ten Minutes <https://medium.com/@richardeng/pharo-the-next-ten-minutes-a17899dc9a58> .
Feedback welcome.
I will be leaving for vacation on Sunday for two weeks. Feedback should be given to me asap. Thanks.
I see you have auto-update-process turned on, but you didn't tell users to do this. (I think it is useful to have on. @all, I'm curious why its not on by default) Double "little" in first sentence. You should describe how you enter the second method over the top of the first. People sometimes get stuck thinking they'll be altering the #sayIt method. In hindsight, when readers go to experiment themselves, some may drop the #wait to see how fast it can generate messages which will lock up the UI due to co-operative scheduling within a priority. It will be better to use... [...] #forkAt: 30 named: 'Count de Money'
How do you like it?
maybe... How do you like it? The implication is that in the early stages of protoyping, you don't need to slow down to build an object/relational mapping. Just design with pure objects and persist sample data in the Image. ----------------- The article is good but feels too short. One additional demonstration would look good. To facilitate this, change the demo code to use two methods. sayCount: anInteger self inform: anInteger printString. counter | count | count := 0. [1000 timesRepeat: [count := count + 1. self sayCount: count. 2 seconds wait]] forkNamed: 'Count de Money' Then after the existing end of the article... Now consider your current language of choice... Say you are part of the Testing Team and a unit test errors intermittently, or you're in Operations where an intermittent error occurs in a production system. Typically the program exits, maybe dumping state but losing the live context where the error occurred. What would it take to reproduce the exact error context for Developers to analyze? Lets see how Pharo handles this by introducing an error into a running 'Count de Money' process. (If its not running, evaluate "Greeter new counter") Make this modification... sayCount: anInteger self inform: anInteger * 10 printString. Immediately after you save this, a pre-debug window pops up... [screen snapshot pre-debug top of stack] Scroll down and click on "sayCount:" and you should see the debugger... [screen snapshot full debugger on sayCount with "* 10 printString" highlighted] Now as before, you can record the execution state of all running threads by saving a Pharo Image. Later when you reopen Pharo you can continue debugging the faulted thread. So give this a try. Save and quit Pharo now. (You could even transfer the .image file together with its paired .changes file to another machine with Pharo.) Open the Pharo Image again. Now we are ready to fix the error. To explain the error, one thing Pharo newcomers need to adapt to is that arithmetic operators are just normal message sends with no special precedence. Pharo has simple semantics with just three precedence rules, evaluated right to left. Unary messages like "printString" are always evaluated first. Binary messages like " * " are evaluated second. Keyword messages like "inform:" are evaluated last. So the error here is that we multiplied an integer with a string. Easily fixed... sayCount: anInteger self inform: (anInteger * 10) printString. After saving, click <Proceed> and observe the running process continues rather than needing to restart it. In many situations, continuing from errors like this rather than waiting for a restarted program to progress to the same state facilitates a very quick "debug->edit->compile->run" development loop. For a similar demonstration, check out [PharoLambda Serverless Debugging, https://www.youtube.com/watch?v=bNNCT1hLA3E ] HTH cheers -ben
On 8 December 2017 at 03:38, horrido <horrido.hobbies@gmail.com> wrote:
I've completed the first draft of my Pharo Quick Start guide <https://medium.com/@richardeng/pharo-quick-start-5bab70944ce2> . I decided to forge ahead anyway.
Feedback welcome.
Note that I chose wget instead of curl because many Linux distros do not have curl installed.
I've tested the guide for various Linux distros including Mint 18.3 (Ubuntu-based), Debian 9.2.1, Manjaro 17.0.6 (Arch-based), Solus 3, and Fedora 27. So it should be good for all the popular distros (Top 10).
Good work. Really nice and succulent. Some random feedback...
due to a known macOS bug, the Pharo application will crash the first time
due to a known macOS bug >>> being investigated <<<, the Pharo application >>>>may<<< crash the first time (I presume it is)
To open the System Browser, click on...
To open the System Browser, left-click on... *Most* newcomers will assume getting a menu is a right-click (btw like every other menu in Pharo) but Pharo is different here. I do believe we should change it to right-click to lower friction, or even both left-click and right-click to keep newcomers and stalwarts happy. How often does anyone right-click on the World? Could it be moved to a modifier key?
Now we need to create a method or function for our Greeter class. The standard first method is âinitializeâ which is invoked when the Greeter class is instantiated (this is OOP parlance). For simplicity, we shall skip this.
For simplicity, just leave it out. ------------------- Now that sparks an idea for a follow-on article "Pharo - the next ten minutes" * show how easy GUI text output is easy (its another equivalent to the printf debugging paradigm every knows) Greeter >> screamIt self inform: 'HELLO WORLD!' * show nice process management and DSLish language Greeter >> counter | count | count := 0. [ count := count + 1. self inform: count printString. 2 seconds wait. ] forkNamed: 'Count de Money' "see..[1]" then World > Tools > Process Browser to Suspend,Resume, Terminate. * show unique feature with continuation of state across sessions... run "Greeter new counter" the get them to close the image and reopen it. cheers -ben P.S. side humor... [1] https://www.youtube.com/watch?v=sztf4hcGrB4
I'm think that is important to remove barriers for developers coming from other environments based on files for development and documentation, but my path is different, is teaching people like journalist, hacktivist who has no previous or deep experience into developing. Starting with them, using Live Coding and mixing it with interactive documentation, scripting, and agile visualization, has been a powerful enabler. No need to think in the established tradition, because we're building our own, using alternative infrastructure to bootstrap ourselves into alternative futures. Cheers, Offray On 12/10/17 21:55, Ben Coman wrote:
On Wed, Oct 11, 2017 at 10:39 PM, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>> wrote:
The more I use Pharo, the less I use web documentation.
That is a familiar path, but still an obstacle for people to get over in trying Pharo - i.e. its a barrier of entry. I've previously referred to this article by JoelOnSoftware, but to pull out a key part... "Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors wonât be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer. This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and youâll double your sales again."
For example, Stef mentioned that the Pharo web docs were dropped because were't used much. But perhaps their value is not for regular use by the community, but more for outsiders evaluating Pharo, or newcomers transitioning from their old workflow to a Pharo one. In that case their value eliminating one barrier of entry is much greater than measured from the number of page hits.
btw, What I like about Richards's articles is that... most of our community's articles are for people already using Pharo, even if only a newcomer of a few days working through an introductory tutorial. Richard's articles target outsiders and one of the side benefits for *me* is that it pulls in critical outside perspectives to remind me of the barriers-of-entry stopping people using Pharo. Â
Take for instance the common angst people have against working in an Image in Smalltalk. There are some legitimate concerns with ending up in a state you can't recreate, which we are addressing this with the bootstrapping projects. But I think we might publicize this better to outsiders. For example... Mr Smith knows nothing about Smalltalk and takes an interest in Pharo. Smith discusses with colleague Jones who presents a poor opinion of the Smalltalk Image approach. So Smith never tries Pharo! Alternatively, if Smith has already read in an FAQ about this common argument and how we address it by our bootstrap process, he can inform Jones', and maybe now we've got two curious newcomers. Â
cheers -ben
horrido <horrido.hobbies@gmail.com> wrote:
Interestingly, I'm getting a fair amount of pushback on this. Personally, I think it would be very helpful to have a live (updatable, so as to keep it current) reference page for the class library, something that developers can easily look up what they need. After all, most of the power of Pharo comes from the class library and we need to make it as accessible as possible to less experienced Pharoers (i.e., beginners).
Exploring the class library through the System Browser is very inefficient. This is further exacerbated by the fact that many classes and methods are simply not well-documented (containing a cursory remark which is just barely useful).
I realize that creating a live reference page is not easy to do. In fact, it's a lot of work. But the absence of such a page is a real obstacle to Pharo acceptance.
I have a simple example compoared with python. I want to programatically find the version number of current instance. In Python I go to the document page e.g. <https://docs.python.org/3/> and search for version. I get a pageful of hits which I can read and find the snswer (ie sys.version) For Pharo what search do I do? You don't need to implement a seach engine Google, Bing etc can do this and with a lot more resopuirces than Pharo can do, but you need the information in a restricted place e.g. one site. and it does not need to be dynamic The first thing I do for a new technology is RTFM.
horrido wrote
Thanks. I gave your answer verbatim. I also added the following paragraph:
The problem I find with today's developers is that they are rather closed-minded. They are rigid and inflexible, and not willing to adapt to new and different ways of doing things. In my generation (circa 1980â1990), people didn't have a problem with trying different technologies. That's why I had no issue with learning Smalltalk 10 years ago, after I had retired from a 20-year-long career in C systems programming and FORTRAN scientific programming.
Sven Van Caekenberghe-2 wrote
On 6 Oct 2017, at 14:54, horrido <
horrido.hobbies@
> wrote:
I received this comment from someone who complained:
*What about the lack of documentation? From time to time I've checked some SmallTalk implementations like Squeak, GNU-Smalltalk and now Pharo. Of these, only GNU-SmallTalk appears to have a free, official programming guide and core library reference that any serious programmer expects from a language.
https://www.gnu.org/software/smalltalk/manual-base/html_node/*
I pointed to Pharo's documentation but then he came back with:
*Then show me a link of the free, maintained reference documentation for the classes that form "the core library", like this one for Python (https://docs.python.org/3/library/index.html)*
It's true, most Smalltalks do not have a core library reference, not even VisualWorks! So what is the proper response to this complaint?
The first answer is that Pharo/Smalltalk is unique in that a running system/IDE contains _all_ source code, _all_ documentation (class, method, help, tutorial), _all_ unit tests and _all_ runnable examples in a very easy, accessible way. It takes some getting used to, but this is actually better and much more powerful than any alternative.
The second answer is that there are lots of books and articles that take the classic/structured book/paper approach. There is http://books.pharo.org, http://themoosebook.org, http://book.seaside.st/book, http://medium.com/concerning-pharo and many more.
-- Mark
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034 c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place.  As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it. cheersAndrew Glynn
Thanks for posting this. It is one of the best descriptions of the state of the software industry that I have seen. On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71
This is an article not *specifically* about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-*on* rather than building-*with*, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
It's a mentality issue, modern programming languages provide the material necessary to create innovative environments but their communities just simply does not care. A language designer may introduce a feature in a language that is super useful. Still people may not use it. And let's face it even with Pharo nothing beats a personalized environment, of course personalisation is a lot of work. Hence why people avoid it. Essentially boiling down to cooking your own food instead of getting it from a shop. When you begin to learn how to cook , its kinda sucks, but the more you cook the better it tastes. Of course it takes time to get there and hence why so few people cook. Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope. I once saw a youtube video about a musician using windows sounds (the standard sounds we all know of) to make a very nice music piece. He did all that using multiple instances of windows media player. Just pause reading think about this for a minute. That's the real essence of creativity Use something very limited and come up with something amazing. The software industry is not about creativity for the most part. On the other hand I that work with 3d its amazing how fast super cool new technologies pop around like mushrooms. Every year we have massive improvements in libraries and tools. But the coding for 3d graphics is all about creativity , artists are not very forgiving for ugly GUI, limited features and innovation stagnation. Artists want to be inspired by the tools they use. But then that's the creativity realm. Creativity pays the bills in this case, lack of it , game is not fun, rendering or animation is not fun, you can lose millions. Of course in the creativity realm , there is too much innovation and unless you keep up you are kicked out the door, yesterday. Which brings down to the problem of complexity and how you deal with it. And I don't mean about bad complexity , aka web dev, I am talking about good complexity. Features you cannot ignore because other will use before you and you are left behind etc. On Thu, Oct 12, 2017 at 7:13 PM Peter Fisk <peter.fisk@gmail.com> wrote:
Thanks for posting this.
It is one of the best descriptions of the state of the software industry that I have seen.
On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71
This is an article not *specifically* about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-*on* rather than building-*with*, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
I know about personalization being a lot of work, particularly with Eclipse. I copied the text out of the âsummaryâ page in About Eclipse into Kate, and it was 1233 lines long, lol. I was one of two team leads on what was probably the most complex application Iâve worked on, using VA Java and VA C++ with CORBA to exchange objects (the need to combine both was due to legacy issues). Siemens now owns the application, which was successful enough to bankrupt its closest competitor, but the binary jars in the latest version are still dated 2002, and every addition has been made via .the WS* API we included, which if I remember correctly, uses version 1.x of WebSphere. Iâm a bit surprised it still runs at all tbh, but its security must be horrible by now. Eclipseâs only saving grace is EMF/CDO, and a few projects built on them, IMHO. Sent from Mail for Windows 10 From: Dimitris Chloupis Sent: Thursday, October 12, 2017 2:05 PM To: Any question about pharo is welcome Subject: Re: [Pharo-users] "Building-With versus Building-on" It's a mentality issue, modern programming languages provide the material necessary to create innovative environments but their communities just simply does not care. A language designer may introduce a feature in a language that is super useful. Still people may not use it. And let's face it even with Pharo nothing beats a personalized environment, of course personalisation is a lot of work. Hence why people avoid it.  Essentially boiling down to cooking your own food instead of getting it from a shop. When you begin to learn how to cook , its kinda sucks, but the more you cook the better it tastes. Of course it takes time to get there and hence why so few people cook. Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope. I once saw a youtube video about a musician using windows sounds (the standard sounds we all know of) to make a very nice music piece. He did all that using multiple instances of windows media player. Just pause reading think about this for a minute. That's the real essence of creativity Use something very limited and come up with something amazing. The software industry is not about creativity for the most part. On the other hand I that work with 3d its amazing how fast super cool new technologies pop around like mushrooms. Every year we have massive improvements in libraries and tools. But the coding for 3d graphics is all about creativity , artists are not very forgiving for ugly GUI, limited features and innovation stagnation. Artists want to be inspired by the tools they use. But then that's the creativity realm. Creativity pays the bills in this case, lack of it , game is not fun, rendering or animation is not fun, you can lose millions. Of course in the creativity realm , there is too much innovation and unless you keep up you are kicked out the door, yesterday. Which brings down to the problem of complexity and how you deal with it. And I don't mean about bad complexity , aka web dev, I am talking about good complexity. Features you cannot ignore because other will use before you and you are left behind etc. On Thu, Oct 12, 2017 at 7:13 PM Peter Fisk <peter.fisk@gmail.com> wrote: Thanks for posting this. It is one of the best descriptions of the state of the software industry that I have seen. On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote: https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place. As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it. cheers Andrew Glynn
What is a VA Java ? and a VA C++ ? Call me an idiot or insane but I am in favor of combiding languages, though I only have heard of COBRA never used it. I am a lawyer by profession, I know fellow lawyers still using DOS and QBasic databases and yes under windows ...... sadly very common for businesses here. Ah the pleasures of technology but nothing comes close to the pleasure of rejecting it. On Fri, Oct 13, 2017 at 12:49 AM Andrew Glynn <aglynn42@gmail.com> wrote:
I know about personalization being a lot of work, particularly with Eclipse. I copied the text out of the âsummaryâ page in About Eclipse into Kate, and it was 1233 lines long, lol.
I was one of two team leads on what was probably the most complex application Iâve worked on, using VA Java and VA C++ with CORBA to exchange objects (the need to combine both was due to legacy issues). Siemens now owns the application, which was successful enough to bankrupt its closest competitor, but the binary jars in the latest version are still dated 2002, and every addition has been made via .the WS* API we included, which if I remember correctly, uses version 1.x of WebSphere. Iâm a bit surprised it still runs at all tbh, but its security must be horrible by now.
Eclipseâs only saving grace is EMF/CDO, and a few projects built on them, IMHO.
Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
*From: *Dimitris Chloupis <kilon.alios@gmail.com> *Sent: *Thursday, October 12, 2017 2:05 PM *To: *Any question about pharo is welcome <pharo-users@lists.pharo.org> *Subject: *Re: [Pharo-users] "Building-With versus Building-on"
It's a mentality issue, modern programming languages provide the material necessary to create innovative environments but their communities just simply does not care. A language designer may introduce a feature in a language that is super useful. Still people may not use it.
And let's face it even with Pharo nothing beats a personalized environment, of course personalisation is a lot of work. Hence why people avoid it.
Essentially boiling down to cooking your own food instead of getting it from a shop. When you begin to learn how to cook , its kinda sucks, but the more you cook the better it tastes. Of course it takes time to get there and hence why so few people cook.
Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.
I once saw a youtube video about a musician using windows sounds (the standard sounds we all know of) to make a very nice music piece. He did all that using multiple instances of windows media player. Just pause reading think about this for a minute. That's the real essence of creativity
Use something very limited and come up with something amazing. The software industry is not about creativity for the most part. On the other hand I that work with 3d its amazing how fast super cool new technologies pop around like mushrooms. Every year we have massive improvements in libraries and tools. But the coding for 3d graphics is all about creativity , artists are not very forgiving for ugly GUI, limited features and innovation stagnation. Artists want to be inspired by the tools they use. But then that's the creativity realm. Creativity pays the bills in this case, lack of it , game is not fun, rendering or animation is not fun, you can lose millions.
Of course in the creativity realm , there is too much innovation and unless you keep up you are kicked out the door, yesterday. Which brings down to the problem of complexity and how you deal with it. And I don't mean about bad complexity , aka web dev, I am talking about good complexity. Features you cannot ignore because other will use before you and you are left behind etc.
On Thu, Oct 12, 2017 at 7:13 PM Peter Fisk <peter.fisk@gmail.com> wrote:
Thanks for posting this.
It is one of the best descriptions of the state of the software industry that I have seen.
On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71
This is an article not *specifically* about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-*on* rather than building-*with*, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
VA (VisualAge) for C++ and for Java were two IBM products, the latter being the predecessor to Eclipse.  They were both available on OS/2 and Windows NT variants (2000 mainly), and the C++ version on AIX.  Whichever platform the C++ version was run on, you could target any supported runtime platform.  They were all (along with VisualAge Smalltalk, now maintained and sold by Instantiations and currently at version 9.0, and VisualAge Generator - a Cobol version) written in IBM Smalltalk. I still use VA C++, Java, and occasionally VA Smalltalk, albeit the latter at v. 6.02, in a VM running OS/2 (well, Ecomstation, but it's the same as OS/2 4.5, just updated for more recent hardware - interestingly Arca Noae released a version 5.0, the first official (i.e. called OS/2 version since 2004, in June of this year).  I use them for prototyping and quickly creating cross-VM client/server apps that allow me to generate virtual network traffic without using tons of memory for each VM (much of what I do involves monitoring network protocols such as BGP, and without traffic to exercise the virtualized aggregated service routers, I can't demonstrate the code without carrying 6 75lb servers on my back).  I can run Lotus Domino plus 10-12 server apps written in VA C++ in a VM with one or two vCPU's and 256MB RAM.  On the client, I can run a couple dozen Java clients, connecting either to the C++ servers or Domino, in 128MB.  I put a screenshot of the CPP and Java versions below. For Smalltalk code, Pharo is better than VA, certainly better than the 6.02 version, but for C++ or Java, as long as you don't mind prototyping in an old Java version (lacking the syntactic parmesan, mainly), they're still better than anything else. Both incrementally compile/precompile in-memory on save the way ST does, but that's fairly rare in C++.  Both have ways of writing arbitrary test code similar to a playground, which is also rare in either language. Both also have data access libraries that are far faster and easier to use than JPA, never mind CMP.  VA Java also includes an ancient version of WebSphere for J2EE. CORBA (Common Object Request Broker Architecture) is a complex way of exchanging objects/data between languages.  I've seen interviewers who are/were developers actually shake if I mention it.  However both the C++ and Java versions handled most of the details without any fuss.   All the build/deploy tooling was in the environment. With the app I mentioned, lacking those environments it's maybe not impossible, but likely at least close to 'infinitely improbable' to get the thing built properly, never mind actually change the code and configs.  The junior developer from that project is a friend of mine's little brother, he's still at the company that paid to have it built, and it's now 15 years later, just so it will keep running. Ironically he was fresh out of school at the time and basically worked as a gopher, he didn't write or even debug a line of code.  After we finished the project I taught him how to modify/build it using those tools, and they're still the only thing he can use.  cheersAndrew  -----Original Message----- Date: Fri, 13 Oct 2017 07:26:13 +0000Subject: Re: [Pharo-users] "Building-With versus Building-on"To: Any question about pharo is welcome <pharo-users@lists.pharo.org>Reply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org>From: Dimitris Chloupis <kilon. alios@gmail.com>What is a VA Java ? and a VA C++ ? Call me an idiot or insane but I am in favor of combiding languages, though I only have heard of COBRA never used it. I am a lawyer by profession, I know fellow lawyers still using DOS and QBasic databases and yes under windows ...... sadly very common for businesses here. Ah the pleasures of technology but nothing comes close to the pleasure of rejecting it. On Fri, Oct 13, 2017 at 12:49 AM Andrew Glynn <aglynn42@gmail.com> wrote:
I know about personalization being a lot of work, particularly with Eclipse. I copied the text out of the âsummaryâ page in About Eclipse into Kate, and it was 1233 lines long, lol.   I was one of two team leads on what was probably the most complex application Iâve worked on, using VA Java and VA C++ with CORBA to exchange objects (the need to combine both was due to legacy issues). Siemens now owns the application, which was successful enough to bankrupt its closest competitor, but the binary jars in the latest version are still dated 2002, and every addition has been made via .the WS* API we included, which if I remember correctly, uses version 1.x of WebSphere. Iâm a bit surprised it still runs at all tbh, but its security must be horrible by now.  Eclipseâs only saving grace is EMF/CDO, and a few projects built on them, IMHO.  Sent from Mail for Windows 10  From: Dimitris Chloupis Sent: Thursday, October 12, 2017 2:05 PM To: Any question about pharo is welcome Subject: Re: [Pharo-users] "Building-With versus Building-on" It's a mentality issue, modern programming languages provide the material necessary to create innovative environments but their communities just simply does not care. A language designer may introduce a feature in a language that is super useful. Still people may not use it.  And let's face it even with Pharo nothing beats a personalized environment, of course personalisation is a lot of work. Hence why people avoid it.   Essentially boiling down to cooking your own food instead of getting it from a shop. When you begin to learn how to cook , its kinda sucks, but the more you cook the better it tastes. Of course it takes time to get there and hence why so few people cook.  Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.  I once saw a youtube video about a musician using windows sounds (the standard sounds we all know of) to make a very nice music piece. He did all that using multiple instances of windows media player. Just pause reading think about this for a minute. That's the real essence of creativity  Use something very limited and come up with something amazing. The software industry is not about creativity for the most part. On the other hand I that work with 3d its amazing how fast super cool new technologies pop around like mushrooms. Every year we have massive improvements in libraries and tools. But the coding for 3d graphics is all about creativity , artists are not very forgiving for ugly GUI, limited features and innovation stagnation. Artists want to be inspired by the tools they use. But then that's the creativity realm. Creativity pays the bills in this case, lack of it , game is not fun, rendering or animation is not fun, you can lose millions.  Of course in the creativity realm , there is too much innovation and unless you keep up you are kicked out the door, yesterday. Which brings down to the problem of complexity and how you deal with it. And I don't mean about bad complexity , aka web dev, I am talking about good complexity. Features you cannot ignore because other will use before you and you are left behind etc.   On Thu, Oct 12, 2017 at 7:13 PM Peter Fisk <peter.fisk@gmail.com> wrote: Thanks for posting this.  It is one of the best descriptions of the state of the software industry that I have seen.   On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote: https://medium.com/@dasein42/building-with-versus-building-on-c51aa30 34c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place.  As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.  cheersAndrew Glynn  Â
Thanks for the insight Andrew , I heard of VisualAge Smalltalk but not of C++ and Java, very interesting :) On Fri, Oct 13, 2017 at 1:44 PM Andrew Glynn <aglynn42@gmail.com> wrote:
VA (VisualAge) for C++ and for Java were two IBM products, the latter being the predecessor to Eclipse. They were both available on OS/2 and Windows NT variants (2000 mainly), and the C++ version on AIX. Whichever platform the C++ version was run on, you could target any supported runtime platform. They were all (along with VisualAge Smalltalk, now maintained and sold by Instantiations and currently at version 9.0, and VisualAge Generator - a Cobol version) written in IBM Smalltalk.
I still use VA C++, Java, and occasionally VA Smalltalk, albeit the latter at v. 6.02, in a VM running OS/2 (well, Ecomstation, but it's the same as OS/2 4.5, just updated for more recent hardware - interestingly Arca Noae released a version 5.0, the first official (i.e. called OS/2 version since 2004, in June of this year).
I use them for prototyping and quickly creating cross-VM client/server apps that allow me to generate virtual network traffic without using tons of memory for each VM (much of what I do involves monitoring network protocols such as BGP, and without traffic to exercise the virtualized aggregated service routers, I can't demonstrate the code without carrying 6 75lb servers on my back).
I can run Lotus Domino plus 10-12 server apps written in VA C++ in a VM with one or two vCPU's and 256MB RAM. On the client, I can run a couple dozen Java clients, connecting either to the C++ servers or Domino, in 128MB. I put a screenshot of the CPP and Java versions below.
For Smalltalk code, Pharo is better than VA, certainly better than the 6.02 version, but for C++ or Java, as long as you don't mind prototyping in an old Java version (lacking the syntactic parmesan, mainly), they're still better than anything else. Both incrementally compile/precompile in-memory on save the way ST does, but that's fairly rare in C++. Both have ways of writing arbitrary test code similar to a playground, which is also rare in either language. Both also have data access libraries that are far faster and easier to use than JPA, never mind CMP. VA Java also includes an ancient version of WebSphere for J2EE.
CORBA (Common Object Request Broker Architecture) is a complex way of exchanging objects/data between languages. I've seen interviewers who are/were developers actually shake if I mention it. However both the C++ and Java versions handled most of the details without any fuss.
All the build/deploy tooling was in the environment. With the app I mentioned, lacking those environments it's maybe not *impossible*, but likely at least close to 'infinitely improbable' to get the thing built properly, never mind actually change the code and configs. The junior developer from that project is a friend of mine's little brother, he's *still* at the company that paid to have it built, and it's now 15 years later, just so it will keep running. Ironically he was fresh out of school at the time and basically worked as a gopher, he didn't write or even debug a line of code. After we finished the project I taught him how to modify/build it using those tools, and they're still the only thing he can use.
cheers Andrew
-----Original Message-----
*Date*: Fri, 13 Oct 2017 07:26:13 +0000 *Subject*: Re: [Pharo-users] "Building-With versus Building-on" *To*: Any question about pharo is welcome <pharo-users@lists.pharo.org <Any%20question%20about%20pharo%20is%20welcome%20%3cpharo-users@lists.pharo.org%3e>
Reply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org
*From*: Dimitris Chloupis <kilon.alios@gmail.com <Dimitris%20Chloupis%20%3ckilon.alios@gmail.com%3e>> What is a VA Java ? and a VA C++ ?
Call me an idiot or insane but I am in favor of combiding languages, though I only have heard of COBRA never used it.
I am a lawyer by profession, I know fellow lawyers still using DOS and QBasic databases and yes under windows ...... sadly very common for businesses here. Ah the pleasures of technology but nothing comes close to the pleasure of rejecting it.
On Fri, Oct 13, 2017 at 12:49 AM Andrew Glynn <aglynn42@gmail.com> wrote:
I know about personalization being a lot of work, particularly with Eclipse. I copied the text out of the âsummaryâ page in About Eclipse into Kate, and it was 1233 lines long, lol.
I was one of two team leads on what was probably the most complex application Iâve worked on, using VA Java and VA C++ with CORBA to exchange objects (the need to combine both was due to legacy issues). Siemens now owns the application, which was successful enough to bankrupt its closest competitor, but the binary jars in the latest version are still dated 2002, and every addition has been made via .the WS* API we included, which if I remember correctly, uses version 1.x of WebSphere. Iâm a bit surprised it still runs at all tbh, but its security must be horrible by now.
Eclipseâs only saving grace is EMF/CDO, and a few projects built on them, IMHO.
Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
*From: *Dimitris Chloupis <kilon.alios@gmail.com> *Sent: *Thursday, October 12, 2017 2:05 PM *To: *Any question about pharo is welcome <pharo-users@lists.pharo.org> *Subject: *Re: [Pharo-users] "Building-With versus Building-on"
It's a mentality issue, modern programming languages provide the material necessary to create innovative environments but their communities just simply does not care. A language designer may introduce a feature in a language that is super useful. Still people may not use it.
And let's face it even with Pharo nothing beats a personalized environment, of course personalisation is a lot of work. Hence why people avoid it.
Essentially boiling down to cooking your own food instead of getting it from a shop. When you begin to learn how to cook , its kinda sucks, but the more you cook the better it tastes. Of course it takes time to get there and hence why so few people cook.
Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.
I once saw a youtube video about a musician using windows sounds (the standard sounds we all know of) to make a very nice music piece. He did all that using multiple instances of windows media player. Just pause reading think about this for a minute. That's the real essence of creativity
Use something very limited and come up with something amazing. The software industry is not about creativity for the most part. On the other hand I that work with 3d its amazing how fast super cool new technologies pop around like mushrooms. Every year we have massive improvements in libraries and tools. But the coding for 3d graphics is all about creativity , artists are not very forgiving for ugly GUI, limited features and innovation stagnation. Artists want to be inspired by the tools they use. But then that's the creativity realm. Creativity pays the bills in this case, lack of it , game is not fun, rendering or animation is not fun, you can lose millions.
Of course in the creativity realm , there is too much innovation and unless you keep up you are kicked out the door, yesterday. Which brings down to the problem of complexity and how you deal with it. And I don't mean about bad complexity , aka web dev, I am talking about good complexity. Features you cannot ignore because other will use before you and you are left behind etc.
On Thu, Oct 12, 2017 at 7:13 PM Peter Fisk <peter.fisk@gmail.com> wrote:
Thanks for posting this.
It is one of the best descriptions of the state of the software industry that I have seen.
On Thu, Oct 12, 2017 at 11:50 AM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71
This is an article not *specifically* about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-*on* rather than building-*with*, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
Am 12.10.17 um 20:04 schrieb Dimitris Chloupis:
Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.
Eclipse was never implemented in Smalltalk. Its predecessor, VisualAge for Java (and parts of the other VisualAge family members) was. Eclipse was started as a replacement for VisualAge for Java because Java develoers didn't like VisualAge for its emulation of an image based environement. It was a very nice IDE for Java (the best I've known), but it wasn't a nice home for developers who think in files. These days Eclipse, IMO, does emulate an image as good as possible, but nobody cares anymore, because it hides the fact and lets you think in files ;-) Joachim
I stand corrected On Sat, 14 Oct 2017 at 08:11, jtuchel@objektfabrik.de < jtuchel@objektfabrik.de> wrote:
Am 12.10.17 um 20:04 schrieb Dimitris Chloupis:
Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.
Eclipse was never implemented in Smalltalk. Its predecessor, VisualAge for Java (and parts of the other VisualAge family members) was. Eclipse was started as a replacement for VisualAge for Java because Java develoers didn't like VisualAge for its emulation of an image based environement. It was a very nice IDE for Java (the best I've known), but it wasn't a nice home for developers who think in files. These days Eclipse, IMO, does emulate an image as good as possible, but nobody cares anymore, because it hides the fact and lets you think in files ;-)
Joachim
The problem is that it takes 1233 pages of config, and that's the summary page of my config, and it uses 15GB RAM, on my laptop, lol. On Sat, Oct 14, 2017 at 1:10 AM, jtuchel@objektfabrik.de < jtuchel@objektfabrik.de> wrote:
Am 12.10.17 um 20:04 schrieb Dimitris Chloupis:
Eclispe , which I will disagree with your that is not the worst IDE, started as a smalltalk IDE and then it got Eclipsed. I am sure those people had a "build on" environment , still it got messy. We can blame porting to Java, but can we really blame Java for the mess that is called "Eclipse".... ehhhh.... nope.
Eclipse was never implemented in Smalltalk. Its predecessor, VisualAge
for Java (and parts of the other VisualAge family members) was. Eclipse was started as a replacement for VisualAge for Java because Java develoers didn't like VisualAge for its emulation of an image based environement. It was a very nice IDE for Java (the best I've known), but it wasn't a nice home for developers who think in files. These days Eclipse, IMO, does emulate an image as good as possible, but nobody cares anymore, because it hides the fact and lets you think in files ;-)
Joachim
-- Andrew Glynn 512-818-3291
Thanks Andrew I read it fast and I will reread it. It is really interesting to me because I never took the time to understand "worse is better". On Thu, Oct 12, 2017 at 5:50 PM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71
This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
Hi Andrew, Stephane, thanks for the read. It was interesting, albeit a bit confusing at times. I do like your evaluation of the thesis. 2017-10-12 23:10 GMT+02:00 Stephane Ducasse <stepharo.self@gmail.com>:
Thanks Andrew I read it fast and I will reread it. It is really interesting to me because I never took the time to understand "worse is better".
Reading through "worse is better", and the follow-up "worse is better is worse" by the same author, I'm not sure there is much to understand ;) Apart if you want to study how a misunderstood quote can become a driving force in software development... Thierry
On Thu, Oct 12, 2017 at 5:50 PM, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building- on-c51aa3034c71
This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place.
As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheers
Andrew Glynn
On 10/12/17, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034 c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place. As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheersAndrew Glynn
Thank you for this comprehensive report. Do you have a reference for more info about the epidemiology project which was completed in only a months time? [1] -- Hannes [1] <citation> After Google spent millions failing to solve the epedemiology of the Ebola outbreak, an application built with it, or rather on it, by one developer in an extremely short timespan (under a month), successfully predicted the path and allowed it to be stopped by vaccinating those in the most likely path. Google themselves took notice, and their Dart language, while using syntax similar to the JavaScript many of their developers are familiar with, uses the object model from the OSS Smalltalk. The problem is not simply a matter of how much engineers enjoy their work, but it can be a life or death matter, as it was in the case of the Toyota microcode. </citation>
On Sat, Oct 14, 2017 at 11:50 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
On 10/12/17, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034 c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place. As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheersAndrew Glynn
Thank you for this comprehensive report.
Do you have a reference for more info about the epidemiology project which was completed in only a months time? [1]
-- Hannes
[1] <citation> After Google spent millions failing to solve the epedemiology of the Ebola outbreak, an application built with it, or rather on it, by one developer in an extremely short timespan (under a month), successfully predicted the path and allowed it to be stopped by vaccinating those in the most likely path. Google themselves took notice, and their Dart language, while using syntax similar to the JavaScript many of their developers are familiar with, uses the object model from the OSS Smalltalk. The problem is not simply a matter of how much engineers enjoy their work, but it can be a life or death matter, as it was in the case of the Toyota microcode. </citation>
â Yes I'm also interested by this. Never heard this before :-)
-- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC/UY1) "Programs must be written for people to read, and only incidentally for machines to execute."http://www.doesnotunderstand.org/
Hello Serge https://ummisco.github.io/kendrick/ https://github.com/UMMISCO/kendrick :-) Maybe you can refer to a report how it was used? --Hannes On 10/14/17, Serge Stinckwich <serge.stinckwich@gmail.com> wrote:
On Sat, Oct 14, 2017 at 11:50 AM, H. Hirzel <hannes.hirzel@gmail.com> wrote:
On 10/12/17, Andrew Glynn <aglynn42@gmail.com> wrote:
https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034 c71 This is an article not specifically about Pharo, rather on the state of the industry in general and how it got that way, but positing Pharo as a way to learn building-on rather than building-with, where in the latter case on every project you start at essentially the same place. As a result it does put in front of people a fair amount of info on Pharo, and challenges them to try it.
cheersAndrew Glynn
Thank you for this comprehensive report.
Do you have a reference for more info about the epidemiology project which was completed in only a months time? [1]
-- Hannes
[1] <citation> After Google spent millions failing to solve the epedemiology of the Ebola outbreak, an application built with it, or rather on it, by one developer in an extremely short timespan (under a month), successfully predicted the path and allowed it to be stopped by vaccinating those in the most likely path. Google themselves took notice, and their Dart language, while using syntax similar to the JavaScript many of their developers are familiar with, uses the object model from the OSS Smalltalk. The problem is not simply a matter of how much engineers enjoy their work, but it can be a life or death matter, as it was in the case of the Toyota microcode. </citation>
â Yes I'm also interested by this. Never heard this before :-)
-- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC/UY1) "Programs must be written for people to read, and only incidentally for machines to execute."http://www.doesnotunderstand.org/
I think Laurent wrote something to export classes and documentation as html form to let user browse it. I have not idea where it is though. Hilaire Le 06/10/2017 à 14:54, horrido a écrit :
*Then show me a link of the free, maintained reference documentation for the classes that form âthe core libraryâ, like this one for Python (https://docs.python.org/3/library/index.html)*
-- Dr. Geo http://drgeo.eu
Maybe this [1] or this [2] (the two might be the same thing) 1. http://forum.world.st/Online-Pharo-Documentation-tp3468690.html 2. http://forum.world.st/webdoc-tt3654967.html ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 6 Oct 2017, at 19:57, Sean P. DeNigris <sean@clipperadams.com> wrote:
Maybe this [1] or this [2] (the two might be the same thing)
1. http://forum.world.st/Online-Pharo-Documentation-tp3468690.html 2. http://forum.world.st/webdoc-tt3654967.html
http://files.pharo.org/doc/4.0/#classList=package/Kernel.html&packageList=pa... This is only up to Pharo 4. But the point remains, given an image and all our tools, why go to the web.
To get dead objects while we have them live :) On Fri, Oct 6, 2017 at 8:48 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
On 6 Oct 2017, at 19:57, Sean P. DeNigris <sean@clipperadams.com> wrote:
Maybe this [1] or this [2] (the two might be the same thing)
1. http://forum.world.st/Online-Pharo-Documentation-tp3468690.html 2. http://forum.world.st/webdoc-tt3654967.html
http://files.pharo.org/doc/4.0/#classList=package/Kernel.html&packageList=pa...
This is only up to Pharo 4.
But the point remains, given an image and all our tools, why go to the web.
Yes. We have tools that are *designed* for reading code and understanding it. But, let's have a ton of dead bits instead. On Oct 6, 2017, 15:35, at 15:35, Stephane Ducasse <stepharo.self@gmail.com> wrote:
To get dead objects while we have them live :)
On Fri, Oct 6, 2017 at 8:48 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
On 6 Oct 2017, at 19:57, Sean P. DeNigris <sean@clipperadams.com>
wrote:
Maybe this [1] or this [2] (the two might be the same thing)
1. http://forum.world.st/Online-Pharo-Documentation-tp3468690.html 2. http://forum.world.st/webdoc-tt3654967.html
http://files.pharo.org/doc/4.0/#classList=package/Kernel.html&packageList=pa...
This is only up to Pharo 4.
But the point remains, given an image and all our tools, why go to
the web.
Sven Van Caekenberghe-2 wrote
But the point remains, given an image and all our tools, why go to the web.
It seems like the value would be more as a PR tool than a development tool. ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP. And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less. iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment. To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality. For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why. But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!! I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again. I really hope that we take this further though. On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding. Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
To be honest, I didn't know you could do live coding in Python, Ruby, C/C++. I had only ever heard of "hot swapping" in Java. At any rate, I'd be surprised if live coding in these languages was as easy and convenient as in Pharo/Smalltalk. Sven Van Caekenberghe-2 wrote
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <
kilon.alios@
> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <
horrido.hobbies@
> wrote:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...;
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Well any code you execute right now is to a degree live code. DLL are dynamically loaded libraries which means you reload code real time. DLLs are everywhere and of course even Pharo heavily relies on them. Yes in Python live coding is as easy , I already explained in previous post. On Sat, 7 Oct 2017 at 01:51, horrido <horrido.hobbies@gmail.com> wrote:
To be honest, I didn't know you could do live coding in Python, Ruby, C/C++. I had only ever heard of "hot swapping" in Java.
At any rate, I'd be surprised if live coding in these languages was as easy and convenient as in Pharo/Smalltalk.
Sven Van Caekenberghe-2 wrote
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <
kilon.alios@
> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making.
Sure
it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <
horrido.hobbies@
> wrote:
Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4... ;
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
To be honest, I didn't know you could do live coding in Python, Ruby, C/C++. I had only ever heard of "hot swapping" in Java.
Me neither :) Do not worry and let us continue to work on making Pharo better. I did not know that a.out and core.dmp where live programming :) Stef
At any rate, I'd be surprised if live coding in these languages was as easy and convenient as in Pharo/Smalltalk.
Me too but they are catching up so let us continue to make Pharo super cool.
On 7 Oct 2017, at 10:15, Stephane Ducasse <stepharo.self@gmail.com> wrote:
To be honest, I didn't know you could do live coding in Python, Ruby, C/C++. I had only ever heard of "hot swapping" in Java.
Me neither :) Do not worry and let us continue to work on making Pharo better. I did not know that a.out and core.dmp where live programming :)
With gdb and assembler you can do live coding & OOP too ;-)
Stef
At any rate, I'd be surprised if live coding in these languages was as easy and convenient as in Pharo/Smalltalk.
Me too but they are catching up so let us continue to make Pharo super cool.
Well live coding is a simple process of reloading code. In Pharo the VM recompiles a method and replace itâs old instance with a new one while code executes. Python you basically reload the module. Because Python does not compile per method but per module which means executing code lively. This happens because when you import a module in Python, Python does nothing special than executing the source code. Not before compilation but during execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule) The next challenge in live coding is capture the error and not allowing the app to exit, that is 2 lines of code and is a python exception. Python exceptions are heavily used in Python to capture errors. Debugging is up to the debugger that Python provides as a library with conditional breakpoints and fully integrated . You can of course ask at any point for any kind of context, global , local, arguments , instance and class variables. The debugger also comes with its own REPL. Again everything is an object. OOP wise , in Python everything is an object including procedure. Procedures like blocks in Pharo are objects with one method. Procedures are anonymous but if the name really bothers you you can use lamba functions. Python has bigger syntax than Pharo but anything can be implemented as an object. Global variables are objects, imported modules are objects etc. Reflection wise , Python is a fully reflective an object can ask itself or others about its live state, methods, bytecode and source code. Meta programming wiseython allows for fully manipulation of objects down to bytecode level. Python has no need for traits because it allows the live replacement of its methods with procedures or methods from other objects. Finally like Pharo , Python comes with a very powerful AST library capable of fully manipulating the syntax . HyLang is a Lisp made in Python that compiles to Python bytecode and can use any Python library. The one thing Python cannot do at least out of the box is privacy. In Pharo everything is private , methods hide behind messages , variables behind methods. In Python everything is public and privacy is annotated in naming only using double underscores. Python also has properties which are methods that override variable assignment , similarly how we use getter and sender methods for object variables in Pharo. What Python recently got has been optional static types but I am not sure if they are real static types , because I am not a fan of static typing anyway. I am no expert in OOP but I cannot say I have found a thing that Pharo can do that Python canât or is more difficult. Python obviously is very heavily inspired by Smalltalk . The very brief look I gave Ruby looked to me that it is even closer to Smalltalk. On Sat, 7 Oct 2017 at 01:17, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi, On 06/10/17 20:41, Dimitris Chloupis wrote:
I am no expert in OOP but I cannot say I have found a thing that Pharo can do that Python canât or is more difficult. Python obviously is very heavily inspired by Smalltalk .
I can find one: creating an environment for reproducible research and literate computing (interactive documentation). It can be done on both, but is harder and a lot more complicated in Python that in Pharo, as experience have shown [1] [1] http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-init... Cheers, Offray
Again very generic statements , and I see you refer to tools and libraries instead of OOP. We talking here Pharo vs Python on the language level because Python obviously does not come with an IDE. But then Pharo does not come with literate programming tools or libraries as well. I rather not go down the rabbit hole of third party libraries because obviously I cannot participate in a discussion about libraries and areas of coding, I know nothing about. Plus Python has countless of libraries which makes a very longer discussion even if I was familiar with them and Pharo has much less but still quite a lot of libraries as well. On Sat, 7 Oct 2017 at 04:46, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
Hi,
On 06/10/17 20:41, Dimitris Chloupis wrote:
I am no expert in OOP but I cannot say I have found a thing that Pharo can do that Python canât or is more difficult. Python obviously is very heavily inspired by Smalltalk .
I can find one: creating an environment for reproducible research and literate computing (interactive documentation). It can be done on both, but is harder and a lot more complicated in Python that in Pharo, as experience have shown [1]
[1]
http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-init...
Cheers,
Offray
On 06/10/17 21:00, Dimitris Chloupis wrote:
Again very generic statements , and I see you refer to tools and libraries instead of OOP. We talking here Pharo vs Python on the language level because Python obviously does not come with an IDE. But then Pharo does not come with literate programming tools or libraries as well.
No. We were talking about things "that Pharo can do that Python can't do or is most difficult". And, for me that includes the (community & computing) environment provided by Pharo that allow you to go from and idea to its implementation. In my case the idea was to provide an experience which mix outlining (a la Leo Editor) with literate computing (a la Jupyter, IPython) [1]. Even if the original pieces where already there in Python, mixing them was a nighmare (at least 3 years ago) and Pharo was more empowering for going from idea to prototype and now Pharo has literate *computing* (not literate programming [2]) tools. Grafoscopio is one of them. GT Documenter, in alpha now, is promising. You can not have a single document for complex books in Jupyter. You need to split/storage a single work in a "pile of files" metaphor. You can, today, with Grafoscopio put a 300 pages long PDF in a single notebook. So yes, there are things that are more complex in one technology that in other (of course all computer languages are the same at enough distance, because all them are Turing complete and all that stuff) [1] http://mutabit.com/offray/static/blog/output/posts/on-deepness-and-complexit... [2] http://blog.fperez.org/2013/04/literate-computing-and-computational.html
I rather not go down the rabbit hole of third party libraries because obviously I cannot participate in a discussion about libraries and areas of coding, I know nothing about. Plus Python has countless of libraries which makes a very longer discussion even if I was familiar with them and Pharo has much less but still quite a lot of libraries as well.
One of the advantages of being in a community is learning from others experiences. You said that in your experience you have not found a place where Python were more difficult that in Pharo. I have shown that in *my* experience there are. And agree, is unwise to discuss about places where one has no experience, when is better to learn from those who have it. Cheers, Offray
Well I was refering to live coding itself, but you are correct, I have not tried combining with literate coding hence why I was curious about the difficulties you ecountered. I did not know that you focused so much Grafoscopio on iterate coding. Thanks for enlighting me. I never implied that Python was easier in everything compared to Pharo. Afterall kinda misses a huge chunk which is the IDE itself. There lies the challange of live coding as I initially said that we each use it in a diffirent way. Thanks for the link also very enlighting and it is what i wanted, an actual use case. On Sat, Oct 7, 2017 at 5:49 PM Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
On 06/10/17 21:00, Dimitris Chloupis wrote:
Again very generic statements , and I see you refer to tools and libraries instead of OOP. We talking here Pharo vs Python on the language level because Python obviously does not come with an IDE. But then Pharo does not come with literate programming tools or libraries as well.
No. We were talking about things "that Pharo can do that Python can't do or is most difficult". And, for me that includes the (community & computing) environment provided by Pharo that allow you to go from and idea to its implementation. In my case the idea was to provide an experience which mix outlining (a la Leo Editor) with literate computing (a la Jupyter, IPython) [1]. Even if the original pieces where already there in Python, mixing them was a nighmare (at least 3 years ago) and Pharo was more empowering for going from idea to prototype and now Pharo has literate *computing* (not literate programming [2]) tools. Grafoscopio is one of them. GT Documenter, in alpha now, is promising. You can not have a single document for complex books in Jupyter. You need to split/storage a single work in a "pile of files" metaphor. You can, today, with Grafoscopio put a 300 pages long PDF in a single notebook. So yes, there are things that are more complex in one technology that in other (of course all computer languages are the same at enough distance, because all them are Turing complete and all that stuff)
[1]
http://mutabit.com/offray/static/blog/output/posts/on-deepness-and-complexit... [2] http://blog.fperez.org/2013/04/literate-computing-and-computational.html
I rather not go down the rabbit hole of third party libraries because obviously I cannot participate in a discussion about libraries and areas of coding, I know nothing about. Plus Python has countless of libraries which makes a very longer discussion even if I was familiar with them and Pharo has much less but still quite a lot of libraries as well.
One of the advantages of being in a community is learning from others experiences. You said that in your experience you have not found a place where Python were more difficult that in Pharo. I have shown that in *my* experience there are. And agree, is unwise to discuss about places where one has no experience, when is better to learn from those who have it.
Cheers,
Offray
Ok. Glad to help. In the thread I mentioned some of the specific difficulties I had implementing Grafoscopio's idea in Python[1] (in one word: fragmentation, of technologies and computing paradigms) [1] http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-init... Cheers, Offray On 07/10/17 10:17, Dimitris Chloupis wrote:
Well I was refering to live coding itself, but you are correct, I have not tried combining with literate coding hence why I was curious about the difficulties you ecountered. I did not know that you focused so much Grafoscopio on iterate coding. Thanks for enlighting me.Â
I never implied that Python was easier in everything compared to Pharo. Afterall kinda misses a huge chunk which is the IDE itself.Â
There lies the challange of live coding as I initially said that we each use it in a diffirent way. Thanks for the link also very enlighting and it is what i wanted, an actual use case.Â
On Sat, Oct 7, 2017 at 5:49 PM Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>> wrote:
On 06/10/17 21:00, Dimitris Chloupis wrote: > Again very generic statements , and I see you refer to tools and > libraries instead of OOP. We talking here Pharo vs Python on the > language level because Python obviously does not come with an IDE. But > then Pharo does not come with literate programming tools or libraries > as well.
No. We were talking about things "that Pharo can do that Python can't do or is most difficult". And, for me that includes the (community & computing) environment provided by Pharo that allow you to go from and idea to its implementation. In my case the idea was to provide an experience which mix outlining (a la Leo Editor) with literate computing (a la Jupyter, IPython) [1]. Even if the original pieces where already there in Python, mixing them was a nighmare (at least 3 years ago) and Pharo was more empowering for going from idea to prototype and now Pharo has literate *computing* (not literate programming [2]) tools. Grafoscopio is one of them. GT Documenter, in alpha now, is promising. You can not have a single document for complex books in Jupyter. You need to split/storage a single work in a "pile of files" metaphor. You can, today, with Grafoscopio put a 300 pages long PDF in a single notebook. So yes, there are things that are more complex in one technology that in other (of course all computer languages are the same at enough distance, because all them are Turing complete and all that stuff)
[1] http://mutabit.com/offray/static/blog/output/posts/on-deepness-and-complexit... [2] http://blog.fperez.org/2013/04/literate-computing-and-computational.html
> > I rather not go down the rabbit hole of third party libraries because > obviously I cannot participate in a discussion about libraries and > areas of coding, I know nothing about. Plus Python has countless of > libraries which makes a very longer discussion even if I was familiar > with them and Pharo has much less but still quite a lot of libraries > as well.
One of the advantages of being in a community is learning from others experiences. You said that in your experience you have not found a place where Python were more difficult that in Pharo. I have shown that in *my* experience there are. And agree, is unwise to discuss about places where one has no experience, when is better to learn from those who have it.
Cheers,
Offray
On Sat, Oct 07, 2017 at 01:41:17AM +0000, Dimitris Chloupis wrote:
execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule)
AFAIK in Python when you modify and reload source, existing instances are not "reshaped" to the modified code. Not live enough. Of course with Python objects it is easy to add per-instance inst-vars, but still this needs to be scripted and doesn't come free with the programming environment. Pierce
Yes sorry for not making this clear. I was wrong in this case. A module reload will only replace class objects not instance objects. So if you create a new instance after the reload it will have the updated version but your old instance would not. I try to test something before I make a claim but in this case I failed because I forgot the obvious. The tiny fact I was reinitialising my objects in the python project I am currently using live coding, so of course my instances were updating instantenously because I was in a loop that was recreating them every few milliseconds. When webwarrior mentioned this it draw my supisions and I tested it outside my code in the interpreter and it became obvious I was wrong. This why my reply I dont claim he is wrong and I am talking about injecting methods to old objects. I have no problem admitting when I am wrong but in this case maybe I was not clear enough considering I am responsible for exploding this thread , I hope in a good way. So yes its possible to do in Python but no it is not coming already available to you, so you can restrain yourself from abandoning Pharo for Python ;) Python is not there yet. I still keep the opinion that is easy to do , method injection is just regular assignment, you cannot get any easier than assignment but this means you have to keep track of the instances of a class and repace their methods. The good news is that if you replace just the methods and not the entire object , you can keep the references to the old instance because keeping track of the references as well would be trickier. So this way you would not brake your references and having to rebuild them to point to a new instance because you continue to use the old instance but with updated methods. You can do this also with adding / removing / editing variables and/or methods. So it does have a wide application. Python can give you back the references to and from an object (via gc module) but the problem is that when an object is created its already referenced by many internal stuff so it can get messy soon. Plus Python is not exactly a high performance language , unless you use third party libraries focusing on performance (basically C libraries wrapped for Python). In my case its easy to do because I care about live coding my own project and do not care about code outside of it, because I wont be changing it anyway. But if I had to do this the Pharo way , providing a full live enviroment it would be easy because I would have to find a mechanism to accomodate for tons of Python code that does not follow live coding standards by a long margin. So my goal is not to come up with full blown live coding enviroment like Pharo does, that is simply not possible because there is like a ton of python code out there and I am sure there so many scenarios that live coding in python can go wrong that I am not even aware of. But if live code is only for my code and my code alone , I dont think I will have any major issues. Afterall even when I use Pharo I use live coding strictly for my code and rarely touch the enviroment with the exception of once messing with UI theme classes. But then again I am so new to this that at any point I may come up for a solution about this too, who knows :) On Wed, Oct 11, 2017 at 7:05 PM Pierce Ng <pierce@samadhiweb.com> wrote:
On Sat, Oct 07, 2017 at 01:41:17AM +0000, Dimitris Chloupis wrote:
execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule)
AFAIK in Python when you modify and reload source, existing instances are not "reshaped" to the modified code. Not live enough. Of course with Python objects it is easy to add per-instance inst-vars, but still this needs to be scripted and doesn't come free with the programming environment.
Pierce
major mistake i meant to say "providing a full live enviroment it would NOT be easy because I would have to find a mechanism to accomodate for tons of Python code that does not follow live coding standards " On Wed, Oct 11, 2017 at 8:08 PM Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Yes sorry for not making this clear. I was wrong in this case. A module reload will only replace class objects not instance objects. So if you create a new instance after the reload it will have the updated version but your old instance would not.
I try to test something before I make a claim but in this case I failed because I forgot the obvious. The tiny fact I was reinitialising my objects in the python project I am currently using live coding, so of course my instances were updating instantenously because I was in a loop that was recreating them every few milliseconds.
When webwarrior mentioned this it draw my supisions and I tested it outside my code in the interpreter and it became obvious I was wrong. This why my reply I dont claim he is wrong and I am talking about injecting methods to old objects.
I have no problem admitting when I am wrong but in this case maybe I was not clear enough considering I am responsible for exploding this thread , I hope in a good way.
So yes its possible to do in Python but no it is not coming already available to you, so you can restrain yourself from abandoning Pharo for Python ;)
Python is not there yet. I still keep the opinion that is easy to do , method injection is just regular assignment, you cannot get any easier than assignment but this means you have to keep track of the instances of a class and repace their methods. The good news is that if you replace just the methods and not the entire object , you can keep the references to the old instance because keeping track of the references as well would be trickier. So this way you would not brake your references and having to rebuild them to point to a new instance because you continue to use the old instance but with updated methods. You can do this also with adding / removing / editing variables and/or methods. So it does have a wide application. Python can give you back the references to and from an object (via gc module) but the problem is that when an object is created its already referenced by many internal stuff so it can get messy soon. Plus Python is not exactly a high performance language , unless you use third party libraries focusing on performance (basically C libraries wrapped for Python).
In my case its easy to do because I care about live coding my own project and do not care about code outside of it, because I wont be changing it anyway. But if I had to do this the Pharo way , providing a full live enviroment it would be easy because I would have to find a mechanism to accomodate for tons of Python code that does not follow live coding standards by a long margin. So my goal is not to come up with full blown live coding enviroment like Pharo does, that is simply not possible because there is like a ton of python code out there and I am sure there so many scenarios that live coding in python can go wrong that I am not even aware of. But if live code is only for my code and my code alone , I dont think I will have any major issues. Afterall even when I use Pharo I use live coding strictly for my code and rarely touch the enviroment with the exception of once messing with UI theme classes.
But then again I am so new to this that at any point I may come up for a solution about this too, who knows :)
On Wed, Oct 11, 2017 at 7:05 PM Pierce Ng <pierce@samadhiweb.com> wrote:
On Sat, Oct 07, 2017 at 01:41:17AM +0000, Dimitris Chloupis wrote:
execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule)
AFAIK in Python when you modify and reload source, existing instances are not "reshaped" to the modified code. Not live enough. Of course with Python objects it is easy to add per-instance inst-vars, but still this needs to be scripted and doesn't come free with the programming environment.
Pierce
On Thu, Oct 12, 2017 at 1:08 AM, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Yes sorry for not making this clear. I was wrong in this case. A module reload will only replace class objects not instance objects. So if you create a new instance after the reload it will have the updated version but your old instance would not.
I try to test something before I make a claim but in this case I failed because I forgot the obvious. The tiny fact I was reinitialising my objects in the python project I am currently using live coding, so of course my instances were updating instantenously because I was in a loop that was recreating them every few milliseconds.
When webwarrior mentioned this it draw my supisions and I tested it outside my code in the interpreter and it became obvious I was wrong. This why my reply I dont claim he is wrong and I am talking about injecting methods to old objects.
I have no problem admitting when I am wrong but in this case maybe I was not clear enough considering I am responsible for exploding this thread , I hope in a good way.
So yes its possible to do in Python but no it is not coming already available to you, so you can restrain yourself from abandoning Pharo for Python ;)
Python is not there yet. I still keep the opinion that is easy to do , method injection is just regular assignment, you cannot get any easier than assignment but this means you have to keep track of the instances of a class and replace their methods.
This is what Smalltalk gives you for free.
The good news is that if you replace just the methods and not the entire object , you can keep the references to the old instance because keeping track of the references as well would be trickier. So this way you would not brake your references and having to rebuild them to point to a new instance because you continue to use the old instance but with updated methods. You can do this also with adding / removing / editing variables and/or methods.
So while Python has the flexibility for you to program such a system yourself, you don't get it for free like Smalltalk.
So it does have a wide application. Python can give you back the references to and from an object (via gc module) but the problem is that when an object is created its already referenced by many internal stuff so it can get messy soon.
Smalltalk handles this for free. You need #become: https://gbracha.blogspot.com.au/2009/07/miracle-of-become.html Note one of the comments links to user code that apparently does the same thing in Python. But again this is Python "allows" you to, not "Python" gives it to you, but it could be good enough for you.
Plus Python is not exactly a high performance language ,
We now have this for improved performance... https://hal.inria.fr/hal-01152610/file/partialReadBarrier.pdf
unless you use third party libraries focusing on performance (basically C libraries wrapped for Python).
And how does such C libraries impact your live coding? Its not longer turtles all the way down (or its turtles walking off a cliff) Of course, the same applies for FFI with Pharo, and one of the reasons that Smalltalk historically has been view as insular, living in its own world avoid using non-Smalltalk libraries - because the lose of live coding here is a big impact. cheers -ben
In my case its easy to do because I care about live coding my own project and do not care about code outside of it, because I wont be changing it anyway. But if I had to do this the Pharo way , providing a full live enviroment it would be easy because I would have to find a mechanism to accomodate for tons of Python code that does not follow live coding standards by a long margin. So my goal is not to come up with full blown live coding enviroment like Pharo does, that is simply not possible because there is like a ton of python code out there and I am sure there so many scenarios that live coding in python can go wrong that I am not even aware of. But if live code is only for my code and my code alone , I dont think I will have any major issues. Afterall even when I use Pharo I use live coding strictly for my code and rarely touch the enviroment with the exception of once messing with UI theme classes.
But then again I am so new to this that at any point I may come up for a solution about this too, who knows :)
On Wed, Oct 11, 2017 at 7:05 PM Pierce Ng <pierce@samadhiweb.com> wrote:
On Sat, Oct 07, 2017 at 01:41:17AM +0000, Dimitris Chloupis wrote:
execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule)
AFAIK in Python when you modify and reload source, existing instances are not "reshaped" to the modified code. Not live enough. Of course with Python objects it is easy to add per-instance inst-vars, but still this needs to be scripted and doesn't come free with the programming environment.
Pierce
This is what Smalltalk gives you for free.
Sorrry for being rude but I wll use the two usually heavily annoying word, at least for me :D It depends See there is a problem for Python here. Ideology. The zen of python has been both a joke a serious mantra in the python world . Its a joke because its obviously oversimplify decision making in such a complex subject as language designe but is serious because it clearly illustrates the philosophy of its creator, Guido van Rossum. https://www.python.org/dev/peps/pep-0020/ Guido is not any less of a rock star to Pythoners than Alan Kay is for Smalltalkers. The zen has become so popular that is even included in python implementation and can be fetched as the link says using the "import this" in any implementation of Python. It's the very sould of python as messages and objects are the very soul of Smalltalk. So the problem here is that a live coding enviroment brakes the second rule. "explicit is better than implicit". Because live coding in Pharo and Smaltalk is about replacing old instances with new while keeping the state it non the less an implicit behavior and especially become is a no go scenario for python because not only replaces references to an object it also breaks the references to the other object. Of course the old object is garbage collected and RIP. Python follows this rule very strictly. Thus means that not only that Python will not offer a live coding enviroment in the future as the basis of its implementation . It means it does not want to. It may offer it as part of its extensive library. That also leads us to the inescapable conclusion that nothing comes free, everything has a cost. Because there will be scenarios you dont want to lose your old instances or not affect them at all and instead affect only the classes or maybe you dont even want to do that and want to do something else.
So while Python has the flexibility for you to program such a system yourself, you don't get it for free like Smalltalk.
So it does have a wide application. Python can give you back the references to and from an object (via gc module) but the problem is that when an object is created its already referenced by many internal stuff so it can get messy soon.
Smalltalk handles this for free. You need #become: https://gbracha.blogspot.com.au/2009/07/miracle-of-become.html Note one of the comments links to user code that apparently does the same thing in Python. But again this is Python "allows" you to, not "Python" gives it to you, but it could be good enough for you.
First the python example is not an actual become the way I understand it, because not only it does not change the references to the object , it exchanges only the variables not the methods http://wargle.blogspot.gr/2009/07/smalltalks-become-in-python.html __CLASS__ is reference to the class object. __DICT__ is a reference to the instance object dictionary contains basically the names of the variables but not references to the methods themselves . Which means this wont work for live coding. His example works because both classes share the same methods with same code in them but we know this is the polar opposite of live coding. You can get references to the modified methods using this code my_class_ref = (globals()[self.__class__.__name__]) found_methods=[eval("my_class_ref()." + entry,{'my_class_ref':my_class_ref}) for entry in dir(my_class_ref()) if eval("type(my_class_ref()." + entry + ").__name__",{'my_class_ref':my_class_ref}) == 'method'] Globals is used to fetch the reference to the class object. eval is used because names are passed as strings of course and basically eval executes a string as a collection of python commands and returns its value. In this case the value is a reference to an object, a method object. Dir returns all names , including both variables and methods, instance and class, including all superclasses. You do then something similar to get the old methods , and then you iterate checking the names and replacing the references with simple assignments. You end up with a become that is I would say around , if I brake down the list comprehension to multiple lines, 20 lines of code. It wont be still a Smalltalk become but it will support live coding and live replacement of instance objects.
Plus Python is not exactly a high performance language ,
We now have this for improved performance... https://hal.inria.fr/hal-01152610/file/partialReadBarrier.pdf
Here come the two ugly words "it depends" See what the python becomes does is essentially better than the smalltalk becomes. I know its hard to not throw tomatoes at me but if you take a closer look at the Elito's paper you linked you will see why. Python solution really becomes an object to another because its swaps its contents and not the entity of the object, this includes variables and methods and the class it points to. By entity here I mean its place in memory and by you I mean the person implementing the VM. In Smalltalk becomes is not really become but rather replaceReferences , because it brakes the references to the object and then replace them with references to another object. Unfortunately this creates problems because you have to find to references to the objects and that comes with a cost if thousands of things reference it. Hence why Eliot had to optimise this. But python solution has no cost because you dont have to change the references to the object. And references to the members of an object (variables and methods) have to pass through the reference to the object itself. So python in this cases does not have to optimise,because it deals with a lot less references.. Smalltalk has to. Why Smalltalk does it this way, I do not know , this is VM territory and clearly Eliot outranks me to a great degree on the subject of VM design but I am sure there is a technical reason.
unless you use third party libraries focusing on performance (basically C
libraries wrapped for Python).
And how does such C libraries impact your live coding? Its not longer turtles all the way down (or its turtles walking off a cliff) Of course, the same applies for FFI with Pharo, and one of the reasons that Smalltalk historically has been view as insular, living in its own world avoid using non-Smalltalk libraries - because the lose of live coding here is a big impact.
cheers -ben
Sorry I cannot resist :D It depends Technically speaking your are wrong not only for Python but also for Pharo too. The reason being that even in the case of imported c functions they are wrapped inside objects. So it is indeed turtles all the way down. At least to the function level. The arguments passed to the c functions itself are also objects, the access to the memory also objects, pointers are also objects. C data types also object. Of course you need VM primitives to make the actual calls but those are wrapped into objects. So yes the room is full of turtles and there is no escape for you :D Python goes an extra step with its Python C API. This is an API used to build a DLL that is compatibe with Python. Essentially Python then can import this DLL as if it was a python source code file and use it as such. Most of the Python third party libraries use this approach. Cython also uses this approach too. The API forces you to use PyObject which is a C function that wraps a C function around a Python object. So when you access it from Python its now an object. Also remember that in Python , python functions are object too. So there is no escape. I have no idea how Pharo VM does this, I know it supports plugins in a similar function and I suspect that it forces you to wrap then in Smalltalk objects at least at bytecode level but no clue if that is the actual case. Again the experts can jump in and enlighten us. Of course wrapping the C function to be called as an object does not mean that you will wrap all the functions called by the C function. If those C functions are not meant to be used by the user then they wont be objects but they will also not be accessible. Always talking about Python C API. Talking about FFI, whether Pharo (UFFI) or Python (ctypes) there is no way around object creation that I am aware of. So you cannot avoid objects even if you want to. Of couse those object does not necessarily mean they offer you all your usual comfort , they may come with some small letter disclaimers but then we go back to the never ending "it depends" rabbit hole.
In my case its easy to do because I care about live coding my own project and do not care about code outside of it, because I wont be changing it anyway. But if I had to do this the Pharo way , providing a full live enviroment it would be easy because I would have to find a mechanism to accomodate for tons of Python code that does not follow live coding standards by a long margin. So my goal is not to come up with full blown live coding enviroment like Pharo does, that is simply not possible because there is like a ton of python code out there and I am sure there so many scenarios that live coding in python can go wrong that I am not even aware of. But if live code is only for my code and my code alone , I dont think I will have any major issues. Afterall even when I use Pharo I use live coding strictly for my code and rarely touch the enviroment with the exception of once messing with UI theme classes.
But then again I am so new to this that at any point I may come up for a solution about this too, who knows :)
On Wed, Oct 11, 2017 at 7:05 PM Pierce Ng <pierce@samadhiweb.com> wrote:
On Sat, Oct 07, 2017 at 01:41:17AM +0000, Dimitris Chloupis wrote:
execution. Hence live coding, the Python VM replaces objects lively. Python can also compile any size of code including individual methods. That happens with one line of code importlib.reload(mymodule)
AFAIK in Python when you modify and reload source, existing instances are not "reshaped" to the modified code. Not live enough. Of course with Python objects it is easy to add per-instance inst-vars, but still this needs to be scripted and doesn't come free with the programming environment.
Pierce
"one of the reasons that Smalltalk historically has been view as insular, living in its own world avoid using non-Smalltalk libraries - because the lose of live coding here is a big impact." I would not say that Smalltalk is viewed as insular. I would say that Smallalk is not viewed at all period. Pharo wise the people who introduced to Pharo have been impressed by it. The same way most Pharoers prefer pharo libraries to c libraries via UFFI , applies to python coders as well. You think a python coder is eager to leave the comforts of his language, think again. In both communities its user with either C experience or motivated to learn C for personal reasons that use the FFIs or other means to import C code. Is it an accident that 99% of C wrapped code libraries for Python are existing C projects ? Some existing for decades and predating Python. A pure Python developers will be as unlikely to use the FFI as a Pharo developer, and by developers I mean users not the people who actually develop Pharo. So no there is nothing wrong with Smalltalk and Smallalk works with C just fine. Python's C API gained quickly reputation among the C people of being easy to us so Python became the go to language for scripting C. This is also why Python offered embeding, because back then Python was slooowwww. This led Guido to claim that Python may be a great choice for scripting C project but choice for replacing high performance code. He did not even intended the language to target anything else than scriptin. Nonetheless that did not stop the community from pop up like mushrooms high performance libraries to that extend that nowdays Python is regarded as the second best choice for high performance computing after C/C++ which if you think about it sounds kinda insane but non the less wrapped optimised C python libraries can easily outperform non optimised C/C++ code. An example being the emarashing truth that Python strings are faster than C++ strings which forces C++ coders to use an external library that optimised them called Boost. So the real irony is that back then embeding Python was recommended, nowdays embdeding Python is frown upon. Instead now its recommended to brake your C project to a library wrapped for Python and import it to Python. Its fascinating to see something that started so humble become so ambitious but that is true power of the community and this is also the true power of Pharo. You can let this misconceptions get in the way and think small like "Python/Pharo cannot do this, or is hard to do" or you can shut up (something I find hard to do) and just do it. As I said , we use only 0.0000001% of the potential of any language out there.
2017-10-12 9:28 GMT+02:00 Dimitris Chloupis <kilon.alios@gmail.com>:
This is what Smalltalk gives you for free.
Sorrry for being rude but I wll use the two usually heavily annoying word, at least for me :D
It depends
See there is a problem for Python here. Ideology.
The zen of python has been both a joke a serious mantra in the python world . Its a joke because its obviously oversimplify decision making in such a complex subject as language designe but is serious because it clearly illustrates the philosophy of its creator, Guido van Rossum.
https://www.python.org/dev/peps/pep-0020/
Guido is not any less of a rock star to Pythoners than Alan Kay is for Smalltalkers. The zen has become so popular that is even included in python implementation and can be fetched as the link says using the "import this" in any implementation of Python. It's the very sould of python as messages and objects are the very soul of Smalltalk.
So the problem here is that a live coding enviroment brakes the second rule. "explicit is better than implicit". Because live coding in Pharo and Smaltalk is about replacing old instances with new while keeping the state it non the less an implicit behavior and especially become is a no go scenario for python because not only replaces references to an object it also breaks the references to the other object. Of course the old object is garbage collected and RIP. Python follows this rule very strictly.
Thus means that not only that Python will not offer a live coding enviroment in the future as the basis of its implementation . It means it does not want to. It may offer it as part of its extensive library.
That also leads us to the inescapable conclusion that nothing comes free, everything has a cost. Because there will be scenarios you dont want to lose your old instances or not affect them at all and instead affect only the classes or maybe you dont even want to do that and want to do something else.
Hm, we have our own Pharo Zen, which includes a Explicit is better than implicit. So we are violating our own (zen)rules :) in my point of view, live or interactive coding has not much to do with explicit or implicit program code.
That's definetly not a wrong view point, but neither is python's , its all about context. Who you are ? What you want do ? What live coding means to you ? How you want to use it ? How much you want to use it? etc If you want to do Pharo coding the pharo way , then Pharo is your No1 choice, but if you want to Pharo coding the python way , Python is your No1 choice and etc. Thus I never pick sides in language wars , I am participating merely to find things I do not know. Like I just found about become in the VM list, though I still wait for enumarion of classes and reified frame stacks to be explained as well. I am here to learn as much I am here to teach. Well ok , more likely to learn :D For example messages vs method calls. What happens if method calls are executing by reference, does that make them cross message territory?. Meaning you use a name to hide the reference to an object of a method. You change the reference to the method but without changing the name of the call. Or what happens when you extend the MethodObject to cross message territory, is this still "bastardised OOP" or Alan's Keay great regret of naming it "OOP" ? OR is it smalltalkish OOP in python , or is it something more ? Those question do fascinate me.Languages are so fluid, its like clay in our hands. We live in very exciting times. On Thu, Oct 12, 2017 at 11:08 AM Nicolai Hess <nicolaihess@gmail.com> wrote:
2017-10-12 9:28 GMT+02:00 Dimitris Chloupis <kilon.alios@gmail.com>:
This is what Smalltalk gives you for free.
Sorrry for being rude but I wll use the two usually heavily annoying word, at least for me :D
It depends
See there is a problem for Python here. Ideology.
The zen of python has been both a joke a serious mantra in the python world . Its a joke because its obviously oversimplify decision making in such a complex subject as language designe but is serious because it clearly illustrates the philosophy of its creator, Guido van Rossum.
https://www.python.org/dev/peps/pep-0020/
Guido is not any less of a rock star to Pythoners than Alan Kay is for Smalltalkers. The zen has become so popular that is even included in python implementation and can be fetched as the link says using the "import this" in any implementation of Python. It's the very sould of python as messages and objects are the very soul of Smalltalk.
So the problem here is that a live coding enviroment brakes the second rule. "explicit is better than implicit". Because live coding in Pharo and Smaltalk is about replacing old instances with new while keeping the state it non the less an implicit behavior and especially become is a no go scenario for python because not only replaces references to an object it also breaks the references to the other object. Of course the old object is garbage collected and RIP. Python follows this rule very strictly.
Thus means that not only that Python will not offer a live coding enviroment in the future as the basis of its implementation . It means it does not want to. It may offer it as part of its extensive library.
That also leads us to the inescapable conclusion that nothing comes free, everything has a cost. Because there will be scenarios you dont want to lose your old instances or not affect them at all and instead affect only the classes or maybe you dont even want to do that and want to do something else.
Hm, we have our own Pharo Zen, which includes a Explicit is better than implicit. So we are violating our own (zen)rules :)
in my point of view, live or interactive coding has not much to do with explicit or implicit program code.
Hi sven Do the same than me, trash this thread and let us focus on making Pharo better. This is far better productive and energy positive. Stef On Sat, Oct 7, 2017 at 12:16 AM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I agree, ignore that crazy dude that he is all talk and non sense excluding the fact the original article uses a graphic he made with love for Pharo and with over 5 years of active contribution to Pharo documentation and libraries. OR the fact that he said nothing negative about Pharo in this thread. Or the fact that he said that is enternal greatful for Pharo introducing him to the art and fun of live coding. What's more negative than that , right ? On Sat, Oct 7, 2017 at 11:14 AM Stephane Ducasse <stepharo.self@gmail.com> wrote:
Hi sven
Do the same than me, trash this thread and let us focus on making Pharo better. This is far better productive and energy positive.
Stef
On Sat, Oct 7, 2017 at 12:16 AM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to
improve
the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Your contribution to Pharo are much appreciated. And indeed you did not directly say anything negative. But you have to agree that you often discuss about Python, C++, Blender, ... in mailing lists that are not for that purpose. You are absolutely free to do whatever you want and to give your opinions freely, but this is not the right place.
On 7 Oct 2017, at 10:42, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
I agree, ignore that crazy dude that he is all talk and non sense excluding the fact the original article uses a graphic he made with love for Pharo and with over 5 years of active contribution to Pharo documentation and libraries. OR the fact that he said nothing negative about Pharo in this thread.
Or the fact that he said that is enternal greatful for Pharo introducing him to the art and fun of live coding. What's more negative than that , right ?
On Sat, Oct 7, 2017 at 11:14 AM Stephane Ducasse <stepharo.self@gmail.com> wrote: Hi sven
Do the same than me, trash this thread and let us focus on making Pharo better. This is far better productive and energy positive.
Stef
On Sat, Oct 7, 2017 at 12:16 AM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
The dicussion is about Pharo's live coding and OOP compared to other languages. IF you look at all my threads you will see I ALWAYS mention Python , Blender , Unreal for relevant topics. I do not remember hi jackig a thread with random remarks just for the shake of mentioning those things. Plus 99% of the times I mention Python is about Atlas , my library for using Python libraries from inside Pharo. Atlas is a "trojan horse" for Pharo to invade Python projects. Also I have been very clear that I consider C++ an abomination syntax wise and Python weaker than Smalltalk, language wise.Mainly because of Smalltalk's minimal syntax and of course offering live coding outside the box with no special setup from the coder. My point is that indeed you can do with EASE live coding in a numerous languages, at least to my experience. I have tried only Python and C/C++. Is it as easy or as flexible as Pharo ? I do not know because live coding as you know is about workflow and we dont code all the same way. For example I was never comfortable with coding solely from inside Pharo debugger as some of you are doing. I am more a Class Browser guy and I rarely use Workspace/Playground/REPL as well. My questions were sincere even though I was sarcastic because I always want to learn more about live coding and things I do not know about OOP. My sarcasm was an effort to be funny not to be rude. I am also certain that many experienced coders coming from other language will ask the same questions as well. What Pharo can give me OO wise that I cannot get in my X language ? What exactly is live coding for Pharo ? Is doing X things in that Y language live coding or is it something else ? What's the real purpose of message passing ? How it benefits me compared to just using method calls ? I am suprised that there has not been an article about live coding workflows. I think it could greatly benefit Pharo to demostrate its uniqueness. People prefer to be shown that something is better than being told. Most people also not bother at all coming to the mailing list and ask questions, they will ignore things they dont understand and carry on. So its not important to say that Pharo special but why Pharo is special and after 5 year I feel will still struggle in this area, not because of the fault of the community but because live coding and OOP can be an extremely wide field that you can easily get lost into. We have also to be fair with othe programming languages, respect them, to the degree they deserve our respect and not exaggerate our claims because that harms Pharo reputation. On Sat, Oct 7, 2017 at 11:50 AM Sven Van Caekenberghe <sven@stfx.eu> wrote:
Your contribution to Pharo are much appreciated. And indeed you did not directly say anything negative.
But you have to agree that you often discuss about Python, C++, Blender, ... in mailing lists that are not for that purpose. You are absolutely free to do whatever you want and to give your opinions freely, but this is not the right place.
On 7 Oct 2017, at 10:42, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
I agree, ignore that crazy dude that he is all talk and non sense excluding the fact the original article uses a graphic he made with love for Pharo and with over 5 years of active contribution to Pharo documentation and libraries. OR the fact that he said nothing negative about Pharo in this thread.
Or the fact that he said that is enternal greatful for Pharo introducing him to the art and fun of live coding. What's more negative than that , right ?
On Sat, Oct 7, 2017 at 11:14 AM Stephane Ducasse < stepharo.self@gmail.com> wrote: Hi sven
Do the same than me, trash this thread and let us focus on making Pharo better. This is far better productive and energy positive.
Stef
On Sat, Oct 7, 2017 at 12:16 AM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Yes, you are right: Pharo/Smalltalk is more or less the same as Ruby/Python/C/C++ in terms of power & flexibility of OOP and in live coding.
Come on.
On 6 Oct 2017, at 23:18, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote: Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to
improve
the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
My point is that indeed you can do with EASE live coding in a numerous languages, at least to my experience. I have tried only Python and C/C++.
Until I came upon this thread, I never knew you could do live coding in Python and C/C++. And I was a professional C/C++ programmer for over 15 years! It is certainly a well-kept secret. I have found very little information on the web about doing live coding in these languages (in fact, none). This leads me to believe that the vast majority of Python and C/C++ developers don't know about, or don't do, live coding. Whether it's "easy" is rather subjective. I suspect it's not as easy nor as convenient as in Pharo. If it were, then live coding ought to be much more prevalent in the Python and C/C++ communities. After all, what developer doesn't want to improve their productivity or increase their velocity of development? The key differentiator here, I think, is that live coding is baked into Pharo/Smalltalk, thus making it natural to use. It is not natural for Python and C/C++ programmers. It would be difficult to convince the IT industry to adopt live coding en masse. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Yes I agree with this Pharo is a live coding BASED enviroment. For Pharo live coding is not just an easy to use feature it based its entire mentality around the idea of live coding. Even though Smalltalk borrowed live coding and image format from Lisp we are more "pure" in that regard even compared to Lisp. But one thing to note here is that live coding is not really that useful when used always. At least for me I rely a lot on it for debugging and experimenting. But when I work based on a plan , or code just works I do not care so much about it. So my workflow in the end is semi-live coding because I dont feel I need live coding 24/7 to be super productive. Of course that creates some barriers in the end when tools are not made to work 24/7 on a live coding context. To that extend Pharo is definetly superior and a true live coding enviroment. You are suprised that you can do live coding in C++ but I was trully shocked. My saga to do live coding in C++ started as a joke, something to use to mock C++ ugliness and weakness. But oh boy it did slap it back to my face. The process is again simple, you wrap eveything inside a main loop,and call in this loop functions (C has no objects obvious) or methods if you use C++ from DLLs. Those DLLs obviously contain 99.9% of your code. Because a DLL can be reloaded it allows you not to stop executing and replace code on the fly. The main loop is wrapped inside an exception to make sure the an error will never crash your application, C/C++ exceptions are more powerful than Pharo live coding in that regard because in Pharo if you do anything bad with UFFI and crash it , it will crash for sure. If you keep the DLL small and you use tons of small dlls your compile times will be almost instantenous. You can also with very view lines detect date signature change in source file and trigger background compilation. Again few lines of code. The last mountain is live state, in this case the executable pass a single pointer and instead of the executable handling the memory its actually the dlls that handle it but the executable because it cannot crash or exit will keep the live state running. You can also use memory mapped file to store live state as they perform pure memory dumps. All in all you will end up with 100 lines of code that can be wrapped into a library and reused in the next project with zero setup. Its an one time pain. Will I would recommend C++ over Pharo for live coding .... helll no.... C++ obviously misses a hugely important live coding ingredient which is reflection. We do live coding because we want to interact with those objects ask questions about what is going on and why our code does not work as intended However Python has no such limitation following a very similar design to Smalltalk and being much more powerful language than C++. Python follow very closely the Smalltalk paradigm even though there is not a single mention of Smalltalk , anywhere in the Python community or of live coding. Live coding in C++ has become a huge deal in game development mainly because game development tend to want to change things on the fly and games are so big with extremely long compile times. Unreal has made a huge deal over its ability to hot reload C++ code in its editor , though I do not like its approach so much. Bottom line is yes its easy and simple to do live coding in other languages, not recommended so much in C++ because of its static compiled nature and lack of reflection but for dynamic language like Python it can come pretty close and I speak from experience. At least I have not found something in Python that made me wish I was live coding in Pharo so far, but then yes I still think its better to have a full blown live coding. Also from my limited understanding I have figured out that pretty much every language out there allows for reloading code which is pretty much a very large requirement for live coding. So yes you can live code to an extend, lesser in languages like C++ , more so in language like Python, Ruby etc. Can you get the Pharo experience ? In a dynamic language with the creation of a live coding library you could get pretty close but never exactly the same. Pharo still is the undisputed king of live coding. Why live coding is not a huge thing in coding in general, I am willing to bet it has more to do with coder mentality than language limitation. When you are used to "dead code" workflow it difficult to switch. I struggle a lot to get use to the live coding workflow of Pharo because I had to rewire my brain. But in the end you cannot avoid live coding, there will be always scenarios you would want to change things on the fly, reload code, store live state etc. In the end it more a coder flaw than it is a language flaw. I know we love to blame languages for our mistakes. But in our back of our head we all know we debate over languages that we barely use only 0.000001% of their true potential. We are too lazy and sometimes we need someone to slam our face to the truth to actually see it. And by we I dont mean the Pharo community but human nature by itself. That's exactly what Pharo did for me that motivated me exploring live coding in other languages. If it was not for Pharo I would still be doing the old slow method of correct, compile, restart and repeat till you hate yourself. On Sat, Oct 7, 2017 at 1:57 PM horrido <horrido.hobbies@gmail.com> wrote:
My point is that indeed you can do with EASE live coding in a numerous languages, at least to my experience. I have tried only Python and C/C++.
Until I came upon this thread, I never knew you could do live coding in Python and C/C++. And I was a professional C/C++ programmer for over 15 years!
It is certainly a well-kept secret. I have found very little information on the web about doing live coding in these languages (in fact, none). This leads me to believe that the vast majority of Python and C/C++ developers don't know about, or don't do, live coding.
Whether it's "easy" is rather subjective. I suspect it's not as easy nor as convenient as in Pharo. If it were, then live coding ought to be much more prevalent in the Python and C/C++ communities. After all, what developer doesn't want to improve their productivity or increase their velocity of development?
The key differentiator here, I think, is that live coding is baked into Pharo/Smalltalk, thus making it natural to use. It is not natural for Python and C/C++ programmers. It would be difficult to convince the IT industry to adopt live coding en masse.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I think that there are some communities that are more receptive of live coding, beyond programmers. Scientist, journalists, hacktivists, data visualizers, musicians, come to mind and I have a better experience and more openness to live coding with them that with the "classical programmer/coder". With our recent Data Journalism Handbook, adaptation in Grafoscopio [1] and our recurrent Data Week hackathon+workshops[2], we're trying to reach new audiences and communities. [1] http://mutabit.com/repos.fossil/mapeda/ [2] http://mutabit.com/dataweek/ Cheers, Offray On 07/10/17 07:40, Dimitris Chloupis wrote:
Yes I agree with this
Pharo is a live coding BASED enviroment. For Pharo live coding is not just an easy to use feature it based its entire mentality around the idea of live coding.
Even though Smalltalk borrowed live coding and image format from Lisp we are more "pure" in that regard even compared to Lisp.Â
But one thing to note here is that live coding is not really that useful when used always. At least for me I rely a lot on it for debugging and experimenting. But when I work based on a plan , or code just works I do not care so much about it.Â
So my workflow in the end is semi-live coding because I dont feel I need live coding 24/7 to be super productive.Â
Of course that creates some barriers in the end when tools are not made to work 24/7 on a live coding context. To that extend Pharo is definetly superior and a true live coding enviroment.
You are suprised that you can do live coding in C++ but I was trully shocked.Â
My saga to do live coding in C++ started as a joke, something to use to mock C++ ugliness and weakness. But oh boy it did slap it back to my face.Â
The process is again simple, you wrap eveything inside a main loop,and call in this loop functions (C has no objects obvious) or methods if you use C++ from DLLs. Those DLLs obviously contain 99.9% of your code. Because a DLL can be reloaded it allows you not to stop executing and replace code on the fly. The main loop is wrapped inside an exception to make sure the an error will never crash your application, C/C++ exceptions are more powerful than Pharo live coding in that regard because in Pharo if you do anything bad with UFFI and crash it , it will crash for sure.Â
If you keep the DLL small and you use tons of small dlls your compile times will be almost instantenous. You can also with very view lines detect date signature change in source file and trigger background compilation. Again few lines of code. The last mountain is live state, in this case the executable pass a single pointer and instead of the executable handling the memory its actually the dlls that handle it but the executable because it cannot crash or exit will keep the live state running. You can also use memory mapped file to store live state as they perform pure memory dumps.Â
All in all you will end up with 100 lines of code that can be wrapped into a library and reused in the next project with zero setup. Its an one time pain.Â
Will I would recommend C++ over Pharo for live coding .... helll no.... C++ obviously misses a hugely important live coding ingredient which is reflection. We do live coding because we want to interact with those objects ask questions about what is going on and why our code does not work as intended
However Python has no such limitation following a very similar design to Smalltalk and being much more powerful language than C++. Python follow very closely the Smalltalk paradigm even though there is not a single mention of Smalltalk , anywhere in the Python community or of live coding. Â Live coding in C++ has become a huge deal in game development mainly because game development tend to want to change things on the fly and games are so big with extremely long compile times. Unreal has made a huge deal over its ability to hot reload C++Â code in its editor , though I do not like its approach so much.
Bottom line is yes its easy and simple to do live coding in other languages, not recommended so much in C++ because of its static compiled nature and lack of reflection but for dynamic language like Python it can come pretty close and I speak from experience.Â
At least I have not found something in Python that made me wish I was live coding in Pharo so far, but then yes I still think its better to have a full blown live coding. Also from my limited understanding I have figured out that pretty much every language out there allows for reloading code which is pretty much a very large requirement for live coding.Â
So yes you can live code to an extend, lesser in languages like C++ , more so in language like Python, Ruby etc. Can you get the Pharo experience ? In a dynamic language with the creation of a live coding library you could get pretty close but never exactly the same.
Pharo still is the undisputed king of live coding.Â
Why live coding is not a huge thing in coding in general, I am willing to bet it has more to do with coder mentality than language limitation. When you are used to "dead code" workflow it difficult to switch. I struggle a lot to get use to the live coding workflow of Pharo because I had to rewire my brain. But in the end you cannot avoid live coding, there will be always scenarios you would want to change things on the fly, reload code, store live state etc.Â
In the end it more a coder flaw than it is a language flaw. I know we love to blame languages for our mistakes.Â
But in our back of our head we all know we debate over languages that we barely use only 0.000001% of their true potential. We are too lazy and sometimes we need someone to slam our face to the truth to actually see it. And by we I dont mean the Pharo community but human nature by itself. That's exactly what Pharo did for me that motivated me exploring live coding in other languages.Â
If it was not for Pharo I would still be doing the old slow method of correct, compile, restart and repeat till you hate yourself.Â
On Sat, Oct 7, 2017 at 1:57 PM horrido <horrido.hobbies@gmail.com <mailto:horrido.hobbies@gmail.com>> wrote:
> My point is that indeed you can do with EASE live coding in a numerous languages, at least to my experience. I have tried only Python and C/C++.
Until I came upon this thread, I never knew you could do live coding in Python and C/C++. And I was a professional C/C++ programmer for over 15 years!
It is certainly a well-kept secret. I have found very little information on the web about doing live coding in these languages (in fact, none). This leads me to believe that the vast majority of Python and C/C++ developers don't know about, or don't do, live coding.
Whether it's "easy" is rather subjective. I suspect it's not as easy nor as convenient as in Pharo. If it were, then live coding ought to be much more prevalent in the Python and C/C++ communities. After all, what developer doesn't want to improve their productivity or increase their velocity of development?
The key differentiator here, I think, is that live coding is baked into Pharo/Smalltalk, thus making it natural to use. It is not natural for Python and C/C++ programmers. It would be difficult to convince the IT industry to adopt live coding en masse.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Indeed if you google "live coding" you get a lot of audio visual related tools. I have to confess because I am working with graphics, live coding is pretty much bread and butter of my workflow , cannot imagine myself working without it. When you step out of audio visual and other live performance arts you barely see "live coding" mentioned if not at all. The only exception I know is RunRev's LiveCode , similar to Pharo in the general idea, used to be closed source but now there is an open source version and Apple's Swift's Playgrounds which were inspired by a Smalltalk like demo. Fragmantation is indeed an issue with all programming languages including Pharo but on the other hand is a necessarily evil for innovation because my experience is that where there is unity there is also stagnation of progress but this enters philosophical ground I rather not venture into. On Sat, Oct 7, 2017 at 6:18 PM Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
I think that there are some communities that are more receptive of live coding, beyond programmers. Scientist, journalists, hacktivists, data visualizers, musicians, come to mind and I have a better experience and more openness to live coding with them that with the "classical programmer/coder". With our recent Data Journalism Handbook, adaptation in Grafoscopio [1] and our recurrent Data Week hackathon+workshops[2], we're trying to reach new audiences and communities. [1] http://mutabit.com/repos.fossil/mapeda/ [2] http://mutabit.com/dataweek/
Cheers,
Offray
On 07/10/17 07:40, Dimitris Chloupis wrote:
Yes I agree with this
Pharo is a live coding BASED enviroment. For Pharo live coding is not just an easy to use feature it based its entire mentality around the idea of live coding.
Even though Smalltalk borrowed live coding and image format from Lisp we are more "pure" in that regard even compared to Lisp.
But one thing to note here is that live coding is not really that useful when used always. At least for me I rely a lot on it for debugging and experimenting. But when I work based on a plan , or code just works I do not care so much about it.
So my workflow in the end is semi-live coding because I dont feel I need live coding 24/7 to be super productive.
Of course that creates some barriers in the end when tools are not made to work 24/7 on a live coding context. To that extend Pharo is definetly superior and a true live coding enviroment.
You are suprised that you can do live coding in C++ but I was trully shocked.
My saga to do live coding in C++ started as a joke, something to use to mock C++ ugliness and weakness. But oh boy it did slap it back to my face.
The process is again simple, you wrap eveything inside a main loop,and call in this loop functions (C has no objects obvious) or methods if you use C++ from DLLs. Those DLLs obviously contain 99.9% of your code. Because a DLL can be reloaded it allows you not to stop executing and replace code on the fly. The main loop is wrapped inside an exception to make sure the an error will never crash your application, C/C++ exceptions are more powerful than Pharo live coding in that regard because in Pharo if you do anything bad with UFFI and crash it , it will crash for sure.
If you keep the DLL small and you use tons of small dlls your compile times will be almost instantenous. You can also with very view lines detect date signature change in source file and trigger background compilation. Again few lines of code. The last mountain is live state, in this case the executable pass a single pointer and instead of the executable handling the memory its actually the dlls that handle it but the executable because it cannot crash or exit will keep the live state running. You can also use memory mapped file to store live state as they perform pure memory dumps.
All in all you will end up with 100 lines of code that can be wrapped into a library and reused in the next project with zero setup. Its an one time pain.
Will I would recommend C++ over Pharo for live coding .... helll no.... C++ obviously misses a hugely important live coding ingredient which is reflection. We do live coding because we want to interact with those objects ask questions about what is going on and why our code does not work as intended
However Python has no such limitation following a very similar design to Smalltalk and being much more powerful language than C++. Python follow very closely the Smalltalk paradigm even though there is not a single mention of Smalltalk , anywhere in the Python community or of live coding.
Live coding in C++ has become a huge deal in game development mainly because game development tend to want to change things on the fly and games are so big with extremely long compile times. Unreal has made a huge deal over its ability to hot reload C++ code in its editor , though I do not like its approach so much.
Bottom line is yes its easy and simple to do live coding in other languages, not recommended so much in C++ because of its static compiled nature and lack of reflection but for dynamic language like Python it can come pretty close and I speak from experience.
At least I have not found something in Python that made me wish I was live coding in Pharo so far, but then yes I still think its better to have a full blown live coding. Also from my limited understanding I have figured out that pretty much every language out there allows for reloading code which is pretty much a very large requirement for live coding.
So yes you can live code to an extend, lesser in languages like C++ , more so in language like Python, Ruby etc. Can you get the Pharo experience ? In a dynamic language with the creation of a live coding library you could get pretty close but never exactly the same.
Pharo still is the undisputed king of live coding.
Why live coding is not a huge thing in coding in general, I am willing to bet it has more to do with coder mentality than language limitation. When you are used to "dead code" workflow it difficult to switch. I struggle a lot to get use to the live coding workflow of Pharo because I had to rewire my brain. But in the end you cannot avoid live coding, there will be always scenarios you would want to change things on the fly, reload code, store live state etc.
In the end it more a coder flaw than it is a language flaw. I know we love to blame languages for our mistakes.
But in our back of our head we all know we debate over languages that we barely use only 0.000001% of their true potential. We are too lazy and sometimes we need someone to slam our face to the truth to actually see it. And by we I dont mean the Pharo community but human nature by itself. That's exactly what Pharo did for me that motivated me exploring live coding in other languages.
If it was not for Pharo I would still be doing the old slow method of correct, compile, restart and repeat till you hate yourself.
On Sat, Oct 7, 2017 at 1:57 PM horrido <horrido.hobbies@gmail.com> wrote:
My point is that indeed you can do with EASE live coding in a numerous languages, at least to my experience. I have tried only Python and C/C++.
Until I came upon this thread, I never knew you could do live coding in Python and C/C++. And I was a professional C/C++ programmer for over 15 years!
It is certainly a well-kept secret. I have found very little information on the web about doing live coding in these languages (in fact, none). This leads me to believe that the vast majority of Python and C/C++ developers don't know about, or don't do, live coding.
Whether it's "easy" is rather subjective. I suspect it's not as easy nor as convenient as in Pharo. If it were, then live coding ought to be much more prevalent in the Python and C/C++ communities. After all, what developer doesn't want to improve their productivity or increase their velocity of development?
The key differentiator here, I think, is that live coding is baked into Pharo/Smalltalk, thus making it natural to use. It is not natural for Python and C/C++ programmers. It would be difficult to convince the IT industry to adopt live coding en masse.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Well IPython is not near to Pharo in terms of flexibility and live coding, and I have been a user of it. For example, recently we made a whole book 13 Mb PDF book in a single Grafoscopio file of just ~600k, with a pretty good layout and final design (more details in other recent thread and in [1]). JupyterLab[2] is going in the direction of becoming a more complete IDE, but there are still a lot of stuff that is better done in Pharo, like unit testing, that in JupyterLab. In fact Brian Granger has told that the "I" is for interactive, not for integrated [3]. Of course, after over a decade of hard work and several millions of dollars, Jupyter is doing pretty well on the interactive notebooks front, but Pharo's edge in live coding and moldability, plus a superb small, agile and friendly community allowed a beginner to prototype valuable propositions about reproducible research and computer storytelling, without such background. [1] http://mutabit.com/repos.fossil/mapeda/ [2] http://jupyterlab.github.io/ [3] https://www.youtube.com/watch?v=Ejh0ftSjk6g So, I have experienced live coding in IPython/Jupyter and Pharo/Grafoscopio and still I think that Pharo has value proposals hard to find on any behemoths. Live coding there is getting good, but Pharo is even better, and that plus moldability make Pharo unbeatable, when you're changing/exploring a running system. Cheers, Offray On 06/10/17 16:18, Dimitris Chloupis wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.Â
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.Â
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.Â
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.Â
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.Â
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.Â
I really hope that we take this further though.Â
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com <mailto:horrido.hobbies@gmail.com>> wrote:
Behold Pharo: The Modern Smalltalk <https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...>
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Care to explain what difficulty you experienced in live coding with Python. Or what Pharo can do that Python canât live code wise ? Maybe I will learn something. On Sat, 7 Oct 2017 at 04:36, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
Well IPython is not near to Pharo in terms of flexibility and live coding, and I have been a user of it. For example, recently we made a whole book 13 Mb PDF book in a single Grafoscopio file of just ~600k, with a pretty good layout and final design (more details in other recent thread and in [1]). JupyterLab[2] is going in the direction of becoming a more complete IDE, but there are still a lot of stuff that is better done in Pharo, like unit testing, that in JupyterLab. In fact Brian Granger has told that the "I" is for interactive, not for integrated [3]. Of course, after over a decade of hard work and several millions of dollars, Jupyter is doing pretty well on the interactive notebooks front, but Pharo's edge in live coding and moldability, plus a superb small, agile and friendly community allowed a beginner to prototype valuable propositions about reproducible research and computer storytelling, without such background. [1] http://mutabit.com/repos.fossil/mapeda/ [2] http://jupyterlab.github.io/ [3] https://www.youtube.com/watch?v=Ejh0ftSjk6g
So, I have experienced live coding in IPython/Jupyter and Pharo/Grafoscopio and still I think that Pharo has value proposals hard to find on any behemoths. Live coding there is getting good, but Pharo is even better, and that plus moldability make Pharo unbeatable, when you're changing/exploring a running system.
Cheers,
Offray
On 06/10/17 16:18, Dimitris Chloupis wrote:
Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
kilon.alios wrote
Care to explain what difficulty you experienced in live coding with Python. Or what Pharo can do that Python canât live code wise ? Maybe I will learn something.
It's funny that one of main reasons why I discovered and started using Pharo was failure to get live coding working for Python (Jython in particular). And now time after time kilon.alios states that live coding in Python is "easy" and no big deal. I will tell you, Pharoers, about code reloading in Python, and let you decide for yourselves how it compares to Pharo. Out of the box in Python you can execute some Python code and reload modules with reload() function. What reload() does is it reads code from file (in Python each source file corresponds to module), executes it, and replaces reference to [that module] in current module.
From that moment, any code in current module, when referencing reloaded module, will point to new version of it.
All implicitly imported names will (like from foo import bar, from foo import *, etc.) will point to old version. Also all other modules except current will not be affected. There are, however, third-party libraries, that take care of it. But that's not all. All instances and subclasses of old classes will point to old versions of classes. To counter that, instead of replacing old module you could replace its contents by newer variables/functions and patch classes by replacing their contents. Some third-party libraries do that. That's still not all. If you store references to functions/methods/classes, that references will point to old versions. reimport library takes care of that, but it uses implementation-specific feature of CPython's GC, which lets you get all references to some object. Unfortunately, it doesn't work in Jython, and probably in other alternative Python implementations. But wait, what if you rename a class or function, or change its base class(-es)? You're out of luck. Theoretically you could handle such change if recent code change consists of a single rename, but that's it. I may have missed some other edge cases and haven't talked about tools support, but I hope you get the idea. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I never claimed that Python , which refers to CPython to the vast majority of python coders, is offering live coding out of the box. The fact that you have to reload modules manually would make such claims ridiculous.
From the very first post I was crystal clear that there is a need for creating a library that handles live coding for you and gave general instructions of what this library will have to do.
My claim is that Python and other languages CAN do live coding. I NEVER claimed also that Python is a live coding environment which it stores in an image format. In short Python IS NOT Pharo. Period. Can python reload modules ? Yes Can python trigger the debugger in case of error ? Yes Can python replace methods and variables during execution ? Yes Can python recompile individual methods and classes and replace their previous instances ? Yes Can python make you coffee ? Nope Etc etc Depending how deep you want to go live coding wise your live coding library will enlarge.
From my experience around 100 lines of code are enough to offer most of Pharoâs basic live coding functionality. Such task that needs to happen only once and then simply reused in each project that wants to utilize live coding , for my standards it is easy. It wonât be easy for a beginner python coder cause he may not even know what OOP is. So obviously I am referring to experienced coders. It wonât be easy if you want to fully replicate Pharoâs live coding capabilities , because you will Definetly go way beyond 100 lines.
I stated this before and I will state this again Pharo IS HANDS DOWN THE BEST LIVE CODING ENVIRONMENT I have ever used. My point is that other languages CAN do what Pharo does. Even though they are NOT live coding environments. They just have the features to be live coding environments. Jython has had a lot of problems using CPython libraries, live coding is the least of its problems. This is the reason CPython has almost the monopoly of python coding. I just donât like it when other languages are illustrated as garbage and Pharo as the holy grail. They all have their pros and cons. Canât help with Jython , I used it on the premise that I may need Java libraries, I ended up finding what I wanted in CPython and have not touched it since. My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding. If we are to compare them the least we can do is do it in a fair and sincere way. On Mon, 9 Oct 2017 at 20:06, webwarrior <reg@webwarrior.ws> wrote:
kilon.alios wrote
Care to explain what difficulty you experienced in live coding with Python. Or what Pharo can do that Python canât live code wise ? Maybe I will learn something.
It's funny that one of main reasons why I discovered and started using Pharo was failure to get live coding working for Python (Jython in particular).
And now time after time kilon.alios states that live coding in Python is "easy" and no big deal.
I will tell you, Pharoers, about code reloading in Python, and let you decide for yourselves how it compares to Pharo.
Out of the box in Python you can execute some Python code and reload modules with reload() function.
What reload() does is it reads code from file (in Python each source file corresponds to module), executes it, and replaces reference to [that module] in current module. From that moment, any code in current module, when referencing reloaded module, will point to new version of it.
All implicitly imported names will (like from foo import bar, from foo import *, etc.) will point to old version. Also all other modules except current will not be affected.
There are, however, third-party libraries, that take care of it.
But that's not all. All instances and subclasses of old classes will point to old versions of classes. To counter that, instead of replacing old module you could replace its contents by newer variables/functions and patch classes by replacing their contents. Some third-party libraries do that.
That's still not all. If you store references to functions/methods/classes, that references will point to old versions. reimport library takes care of that, but it uses implementation-specific feature of CPython's GC, which lets you get all references to some object. Unfortunately, it doesn't work in Jython, and probably in other alternative Python implementations.
But wait, what if you rename a class or function, or change its base class(-es)? You're out of luck. Theoretically you could handle such change if recent code change consists of a single rename, but that's it.
I may have missed some other edge cases and haven't talked about tools support, but I hope you get the idea.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
And not to worry I wonât bother with discussing such issues again itâs clear the community is unwilling to deal with such discussions. I have no problem with that , itâs a free world. On Tue, 10 Oct 2017 at 03:41, Dimitris Chloupis <kilon.alios@gmail.com> wrote:
I never claimed that Python , which refers to CPython to the vast majority of python coders, is offering live coding out of the box. The fact that you have to reload modules manually would make such claims ridiculous.
From the very first post I was crystal clear that there is a need for creating a library that handles live coding for you and gave general instructions of what this library will have to do.
My claim is that Python and other languages CAN do live coding.
I NEVER claimed also that Python is a live coding environment which it stores in an image format. In short Python IS NOT Pharo. Period.
Can python reload modules ? Yes Can python trigger the debugger in case of error ? Yes Can python replace methods and variables during execution ? Yes Can python recompile individual methods and classes and replace their previous instances ? Yes Can python make you coffee ? Nope Etc etc
Depending how deep you want to go live coding wise your live coding library will enlarge.
From my experience around 100 lines of code are enough to offer most of Pharoâs basic live coding functionality. Such task that needs to happen only once and then simply reused in each project that wants to utilize live coding , for my standards it is easy. It wonât be easy for a beginner python coder cause he may not even know what OOP is. So obviously I am referring to experienced coders. It wonât be easy if you want to fully replicate Pharoâs live coding capabilities , because you will Definetly go way beyond 100 lines.
I stated this before and I will state this again Pharo IS HANDS DOWN THE BEST LIVE CODING ENVIRONMENT I have ever used.
My point is that other languages CAN do what Pharo does. Even though they are NOT live coding environments. They just have the features to be live coding environments.
Jython has had a lot of problems using CPython libraries, live coding is the least of its problems. This is the reason CPython has almost the monopoly of python coding.
I just donât like it when other languages are illustrated as garbage and Pharo as the holy grail. They all have their pros and cons.
Canât help with Jython , I used it on the premise that I may need Java libraries, I ended up finding what I wanted in CPython and have not touched it since.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
If we are to compare them the least we can do is do it in a fair and sincere way. On Mon, 9 Oct 2017 at 20:06, webwarrior <reg@webwarrior.ws> wrote:
kilon.alios wrote
Care to explain what difficulty you experienced in live coding with Python. Or what Pharo can do that Python canât live code wise ? Maybe I will learn something.
It's funny that one of main reasons why I discovered and started using Pharo was failure to get live coding working for Python (Jython in particular).
And now time after time kilon.alios states that live coding in Python is "easy" and no big deal.
I will tell you, Pharoers, about code reloading in Python, and let you decide for yourselves how it compares to Pharo.
Out of the box in Python you can execute some Python code and reload modules with reload() function.
What reload() does is it reads code from file (in Python each source file corresponds to module), executes it, and replaces reference to [that module] in current module. From that moment, any code in current module, when referencing reloaded module, will point to new version of it.
All implicitly imported names will (like from foo import bar, from foo import *, etc.) will point to old version. Also all other modules except current will not be affected.
There are, however, third-party libraries, that take care of it.
But that's not all. All instances and subclasses of old classes will point to old versions of classes. To counter that, instead of replacing old module you could replace its contents by newer variables/functions and patch classes by replacing their contents. Some third-party libraries do that.
That's still not all. If you store references to functions/methods/classes, that references will point to old versions. reimport library takes care of that, but it uses implementation-specific feature of CPython's GC, which lets you get all references to some object. Unfortunately, it doesn't work in Jython, and probably in other alternative Python implementations.
But wait, what if you rename a class or function, or change its base class(-es)? You're out of luck. Theoretically you could handle such change if recent code change consists of a single rename, but that's it.
I may have missed some other edge cases and haven't talked about tools support, but I hope you get the idea.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Calm your tits, dude. No need to use Caps Lock that much :-) I made no value judgements in my post, letting readers decide for themselves. Nor did I attribute any claims to you. Except "live coding in Python is easy", which you did say in some earlier posts.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
Well, many of them kinda can. But you see, when live coding is an afterthought, problems appear here and there, and some of them are unsolvable. Up to the point that it's easier to do traditional development process and not bother with live coding at all. It's almost like saying that you can do point-free style functional programming in Python. Of course you can (to some extent). There is even a library for that (https://pypi.python.org/pypi/pointfree/). I there much sense in it? I don't think so. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi Dimitris. You opinion about live programming reminds me the common sentence from developers who don't care about languages at all. Usual argument is: they all are Turing complete, so who cares. 2017-10-10 11:02 GMT+02:00 webwarrior <reg@webwarrior.ws>:
Calm your tits, dude. No need to use Caps Lock that much :-)
I made no value judgements in my post, letting readers decide for themselves. Nor did I attribute any claims to you. Except "live coding in Python is easy", which you did say in some earlier posts.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
Well, many of them kinda can. But you see, when live coding is an afterthought, problems appear here and there, and some of them are unsolvable. Up to the point that it's easier to do traditional development process and not bother with live coding at all.
It's almost like saying that you can do point-free style functional programming in Python. Of course you can (to some extent). There is even a library for that (https://pypi.python.org/pypi/pointfree/). I there much sense in it? I don't think so.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Which reminds me a guy that I tried to convince that become: is not the same as changeClassToThatOf: but he was super smart and knew so this is written in his super smart paper and I smile still now thinking about it. On Tue, Oct 10, 2017 at 11:39 AM, Denis Kudriashov <dionisiydk@gmail.com> wrote:
Hi Dimitris.
You opinion about live programming reminds me the common sentence from developers who don't care about languages at all. Usual argument is: they all are Turing complete, so who cares.
2017-10-10 11:02 GMT+02:00 webwarrior <reg@webwarrior.ws>:
Calm your tits, dude. No need to use Caps Lock that much :-)
I made no value judgements in my post, letting readers decide for themselves. Nor did I attribute any claims to you. Except "live coding in Python is easy", which you did say in some earlier posts.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
Well, many of them kinda can. But you see, when live coding is an afterthought, problems appear here and there, and some of them are unsolvable. Up to the point that it's easier to do traditional development process and not bother with live coding at all.
It's almost like saying that you can do point-free style functional programming in Python. Of course you can (to some extent). There is even a library for that (https://pypi.python.org/pypi/pointfree/). I there much sense in it? I don't think so.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
No because turing conplete means you have to implement all those live features yourself, I only gave a taste but I return to Python because thats the language I know the most, you can live manipulate objects in so many diffirent ways and mess their structure. Make a method become an instance variable,and instance variable to a method, rename variables , change the signature of your methods but only on specific instance or on the class itself. There is an incredibe large library of object manipulation features there to be tamed. Pharo can do many of those things and more of course. Turing complete would apply to me if I said, Python has no live coding feature, but you can implement those if you want. Thats not what I am saying. Python or C may not call this live coding, they call it dynamic libraries, dynamic loading of modules, exceptions , post mortem debugging (debugger popping up in case of error) , module reloading, execution time compiling and many more. They never mentions the word "live coding" , but the features themselves are directly related and very fundamental requirements for live coding. Those features exists because live coding is a necessity , there will be always scenarios that a coder will want to dynamically change something during execution. There is no big ideology behind it like Pharto , which is why Pharo is the best at live coding, but rather practical needs that users requested to be resolved and the devs of languages were forced to implement them to keep them happy. For example its possible to extend live coding outside the Pharo image, using memory mapped files , the Pharo image can be extended not only to save Pharo live state but also the live state of any C library it depends on. This is crucial when you open the image and then you find something does not work because C live state was not storred which is why we have the session attribute we use to make sure that C libraries are correctly initialize in image startup. My CPPBridge which is 100% Pharo project , if you exclude some C examples , it provide a basic way of a live coding image that can act as an extension to the pharo image and include live C state. So yes I have done my hopework. As a matter of fact each time I hear arguments turing complete wise, I facepalm myself. Because its a louse excuse to support a language. Any tool or library that can save you time its a huge deal. On Tue, Oct 10, 2017 at 12:40 PM Denis Kudriashov <dionisiydk@gmail.com> wrote:
Hi Dimitris.
You opinion about live programming reminds me the common sentence from developers who don't care about languages at all. Usual argument is: they all are Turing complete, so who cares.
2017-10-10 11:02 GMT+02:00 webwarrior <reg@webwarrior.ws>:
Calm your tits, dude. No need to use Caps Lock that much :-)
I made no value judgements in my post, letting readers decide for themselves. Nor did I attribute any claims to you. Except "live coding in Python is easy", which you did say in some earlier posts.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
Well, many of them kinda can. But you see, when live coding is an afterthought, problems appear here and there, and some of them are unsolvable. Up to the point that it's easier to do traditional development process and not bother with live coding at all.
It's almost like saying that you can do point-free style functional programming in Python. Of course you can (to some extent). There is even a library for that (https://pypi.python.org/pypi/pointfree/). I there much sense in it? I don't think so.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Nothing is unresovable, some problems will require a lot of more hacking sure, but Pharo VM is implemented in C (yeah I know it suppose to be smalltalk but is actually slang compiled to C) and since everything out there uses C anything out there can do live coding. You can do it in billlion diffirent ways.The question of course is then how easy to do. The answer to that is usual answer as in all things, it depends. But yes it easier indeed to do traditional level coding because lets say face, you have to be aware of the benefits of live coding and you have to really try it beforehand. Plus the idea of having to move a finger to make live coding work properly on the language of choice is less than appealing to most developers. Take for example your instance update problem, you can resolve it 2 ways, python allows you to copy the data of an instance to another in a form of a dictionary or you can exchange live methods between old a new instances in frankenstein way. You also find references and replace them real time keeping track of their object ids. I lately got an idea about a time machine live coding, live coding that does not keep alive the current data and execution but also old data and execution and allows you go backwards in time. I am inspired by implementation of backward debugging and some demos I have seen where data was visualised as it evolved with the ability to move it back in time. This is something that no language I am aware of , including Pharo offers. I am the weirdo researching live coding because after being introduced to Pharo my appetite severely increased. Pharo opened to me a world that never knew it existed. As a resulte I know learn more about language features related to live coding that I never thought it was possible. I implement my own live coding library because I want to learn more about live coding and if possible improve on it but without messing with VMs. I hope I bring some of those features back into Pharo as my giift for introducing me to such a fun way of coding. On Tue, Oct 10, 2017 at 12:03 PM webwarrior <reg@webwarrior.ws> wrote:
Calm your tits, dude. No need to use Caps Lock that much :-)
I made no value judgements in my post, letting readers decide for themselves. Nor did I attribute any claims to you. Except "live coding in Python is easy", which you did say in some earlier posts.
My post were not made to pick a fight but rather to inform and demolish the wrong assumptions that other languages CANNOT DO live coding.
Well, many of them kinda can. But you see, when live coding is an afterthought, problems appear here and there, and some of them are unsolvable. Up to the point that it's easier to do traditional development process and not bother with live coding at all.
It's almost like saying that you can do point-free style functional programming in Python. Of course you can (to some extent). There is even a library for that (https://pypi.python.org/pypi/pointfree/). I there much sense in it? I don't think so.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
kilon.alios wrote
itâs clear the community is unwilling to deal with such discussions.
I wouldn't say that... after all this thread has the most posts on this list since January 21 ;) I personally learned a lot and was glad to hear all the points. I thought the last two pretty much captured the situation, which is that you *can* do live programming in other languages, but the advantage of Pharo is that it's *about* live programming. I certainly didn't know it was even possible in some of the other languages mentioned. Yet, practically, it seems extremely difficult for a system that tacks something on as a feature to compete with a system that values that thing at its core. Ironically, the biggest barrier seems to be human, in the McLuhan sense that our medium determines how/what we can think/say. I feel lucky to have discovered Smalltalk and have cast off (most) of the brain damage from C and C++ ha ha. ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Yes exactly my post was not an effort to diminish the value of Pharo as live coding system. My effort was to reveal my findings because I have been doing a lot of research lately. I am not keen on abandoning the comforts of Pharo live coding wise now that I code in Python. But to get to Pharo level there are many issues to be resolved. I know however that I can get to Pharo level eventually at least on features I really care about. Because I have little interest in proving something better from something else. I would not try this if there were not already a substantial amount of features. I know that you guys did not know this is possible and I do not think thats a bad thing because a year ago I did not know that is possible either. It started as a joke and out of it I created two projects , Atlas and CPPBridge both 100% Pharo code. With atlas I could have settled with inling python syntax but I did not because that was easy instead I parsed Pharo syntax to python syntax to make a deeper integration between Pharo and Python libraries. I think how difficult it is depends on how high you put your barrier of entry, if you go for a full blown live coding system like Pharo has, it will be difficult because there will be several important issues to resolve. As you said those language do not follow a strict live coding workflow. They have live coding features out of need to resolved real time issues. Does C has DLLs because it cares about live coding, obviously not, but the moment you have a library that can at any moment be reloaded you already made the first step down the path. When I said you can do hardcore live coding with ease, I meant that you can live code full time provided you have built some of the functionality. Once you got a basic library running the rest just flows. But if you want to complete neck to neck with Pharo it will be a challange because Pharo does not have live coding feature only at language level but also at IDE level. Again if people did only the easy stuff, we would not have Pharo would we , the fun is in the challenge. If a python coder should be stop by the lack of a live coding enviroment should a Pharo be stopped by the lack of namespaces ? Of course not, languages are there to be extended via third party libraries and the more we challange ourselved the deeper the understanding becomes and the more amazing stuff we can do. On Tue, Oct 10, 2017 at 2:25 PM Sean P. DeNigris <sean@clipperadams.com> wrote:
kilon.alios wrote
itâs clear the community is unwilling to deal with such discussions.
I wouldn't say that... after all this thread has the most posts on this list since January 21 ;) I personally learned a lot and was glad to hear all the points. I thought the last two pretty much captured the situation, which is that you *can* do live programming in other languages, but the advantage of Pharo is that it's *about* live programming. I certainly didn't know it was even possible in some of the other languages mentioned. Yet, practically, it seems extremely difficult for a system that tacks something on as a feature to compete with a system that values that thing at its core. Ironically, the biggest barrier seems to be human, in the McLuhan sense that our medium determines how/what we can think/say. I feel lucky to have discovered Smalltalk and have cast off (most) of the brain damage from C and C++ ha ha.
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Webwarrior I can tell you that you made my day :) Thanks for this great testimony. Today we discuss about Pablo because he has a working system being able to upload hot code and migrate instance but also the code on the stack. We will see if we integrate it in Pharo but I want the best hot code loader ever and be able to update the updater while running the updater. Then we want to have a context aware version of this one where you can apply a change that break the UI and revert it. Stef On Mon, Oct 9, 2017 at 7:05 PM, webwarrior <reg@webwarrior.ws> wrote:
kilon.alios wrote
Care to explain what difficulty you experienced in live coding with Python. Or what Pharo can do that Python canât live code wise ? Maybe I will learn something.
It's funny that one of main reasons why I discovered and started using Pharo was failure to get live coding working for Python (Jython in particular).
And now time after time kilon.alios states that live coding in Python is "easy" and no big deal.
I will tell you, Pharoers, about code reloading in Python, and let you decide for yourselves how it compares to Pharo.
Out of the box in Python you can execute some Python code and reload modules with reload() function.
What reload() does is it reads code from file (in Python each source file corresponds to module), executes it, and replaces reference to [that module] in current module. From that moment, any code in current module, when referencing reloaded module, will point to new version of it.
All implicitly imported names will (like from foo import bar, from foo import *, etc.) will point to old version. Also all other modules except current will not be affected.
There are, however, third-party libraries, that take care of it.
But that's not all. All instances and subclasses of old classes will point to old versions of classes. To counter that, instead of replacing old module you could replace its contents by newer variables/functions and patch classes by replacing their contents. Some third-party libraries do that.
That's still not all. If you store references to functions/methods/classes, that references will point to old versions. reimport library takes care of that, but it uses implementation-specific feature of CPython's GC, which lets you get all references to some object. Unfortunately, it doesn't work in Jython, and probably in other alternative Python implementations.
But wait, what if you rename a class or function, or change its base class(-es)? You're out of luck. Theoretically you could handle such change if recent code change consists of a single rename, but that's it.
I may have missed some other edge cases and haven't talked about tools support, but I hope you get the idea.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
The first language I played with, I was nearly 5, was a live environment, Forth.  I used it on an old PDP my mother had bought that was being surplused at the company she worked at.  I used Forth until I was in my early teens, it was far superior to the BASIC that most other kids I knew who knew any programming used.  It wasn't Smalltalk, but in many of the areas it was used (production automation is one major area), the language that most often replaced it was Smalltalk.  The biggest difference, for me, as I wrote in the article the other day, is the ability to build-on rather than build-with, which in turn is based on the environment being written in itself. Ruby looks very much like Smalltalk, but it works like Java; Python works more like Smalltalk, and it's a much better live environment than Java or Ruby, because more of it is written in itself, but too much of Python is written in C, and that causes problems. If the code that interprets/compiles your code follows the same rules, the machine code it generates will usually also follow the same rules, and those rules/restrictions are, for the most part, designed to make code more reliable. As well, RVM has proven Smalltalk (specifically Squeak / Pharo, though admittedly an older version) can scale to 1024 cores nearly linearly.  Python has a decent developer base but it's almost all OSS and almost all on Linux. Very few applications in Python are in areas where reliability is absolutely necessary, or even all that important.  Like Smalltalk, it's a general purpose language in a niche, but the niches are very different. For years, decades really, any good version of Smalltalk cost an arm and a leg (some of them both of each), and as a result it tended to be used only where things really had to work.  Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great- grand-child's first born is fantastic, and a great achievement for those who accomplished it. Kendrick is an example of what can be done if you build-on:  it was built on Moose, which is built on Glamorous, which is built on Morphic, which itself is based on a couple of decades work olving the basic problems inherent to UI's and MVC-type UI's in particular.  Kendrick itself was written in a very short time when you compare it with other epidemiology programs, if you only count the time spent on Kendrick itself.  It's an inherently complex problem area, and it's a life or death problem area. That an application capable of working reliably enough to be trusted in that area was built in a short time, because it was built-on a couple of decades of OSS work, is a huge compliment to those who were involved.  Unfortunately for me, I wasn't, âº.  But at least I can take advantage of it existence now. Andrew -----Original Message----- Date: Fri, 06 Oct 2017 21:18:28 +0000Subject: Re: [Pharo-users] Behold Pharo: The Modern SmalltalkTo: Any question about pharo is welcome <pha ro-users@lists.pharo.org>Reply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org>From: Dimitris Chloupis <kilon.alios@gmail .com>Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP. And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less. iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment. To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality. For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why. But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!! I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again. I really hope that we take this further though. On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk
<https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk- 38e132c46053>
If you would like to suggest some edits, I'm all ears. Anything to improve
the impact of the article.
Thanks.
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I donât care about Python vs Pharo debate. I love both I use both. My ultimate goal is to unite the two under a single Uber powerful live coding environment part of my project Atlas. With direct mapping between Pharo and Python objects and no compromises. A workflow that will be seamless that you wonât know if you use Python or Pharo libraries as the Atlas environment will allow you to work with both languages in a symbiotic relationship. That was a dream of mine that I did not dear to reveal now slowly and steadily becomes reality. I am extending the live coding environment of python and later will tackle the subject of a python image format. Already Atlas can use python libraries from Pharo but thatâs about it , but after this revelation I can move to stage 2 of full synchronization between Python and Pharo. Even now Atlas allows you to use Pharo syntax to fully access Python libraries. But integration is skin deep and is what is going to improve the next years. So it seems something good came out of this very long discussion. Atlas is going for a big update. This thread has been a huge inspiration for me. Super excited :) On Sat, 14 Oct 2017 at 03:40, Andrew Glynn <aglynn42@gmail.com> wrote:
The first language I played with, I was nearly 5, was a live environment, Forth. I used it on an old PDP my mother had bought that was being surplused at the company she worked at. I used Forth until I was in my early teens, it was far superior to the BASIC that most other kids I knew who knew any programming used. It wasn't Smalltalk, but in many of the areas it was used (production automation is one major area), the language that most often replaced it *was* Smalltalk.
The biggest difference, for me, as I wrote in the article the other day, is the ability to build-on rather than build-with, which in turn is based on the environment being written in itself. Ruby *looks* very much like Smalltalk, but it *works* like Java; Python works *more* like Smalltalk, and it's a much better live environment than Java or Ruby, because more of it is written in itself, but too much of Python is written in C, and that causes problems. If the code that interprets/compiles your code follows the same rules, the machine code it generates will usually also follow the same rules, and those rules/restrictions are, for the most part, designed to make code more reliable.
As well, RVM has proven Smalltalk (specifically Squeak / Pharo, though admittedly an older version) can scale to 1024 cores nearly linearly.
Python has a decent developer base but it's almost all OSS and almost all on Linux. Very few applications in Python are in areas where reliability is absolutely necessary, or even all that important. Like Smalltalk, it's a general purpose language in a niche, but the niches are very different. For years, decades really, any good version of Smalltalk cost an arm and a leg (some of them both of each), and as a result it tended to be used only where things really *had* to work.
Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it.
Kendrick is an example of what can be done if you build-*on*: it was built on Moose, which is built on Glamorous, which is built on Morphic, which itself is based on a couple of decades work olving the basic problems inherent to UI's and MVC-type UI's in particular. Kendrick itself was written in a very short time when you compare it with other epidemiology programs, *if* you only count the time spent on Kendrick itself. It's an inherently complex problem area, and it's a life or death problem area. That an application capable of working reliably enough to be trusted in that area was built in a short time, because it was built-on a couple of decades of OSS work, is a huge compliment to those who were involved.
Unfortunately for me, I wasn't, âº. But at least I can take advantage of it existence now.
Andrew
-----Original Message-----
*Date*: Fri, 06 Oct 2017 21:18:28 +0000 *Subject*: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk *To*: Any question about pharo is welcome <pharo-users@lists.pharo.org <Any%20question%20about%20pharo%20is%20welcome%20%3cpharo-users@lists.pharo.org%3e>
Reply-to: Any question about pharo is welcome <pharo-users@lists.pharo.org
*From*: Dimitris Chloupis <kilon.alios@gmail.com <Dimitris%20Chloupis%20%3ckilon.alios@gmail.com%3e>> Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
So I finally built the Python live coding library I was talking about. I named it "pylivecoding" https://github.com/kilon/pylivecoding Live codig does mean in this case , replace methosd with updated ones for each instance of a class. Same thing you would expect in Pharo. Very simple to use , only 50 lines of code. it can also work with not only modifying methods , but aslo renaming them and removing or adding new ones. I have tested it during the day, seems to work ok but of course more thoroug testing needs to be done. Of course nowhere near the Pharo experience. But the main idea is there, you open yoru favorite editor IDE, you code away and at the same time you see your code come alive with no delays or weird side effects/ requirements. Of course it works with debuggers too, I use it from my python ide, python debugger and iptyhon all the time. Again usual workflow , debug, correct, continue. No issues so far. On Sat, Oct 14, 2017 at 4:37 AM Dimitris Chloupis <kilon.alios@gmail.com> wrote:
I donât care about Python vs Pharo debate. I love both I use both.
My ultimate goal is to unite the two under a single Uber powerful live coding environment part of my project Atlas. With direct mapping between Pharo and Python objects and no compromises. A workflow that will be seamless that you wonât know if you use Python or Pharo libraries as the Atlas environment will allow you to work with both languages in a symbiotic relationship.
That was a dream of mine that I did not dear to reveal now slowly and steadily becomes reality.
I am extending the live coding environment of python and later will tackle the subject of a python image format.
Already Atlas can use python libraries from Pharo but thatâs about it , but after this revelation I can move to stage 2 of full synchronization between Python and Pharo. Even now Atlas allows you to use Pharo syntax to fully access Python libraries. But integration is skin deep and is what is going to improve the next years.
So it seems something good came out of this very long discussion. Atlas is going for a big update. This thread has been a huge inspiration for me. Super excited :)
On Sat, 14 Oct 2017 at 03:40, Andrew Glynn <aglynn42@gmail.com> wrote:
The first language I played with, I was nearly 5, was a live environment, Forth. I used it on an old PDP my mother had bought that was being surplused at the company she worked at. I used Forth until I was in my early teens, it was far superior to the BASIC that most other kids I knew who knew any programming used. It wasn't Smalltalk, but in many of the areas it was used (production automation is one major area), the language that most often replaced it *was* Smalltalk.
The biggest difference, for me, as I wrote in the article the other day, is the ability to build-on rather than build-with, which in turn is based on the environment being written in itself. Ruby *looks* very much like Smalltalk, but it *works* like Java; Python works *more* like Smalltalk, and it's a much better live environment than Java or Ruby, because more of it is written in itself, but too much of Python is written in C, and that causes problems. If the code that interprets/compiles your code follows the same rules, the machine code it generates will usually also follow the same rules, and those rules/restrictions are, for the most part, designed to make code more reliable.
As well, RVM has proven Smalltalk (specifically Squeak / Pharo, though admittedly an older version) can scale to 1024 cores nearly linearly.
Python has a decent developer base but it's almost all OSS and almost all on Linux. Very few applications in Python are in areas where reliability is absolutely necessary, or even all that important. Like Smalltalk, it's a general purpose language in a niche, but the niches are very different. For years, decades really, any good version of Smalltalk cost an arm and a leg (some of them both of each), and as a result it tended to be used only where things really *had* to work.
Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it.
Kendrick is an example of what can be done if you build-*on*: it was built on Moose, which is built on Glamorous, which is built on Morphic, which itself is based on a couple of decades work olving the basic problems inherent to UI's and MVC-type UI's in particular. Kendrick itself was written in a very short time when you compare it with other epidemiology programs, *if* you only count the time spent on Kendrick itself. It's an inherently complex problem area, and it's a life or death problem area. That an application capable of working reliably enough to be trusted in that area was built in a short time, because it was built-on a couple of decades of OSS work, is a huge compliment to those who were involved.
Unfortunately for me, I wasn't, âº. But at least I can take advantage of it existence now.
Andrew
-----Original Message-----
*Date*: Fri, 06 Oct 2017 21:18:28 +0000 *Subject*: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk *To*: Any question about pharo is welcome <pharo-users@lists.pharo.org <Any%20question%20about%20pharo%20is%20welcome%20%3cpharo-users@lists.pharo.org%3e>
Reply-to: Any question about pharo is welcome < pharo-users@lists.pharo.org> *From*: Dimitris Chloupis <kilon.alios@gmail.com <Dimitris%20Chloupis%20%3ckilon.alios@gmail.com%3e>> Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less.
iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment.
To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality.
For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why.
But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!!
I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again.
I really hope that we take this further though.
On Wed, Oct 4, 2017 at 1:31 PM horrido <horrido.hobbies@gmail.com> wrote:
Behold Pharo: The Modern Smalltalk < https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c4...
If you would like to suggest some edits, I'm all ears. Anything to improve the impact of the article.
Thanks.
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi, On 13/10/17 19:39, Andrew Glynn wrote:
Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it.
What is the LaF ? Cheers, Offray
LaF = Look and Feel. If you look at recent versions LaF of Squeak has improved as well. In fact considerably compared to 3.8/3.9 where Pharo branched off. On 10/16/17, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi,
On 13/10/17 19:39, Andrew Glynn wrote:
Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it.
What is the LaF ?
Cheers,
Offray
Look and feel Sent from my iPhone
On Oct 16, 2017, at 10:41, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
Hi,
On 13/10/17 19:39, Andrew Glynn wrote: Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it.
What is the LaF ?
Cheers,
Offray
participants (37)
-
A. Glynn -
Andrew Glynn -
askoh -
Ben Coman -
Brad -
Cyril Ferlicot -
Cédrick Béler -
Denis Kudriashov -
Dimitris Chloupis -
Gour -
H. Hirzel -
Hernán Morales Durand -
Hilaire -
horrido -
john pfersich -
jtuchel@objektfabrik.de -
Kjell Godo -
Marcus Denker -
Markus Stumptner -
Nicolai Hess -
Offray Vladimir Luna Cárdenas -
Peter Fisk -
phil@highoctane.be -
Pierce Ng -
Prof. Andrew P. Black -
Richard Sargent -
Richard Sargent -
Sean P. DeNigris -
Serge Stinckwich -
serge.stinckwich@gmail.com -
st@bestley.co.uk -
stephan -
Stephane Ducasse -
Sven Van Caekenberghe -
Thierry Goubier -
Vitor Medina Cruz -
webwarrior