pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

Sacrilegeous question : what are compelling use cases for Pharo

M
mayuresh@kathe.in
Sat, Jan 14, 2023 8:01 AM

Hello,

This isn't a mail intended to troll this community.

I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?

Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI.
And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment.
In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.

But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?

Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.

Kind regards,

~Mayuresh

Hello, This isn't a mail intended to troll this community. I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. Kind regards, ~Mayuresh
NB
Noury Bouraqadi
Sat, Jan 14, 2023 9:20 AM

Hi Mayuresh,

It's not about what you can do, but it's about how you do it.
The language and the community culture have a huge influence on the way we build software.
They have consequences not only at the implementation level, but also at the design level.

The Pharo language and its main libraries are simple, pure OO, highly reflective, dynamic...
So, when building software, we tend to adopt the same good practices.

The Pharo powerful IDE addresses all development facets (coding, refactoring, debugging, versionning, ...).
It makes it easy to make things right.

This is what makes Pharo compelling.
Noury
On Jan 14 2023, at 9:01 am, mayuresh@kathe.in via Pharo-users pharo-users@lists.pharo.org wrote:

Hello,

This isn't a mail intended to troll this community.
I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?
Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI.
And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment.
In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.

But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?
Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.
Kind regards,
~Mayuresh

Hi Mayuresh, It's not about what you can do, but it's about how you do it. The language and the community culture have a huge influence on the way we build software. They have consequences not only at the implementation level, but also at the design level. The Pharo language and its main libraries are simple, pure OO, highly reflective, dynamic... So, when building software, we tend to adopt the same good practices. The Pharo powerful IDE addresses all development facets (coding, refactoring, debugging, versionning, ...). It makes it easy to make things right. This is what makes Pharo compelling. Noury On Jan 14 2023, at 9:01 am, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote: > Hello, > > This isn't a mail intended to troll this community. > I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? > Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. > And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. > > What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. > In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. > > But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? > Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. > Kind regards, > ~Mayuresh
JJ
Jupiter Jones
Sat, Jan 14, 2023 11:43 AM

Hi Mayuresh,

We use Smalltalk almost exclusively for all our server systems - database and applications. This includes POS applications and payment systems, SaaS applications, multiplayer games and IoT devices.

We use GemStone Smalltalk [1] as our database and application server, and Pharo as the development tool. Our IoT devices are Raspberry Pi based and run Pharo IoT [2].

Also, most of these systems have a web based interface developed and served via Seaside [3] running in GemStone.

We also have Mobile apps that connect to these systems that are developed in Swift, Dart or Java as users have come to expect native interfaces on their devices. Using these languages to create nothing but thin client like interfaces is quick and easy to maintain. That’s where they shine. Compared to Smalltalk these languages suck for writing anything more complex.

We’ve had many recent graduates join the team with experience in Oracle or MongoDB or Redis or React or Node or any number of tools who are convinced (like most recent graduates are) that the tools with which they have experience are the “best" and only serious way to move forward on projects. Typically, as a training exercise, we encourage them to build their first project in the tools they know, along side someone working with GemStone and Seaside.

Without fail, a feature identical Seaside application (including a full suite of tests), is completed in a fraction of the time. Sometimes so much quicker that they choose to abandon their attempt and focus on learning Smalltalk and Seaside.

FYI, Smalltalk is quite often found at the top-end-of-town. It’s used on highly complex systems that contain substantial intellectual property, and often require confidentiality. It’s considered a serious competitive advantage, and it’s where I find much of my work :) You’re unlikely to get responses from these teams for obvious reasons,

Hope this adds to your investigation.

Cheers,

J

[1] https://gemtalksystems.com/
[2] https://www.pharoiot.org/
[3] https://www.seaside.st/

On 14 Jan 2023, at 7:01 pm, mayuresh@kathe.in via Pharo-users pharo-users@lists.pharo.org wrote:

Hello,

This isn't a mail intended to troll this community.

I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?

Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI.
And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment.
In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.

But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?

Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.

Kind regards,

~Mayuresh

Hi Mayuresh, We use Smalltalk almost exclusively for all our server systems - database and applications. This includes POS applications and payment systems, SaaS applications, multiplayer games and IoT devices. We use GemStone Smalltalk [1] as our database and application server, and Pharo as the development tool. Our IoT devices are Raspberry Pi based and run Pharo IoT [2]. Also, most of these systems have a web based interface developed and served via Seaside [3] running in GemStone. We also have Mobile apps that connect to these systems that are developed in Swift, Dart or Java as users have come to expect native interfaces on their devices. Using these languages to create nothing but thin client like interfaces is quick and easy to maintain. That’s where they shine. Compared to Smalltalk these languages suck for writing anything more complex. We’ve had many recent graduates join the team with experience in Oracle or MongoDB or Redis or React or Node or any number of tools who are convinced (like most recent graduates are) that the tools with which they have experience are the “best" and only serious way to move forward on projects. Typically, as a training exercise, we encourage them to build their first project in the tools they know, along side someone working with GemStone and Seaside. Without fail, a feature identical Seaside application (including a full suite of tests), is completed in a fraction of the time. Sometimes so much quicker that they choose to abandon their attempt and focus on learning Smalltalk and Seaside. FYI, Smalltalk is quite often found at the top-end-of-town. It’s used on highly complex systems that contain substantial intellectual property, and often require confidentiality. It’s considered a serious competitive advantage, and it’s where I find much of my work :) You’re unlikely to get responses from these teams for obvious reasons, Hope this adds to your investigation. Cheers, J [1] https://gemtalksystems.com/ [2] https://www.pharoiot.org/ [3] https://www.seaside.st/ > On 14 Jan 2023, at 7:01 pm, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote: > > Hello, > > This isn't a mail intended to troll this community. > > I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? > > Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. > And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. > > What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. > In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. > > But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? > > Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. > > Kind regards, > > ~Mayuresh
TM
Tim Mackinnon
Sat, Jan 14, 2023 5:59 PM

