pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

Sacrilegeous question : what are compelling use cases for Pharo

OV
Offray Vladimir Luna Cárdenas
Tue, Jan 17, 2023 1:02 AM

Hi Mayuresh,

To add a little bit to the excellent answers thread, I would emphasize
that the important thing is effectively the how and not the what,
despite of some languages excelling at some particular contexts (for
example JavaScript being part of the de-facto emergent glued together
under pressure "standard"  for the Web with HTML and CSS being the other
two parts of the Manticore) or that, at some point, several of us have
listened that all languages being Turing complete are equivalent in such
nerdy metric and capable of the same "what", but definitively not of the
same how. Even authors like Maxwell in Tracing the Dynabook[1], said
that comparing Smalltalk with other computer languages (like Ruby or
Python) instead of computer environments misses the point and that a
more convenient comparison would be between the Dynabook tradition and
the Unix tradition.

[1]
https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook

In the case of Pharo and Smalltalk, I feel them pretty empowering as a
way of conceiving computing, where environment, language, tools, apps,
conform an explorable/modifiable continuum, instead of all the
indirection layers common in the Unix paradigm. This have allow us in
the local community to address a set of projects in a pretty different a
more agile way to what could be done in languages like Python under Unix
(and I tried that combination before confirming my definitive bet for
Smalltalk like/inspired metasystems).  As a consequence, we have been
able to enable grassroots innovation in several topics that fall under
the umbrella of civic tech, including: performative writing and
(re)publishing, agile data storytelling and visualization, data
feminism, civic hacktivism, reproducible research, making "Big Data"
approachable,  hypertextual resilient community and interpersonal memory
and presences, among other topics (see our portfolio at [2]).