This question comes up every few years - and it’s a good one to revisit, particularly in a new year.

You’ve already had a few good answers - and I’m sure you will get a few more.

Of the languages you cite - I’ve tried 2 of them (C# and Swift) - and they are just too complicated. They don’t share the elegance of Smalltalk, it’s such a compact, simple and approachable language. But it’s not just the language - it’s the tools which are all built and self hosted in the language as well , meaning they serve as great examples in how to do most things and also enable you to trivially get in there and extend your programming experience. Even deeper - they let you gradually understand how everything works - even down to the compiler and debugger. Then you understand there is no incomprehensible magic, it’s just straight forward code and messages. I rarely find average C# or Swift programmers who understand how things work in their language - it’s all voodoo and stack overflow for them, whereas most Smalltalkers after 6 months will understand how conditional logic works and many other lower level concepts.

It’s also not surprising that many computing innovations (more than most languages I’d say) trace back to Smalltalk (and continue to do so). That simplicity and elegance just inspires creative thinking.

While many languages have borrowed ideas from Smalltalk (which none of us mind) - they just got awkwardly bolted on. As an example - most languages now have closures , but the ethos of them is never properly embraced. For example, while we have exceptions - they dont get used as much as other languages because the convention (pervasive in all libraries) is to carry an error closure along with an operation - so on an error condition you can evaluate some code exactly where you need it vs winding back up the stack. Eg #at:ifAbsent: or #detect:ifNone: (and as previously mentioned, you can see how these work, and implement your own similar conventions in your models too). In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code.

I keep looking at new languages hoping to find the same elegance, but it seems that such simplicity is just not appreciated (I think lisp is one of the few that does - and it’s a cousin of Smalltalk).

Finally, it’s just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air.

If you haven’t tried it, I encourage you to dip a toe in the water. Even if you use other things, we all seem to find that we just come back to Smalltalk as it’s so deceptively addictive.

Tim

On 14 Jan 2023, at 08:01, mayuresh@kathe.in via Pharo-users pharo-users@lists.pharo.org wrote:

Hello,

This isn't a mail intended to troll this community.

I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?

Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI.
And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment.
In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.

But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?

Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.

Kind regards,

~Mayuresh

This question comes up every few years - and it’s a good one to revisit, particularly in a new year. You’ve already had a few good answers - and I’m sure you will get a few more. Of the languages you cite - I’ve tried 2 of them (C# and Swift) - and they are just too complicated. They don’t share the elegance of Smalltalk, it’s such a compact, simple and approachable language. But it’s not just the language - it’s the tools which are all built and self hosted in the language as well , meaning they serve as great examples in how to do most things and also enable you to trivially get in there and extend your programming experience. Even deeper - they let you gradually understand how everything works - even down to the compiler and debugger. Then you understand there is no incomprehensible magic, it’s just straight forward code and messages. I rarely find average C# or Swift programmers who understand how things work in their language - it’s all voodoo and stack overflow for them, whereas most Smalltalkers after 6 months will understand how conditional logic works and many other lower level concepts. It’s also not surprising that many computing innovations (more than most languages I’d say) trace back to Smalltalk (and continue to do so). That simplicity and elegance just inspires creative thinking. While many languages have borrowed ideas from Smalltalk (which none of us mind) - they just got awkwardly bolted on. As an example - most languages now have closures , but the ethos of them is never properly embraced. For example, while we have exceptions - they dont get used as much as other languages because the convention (pervasive in all libraries) is to carry an error closure along with an operation - so on an error condition you can evaluate some code exactly where you need it vs winding back up the stack. Eg #at:ifAbsent: or #detect:ifNone: (and as previously mentioned, you can see how these work, and implement your own similar conventions in your models too). In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code. I keep looking at new languages hoping to find the same elegance, but it seems that such simplicity is just not appreciated (I think lisp is one of the few that does - and it’s a cousin of Smalltalk). Finally, it’s just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air. If you haven’t tried it, I encourage you to dip a toe in the water. Even if you use other things, we all seem to find that we just come back to Smalltalk as it’s so deceptively addictive. Tim > On 14 Jan 2023, at 08:01, mayuresh@kathe.in via Pharo-users <pharo-users@lists.pharo.org> wrote: > > Hello, > > This isn't a mail intended to troll this community. > > I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? > > Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. > And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. > > What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. > In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. > > But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? > > Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. > > Kind regards, > > ~Mayuresh
JJ
Jupiter Jones
Sat, Jan 14, 2023 11:32 PM

Hey Tim,

On 15 Jan 2023, at 4:59 am, Tim Mackinnon tim@testit.works wrote:

In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code.

This is one of the first things I introduce new Smalltalkers to, typically after the question “How do you do an if / then?”

More often than not, it leads to a “mind-blown” moment. They come to understand that C++, or Swift, or Java, or Dart, or whatever quasi-oop language they know has really only added a few OOP concepts to their development (and sometimes runtime) workflow.

Understanding Smalltalk makes you a better developer in other languages, and makes it easier to learn new languages, since you clearly see the line between pure Object Oriented, and Language idiosyncrasies.

Finally, it’s just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air.

OMG Yes! I sometimes think of myself as a lazy programmer since the thought of having "to go back to" C++ or C# or Go makes me wince - It’s just too much work and not enough fun! :)

I’d also add that once you adopt Smalltalk end-to-end you gain another significant advantage - no matter the role, your developers can actually support each other right down to the code.

This isn’t possible with the mish-mash of more “popular” languages and technologies. The entire development industry has largely become a sausage factory with jobs so specific in nature that they provide no joy, no diversity, and no clear path for advancement.

Cheers,

J

PS The missing piece of the puzzle for Smalltalk ubiquity is a VM with native UI's on major platforms (MacOS / iOS / Linux / Android / Windows). If we had that, there’d be no reason / excuse to use any other language :)

Hey Tim, > On 15 Jan 2023, at 4:59 am, Tim Mackinnon <tim@testit.works> wrote: > > In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code. This is one of the first things I introduce new Smalltalkers to, typically after the question “How do you do an if / then?” More often than not, it leads to a “mind-blown” moment. They come to understand that C++, or Swift, or Java, or Dart, or whatever quasi-oop language they know has really only added a few OOP concepts to their development (and sometimes runtime) workflow. Understanding Smalltalk makes you a better developer in other languages, and makes it easier to learn new languages, since you clearly see the line between pure Object Oriented, and Language idiosyncrasies. > Finally, it’s just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air. OMG Yes! I sometimes think of myself as a lazy programmer since the thought of having "to go back to" C++ or C# or Go makes me wince - It’s just too much work and not enough fun! :) I’d also add that once you adopt Smalltalk end-to-end you gain another significant advantage - no matter the role, your developers can actually support each other right down to the code. This isn’t possible with the mish-mash of more “popular” languages and technologies. The entire development industry has largely become a sausage factory with jobs so specific in nature that they provide no joy, no diversity, and no clear path for advancement. Cheers, J PS The missing piece of the puzzle for Smalltalk ubiquity is a VM with native UI's on major platforms (MacOS / iOS / Linux / Android / Windows). If we had that, there’d be no reason / excuse to use any other language :)
M
mayuresh@kathe.in
Sun, Jan 15, 2023 6:11 AM

Hello,

In response to my email below, I received 5 interesting responses. I thank those people for writing-in.

Here is my take on what I've understood and why I am still hesitant to go along.
My comments on those responses are further below, but, at the moment, let me explain my situation.

I am a 46 year-old who has been programming computers since the age of 16.
I used to be a highly sought-after programmer till the year 2000, when due to circumstances beyond my control, my life and career got destroyed completely.
In fact, I was so highly valued, that in spite of me being from India, I was pursued by Verizon US.
I am now confined to my home (mostly) and I have very little to do, in the past 12 years I have not programmed anything beyond a basic prime-number tester and a fibonacci-sequence generator in C.
I am getting my life back in order and I need some occupation, though, not necessarily one from which I would demand financial returns.
I have been dilly-dallying on a decision, primarily because I am unable to take a call on whether to pursue my love for the low-level (x64 assembler + Forth) or the extremely high-level (work involving reasoning using symbolic inference) using a Smalltalk (either Squeak or Pharo).

The above is not meant to elicit sympathy, but has been tacked-in just to give potential advisers an idea about my state.

Onward to my take on the responses I received to my first email.

As Noury Bouraqadi and Stephane Ducasse mentioned:
It's not about what you can do, but it's about how you do it.
I'd say, that is the basic problem with all Smalltalk aficionados.
The whole environment is such a joy to work with that it is addictive, to the extent that developers forget that it is the "what you can do" which is of utmost importance.

Jupiter Jones email provided the most amount of real-world use-cases.
Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk.
Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk?
So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby.

Tim Mackinnon is very correct in observing that relative to C# and Swift, Smalltalk (and hence Pharo) is very compact, simple and approachable.
Though, I did not understand his statement about conditional logic becoming easier to understand after working especially with Smalltalk. Would he care to elaborate?
Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had better acknowledge the fact that most Lispers "look down" upon Smalltalk and do not spare any opportunity to berate its users/developers (this is from personal experience).

Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment.

Thank you,

~Mayuresh

On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via Pharo-users" pharo-users@lists.pharo.org wrote:

Hello,

This isn't a mail intended to troll this community.

I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo?

Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI.
And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment.
In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc.

But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo?

Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent.

Kind regards,

~Mayuresh

Hello, In response to my email below, I received 5 interesting responses. I thank those people for writing-in. Here is my take on what I've understood and why I am still hesitant to go along. My comments on those responses are further below, but, at the moment, let me explain my situation. I am a 46 year-old who has been programming computers since the age of 16. I used to be a highly sought-after programmer till the year 2000, when due to circumstances beyond my control, my life and career got destroyed completely. In fact, I was so highly valued, that in spite of me being from India, I was pursued by Verizon US. I am now confined to my home (mostly) and I have very little to do, in the past 12 years I have not programmed anything beyond a basic prime-number tester and a fibonacci-sequence generator in C. I am getting my life back in order and I need some occupation, though, not necessarily one from which I would demand financial returns. I have been dilly-dallying on a decision, primarily because I am unable to take a call on whether to pursue my love for the low-level (x64 assembler + Forth) or the extremely high-level (work involving reasoning using symbolic inference) using a Smalltalk (either Squeak or Pharo). The above is not meant to elicit sympathy, but has been tacked-in just to give potential advisers an idea about my state. Onward to my take on the responses I received to my first email. As Noury Bouraqadi and Stephane Ducasse mentioned: It's not about what you can do, but it's about how you do it. I'd say, that is the basic problem with all Smalltalk aficionados. The whole environment is such a joy to work with that it is addictive, to the extent that developers forget that it is the "what you can do" which is of utmost importance. Jupiter Jones email provided the most amount of real-world use-cases. Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk. Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk? So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby. Tim Mackinnon is very correct in observing that relative to C# and Swift, Smalltalk (and hence Pharo) is very compact, simple and approachable. Though, I did not understand his statement about conditional logic becoming easier to understand after working especially with Smalltalk. Would he care to elaborate? Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had better acknowledge the fact that most Lispers "look down" upon Smalltalk and do not spare any opportunity to berate its users/developers (this is from personal experience). Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment. Thank you, ~Mayuresh On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via Pharo-users" <pharo-users@lists.pharo.org> wrote: > Hello, > > This isn't a mail intended to troll this community. > > I am genuinely curious about what would be the type of use cases which would be exemplary for Pharo? > > Now-a-days, anything one could have accomplished solely with Smalltalk (and hence Pharo) can be accomplished with a number of modern programming languages and their associated frameworks, e.g. Google's Dart with Flutter, Apple Swift with SwiftUI, Microsoft's C# with WinUI. > And such languages and their associated frameworks are built from the ground-up for a particular platform, while Pharo does not have any such targets, which usually renders graphical applications built using Pharo to "look like" aliens. > > What does stand-out regarding Smalltalk (and hence Pharo) is the superior developer experience furnished as a result of the true object system combined with a full graphical environment. > In addition to that, Pharo, specifically, provides advanced tools like Git integration, etc. > > But, are these things all that there are to be considered enough for highlighting the full inherent power of Pharo? > > Again, apologies if anyone found the subject line as well as the message body to be troll-ish. That has not been the intent. > > Kind regards, > > ~Mayuresh
JJ
Jupiter Jones
Sun, Jan 15, 2023 6:51 AM

Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment.

The “mind blown” comes from a first look at methods in the classes True and False to see how boolean logic is implemented.

For many beginners, it seems so foreign that it takes a moment to realise just how simple and clean the implementation is. It opens their mind to new ways of writing code, and gives them a beautiful example of polymorphism. With your prior experience, you may not feel the same awe :)

Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk.

That whole world is kinda in a state of flux right now. But you can check out https://gemtalksystems.com/small-business/gsdevkit/

Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk?

For the most part Seaside pretty much runs identically on all its platforms. But it’s because GemStone is a server smalltalk, and as such doesn’t have a native interface beyond a terminal.

So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby.

Exactly.

> Along those lines, I would also like to get an explanation from Jupiter Jones' for "how do you do an if/then?" which as he states leads to a "mind-blown" moment. The “mind blown” comes from a first look at methods in the classes True and False to see how boolean logic is implemented. For many beginners, it seems so foreign that it takes a moment to realise just how simple and clean the implementation is. It opens their mind to new ways of writing code, and gives them a beautiful example of polymorphism. With your prior experience, you may not feel the same awe :) > Though, I am interested in understanding how to use Pharo as the development tool to be able to release code via GemStone Smalltalk. That whole world is kinda in a state of flux right now. But you can check out https://gemtalksystems.com/small-business/gsdevkit/ > Is it so that Seaside runs identically on Pharo as well as GemStone Smalltalk? For the most part Seaside pretty much runs identically on all its platforms. But it’s because GemStone is a server smalltalk, and as such doesn’t have a native interface beyond a terminal. > So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to Ruby. Exactly.
SM
Stewart MacLean
Sun, Jan 15, 2023 9:37 AM

Hi Mayuresh,

Thanks for sharing your background. My advice would be to simply download
it and "suck it and see".

I've got twenty years on you and have spent my whole career working
with computers (punched cards anyone?). I still get a buzz out of
programming in Smalltalk. The reason it is such a joy is due to the
ultimate simplicity of the grammar of the language. It fits on one page:
http://chronos-st.blogspot.com/2007/12/smalltalk-in-one-page.html.

And also that it is "Turtles all the way down" (
https://en.wikipedia.org/wiki/Turtles_all_the_way_down). Well mostly, but
then there's access to C libraries via the FFI. In other development
environments, you're mostly stuck with what you've got. With Smalltalk, you
can dig under the hood. For Pharo, this is just as well, as some parts of
it are a bit flakey. You mentioned Iceberg. I have had nothing but trouble
with it and it's fair to say put me off using Git with Pharo. Other things
are an absolute joy - check out Roassal for example. One of the highest
quality pieces of code I've come across in my extensive career.

Speaking of which, it has come to an end and what am I doing in my
retirement? - working on a project that I plan on sending out into the real
world! This has its challenges in Pharo, and this is where other platforms
excel and are designed for (along with substantial financial backing), but
I believe it is doable in Pharo. Hopefully it will be a "real world" use
case!

All the best with whatever path you choose...

Cheers,

Stewart

On Sun, Jan 15, 2023 at 7:11 PM mayuresh@kathe.in via Pharo-users <
pharo-users@lists.pharo.org> wrote:

Hello,

In response to my email below, I received 5 interesting responses. I thank
those people for writing-in.

Here is my take on what I've understood and why I am still hesitant to go
along.
My comments on those responses are further below, but, at the moment, let
me explain my situation.

I am a 46 year-old who has been programming computers since the age of 16.
I used to be a highly sought-after programmer till the year 2000, when due
to circumstances beyond my control, my life and career got destroyed
completely.
In fact, I was so highly valued, that in spite of me being from India, I
was pursued by Verizon US.
I am now confined to my home (mostly) and I have very little to do, in the
past 12 years I have not programmed anything beyond a basic prime-number
tester and a fibonacci-sequence generator in C.
I am getting my life back in order and I need some occupation, though, not
necessarily one from which I would demand financial returns.
I have been dilly-dallying on a decision, primarily because I am unable to
take a call on whether to pursue my love for the low-level (x64 assembler +
Forth) or the extremely high-level (work involving reasoning using symbolic
inference) using a Smalltalk (either Squeak or Pharo).

The above is not meant to elicit sympathy, but has been tacked-in just to
give potential advisers an idea about my state.

Onward to my take on the responses I received to my first email.

As Noury Bouraqadi and Stephane Ducasse mentioned:
It's not about what you can do, but it's about how you do it.
I'd say, that is the basic problem with all Smalltalk aficionados.
The whole environment is such a joy to work with that it is addictive, to
the extent that developers forget that it is the "what you can do" which is
of utmost importance.

Jupiter Jones email provided the most amount of real-world use-cases.
Though, I am interested in understanding how to use Pharo as the
development tool to be able to release code via GemStone Smalltalk.
Is it so that Seaside runs identically on Pharo as well as GemStone
Smalltalk?
So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to
Ruby.

Tim Mackinnon is very correct in observing that relative to C# and Swift,
Smalltalk (and hence Pharo) is very compact, simple and approachable.
Though, I did not understand his statement about conditional logic
becoming easier to understand after working especially with Smalltalk.
Would he care to elaborate?
Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had
better acknowledge the fact that most Lispers "look down" upon Smalltalk
and do not spare any opportunity to berate its users/developers (this is
from personal experience).

Along those lines, I would also like to get an explanation from Jupiter
Jones' for "how do you do an if/then?" which as he states leads to a
"mind-blown" moment.

Thank you,

~Mayuresh

On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via
Pharo-users" pharo-users@lists.pharo.org wrote:

Hello,

This isn't a mail intended to troll this community.

I am genuinely curious about what would be the type of use cases which

would be exemplary for Pharo?

Now-a-days, anything one could have accomplished solely with Smalltalk

(and hence Pharo) can be accomplished with a number of modern programming
languages and their associated frameworks, e.g. Google's Dart with Flutter,
Apple Swift with SwiftUI, Microsoft's C# with WinUI.

And such languages and their associated frameworks are built from the

ground-up for a particular platform, while Pharo does not have any such
targets, which usually renders graphical applications built using Pharo to
"look like" aliens.

What does stand-out regarding Smalltalk (and hence Pharo) is the

superior developer experience furnished as a result of the true object
system combined with a full graphical environment.

In addition to that, Pharo, specifically, provides advanced tools like

Git integration, etc.

But, are these things all that there are to be considered enough for

highlighting the full inherent power of Pharo?

Again, apologies if anyone found the subject line as well as the message

body to be troll-ish. That has not been the intent.

Kind regards,

~Mayuresh

Hi Mayuresh, Thanks for sharing your background. My advice would be to simply download it and "suck it and see". I've got twenty years on you and have spent my whole career working with computers (punched cards anyone?). I still get a buzz out of programming in Smalltalk. The reason it is such a joy is due to the ultimate simplicity of the grammar of the language. It fits on one page: http://chronos-st.blogspot.com/2007/12/smalltalk-in-one-page.html. And also that it is "Turtles all the way down" ( https://en.wikipedia.org/wiki/Turtles_all_the_way_down). Well mostly, but then there's access to C libraries via the FFI. In other development environments, you're mostly stuck with what you've got. With Smalltalk, you can dig under the hood. For Pharo, this is just as well, as some parts of it are a bit flakey. You mentioned Iceberg. I have had nothing but trouble with it and it's fair to say put me off using Git with Pharo. Other things are an absolute joy - check out Roassal for example. One of the highest quality pieces of code I've come across in my extensive career. Speaking of which, it has come to an end and what am I doing in my retirement? - working on a project that I plan on sending out into the real world! This has its challenges in Pharo, and this is where other platforms excel and are designed for (along with substantial financial backing), but I believe it is doable in Pharo. Hopefully it will be a "real world" use case! All the best with whatever path you choose... Cheers, Stewart On Sun, Jan 15, 2023 at 7:11 PM mayuresh@kathe.in via Pharo-users < pharo-users@lists.pharo.org> wrote: > Hello, > > In response to my email below, I received 5 interesting responses. I thank > those people for writing-in. > > Here is my take on what I've understood and why I am still hesitant to go > along. > My comments on those responses are further below, but, at the moment, let > me explain my situation. > > I am a 46 year-old who has been programming computers since the age of 16. > I used to be a highly sought-after programmer till the year 2000, when due > to circumstances beyond my control, my life and career got destroyed > completely. > In fact, I was so highly valued, that in spite of me being from India, I > was pursued by Verizon US. > I am now confined to my home (mostly) and I have very little to do, in the > past 12 years I have not programmed anything beyond a basic prime-number > tester and a fibonacci-sequence generator in C. > I am getting my life back in order and I need some occupation, though, not > necessarily one from which I would demand financial returns. > I have been dilly-dallying on a decision, primarily because I am unable to > take a call on whether to pursue my love for the low-level (x64 assembler + > Forth) or the extremely high-level (work involving reasoning using symbolic > inference) using a Smalltalk (either Squeak or Pharo). > > The above is not meant to elicit sympathy, but has been tacked-in just to > give potential advisers an idea about my state. > > Onward to my take on the responses I received to my first email. > > As Noury Bouraqadi and Stephane Ducasse mentioned: > It's not about what you can do, but it's about how you do it. > I'd say, that is the basic problem with all Smalltalk aficionados. > The whole environment is such a joy to work with that it is addictive, to > the extent that developers forget that it is the "what you can do" which is > of utmost importance. > > Jupiter Jones email provided the most amount of real-world use-cases. > Though, I am interested in understanding how to use Pharo as the > development tool to be able to release code via GemStone Smalltalk. > Is it so that Seaside runs identically on Pharo as well as GemStone > Smalltalk? > So, in a sense, Seaside would to Smalltalk, what "Ruby on Rails" is to > Ruby. > > Tim Mackinnon is very correct in observing that relative to C# and Swift, > Smalltalk (and hence Pharo) is very compact, simple and approachable. > Though, I did not understand his statement about conditional logic > becoming easier to understand after working especially with Smalltalk. > Would he care to elaborate? > Also, on Tim's allusion to Lisp being a cousin, well, Smalltalkers had > better acknowledge the fact that most Lispers "look down" upon Smalltalk > and do not spare any opportunity to berate its users/developers (this is > from personal experience). > > Along those lines, I would also like to get an explanation from Jupiter > Jones' for "how do you do an if/then?" which as he states leads to a > "mind-blown" moment. > > Thank you, > > ~Mayuresh > > On Saturday, January 14, 2023 01:31 PM IST, "mayuresh@kathe.in via > Pharo-users" <pharo-users@lists.pharo.org> wrote: > > > Hello, > > > > This isn't a mail intended to troll this community. > > > > I am genuinely curious about what would be the type of use cases which > would be exemplary for Pharo? > > > > Now-a-days, anything one could have accomplished solely with Smalltalk > (and hence Pharo) can be accomplished with a number of modern programming > languages and their associated frameworks, e.g. Google's Dart with Flutter, > Apple Swift with SwiftUI, Microsoft's C# with WinUI. > > And such languages and their associated frameworks are built from the > ground-up for a particular platform, while Pharo does not have any such > targets, which usually renders graphical applications built using Pharo to > "look like" aliens. > > > > What does stand-out regarding Smalltalk (and hence Pharo) is the > superior developer experience furnished as a result of the true object > system combined with a full graphical environment. > > In addition to that, Pharo, specifically, provides advanced tools like > Git integration, etc. > > > > But, are these things all that there are to be considered enough for > highlighting the full inherent power of Pharo? > > > > Again, apologies if anyone found the subject line as well as the message > body to be troll-ish. That has not been the intent. > > > > Kind regards, > > > > ~Mayuresh >
TT
Tomaž Turk
Sun, Jan 15, 2023 10:30 AM

Hi Mayuresh,

I think that the choice of what programming language one needs to learn
or use depends today from the goals that you have - and these goals are
not only tied to specifiic business projects that you (might) pursue but
also career and self-enrichment missions. Years ago we had programmers
who did their entire career by knowing and using only one language,
however this is nowadays almost impossible, in general.

As others already nicely put, Pharo and Smalltalk are, also in my own
expeirence, the most beautiful and productive programming languages and
environments. What would be the type of use cases which would be
exemplary for Pharo? Well, I find Pharo to be a general programming
language in its true meaning. You can grasp the diversity of what can be
done by just looking at this list
https://github.com/pharo-open-documentation/awesome-pharo. You can go
close to the machine with uFFI and be very "declarative" with Glorp and
similar packages. You'd like to do the data mining? No problem, except
that everybody talks about Python and R.

As MIS professor, I'm interested in new technologies, old technolgies in
new settings, always looking for the best ways to do research about and
to teach modern concepts, also challenging myself with real,
"production" cases from the field. Once I learnt the Smalltalk way, the
challenges for me with Pharo were mostly the following:

  • For a specific project, you sooner or later bump into a missing
    functionality in some package or other. Here, it's true that you can
    relatively easy see the inner structures of these packages and add the
    functionality that you need. The challenge here is grasping the
    architecture model and development patterns that the original
    contrubutors and the community already "engraved" into the package,
    trying to understand it and to follow the same patterns - i.e. to
    participate in a constructive manner. My case: PharoWin32 and PharoCOM
    https://github.com/tesonep/pharo-com, I had to add the functionality
    that I needed to work on PharoADO https://github.com/eftomi/PharoADO.
  • There is a constant lag of documentation publishing activities which
    cannot follow the actual development; typical examples that I stumbled
    across are Pharo Spec2 book (but it can be "replaced" by excellent Spec
    Handbook
    https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass),
    the second one the deeper settings of Seaside framework that I needed
    for production environment.

For these challenges, you can always count on really helpful community,
however it is time consuming and eats away the positive side of
productivity gains that are brought by the language itself.

So, if you need some occupation, not necessarily one from which you
would demand financial returns as you put, I suggest that you choose a
couple of small projects just to try it out and see what happens. Pharo
is a heavy addition to one's self-enrichment in the sense of not
learning the tools but learning the concepts and "the big picture". Nice
examples are the book Learning Object-Oriented Programming, Design and
TDD http://books.pharo.org/ and Pharo MOOC https://mooc.pharo.org/.
If you pursue into more serious projects (research or productionwise),
the community would be grateful.

Best wishes,
Tomaz

Hi Mayuresh, I think that the choice of what programming language one needs to learn or use depends today from the goals that you have - and these goals are not only tied to specifiic business projects that you (might) pursue but also career and self-enrichment missions. Years ago we had programmers who did their entire career by knowing and using only one language, however this is nowadays almost impossible, in general. As others already nicely put, Pharo and Smalltalk are, also in my own expeirence, the most beautiful and productive programming languages and environments. What would be the type of use cases which would be exemplary for Pharo? Well, I find Pharo to be a general programming language in its true meaning. You can grasp the diversity of what can be done by just looking at this list https://github.com/pharo-open-documentation/awesome-pharo. You can go close to the machine with uFFI and be very "declarative" with Glorp and similar packages. You'd like to do the data mining? No problem, except that everybody talks about Python and R. As MIS professor, I'm interested in new technologies, old technolgies in new settings, always looking for the best ways to do research about and to teach modern concepts, also challenging myself with real, "production" cases from the field. Once I learnt the Smalltalk way, the challenges for me with Pharo were mostly the following: - For a specific project, you sooner or later bump into a missing functionality in some package or other. Here, it's true that you can relatively easy see the inner structures of these packages and add the functionality that you need. The challenge here is grasping the architecture model and development patterns that the original contrubutors and the community already "engraved" into the package, trying to understand it and to follow the same patterns - i.e. to participate in a constructive manner. My case: PharoWin32 and PharoCOM <https://github.com/tesonep/pharo-com>, I had to add the functionality that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. - There is a constant lag of documentation publishing activities which cannot follow the actual development; typical examples that I stumbled across are Pharo Spec2 book (but it can be "replaced" by excellent Spec Handbook <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), the second one the deeper settings of Seaside framework that I needed for production environment. For these challenges, you can always count on really helpful community, however it is time consuming and eats away the positive side of productivity gains that are brought by the language itself. So, if you need some occupation, not necessarily one from which you would demand financial returns as you put, I suggest that you choose a couple of small projects just to try it out and see what happens. Pharo is a heavy addition to one's self-enrichment in the sense of not learning the tools but learning the concepts and "the big picture". Nice examples are the book Learning Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects (research or productionwise), the community would be grateful. Best wishes, Tomaz
SM
Stewart MacLean
Mon, Jan 16, 2023 9:28 AM

^ThumbsUpEmoji new display

On Sun, Jan 15, 2023 at 11:30 PM Tomaž Turk tomazz.turk@gmail.com wrote:

Hi Mayuresh,

I think that the choice of what programming language one needs to learn or
use depends today from the goals that you have - and these goals are not
only tied to specifiic business projects that you (might) pursue but also
career and self-enrichment missions. Years ago we had programmers who did
their entire career by knowing and using only one language, however this is
nowadays almost impossible, in general.

As others already nicely put, Pharo and Smalltalk are, also in my own
expeirence, the most beautiful and productive programming languages and
environments. What would be the type of use cases which would be exemplary
for Pharo? Well, I find Pharo to be a general programming language in its
true meaning. You can grasp the diversity of what can be done by just
looking at this list
https://github.com/pharo-open-documentation/awesome-pharo. You can go
close to the machine with uFFI and be very "declarative" with Glorp and
similar packages. You'd like to do the data mining? No problem, except that
everybody talks about Python and R.

As MIS professor, I'm interested in new technologies, old technolgies in
new settings, always looking for the best ways to do research about and to
teach modern concepts, also challenging myself with real, "production"
cases from the field. Once I learnt the Smalltalk way, the challenges for
me with Pharo were mostly the following:

  • For a specific project, you sooner or later bump into a missing
    functionality in some package or other. Here, it's true that you can
    relatively easy see the inner structures of these packages and add the
    functionality that you need. The challenge here is grasping the
    architecture model and development patterns that the original contrubutors
    and the community already "engraved" into the package, trying to understand
    it and to follow the same patterns - i.e. to participate in a constructive
    manner. My case: PharoWin32 and PharoCOM
    https://github.com/tesonep/pharo-com, I had to add the functionality
    that I needed to work on PharoADO https://github.com/eftomi/PharoADO.
  • There is a constant lag of documentation publishing activities which
    cannot follow the actual development; typical examples that I stumbled
    across are Pharo Spec2 book (but it can be "replaced" by excellent Spec
    Handbook
    https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass),
    the second one the deeper settings of Seaside framework that I needed for
    production environment.

For these challenges, you can always count on really helpful community,
however it is time consuming and eats away the positive side of
productivity gains that are brought by the language itself.

So, if you need some occupation, not necessarily one from which you would
demand financial returns as you put, I suggest that you choose a couple of
small projects just to try it out and see what happens. Pharo is a heavy
addition to one's self-enrichment in the sense of not learning the tools
but learning the concepts and "the big picture". Nice examples are the book Learning
Object-Oriented Programming, Design and TDD http://books.pharo.org/ and Pharo
MOOC https://mooc.pharo.org/. If you pursue into more serious projects
(research or productionwise), the community would be grateful.

Best wishes,
Tomaz

^ThumbsUpEmoji new display On Sun, Jan 15, 2023 at 11:30 PM Tomaž Turk <tomazz.turk@gmail.com> wrote: > Hi Mayuresh, > > I think that the choice of what programming language one needs to learn or > use depends today from the goals that you have - and these goals are not > only tied to specifiic business projects that you (might) pursue but also > career and self-enrichment missions. Years ago we had programmers who did > their entire career by knowing and using only one language, however this is > nowadays almost impossible, in general. > > As others already nicely put, Pharo and Smalltalk are, also in my own > expeirence, the most beautiful and productive programming languages and > environments. What would be the type of use cases which would be exemplary > for Pharo? Well, I find Pharo to be a general programming language in its > true meaning. You can grasp the diversity of what can be done by just > looking at this list > https://github.com/pharo-open-documentation/awesome-pharo. You can go > close to the machine with uFFI and be very "declarative" with Glorp and > similar packages. You'd like to do the data mining? No problem, except that > everybody talks about Python and R. > > As MIS professor, I'm interested in new technologies, old technolgies in > new settings, always looking for the best ways to do research about and to > teach modern concepts, also challenging myself with real, "production" > cases from the field. Once I learnt the Smalltalk way, the challenges for > me with Pharo were mostly the following: > - For a specific project, you sooner or later bump into a missing > functionality in some package or other. Here, it's true that you can > relatively easy see the inner structures of these packages and add the > functionality that you need. The challenge here is grasping the > architecture model and development patterns that the original contrubutors > and the community already "engraved" into the package, trying to understand > it and to follow the same patterns - i.e. to participate in a constructive > manner. My case: PharoWin32 and PharoCOM > <https://github.com/tesonep/pharo-com>, I had to add the functionality > that I needed to work on PharoADO <https://github.com/eftomi/PharoADO>. > - There is a constant lag of documentation publishing activities which > cannot follow the actual development; typical examples that I stumbled > across are Pharo Spec2 book (but it can be "replaced" by excellent Spec > Handbook > <https://github.com/pharo-spec/Spec/blob/Pharo11/spec2.md#SpStyleClass>), > the second one the deeper settings of Seaside framework that I needed for > production environment. > > For these challenges, you can always count on really helpful community, > however it is time consuming and eats away the positive side of > productivity gains that are brought by the language itself. > > So, if you need some occupation, not necessarily one from which you would > demand financial returns as you put, I suggest that you choose a couple of > small projects just to try it out and see what happens. Pharo is a heavy > addition to one's self-enrichment in the sense of not learning the tools > but learning the concepts and "the big picture". Nice examples are the book Learning > Object-Oriented Programming, Design and TDD <http://books.pharo.org/> and Pharo > MOOC <https://mooc.pharo.org/>. If you pursue into more serious projects > (research or productionwise), the community would be grateful. > > Best wishes, > Tomaz > >