[2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio

Even when Pharo/Smalltalk are not suited for every context, you can
combine them with external tools (for example when some functionality is
not implemented in Pharo or for performance reasons). We have being
doing that with Nim language, Lua, Pandoc with pretty good results. So
you can be as agile as you need and rely on external tools when needed.
Pharo is not only a innovative place/tech with a welcoming, vibrant and
responding community, but also is becoming a good team player with other
tech ecosystems and tools.

Hope this helps,

Offray

On 15/01/23 5:30, Tomaž Turk 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

Hi Mayuresh, To add a little bit to the excellent answers thread, I would emphasize that the important thing is effectively the how and not the what, despite of some languages excelling at some particular contexts (for example JavaScript being part of the de-facto emergent glued together under pressure "standard"  for the Web with HTML and CSS being the other two parts of the Manticore) or that, at some point, several of us have listened that all languages being Turing complete are equivalent in such nerdy metric and capable of the same "what", but definitively not of the same how. Even authors like Maxwell in Tracing the Dynabook[1], said that comparing Smalltalk with other computer languages (like Ruby or Python) instead of computer environments misses the point and that a more convenient comparison would be between the Dynabook tradition and the Unix tradition. [1] https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook In the case of Pharo and Smalltalk, I feel them pretty empowering as a way of conceiving computing, where environment, language, tools, apps, conform an explorable/modifiable continuum, instead of all the indirection layers common in the Unix paradigm. This have allow us in the local community to address a set of projects in a pretty different a more agile way to what could be done in languages like Python under Unix (and I tried that combination before confirming my definitive bet for Smalltalk like/inspired metasystems).  As a consequence, we have been able to enable grassroots innovation in several topics that fall under the umbrella of civic tech, including: performative writing and (re)publishing, agile data storytelling and visualization, data feminism, civic hacktivism, reproducible research, making "Big Data" approachable,  hypertextual resilient community and interpersonal memory and presences, among other topics (see our portfolio at [2]). [2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio Even when Pharo/Smalltalk are not suited for every context, you can combine them with external tools (for example when some functionality is not implemented in Pharo or for performance reasons). We have being doing that with Nim language, Lua, Pandoc with pretty good results. So you can be as agile as you need and rely on external tools when needed. Pharo is not only a innovative place/tech with a welcoming, vibrant and responding community, but also is becoming a good team player with other tech ecosystems and tools. Hope this helps, Offray On 15/01/23 5:30, Tomaž Turk 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
M
mayuresh@kathe.in
Tue, Jan 17, 2023 6:23 AM

Hi Offray,

Very kind of you to have shared links to the document: "Tracing the Dynabook".
That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages.
But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell.
In the opening sentences of his abstract, he errs by stating that:
The origins of the personal computer are found in an educational vision. Desktop computing
and multimedia were not first conceived as tools for office workers or media professionals—
they were prototyped as “personal dynamic media” for children.

Both of John Maxwell's statements above are "completely" brain-dead.
To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968.
Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs.
Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC.
If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI.
Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day.

I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis.

Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo.

Best regards,

~Mayuresh

On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas offray.luna@mutabit.com wrote:

Hi Mayuresh,

To add a little bit to the excellent answers thread, I would emphasize
that the important thing is effectively the how and not the what,
despite of some languages excelling at some particular contexts (for
example JavaScript being part of the de-facto emergent glued together
under pressure "standard"  for the Web with HTML and CSS being the other
two parts of the Manticore) or that, at some point, several of us have
listened that all languages being Turing complete are equivalent in such
nerdy metric and capable of the same "what", but definitively not of the
same how. Even authors like Maxwell in Tracing the Dynabook[1], said
that comparing Smalltalk with other computer languages (like Ruby or
Python) instead of computer environments misses the point and that a
more convenient comparison would be between the Dynabook tradition and
the Unix tradition.

[1]
https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook

In the case of Pharo and Smalltalk, I feel them pretty empowering as a
way of conceiving computing, where environment, language, tools, apps,
conform an explorable/modifiable continuum, instead of all the
indirection layers common in the Unix paradigm. This have allow us in
the local community to address a set of projects in a pretty different a
more agile way to what could be done in languages like Python under Unix
(and I tried that combination before confirming my definitive bet for
Smalltalk like/inspired metasystems).  As a consequence, we have been
able to enable grassroots innovation in several topics that fall under
the umbrella of civic tech, including: performative writing and
(re)publishing, agile data storytelling and visualization, data
feminism, civic hacktivism, reproducible research, making "Big Data"
approachable,  hypertextual resilient community and interpersonal memory
and presences, among other topics (see our portfolio at [2]).

[2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio

Even when Pharo/Smalltalk are not suited for every context, you can
combine them with external tools (for example when some functionality is
not implemented in Pharo or for performance reasons). We have being
doing that with Nim language, Lua, Pandoc with pretty good results. So
you can be as agile as you need and rely on external tools when needed.
Pharo is not only a innovative place/tech with a welcoming, vibrant and
responding community, but also is becoming a good team player with other
tech ecosystems and tools.

Hope this helps,

Offray

On 15/01/23 5:30, Tomaž Turk 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

Hi Offray, Very kind of you to have shared links to the document: "Tracing the Dynabook". That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages. But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell. In the opening sentences of his abstract, he errs by stating that: The origins of the personal computer are found in an educational vision. Desktop computing and multimedia were not first conceived as tools for office workers or media professionals— they were prototyped as “personal dynamic media” for children. Both of John Maxwell's statements above are "completely" brain-dead. To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968. Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs. Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC. If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI. Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day. I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis. Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo. Best regards, ~Mayuresh On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote: > Hi Mayuresh, > > To add a little bit to the excellent answers thread, I would emphasize > that the important thing is effectively the how and not the what, > despite of some languages excelling at some particular contexts (for > example JavaScript being part of the de-facto emergent glued together > under pressure "standard"  for the Web with HTML and CSS being the other > two parts of the Manticore) or that, at some point, several of us have > listened that all languages being Turing complete are equivalent in such > nerdy metric and capable of the same "what", but definitively not of the > same how. Even authors like Maxwell in Tracing the Dynabook[1], said > that comparing Smalltalk with other computer languages (like Ruby or > Python) instead of computer environments misses the point and that a > more convenient comparison would be between the Dynabook tradition and > the Unix tradition. > > [1] > https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook > > In the case of Pharo and Smalltalk, I feel them pretty empowering as a > way of conceiving computing, where environment, language, tools, apps, > conform an explorable/modifiable continuum, instead of all the > indirection layers common in the Unix paradigm. This have allow us in > the local community to address a set of projects in a pretty different a > more agile way to what could be done in languages like Python under Unix > (and I tried that combination before confirming my definitive bet for > Smalltalk like/inspired metasystems).  As a consequence, we have been > able to enable grassroots innovation in several topics that fall under > the umbrella of civic tech, including: performative writing and > (re)publishing, agile data storytelling and visualization, data > feminism, civic hacktivism, reproducible research, making "Big Data" > approachable,  hypertextual resilient community and interpersonal memory > and presences, among other topics (see our portfolio at [2]). > > [2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio > > Even when Pharo/Smalltalk are not suited for every context, you can > combine them with external tools (for example when some functionality is > not implemented in Pharo or for performance reasons). We have being > doing that with Nim language, Lua, Pandoc with pretty good results. So > you can be as agile as you need and rely on external tools when needed. > Pharo is not only a innovative place/tech with a welcoming, vibrant and > responding community, but also is becoming a good team player with other > tech ecosystems and tools. > > Hope this helps, > > Offray > > > > On 15/01/23 5:30, Tomaž Turk 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
RO
Richard O'Keefe
Tue, Jan 17, 2023 10:41 AM

Back when I was a University lecturer, I sometimes amused myself by
rewriting student (or other
staff!) Java code in Smalltalk.  I generally got about a factor of 6
smaller.  Of course, that
was before Java 8, which copied blocks and higher-order collection methods
from Smalltalk.

On Sat, 14 Jan 2023 at 21: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

Back when I was a University lecturer, I sometimes amused myself by rewriting student (or other staff!) Java code in Smalltalk. I generally got about a factor of 6 smaller. Of course, that was before Java 8, which copied blocks and higher-order collection methods from Smalltalk. On Sat, 14 Jan 2023 at 21: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 >
RO
Richard O'Keefe
Tue, Jan 17, 2023 11:48 AM

Much sympathy for your life situation.
Most of the Smalltalk code I personally develop is developed using a
classic text
editor, is batch compiled, and runs headless.  Smalltalk is STILL an
amazing language
without the "addictive" IDE.  (In fact the more "conventional" Smalltalk
systems I use
have sufficiently different IDEs that I experience considerable friction
using the IDE.)

I'm on the fringes of the High Performance Computing world.  This is quite
dramatically
different from most programming, and in some interesting ways.  The
dominant languages
are Fortran, C, and C++ with extensions such as OpenMP and OpenACC and of
course "transport"
layers like MPI.  These languages have serious optimising compilers
working hard to get
the best out of vectorised instructions, GPUs, even FPGAs, and clusters.
There are also
dialects like SYCL and Cilk.  As an example of the kind of application,
consider the
COVID epidemiological model developed by Neil Ferguson's team in the UK,
which was very
influential in setting UK government policy (lockdowns).  This is about 10
000 SLOC of
C++ with much use of OpenMP for parallelism.  This isn't "bet your
business" software;
this is "bet your whole ECONOMY" software.  It is, in the 1970s sense,
"structured".  It
is, in the peculiarly C++ sense, "object oriented".  And it is very hard
for me to
figure out what is going on (despite having tracked C++ since cfront days).

What does this have to do with Smalltalk?

First, Smalltalk is not an HPC language.  If you want to develop
computationally
demanding code, you might prototype it in Smalltalk, but you are not going
to deploy.

Second, that doesn't necessarily preclude the use of Smalltalk in HPC
environments.
People seriously use Python (despite Python's single-thread slowness),
Matlab, and
R for HPC problems.  What they do is wrap Fortran/C/C++ data structures and
call
Fortran/C/C++ code to manipulate them, basically using Python or Matlab or
whatever
to direct the low level code.

Third, just imagine the fun of debugging code like this.  You don't really
want to
write Fortran (even Fortran'08) or C++ (even C++17) by hand; it's ok as
"portable
parallel assembler".

Fourth, in order to configure and customise software like this, you really
want
a decent interactive modelling language.  (For example, the CovidSim
program uses
data loaded once from WorldPop.  I haven't yet found anything in the
distribution
to update this.)

Fifth, there's the whole "Embedded Domain-Specific Language" thing.  There
has been
some impressive work done on generating low level code inside functinoal
programming
languages.

Thus I hypothesise that there is room for Smalltalk as a tool for
generating and
configuring HPC code.

My main worry is that when it comes to "bet your whole economy" software and
worse still, "bet the entire global economy and human happiness for
centuries"
software like climate models, it's appropriate to use the very highest
quality
assurance tools practical, including serious verification.  That's not
common
practice.  CovidSim has 'assert' statements in just two files.  Generation
via
Smalltalk wouldn't be worse.  But could it be better ?

What is the state of the art in verification tools

  • written in Smalltalk?
  • available (via FFI or otherwise) through Smalltalk?
  • available in any form for Smalltalk?

(I should probably be looking at MOOSE but am too stupid to know how to
start.)

On Sun, 15 Jan 2023 at 19:11, 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

Much sympathy for your life situation. Most of the Smalltalk code I personally develop is developed using a classic text editor, is batch compiled, and runs headless. Smalltalk is *STILL* an amazing language without the "addictive" IDE. (In fact the more "conventional" Smalltalk systems I use have sufficiently different IDEs that I experience considerable friction using the IDE.) I'm on the fringes of the High Performance Computing world. This is quite dramatically different from most programming, and in some interesting ways. The dominant languages are Fortran, C, and C++ with extensions such as OpenMP and OpenACC and of course "transport" layers like MPI. These languages have *serious* optimising compilers working hard to get the best out of vectorised instructions, GPUs, even FPGAs, and clusters. There are also dialects like SYCL and Cilk. As an example of the kind of application, consider the COVID epidemiological model developed by Neil Ferguson's team in the UK, which was very influential in setting UK government policy (lockdowns). This is about 10 000 SLOC of C++ with much use of OpenMP for parallelism. This isn't "bet your business" software; this is "bet your whole ECONOMY" software. It is, in the 1970s sense, "structured". It is, in the peculiarly C++ sense, "object oriented". And it is very hard for me to figure out what is going on (despite having tracked C++ since cfront days). What does this have to do with Smalltalk? First, Smalltalk is not an HPC language. If you want to develop computationally demanding code, you might prototype it in Smalltalk, but you are not going to deploy. Second, that doesn't necessarily preclude the use of Smalltalk in HPC environments. People seriously use Python (despite Python's single-thread slowness), Matlab, and R for HPC problems. What they do is wrap Fortran/C/C++ data structures and call Fortran/C/C++ code to manipulate them, basically using Python or Matlab or whatever to direct the low level code. Third, just imagine the fun of debugging code like this. You don't really want to write Fortran (even Fortran'08) or C++ (even C++17) by hand; it's ok as "portable parallel assembler". Fourth, in order to configure and customise software like this, you really want a decent interactive modelling language. (For example, the CovidSim program uses data loaded *once* from WorldPop. I haven't yet found anything in the distribution to update this.) Fifth, there's the whole "Embedded Domain-Specific Language" thing. There has been some impressive work done on generating low level code inside functinoal programming languages. Thus I hypothesise that there is room for Smalltalk as a tool for *generating* and configuring HPC code. My main worry is that when it comes to "bet your whole economy" software and worse still, "bet the entire global economy and human happiness for centuries" software like climate models, it's appropriate to use the very highest quality assurance tools practical, including *serious* verification. That's not common practice. CovidSim has 'assert' statements in just two files. Generation via Smalltalk wouldn't be *worse*. But could it be *better* ? What is the state of the art in verification tools - written in Smalltalk? - available (via FFI or otherwise) *through* Smalltalk? - available in any form *for* Smalltalk? (I should probably be looking at MOOSE but am too stupid to know how to start.) On Sun, 15 Jan 2023 at 19:11, 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 >
OV
Offray Vladimir Luna Cárdenas
Tue, Jan 17, 2023 3:42 PM

Hi Mayuresh,

I think that putting all the weight of a PhD the thesis in a particular
phrase of the abstract, without looking the authors perspective about
why he puts a particular origin on that place, it's not a good reading
practice. So I'm glad that you will give the deep reading that this
particular deep research deserves, particularly in a world where almost
all introductions to computing environments are from the technical
perspective (performance,  applications etc), so Maxwell's work is
refreshing and needed.

Cheers,

Offray

On 17/01/23 1:23, mayuresh@kathe.in via Pharo-users wrote:

Hi Offray,

Very kind of you to have shared links to the document: "Tracing the Dynabook".
That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages.
But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell.
In the opening sentences of his abstract, he errs by stating that:
The origins of the personal computer are found in an educational vision. Desktop computing
and multimedia were not first conceived as tools for office workers or media professionals—
they were prototyped as “personal dynamic media” for children.

Both of John Maxwell's statements above are "completely" brain-dead.
To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968.
Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs.
Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC.
If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI.
Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day.

I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis.

Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo.

Best regards,

~Mayuresh

On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas offray.luna@mutabit.com wrote:

Hi Mayuresh,

To add a little bit to the excellent answers thread, I would emphasize
that the important thing is effectively the how and not the what,
despite of some languages excelling at some particular contexts (for
example JavaScript being part of the de-facto emergent glued together
under pressure "standard"  for the Web with HTML and CSS being the other
two parts of the Manticore) or that, at some point, several of us have
listened that all languages being Turing complete are equivalent in such
nerdy metric and capable of the same "what", but definitively not of the
same how. Even authors like Maxwell in Tracing the Dynabook[1], said
that comparing Smalltalk with other computer languages (like Ruby or
Python) instead of computer environments misses the point and that a
more convenient comparison would be between the Dynabook tradition and
the Unix tradition.

[1]
https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook

In the case of Pharo and Smalltalk, I feel them pretty empowering as a
way of conceiving computing, where environment, language, tools, apps,
conform an explorable/modifiable continuum, instead of all the
indirection layers common in the Unix paradigm. This have allow us in
the local community to address a set of projects in a pretty different a
more agile way to what could be done in languages like Python under Unix
(and I tried that combination before confirming my definitive bet for
Smalltalk like/inspired metasystems).  As a consequence, we have been
able to enable grassroots innovation in several topics that fall under
the umbrella of civic tech, including: performative writing and
(re)publishing, agile data storytelling and visualization, data
feminism, civic hacktivism, reproducible research, making "Big Data"
approachable,  hypertextual resilient community and interpersonal memory
and presences, among other topics (see our portfolio at [2]).

[2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio

Even when Pharo/Smalltalk are not suited for every context, you can
combine them with external tools (for example when some functionality is
not implemented in Pharo or for performance reasons). We have being
doing that with Nim language, Lua, Pandoc with pretty good results. So
you can be as agile as you need and rely on external tools when needed.
Pharo is not only a innovative place/tech with a welcoming, vibrant and
responding community, but also is becoming a good team player with other
tech ecosystems and tools.

Hope this helps,

Offray

On 15/01/23 5:30, Tomaž Turk 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

Hi Mayuresh, I think that putting all the weight of a PhD the thesis in a particular phrase of the abstract, without looking the authors perspective about why he puts a particular origin on that place, it's not a good reading practice. So I'm glad that you will give the deep reading that this particular deep research deserves, particularly in a world where almost all introductions to computing environments are from the technical perspective (performance,  applications etc), so Maxwell's work is refreshing and needed. Cheers, Offray On 17/01/23 1:23, mayuresh@kathe.in via Pharo-users wrote: > Hi Offray, > > Very kind of you to have shared links to the document: "Tracing the Dynabook". > That thesis is what I will definitely read through thoroughly, even though it weighs in at 300+ pages. > But, and a big but, I doubt the validity of the depth of research conducted by John W Maxwell. > In the opening sentences of his abstract, he errs by stating that: > The origins of the personal computer are found in an educational vision. Desktop computing > and multimedia were not first conceived as tools for office workers or media professionals— > they were prototyped as “personal dynamic media” for children. > > Both of John Maxwell's statements above are "completely" brain-dead. > To begin with, the origins of the "personal" computer and therefore by extension, "desktop computing" were laid out by the team of Dr Douglas Englebart at SRI and was brilliantly presented in his demonstration in 1968. > Dr Douglas Englebart conceived of his Online System (NLS) at SRI for the explicit need of "knowledge workers", a term later on stolen by Mr Steve Jobs. > Also, in case you haven't known, Mr Alan Kay worked as a non-core member of Dr Englebart's team, before being poached by Xerox for PARC. > If I am not wrong, Mr Alan Kay, back then, was just an intern at SRI. > Also, I give full credit to Mr Alan Kay for conceiving a message-passing based programming system which morphed into Smalltalk, and even more, I am in awe of Mr Dan Ingalls for having implemented large sections of it, using the crude tools of his day. > > I assure you that I will overlook that fundamental flaw in John Maxwell's premise and plow through his entire thesis. > > Again, thanks for sharing details regarding John Maxwell's thesis, as well as writing-in your mail outlining the benefits of engaging with Smalltalk/Pharo. > > Best regards, > > ~Mayuresh > > > On Tuesday, January 17, 2023 06:32 AM IST, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote: > >> Hi Mayuresh, >> >> To add a little bit to the excellent answers thread, I would emphasize >> that the important thing is effectively the how and not the what, >> despite of some languages excelling at some particular contexts (for >> example JavaScript being part of the de-facto emergent glued together >> under pressure "standard"  for the Web with HTML and CSS being the other >> two parts of the Manticore) or that, at some point, several of us have >> listened that all languages being Turing complete are equivalent in such >> nerdy metric and capable of the same "what", but definitively not of the >> same how. Even authors like Maxwell in Tracing the Dynabook[1], said >> that comparing Smalltalk with other computer languages (like Ruby or >> Python) instead of computer environments misses the point and that a >> more convenient comparison would be between the Dynabook tradition and >> the Unix tradition. >> >> [1] >> https://mutabit.com/repos.fossil/grafoscopedia/uv/#Tracing%20the%20Dynabook >> >> In the case of Pharo and Smalltalk, I feel them pretty empowering as a >> way of conceiving computing, where environment, language, tools, apps, >> conform an explorable/modifiable continuum, instead of all the >> indirection layers common in the Unix paradigm. This have allow us in >> the local community to address a set of projects in a pretty different a >> more agile way to what could be done in languages like Python under Unix >> (and I tried that combination before confirming my definitive bet for >> Smalltalk like/inspired metasystems).  As a consequence, we have been >> able to enable grassroots innovation in several topics that fall under >> the umbrella of civic tech, including: performative writing and >> (re)publishing, agile data storytelling and visualization, data >> feminism, civic hacktivism, reproducible research, making "Big Data" >> approachable,  hypertextual resilient community and interpersonal memory >> and presences, among other topics (see our portfolio at [2]). >> >> [2] https://mutabit.com/repos.fossil/offray-blog/uv/bliki/#Portfolio >> >> Even when Pharo/Smalltalk are not suited for every context, you can >> combine them with external tools (for example when some functionality is >> not implemented in Pharo or for performance reasons). We have being >> doing that with Nim language, Lua, Pandoc with pretty good results. So >> you can be as agile as you need and rely on external tools when needed. >> Pharo is not only a innovative place/tech with a welcoming, vibrant and >> responding community, but also is becoming a good team player with other >> tech ecosystems and tools. >> >> Hope this helps, >> >> Offray >> >> >> >> On 15/01/23 5:30, Tomaž Turk 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
KH
Konrad Hinsen
Wed, Jan 25, 2023 1:40 PM

"Richard O'Keefe" raoknz@gmail.com writes:

Thus I hypothesise that there is room for Smalltalk as a tool for
generating and configuring HPC code.

Yes. But it will be hard to convince people that Smalltalk is a better
choice than Python (well established in HPC as you say) for this use
case.

My main worry is that when it comes to "bet your whole economy"
software and worse still, "bet the entire global economy and human
happiness for centuries" software like climate models, it's
appropriate to use the very highest quality assurance tools practical,
including serious verification.  That's not common practice.

Indeed, and that's one of my main worries in computational science as
well. There is a culture of scientific validation, but not of technical
verification of artifacts such as code.

My own project in this space (implemented in Pharo) aims at supporting
human verification for the aspects that no automatic tool can possibly
verify. In technical terms, that's verifying the formal specification
rather than the implementation of some method. The first step, which I
have made good progress on, is a specification language for scientific
models and methods that human readers would be happy to proofread.
Details:

https://github.com/khinsen/leibniz-pharo/
https://science-in-the-digital-era.khinsen.net/#Leibniz

Konrad

"Richard O'Keefe" <raoknz@gmail.com> writes: > Thus I hypothesise that there is room for Smalltalk as a tool for > *generating* and configuring HPC code. Yes. But it will be hard to convince people that Smalltalk is a better choice than Python (well established in HPC as you say) for this use case. > My main worry is that when it comes to "bet your whole economy" > software and worse still, "bet the entire global economy and human > happiness for centuries" software like climate models, it's > appropriate to use the very highest quality assurance tools practical, > including *serious* verification. That's not common practice. Indeed, and that's one of my main worries in computational science as well. There is a culture of scientific validation, but not of technical verification of artifacts such as code. My own project in this space (implemented in Pharo) aims at supporting *human* verification for the aspects that no automatic tool can possibly verify. In technical terms, that's verifying the formal specification rather than the implementation of some method. The first step, which I have made good progress on, is a specification language for scientific models and methods that human readers would be happy to proofread. Details: https://github.com/khinsen/leibniz-pharo/ https://science-in-the-digital-era.khinsen.net/#Leibniz Konrad
RO
Richard O'Keefe
Thu, Jan 26, 2023 12:40 AM

To Konrad Hinsen: you HERO.

On Thu, 26 Jan 2023 at 02:40, Konrad Hinsen konrad.hinsen@fastmail.net
wrote:

"Richard O'Keefe" raoknz@gmail.com writes:

Thus I hypothesise that there is room for Smalltalk as a tool for
generating and configuring HPC code.

Yes. But it will be hard to convince people that Smalltalk is a better
choice than Python (well established in HPC as you say) for this use
case.

My main worry is that when it comes to "bet your whole economy"
software and worse still, "bet the entire global economy and human
happiness for centuries" software like climate models, it's
appropriate to use the very highest quality assurance tools practical,
including serious verification.  That's not common practice.

Indeed, and that's one of my main worries in computational science as
well. There is a culture of scientific validation, but not of technical
verification of artifacts such as code.

My own project in this space (implemented in Pharo) aims at supporting
human verification for the aspects that no automatic tool can possibly
verify. In technical terms, that's verifying the formal specification
rather than the implementation of some method. The first step, which I
have made good progress on, is a specification language for scientific
models and methods that human readers would be happy to proofread.
Details:

https://github.com/khinsen/leibniz-pharo/
https://science-in-the-digital-era.khinsen.net/#Leibniz

Konrad

To Konrad Hinsen: you HERO. On Thu, 26 Jan 2023 at 02:40, Konrad Hinsen <konrad.hinsen@fastmail.net> wrote: > "Richard O'Keefe" <raoknz@gmail.com> writes: > > > Thus I hypothesise that there is room for Smalltalk as a tool for > > *generating* and configuring HPC code. > > Yes. But it will be hard to convince people that Smalltalk is a better > choice than Python (well established in HPC as you say) for this use > case. > > > My main worry is that when it comes to "bet your whole economy" > > software and worse still, "bet the entire global economy and human > > happiness for centuries" software like climate models, it's > > appropriate to use the very highest quality assurance tools practical, > > including *serious* verification. That's not common practice. > > Indeed, and that's one of my main worries in computational science as > well. There is a culture of scientific validation, but not of technical > verification of artifacts such as code. > > My own project in this space (implemented in Pharo) aims at supporting > *human* verification for the aspects that no automatic tool can possibly > verify. In technical terms, that's verifying the formal specification > rather than the implementation of some method. The first step, which I > have made good progress on, is a specification language for scientific > models and methods that human readers would be happy to proofread. > Details: > > https://github.com/khinsen/leibniz-pharo/ > https://science-in-the-digital-era.khinsen.net/#Leibniz > > Konrad >