Smalltalk Argument

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
95 messages Options
12345
Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

aglynn42

There’s a million ways of accomplishing such things, but you need to pick the appropriate way to do  it, given restrictions in Pharo and limitations in what’s it’s calling. 

 

You can utilize Kafka or Kerberos authentication via Synapse, for instance, you can access virtually any authentication mechanism via WSO2 IS (itself built on Synapse). 

 

Another way of accessing the same things (plus numerous others) is via Vert.x, also directly supported from the Pharo catalog.  I’ve used that methodology as well, though I had to overcome Vert.x’s own limitations by mapping it to the more capable Apache River (formerly JINI).

 

You can access Hadoop / Cassandra / MongoDB via the same methods Kafka, Storm and Spark do, without the problems introduced by the JVM.  MongoDB and Cassandra have libraries already available in Pharo, and they work better than those available elsewhere.

 

There are even ways to directly access the Open Telephony API in ERLAN. 

 

Sometimes you need to be creative, and every time you need to understand the strengths and limitations of both what you’re using, and what you’re accessing.

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Friday, October 27, 2017 5:03 PM
To: [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

<img border=0 id="_x0000_i1025" src="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg" alt="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg">

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

From: jtuchel@...
Sent: Thursday, October 26, 2017 8:14 AM
To: pharo-users@...
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim








 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 

————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

aglynn42
In reply to this post by henry

Last point.  Blocks are already better lambdas than lambdas in Java.

 

Have a look at this code from rxJava, which includes the Java 8 lambda version and a Java 7 version using an anonymous inner class:

 

Java 8 code

 

package rxjava.examples;
 
import io.reactivex.*;
 
public class HelloWorld {
    public static void main(String[] args) {
        Flowable.just("Hello world").subscribe(System.out::println);
    }
}

 

Java 7 code

 

import io.reactivex.functions.Consumer;
 
Flowable.just("Hello world")
  .subscribe(new Consumer<String>() {
      @Override public void accept(String s) {
          System.out.println(s);
      }
  });

 

Are they equivalent?  How would you know?

 

In fact, they aren’t, worse, the results of the difference depend on the target, whether it’s Java SE (including Spring based apps) or JavaEE.

 

The Java 8 version doesn’t create an anonymous inner class but a generically named class with generically named methods.  As a result, it will be most often faster.  However it’s less safe, because particularly in clustered environments, and unpredictably, it can create conflicts due to the same generic names being used by two different JVM’s.  The Java 7 version will be as fast, in JavaEE, and safer.  In Java SE they’re close to equivalently safe, but the Java 7 version will be significantly slower in most cases.

 

RxJava itself, as well, is unnecessary in Pharo, since the Announcer already implements the same pattern, and does so in a more efficient and more consistent way.

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Friday, October 27, 2017 5:03 PM
To: [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

<img border=0 id="_x0000_i1025" src="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg" alt="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg">

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

From: jtuchel@...
Sent: Thursday, October 26, 2017 8:14 AM
To: pharo-users@...
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim








 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 

————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

aglynn42
In reply to this post by philippeback

I refer to it as “Craptive Directory”, the only reliable way I’ve found to use it is to federate it via WSO2 IS or OpenIDM.

 

You forgot Sun’s implementation, btw, which is cleaner than either.

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, October 26, 2017 6:07 PM
To: [hidden email]; [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

There are two key Kerberos implementations one can use with Hadoop.

 

One is the FreeIpa/RedHat IdM.

The other is ActiveDirectory.

 

I am using FreeIPA which bundles MIT Kerberos/389/sssd and more for making a CA etc. Works wonderfullý well.

 

AD is well ... part of the corporate landdscape.

 

Most of Kerberos needs are done with Java in Hadoop. But details are buried in private Sun classes..

 

Google Madness beyond the gate hadoop for some Lovecraftian quotes describing the situation along educated info.

 

Phil

 

On Thu, Oct 26, 2017 at 6:23 PM, henry <[hidden email]> wrote:

I have no idea which is best. For being able to say we use industry standard Kerberos, calling an accepted implementation seems wise, like OpenSSL support.

 

- HH

 

 

On Thu, Oct 26, 2017 at 11:39, Paulo R. Dellani <[hidden email]> wrote:

This all sounds very interesting. What is the idea? Wrap libkrb5 through UFFI or implement it in Smalltalk?

On 10/26/2017 04:38 PM, henry wrote:

A Kerberos effort will have to be a group effort. Sideways to my main focus and your all’s main focii.

 

 

- HH

 

 

On Thu, Oct 26, 2017 at 09:15, henry <[hidden email]> wrote:

I think another good service to integrate well to is Elastic Search.

 

Of the 4 types of integration, I vote for and step forward to volunteer to help Kerberos integration in Pharo. What to do?

 

 

- HH

 

 

On Thu, Oct 26, 2017 at 09:06, henry <[hidden email]> wrote:

I try posting with a smaller image.

 

 

- HH

 

 

——— Original Message ———

Subject: Re: [Pharo-users] Smalltalk Argument

Local Time: October 26, 2017 8:52 AM

UTC Time: October 26, 2017 12:52 PM

To: [hidden email] [hidden email], Any question about pharo is welcome [hidden email]

 

Perhaps not, or not yet. Perhaps it is the communications foundation for an always-on cloud/bigData control layer.

 

I would position ParrotTalk as a Kerberos transport. ParrotTalk does 2048-bin key negotiation and subsequent encryption/encoding, both user-supplied. 

 

Please see the attached diagram, co-locating ParrotTalk with my other components.

 

ParrotTalk does not do user authentication/authorization. Which means to me that I should consider Kerberos authorization/authentication to establish as an integratable transport to play in bigData.

 

This means you still need a Kerberos client and I need a Kerberos client. How do we start?

 

- HH

 

PS: I did much work integrating Kafka into a framework. I was thinking of inserting msg sending replication to a partition count of replicate queues for sending and receiving Hubbub traffic, thus inserting right where Kerberos is in the diagram. I would love to see client coupling for Kerberos, Kafka and Hadoop, while I figure out proper security to make that group happy with this as a possible control layer solution, forking off jobs.

 

 

On Thu, Oct 26, 2017 at 03:14, [hidden email] <[hidden email]> wrote:

Sure. Current main issue is to have Pharo work with Kerberos as secured Hadoop uses the UGI (UserGroupInformation) thing and that is a black hole of crypto things. 

 

How would you see ParrotTalk work? 

 

I made a XmppTalk thing (binding for libstrophe) for having Pharo images and other stuff talk together (currently using OpenFire/Gajim/Profanity) FWIW

 

See https://docs.google.com/presentation/d/1HTG3GB3xdwlje8wADZPjUQNIyA6tmuxyZz1UaX5ikEU/edit?usp=sharing

 

libstrophe does the SSL thing under the hood (using OpenSSL) and is actively maintained.

https://github.com/strophe/libstrophe/blob/master/src/tls_openssl.c

 

And I currently work with Kafka so, Pharo as a consumer or producer, sure am interested. But need Kerberos support.

 

Tell me more about your vision. Even better, draw it in some way :-)

 

Phil

 

 

On Thu, Oct 26, 2017 at 8:43 AM, henry <[hidden email]> wrote:

 

This is a goal of ParrotTalk, to bring bit-compatible communications to Squeak, Pharo and Java. This is not an invocation bridge you speak of but a communications bridge to be able to run against Hadoop or whichever big data needs integration with (Kafka). I had hoped it might be adopted for such. Yet again this is not exactly what you were looking for but yet interesting perhaps?

 

 

- HH

 

 

On Thu, Oct 26, 2017 at 02:17, [hidden email] < [hidden email]> wrote:

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

aglynn42
In reply to this post by henry

Hadoop, if one wanted to utilize it in a similar way to Spark, Storm, Kafka, HDB, or the PostgreSQL overlay (the latter can be done now using either Garage + GLORP, or slightly faster using the newer GLORP PostgreSQL integration), might be best implemented as a SQL driver.  Using GLORP with Garage via the other methods mentioned would give a similar ability to avoid map/reduce. 

 

Map/reduce, though, is 2/3’ds of the advantage of Hadoop, so avoiding it seems counterproductive if writing new code (simply using the PostgreSQL requires no new code). 

 

Granted, thinking how to do numerous things that have well known SQL solutions is not necessarily easy via map/reduce, which somewhat explains the proliferation of ways of avoiding it. 

 

On the other hand, not using it somewhat cripples the effectiveness of Hadoop, which is exacerbated by the concurrency limitations of using a JVM language, whether Java, Scala, or anything else that compiles to JVM bytecode.

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Friday, October 27, 2017 5:03 PM
To: [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

<img border=0 id="_x0000_i1025" src="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg" alt="webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg">

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

From: jtuchel@...
Sent: Thursday, October 26, 2017 8:14 AM
To: pharo-users@...
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim








 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 

————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

kilon.alios
In reply to this post by aglynn42

On Sat, Oct 28, 2017 at 6:10 AM Andrew Glynn <[hidden email]> wrote:

Web dev is a messy field.  Not because it has grown too fast, but because it was designed by amateurs, developed by amateurs, and continues to be so, while depending on an underlying expertly designed system, the internet.


 Non sense. Companies have been heavily involved in the developing of the web since day one. Javascript was not designed by an amateur and pretty much no web dev technologies out there not only are produced since day 1 from professional coders , web standards committess played a crucial  role in the developing of web technologies.

The web has always been a huge cash cow. 

The very fact that Javascript has the name Java is not as many developers will be quick to point unrelated Java. It is very much related. . Sun for a considerable amount of time was working on Javascript as a scripting engine targeting the web working hand in hand with Java. The relationship was sort lived but for a very long time Java was the de facto language for developing powerful web application / websites. The well known Java applets that exist even today.

The reason why the web followed its own road is quite sensible. The internet was viewed as nothing more than a display of documents and made sense to use a document format (HTML) for it at the time. It was easy and accesible to anyone. None could predict the explosion of the web at the time and the future needs for much greater degree of dynamism. Neither could I and I am vicious critic of web dev. 

The technology evolved very fast that not even up for debate, good designs require redesigns. Redesigns require time. 

The web was nothing really new neither was the internet. BBS were dominating online communication and function in a very similar way that the web did later on providing, email, messages, forumes, download directories, blog posts, articles and a wealth of information through the use of a model and a regular telophone line. BBS were based on desktop technology and far better designed but they could not keep up with the incrasing demands of massive online communication so the web and the internet ignated even though internet was create far earlier than BBS. Much less likely to find cat videos because BBS was based on P2P kind of technology and was working on very limited hardware where every byte was precious.

It was the failure of desktop technologies to adjust to the need for a web that lead to its seperate evolution. Java was the only language that took a serious interest into web developing and even Java was unwilling to adjust to the needs of the web leading to the massive failure of the Java applet. On the other hand Flash that was specifically designed for the web , flourished for many years till HTML and JS finally caught up. 

Amateurs also play a very importan role in the evolution of graphics and guis. Teenage hackers were the ones to ignite the trend of computer graphics that lead to the establishment of GUI and 3d graphics as well as computer audio even though those technologies have existed far earlier it was their innovation that managed to take advantage of clever solution to overcome extreme limitations of the hardware. This happened through the developing of "demos" giving rise to a completely new community of extrmely knowledgable amateurs knows as "demoscene" and hackers. 3d graphics to this day remain the most fast moving / evolving field of computer science challanged only by AI. 

Plus Amateurs play a vital role in many other fields like Astronomy , their contribution is so substabtial that many celestial bodies are named after them. Amateurs have usually far higher level of knowledge of a field mainly because they tend to avoid specialisation and they do not operate on the time constraints or have to fight a backward thinking management department that want to do things "the popular" way. For similar reason they pay far more respect to designs as well.

So it was both the failure of desktop to take into serious consideration the new web needs and the rapid evolution of the web based on the format that it was already problematic. 

It was companies themselves that hindered and keep hindering its evolution with being stuck on bad design for the shake of backward compatibility. 

On the other hand desktop has it own share of ugliness and "amateurism" biggest example being MFC , Microsoft's Official GUI API, that was so ugly and heavily disliked that none even question the existence of HTML because no coder in his right mind could consider imposing such a terrible design to a new technology. 

On similar note web is not all that bad, JS has heavily improved as a language , HTML has become extremely flexible and there are many well designed libraries like Bootstrap , D3 etc . Also desktop language learned their lesson and now fully embreace web dev at least on the back end. 

Finally nowdays we see the merging of web and desktop technlogies (and the branch of desktop development known as "mobile development") that has brought more sanity and uniformity into the development process. 

Unfortunately companies still play a very big role in the glacial evolution of the web that is fortunately dimisihing with the emergence of free software. 
Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

Stephane Ducasse-3
In reply to this post by aglynn42
Hi andrew

you should contact esteban because he is writing an objective-C bridge. 

Stef

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, October 26, 2017 2:19 AM
To: [hidden email]

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200" target="_blank">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201" target="_blank">+49 7141 56 10 86 1

 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

Stephane Ducasse-3
Hi andrew

please take a project that would help to bring more companies and that you want to push and push it with us :).


Stef


On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:
Hi andrew

you should contact esteban because he is writing an objective-C bridge. 

Stef

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, October 26, 2017 2:19 AM
To: [hidden email]

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200" target="_blank">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201" target="_blank">+49 7141 56 10 86 1

 

 

 



Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

aglynn42

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Saturday, October 28, 2017 5:09 AM
To: [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, October 26, 2017 2:19 AM
To: [hidden email]

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200" target="_blank">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201" target="_blank">+49 7141 56 10 86 1

 

 

 

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

henry
Hi Andrew,

Are you working to bring a Capabilities model to Pharo? This is precisely what I am working to bring with Hubbub, running on top of my ParrotTalk. I derived these from erights.org's ELib and have been working on them for many years. Now that ParrotTalk has stabilized (layer 5) I am shifting to implementing marshalling of layer 6 objects using STON all to run on top of ParrotTalk. Once I get marshalling with scope substitutions, I will debug Hubbub to offer distributed Capabilities.

What work are you undertaking?

Regards,
- HH


-------- Original Message --------
Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment
Local Time: October 28, 2017 9:12 AM
UTC Time: October 28, 2017 1:12 PM
To: Any question about pharo is welcome <[hidden email]>

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

Sent: Saturday, October 28, 2017 5:09 AM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 2:19 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201">+49 7141 56 10 86 1

 

 

 

 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

henry
In reply to this post by aglynn42
I looked and was not able to find it. Which version of Pharo are we talking about? What is the name of the kafka integration?

- HH


-------- Original Message --------
Subject: RE: [Pharo-users] Smalltalk Argument
Local Time: October 27, 2017 11:10 PM
UTC Time: October 28, 2017 3:10 AM
To: henry <[hidden email]>, Any question about pharo iswelcome <[hidden email]>

The Kafka integration is right in the Pharo catalog.

 

Sent from Mail for Windows 10

 

Sent: Friday, October 27, 2017 5:03 PM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 8:14 AM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim







 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 


————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

henry
In reply to this post by aglynn42
I used Kafka as was illustrated in the image, as a durable event source for BigData to RDB, Hadoop and other facilities. Our Kafka consumers were writing into Hadoop and had no concept of map/reduce.

I agree that if we had a map/reduce feature then Pharo could operate against HDB and Hadoop in the Hadoop constellation of tools. That would be powerful.

I need and wish to ask your opinion, for steering Pharo into an enterprise solution, what features does Pharo need to be a better player?

- HH


-------- Original Message --------
Subject: RE: [Pharo-users] Smalltalk Argument
Local Time: October 27, 2017 11:10 PM
UTC Time: October 28, 2017 3:10 AM
To: henry <[hidden email]>, Any question about pharo iswelcome <[hidden email]>

There’s a million ways of accomplishing such things, but you need to pick the appropriate way to do  it, given restrictions in Pharo and limitations in what’s it’s calling. 

 

You can utilize Kafka or Kerberos authentication via Synapse, for instance, you can access virtually any authentication mechanism via WSO2 IS (itself built on Synapse). 

 

Another way of accessing the same things (plus numerous others) is via Vert.x, also directly supported from the Pharo catalog.  I’ve used that methodology as well, though I had to overcome Vert.x’s own limitations by mapping it to the more capable Apache River (formerly JINI).

 

You can access Hadoop / Cassandra / MongoDB via the same methods Kafka, Storm and Spark do, without the problems introduced by the JVM.  MongoDB and Cassandra have libraries already available in Pharo, and they work better than those available elsewhere.

 

There are even ways to directly access the Open Telephony API in ERLAN. 

 

Sometimes you need to be creative, and every time you need to understand the strengths and limitations of both what you’re using, and what you’re accessing.

 

 

 

Sent from Mail for Windows 10

 

Sent: Friday, October 27, 2017 5:03 PM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 8:14 AM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim







 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 


————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

henry
In reply to this post by aglynn42
I referred to a Lambda Architecture, not the availability of Lambdas in the language. Pharo has the best with BlockClosures.

- HH


-------- Original Message --------
Subject: RE: [Pharo-users] Smalltalk Argument
Local Time: October 27, 2017 11:10 PM
UTC Time: October 28, 2017 3:10 AM
To: henry <[hidden email]>, Any question about pharo iswelcome <[hidden email]>

Last point.  Blocks are already better lambdas than lambdas in Java.

 

Have a look at this code from rxJava, which includes the Java 8 lambda version and a Java 7 version using an anonymous inner class:

 

Java 8 code

 

package rxjava.examples;
 
import io.reactivex.*;
 
public class HelloWorld {
    public static void main(String[] args) {
        Flowable.just("Hello world").subscribe(System.out::println);
    }
}

 

Java 7 code

 

import io.reactivex.functions.Consumer;
 
Flowable.just("Hello world")
  .subscribe(new Consumer<String>() {
      @Override public void accept(String s) {
          System.out.println(s);
      }
  });

 

Are they equivalent?  How would you know?

 

In fact, they aren’t, worse, the results of the difference depend on the target, whether it’s Java SE (including Spring based apps) or JavaEE.

 

The Java 8 version doesn’t create an anonymous inner class but a generically named class with generically named methods.  As a result, it will be most often faster.  However it’s less safe, because particularly in clustered environments, and unpredictably, it can create conflicts due to the same generic names being used by two different JVM’s.  The Java 7 version will be as fast, in JavaEE, and safer.  In Java SE they’re close to equivalently safe, but the Java 7 version will be significantly slower in most cases.

 

RxJava itself, as well, is unnecessary in Pharo, since the Announcer already implements the same pattern, and does so in a more efficient and more consistent way.

 

 

Sent from Mail for Windows 10

 

Sent: Friday, October 27, 2017 5:03 PM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Elastic search JSON integration would be another good one. I heard there was a Kafka integration, is that true? Where could I find that, I used to use Kafka.

 

Kafka is a great event channel for input to BigData. Using Kafka, it is well in crafting a Lamda Architecture. Imagine Pharo where Storm resides.

 

webkit-fake-url://502df029-af7a-484e-b157-43970b30a0a1/imagejpeg

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:51, henry <[hidden email]> wrote:

 How about Kerberos? Can we get a team to look closely at bringing integration for enterprise users? That would be helpful, or can you just put it behind a Kerberos wrapper? If that would work, collecting a demo, that could unlock more corporate wallets , for investment.

 

 

- HH

 

 

On Fri, Oct 27, 2017 at 16:41, henry <henry@...> wrote:

How is there no steering committee to accumulate wrapping 3rd party libraries in Alien to gain benefits of code in other languages? Do not assume that code is not extremely well written in that particular language for that particular task and that particular deployment mechanism.

 

Can Pharo be called as a shared library from Java JNA?

 

- HH

 

 

On Fri, Oct 27, 2017 at 15:47, Andrew Glynn <aglynn42@...> wrote:

I’m not claiming I don’t or haven’t been affected, only that I no long allow myself to be.  Does that cause issues?  Of course.  But I’d rather deal with those than do things I don’t enjoy.  However I only got to that point after 26 years in the industry, so I don’t expect that everyone will feel that way.

 

Cheers

Andrew

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 8:14 AM
Subject: Re: [Pharo-users] Smalltalk Argument

 

Andrew,

Am 26.10.17 um 00:46 schrieb Andrew Glynn:

There’s other questions that are relevant to me:

I am glad you opened your words with this sentence. Other peoples’ mileages may vary a lot.

> Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Some people can’t. I can’t. I am making my living with a web based application. And I like it.

 

> Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.>

So you are in the lucky position that neither mobile nor web nor integration matters to you or you have enough resources to do all that stuff yourself. I am envyous. I need to build web pages and people ask me whether we can ship an iPhone App. I do customer-facing stuff and sex sells much more than we like to think.

Your comments on the crappiness of libs in other languages is a great fit for Smalltalk. Not invented here, therefor rubbish. We came a long way with this way of thinking. But these rubbish makers dance circles around us while we try to do our first hello world for an iPad. They laugh at us when we try to reinvent MVC on top of Seaside (although MVC is closesly related to Smalltalk). Because they are back home and watch Netflix while we debug our homegrown base libraries that are, of course, much better than theirs because they are written in Smalltalk.

I am not arguing that maintaining Smalltalk code is far superior to most technolgies out there. But depending on the needs of our projects we have to learn and use those crappy technologies to accomplish what they offer. Because, sometimes (especially if you have to pay bills), an existing library with flaws is better than none.

So if I have to use Javascript or C# or Dart or Swift to do the frontend part of my system, is there still much benefit in using these together with Smalltalk? Or is there - at least from a manager’s point of view - not a reasonable amount of sense in choosing the frontend technology also for the logic and compensate the loss in productivity with a gain in avoided complexity?

Your answer delivers a lot of food for thought, but I don’t buy all of it. And I don’t expect you to buy all of mine ;-)


Joachim







 

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <pharo-users-bounces@...> on behalf of David Mason <dmason@...>
Reply-To: Any question about pharo is welcome <pharo-users@...>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <pharo-users@...>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we’re not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it’s presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, jtuchel@... <jtuchel@...> wrote:

First of all: I’d say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don’t want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you’ve heard the sentence "we’ve taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn’t exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn’t care. It’s that simple. As a consultant, I’ve heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It’s just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I’ve used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we’ve done so far would’ve taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google’s flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I’d say these arguments about productivity are just us trying to make ourselves believe we’re still the top of the food chain. We’ve done that for almost thirty years now and still aren’t ready to stop it. But we’ve been lying to ourselves and still do so.

I don’t think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can’t win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim



————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

 

 


————————————————————————
Objektfabrik Joachim Tuchel          mailto:jtuchel@...
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

aglynn42
In reply to this post by henry

I’m not working on that specifically, although what I am working on could definitely use that and vice versa, which would increase the capabilities of each.

 

One thing I’m working on is using Vert.x for service registration and discovery, mapped to Apache River (JINI) to propagate that over non-local network segments that require fully authenticated security (as a result, it also provides things such as Kerberos to Pharo apps).  The mapping between the two is very straightforward, almost direct, but I’ve added the Synapse micro service bus to control data flows and secure access to remote services.

 

It enables things like automatic configuration/integration of Pharo based mobile apps with newer cars that support that kind of autoconfiguration, since they all use JINI to do so.  Thus a Pharo mobile or IoT app can automatically be configured to work with any of  the car’s subsystems that are relevant to it. 

 

JINI is far more used than people realize, partly because it ‘just works’ and as a result doesn’t get the public ‘squeaky wheel’ effect.  The fact that the authors of Vert.x reimplemented half of the features of JINI, in a less comprehensive and less reliable way, rather than just using it (especially considering it’s open source) shows the degree to which that effect is operative.

 

There’s probably a couple dozen other general use cases where the integration will allow Pharo apps to ‘just work’ in a JINI or Vert.x environment, as well as thousands of industry/company specific ones.  I’d have to mode-switch to think of them off the top of my head though 😊.

 

Andrew

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Saturday, October 28, 2017 10:02 AM
To: [hidden email]
Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

 

Hi Andrew,

 

Are you working to bring a Capabilities model to Pharo? This is precisely what I am working to bring with Hubbub, running on top of my ParrotTalk. I derived these from erights.org's ELib and have been working on them for many years. Now that ParrotTalk has stabilized (layer 5) I am shifting to implementing marshalling of layer 6 objects using STON all to run on top of ParrotTalk. Once I get marshalling with scope substitutions, I will debug Hubbub to offer distributed Capabilities.

 

What work are you undertaking?

 

Regards,

- HH

 

 

-------- Original Message --------

Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

Local Time: October 28, 2017 9:12 AM

UTC Time: October 28, 2017 1:12 PM

To: Any question about pharo is welcome <[hidden email]>

 

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

Sent: Saturday, October 28, 2017 5:09 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 2:19 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

 

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

 

And, to be honest: what is it we actually are better in by using Smalltalk?

Can we build cool looking web apps in extremely short time? No.

Can we build mobile Apps with little effort? No.

Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?

Are we lying when we say we are so extremely over-productive as compared to other languages?

 

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.

 

 

Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.

 

 

I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

 

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

 

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.

 

 

Okay, shoot ;-)

 

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201">+49 7141 56 10 86 1

 

 

 

 

 

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

henry
I used to use JINI, a fine system. I didn’t know it had been rereleased as Apache River, I’ve been out of it awhile. This was the broker system that got me interested in Linda. Now I have an eventual Linda project called eLinda, which you can find in the Cryptography repository, no prerequisites needed.

- HH


On Sat, Oct 28, 2017 at 11:25, Andrew Glynn <[hidden email]> wrote:

I’m not working on that specifically, although what I am working on could definitely use that and vice versa, which would increase the capabilities of each.

 

One thing I’m working on is using Vert.x for service registration and discovery, mapped to Apache River (JINI) to propagate that over non-local network segments that require fully authenticated security (as a result, it also provides things such as Kerberos to Pharo apps).  The mapping between the two is very straightforward, almost direct, but I’ve added the Synapse micro service bus to control data flows and secure access to remote services.

 

It enables things like automatic configuration/integration of Pharo based mobile apps with newer cars that support that kind of autoconfiguration, since they all use JINI to do so.  Thus a Pharo mobile or IoT app can automatically be configured to work with any of  the car’s subsystems that are relevant to it. 

 

JINI is far more used than people realize, partly because it ‘just works’ and as a result doesn’t get the public ‘squeaky wheel’ effect.  The fact that the authors of Vert.x reimplemented half of the features of JINI, in a less comprehensive and less reliable way, rather than just using it (especially considering it’s open source) shows the degree to which that effect is operative.

 

There’s probably a couple dozen other general use cases where the integration will allow Pharo apps to ‘just work’ in a JINI or Vert.x environment, as well as thousands of industry/company specific ones.  I’d have to mode-switch to think of them off the top of my head though 😊.

 

Andrew

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Saturday, October 28, 2017 10:02 AM
To: [hidden email]
Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

 

Hi Andrew,

 

Are you working to bring a Capabilities model to Pharo? This is precisely what I am working to bring with Hubbub, running on top of my ParrotTalk. I derived these from erights.org's ELib and have been working on them for many years. Now that ParrotTalk has stabilized (layer 5) I am shifting to implementing marshalling of layer 6 objects using STON all to run on top of ParrotTalk. Once I get marshalling with scope substitutions, I will debug Hubbub to offer distributed Capabilities.

 

What work are you undertaking?

 

Regards,

- HH

 

 

-------- Original Message --------

Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

Local Time: October 28, 2017 9:12 AM

UTC Time: October 28, 2017 1:12 PM

To: Any question about pharo is welcome <[hidden email]>

 

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

Sent: Saturday, October 28, 2017 5:09 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 2:19 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

 

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

 

And, to be honest: what is it we actually are better in by using Smalltalk?

Can we build cool looking web apps in extremely short time? No.

Can we build mobile Apps with little effort? No.

Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?

Are we lying when we say we are so extremely over-productive as compared to other languages?

 

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.

 

 

Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.

 

 

I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

 

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

 

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.

 

 

Okay, shoot ;-)

 

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201">+49 7141 56 10 86 1

 

 

 

 

 

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

aglynn42
In reply to this post by Stephane Ducasse-3

I will, although in some ways the two may be more complementary than anything. 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Saturday, October 28, 2017 5:06 AM
To: [hidden email]
Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, October 26, 2017 2:19 AM
To: [hidden email]

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

And, to be honest: what is it we actually are better in by using Smalltalk?
Can we build cool looking web apps in extremely short time? No.
Can we build mobile Apps with little effort? No.
Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?
Are we lying when we say we are so extremely over-productive as compared to other languages?

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.


Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.


I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.


Okay, shoot ;-)

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200" target="_blank">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201" target="_blank">+49 7141 56 10 86 1

 

 

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

henry
In reply to this post by henry
Here is a diagram of the various components I am working on integrating,.

hubbub.jpg

- HH


-------- Original Message --------
Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment
Local Time: October 28, 2017 1:23 PM
UTC Time: October 28, 2017 5:23 PM
To: Andrew Glynn <[hidden email]>, Any question about pharo iswelcome <[hidden email]>

I used to use JINI, a fine system. I didn’t know it had been rereleased as Apache River, I’ve been out of it awhile. This was the broker system that got me interested in Linda. Now I have an eventual Linda project called eLinda, which you can find in the Cryptography repository, no prerequisites needed.

- HH


On Sat, Oct 28, 2017 at 11:25, Andrew Glynn <[hidden email]> wrote:

I’m not working on that specifically, although what I am working on could definitely use that and vice versa, which would increase the capabilities of each.

 

One thing I’m working on is using Vert.x for service registration and discovery, mapped to Apache River (JINI) to propagate that over non-local network segments that require fully authenticated security (as a result, it also provides things such as Kerberos to Pharo apps).  The mapping between the two is very straightforward, almost direct, but I’ve added the Synapse micro service bus to control data flows and secure access to remote services.

 

It enables things like automatic configuration/integration of Pharo based mobile apps with newer cars that support that kind of autoconfiguration, since they all use JINI to do so.  Thus a Pharo mobile or IoT app can automatically be configured to work with any of  the car’s subsystems that are relevant to it. 

 

JINI is far more used than people realize, partly because it ‘just works’ and as a result doesn’t get the public ‘squeaky wheel’ effect.  The fact that the authors of Vert.x reimplemented half of the features of JINI, in a less comprehensive and less reliable way, rather than just using it (especially considering it’s open source) shows the degree to which that effect is operative.

 

There’s probably a couple dozen other general use cases where the integration will allow Pharo apps to ‘just work’ in a JINI or Vert.x environment, as well as thousands of industry/company specific ones.  I’d have to mode-switch to think of them off the top of my head though 😊.

 

Andrew

 

Sent from Mail for Windows 10

 


Sent: Saturday, October 28, 2017 10:02 AM
Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment


 

Hi Andrew,

 

Are you working to bring a Capabilities model to Pharo? This is precisely what I am working to bring with Hubbub, running on top of my ParrotTalk. I derived these from erights.org's ELib and have been working on them for many years. Now that ParrotTalk has stabilized (layer 5) I am shifting to implementing marshalling of layer 6 objects using STON all to run on top of ParrotTalk. Once I get marshalling with scope substitutions, I will debug Hubbub to offer distributed Capabilities.

 

What work are you undertaking?

 

Regards,

- HH

 

 

-------- Original Message --------

Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

Local Time: October 28, 2017 9:12 AM

UTC Time: October 28, 2017 1:12 PM

To: Any question about pharo is welcome <[hidden email]>

 

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

Sent: Saturday, October 28, 2017 5:09 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 2:19 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers", but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because "people who grew up with Java don’t know how to write code".  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the "shit has to work".  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when "shit has to work".  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

 

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

 

And, to be honest: what is it we actually are better in by using Smalltalk?

Can we build cool looking web apps in extremely short time? No.

Can we build mobile Apps with little effort? No.

Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?

Are we lying when we say we are so extremely over-productive as compared to other languages?

 

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.

 

 

Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.

 

 

I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

 

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

 

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.

 

 

Okay, shoot ;-)

 

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201">+49 7141 56 10 86 1

 

 

 

 

 

 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

Offray Vladimir Luna Cárdenas-2
In reply to this post by kilon.alios
Thanks a lot Paulo for starting this thread and all the participants for
the clever and enlightening answers.

I just want to add my two cents.


On 26/10/17 07:53, Dimitris Chloupis wrote:

>
> My personal opinion is that as pessimistic it may sound, Smalltalk has
> very little to offer in the library front. The language is still
> stellar and live environment is a great concept but from there on
> there is a decline. Sure if your are low demand kind of person on the
> library front and dont mind implementing stuff by yourself you wont
> mind the lack of libraries but most coders , me included , dont have
> this luxury. Especially making a living with a language is a
> completely different story from learning it as a hobby, 
>
> I think and that's a personal opinion, that Smalltalk goes the wrong
> direction. It tries to be a do it all language, but we already have an
> army of do it all languages. I think it would excel as the backbone in
> big complex projects. Like the Moose project is doing with code
> analysis and visualization. I think this is an excellent direction to
> go with Smalltalk. Reflection is the big strength of Smalltalk the
> ability to communicate with its code in a direct matter. So I think
> that a Smalltalk implementation that can analyze and visualize code
> written in other languages would have been a pretty serious reason for
> people to learn Smalltalk. 
>
> I am very happy to see Pharo go towards that direction and yes I would
> definitely recommend it without hesitation  for code analysis and
> project management tool. Its no coincidence that we have seen a
> serious growth in our community. When I joined back in 2011 we all
> were posting at pharo-dev, pharo-users was a dead zone and then the
> community grow larger and larger we soon may need a third mailing list. 
>
> Code complexity is an issues for all large projects and tools that
> help manage this without having to convert to another language are
> very popular.

About finding  niche where you can learn Pharo and make a living from
it, I think that I may be behind a sweet spot in the field of
reproducible research and data storytelling and visualization, for
different fields like activism, journalism, science and engineering. I'm
"working in my PhD", so I don't get paid for using Pharo & friends (well
if fact I'm in a loan to finish my PhD), but using Pharo have allowed my
to get more dynamic results that with previous technologies (mostly
Python and Web ones). By being able to prototype quickly I have improved
my research experience and results, which is a way to improve research
(self) funding. Also, activists, journalist, researchers and other
novices interested in data storytelling and visualization, care little
about popularity of the language or being able to make apps (mobile or
web). What they care is about being able to tell the story and Pharo,
agile visualization and moldable tools, have a lot to offer in this
front. They're easy to learn and to adapt to fit the needs of the
problems behind those stories, as we have done with Grafoscopio[1]. So,
is nice to be part of a "trend", (data science, reproducible research,
data storytelling and data visualization) but not being part of one that
doesn't give you the freedom to use tools that matter to you, because of
the ideas they embody and the added value they create for you and your
community.

[1] http://mutabit.com/grafoscopio/index.en.html

Also, being in Latin America, means that we can bootstrap ourselves into
alternative futures by using alternative (digital) infrastructures and
tools, without to much worry about the deep investments in money and/or
expertise on bloated/popular technologies (we don't have such
investments here!). We can learn from the experience of the "Global
North", without following that path, but by taking a critical approach
to it (for example regarding overcomplex, non-dynamic, bloated
technologies).

On the community front, I think is important to do something to break
the circular logic of popularity: Smalltalk is unpopular, so we don't
get developers, so we don't have libraries, and this makes such tech
unpopular. We're a nascent community of data storytellers and activists
learning how to use Pharo to tell our voices and how to modify the tools
to tell them in more potent/fluid ways. We have done this mostly by
ourselves, without any support from industry or government and mostly
none from academy. Despite of the fragility of our hackerspace[2], this
has been done in a consistent way since almost two years[3] (I started
to learn Pharo, in a sparse way, 3 years ago). So, there are ways to
break the circular logic and bootstrap communities around the advantages
of the Pharo/Smalltalk environment in places where it can be aligned to
the trends but also take a critical approach to them by providing added
value.

[2] http://hackbo.co/
[3] http://mutabit.com/dataweek/

So finding a niche and bootstrapping tools and communities in it, seems
a way to deploy the Smalltalk Argument by example into the world, which
is a pretty powerful way to argument against skeptics.

Cheers,

Offray


Reply | Threaded
Open this post in threaded view
|

Re: Actual Code to Improve the Pharo environment

Stephane Ducasse-3
In reply to this post by aglynn42
Ok tell us when you release something. 
having a little example would be really nice. 



On Sat, Oct 28, 2017 at 5:25 PM, Andrew Glynn <[hidden email]> wrote:

I’m not working on that specifically, although what I am working on could definitely use that and vice versa, which would increase the capabilities of each.

 

One thing I’m working on is using Vert.x for service registration and discovery, mapped to Apache River (JINI) to propagate that over non-local network segments that require fully authenticated security (as a result, it also provides things such as Kerberos to Pharo apps).  The mapping between the two is very straightforward, almost direct, but I’ve added the Synapse micro service bus to control data flows and secure access to remote services.

 

It enables things like automatic configuration/integration of Pharo based mobile apps with newer cars that support that kind of autoconfiguration, since they all use JINI to do so.  Thus a Pharo mobile or IoT app can automatically be configured to work with any of  the car’s subsystems that are relevant to it. 

 

JINI is far more used than people realize, partly because it ‘just works’ and as a result doesn’t get the public ‘squeaky wheel’ effect.  The fact that the authors of Vert.x reimplemented half of the features of JINI, in a less comprehensive and less reliable way, rather than just using it (especially considering it’s open source) shows the degree to which that effect is operative.

 

There’s probably a couple dozen other general use cases where the integration will allow Pharo apps to ‘just work’ in a JINI or Vert.x environment, as well as thousands of industry/company specific ones.  I’d have to mode-switch to think of them off the top of my head though 😊.

 

Andrew

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Saturday, October 28, 2017 10:02 AM
To: [hidden email]

Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

 

Hi Andrew,

 

Are you working to bring a Capabilities model to Pharo? This is precisely what I am working to bring with Hubbub, running on top of my ParrotTalk. I derived these from erights.org's ELib and have been working on them for many years. Now that ParrotTalk has stabilized (layer 5) I am shifting to implementing marshalling of layer 6 objects using STON all to run on top of ParrotTalk. Once I get marshalling with scope substitutions, I will debug Hubbub to offer distributed Capabilities.

 

What work are you undertaking?

 

Regards,

- HH

 

 

-------- Original Message --------

Subject: Re: [Pharo-users] Actual Code to Improve the Pharo environment

Local Time: October 28, 2017 9:12 AM

UTC Time: October 28, 2017 1:12 PM

To: Any question about pharo is welcome <[hidden email]>

 

Writing that kind of code is another of the reasons I decided I don’t want to work in anything else 😊.  Maybe more important than some of the others, both to myself and to other users.

 

I’ve gained so much personally, mostly for nothing, even just considering the relatively few  projects I have been able to work on in Pharo and previously in Squeak, VW and VA.  Unfortunately in most I haven’t been able to make the code public, since they were for entities like the government, DoD, etc.  

 

Not that VA attracts me quite so much to give back all that strongly, when a license is $8500+.  Were it possible to give back to VA C++ or VA Java, it might be different, but neither were OSS although they weren’t expensive.  More relevantly, both are now abandonware (hence my comment about IBM, which is applicable to OS/2 as well, although that has quietly had a 5.0 version released in June of this year).

 

I would, though, love a chance to give back to Pharo primarily, although I may port anything relevant to Squeak, and if I have sufficient time port it to VW, which although not OSS is at least affordable to most developers.

 

I’m nearly there on a couple of projects – one I’m testing and making final tweaks, another is about 2/3d’s of the way. 

 

The first project you (and others on the list) may be more immediately interested in testing, since it requires little to no additional work to use it, and even if not perfect, since it’s intended to directly help work you are doing in Pharo, it may worthwhile.  I’m hoping to have it ready for public consumption by the middle of November. 

 

On a different but related topic, the article I wrote got a fair amount of interest considering I don’t write nearly as well as Kenneth, for example.  Including direct interest from some well known industry people, which can’t hurt.  In an indirect way it may even be helpful, but not in the real, direct way decent code is.

 

Capabilities that won’t be available in anything else in an really usable way (because to be efficient they depend on capabilities not found in anything else), and in any case nowhere near as useful in anything else, will hopefully be more use than any article can be, never mind one I wrote, not just to me but also to other Pharo users and to Pharo itself.

 

Cheers

Andrew Glynn

 

 

Sent from Mail for Windows 10

 

Sent: Saturday, October 28, 2017 5:09 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

Hi andrew

 

please take a project that would help to bring more companies and that you want to push and push it with us :).

 

 

Stef

 

 

On Sat, Oct 28, 2017 at 11:05 AM, Stephane Ducasse <[hidden email]> wrote:

Hi andrew

 

you should contact esteban because he is writing an objective-C bridge. 

 

Stef

 

On Sat, Oct 28, 2017 at 2:30 AM, Andrew Glynn <[hidden email]> wrote:

One thing I’m working on is a bridge between Pharo and F-Script.  F-Script is, basically, a Smalltalk dialect, as is obvious from the screenshot.  However for MacOS and iOS, it allows you to bypass the static Objective-C API interface and debug / modify or even write applications directly in the system.  To do that you ‘inject’ F-Script into the OS.  The ability to so has a specific implication, though.  MacOS and iOS are themselves written in and as a dialect of Smalltalk.  (were it simply an overlay on Objective-C, it wouldn’t be able to do things that are impossible in Objective-C, and it wouldn’t need to be ‘injected’ in order to run).  Every implementation of Objective-C , bar GNU’s useless imitation, compiles to Smalltalk.  No surprise that Apple’s does, as well.

 

In any event, it will allow Pharo code to be mapped to MacOS and iOS objects, injected into the system dynamically, and modified / debugged dynamically using the Pharo tools.  The result, at least as far as iOS is concerned, may make Pharo actually the most powerful way to program it, well beyond XCode alone, along with doing the same for MacOS.  Android is another issue, although the Raspbian port of Pharo should be relatively easy to port to it. For me, unless someone had a use case, I don’t have one myself for Android.  I’ve tried nearly every version, because I’d love to support an OSS ecosystem, unfortunately using it compared to the iPhone is still like driving a Fiero based kit car compared to an actual Ferrari.

 

As far as JNI, while I see your point, JNI is such a PITA that few Java developers know it.  My usual workaround is to use Stamp and Synapse, which has the further advantage of allowing Java to ‘throttle’ data that the JVM can’t deal with at full speed.

 

As far as dealing with other JVM languages, PetitParser or SmaCC can generate bytecode rather than Java or other JVM code, and that allows libs to be written that utilize Synapse to talk to Pharo.  It isn’t necessarily an ideal solution, but a possible one without having to support umpteen environments.  Another potential way of accomplishing that is to use NetRexx, a declarative JVM language, which is both easy and terse, and like SQL, generates the actual bytecode rather than precompiling to it.  For instance, imagine the code needed for a simple ‘hello world’ in Java, then compare:

 

Say ‘hello world’

 

Since it generates virtually the same bytecode, it may be an easy way to do it.

 

With the last statement, that expresses really well the exact reason I no longer want to work in most other environments 😊.

 

Tc

Andrew

 

 

 

Sent from Mail for Windows 10

 

Sent: Thursday, October 26, 2017 2:19 AM

Subject: Re: [Pharo-users] Smalltalk Argument

 

I like that piece a lot, seeing exactly the described situation in large enterprises.

 

I made a strategic decision to go with Pharo for the long run for my solutions because it is a stable base on which to build (ok, there are evolutions, but fundamentally, I can rely on it being under control and can maintain solutions in a version).

 

The rationale is that at a deep level I am really fed up with having to deal with accidental complexity (now having to deal with Spark/Scala/sbt/Java/maven stuff) that makes the dev focus 80% technology drag and 20% net business contribution.

 

One key thing is that a team needs guidance and Smalltalk makes it easier due to well known ways of doing things.

 

Now we miss the boat on mobile and bigdata, but this is solvable. 

 

If we had an open Java bridge (and some people in the community have it for Pharo but do not open source it - so this is eminently doable) + Pharo as an embeddable piece (e.g. like Tcl and Lua) and not a big executable we would have a way to embed Pharo in a lot of places (e.g. in the Hadoop ecosystem where fast starting VMs and small footprint would make the cluster capacity x2 or x3 vs uberjars all over the place)  this would be a real disruption.

 

Think about being able to call Pharo from JNA https://github.com/java-native-access/jna the same way we use C with UFFI.

 

Smalltalk argument for me is that it makes development bearable (even fun and enjoyable would I say) vs the other stacks. That matters.

 

Phil

 

 

 

 

 

 

 

 

On Thu, Oct 26, 2017 at 12:46 AM, Andrew Glynn <[hidden email]> wrote:

There’s other questions that are relevant to me:

 

Do I give a f*** about cool looking web apps?  No, I don’t use web apps if in any way I can avoid it.

 

Do I give a f*** about mobile apps?  No, the screen’s too small to read anything longer than a twit, or anyone with anything worthwhile to say.

 

Do I give a f*** about the number of libraries in other languages?  No, because most of them are crap in every language I’ve had to work in, and the base languages are crap so they have to keep changing radically, and libraries and frameworks therefore also have to and never get any better. The few that are worthwhile I can almost always use from Smalltalk without a problem (read, Blender, ACT-R and Synapse, since every other library/framework I’ve used outside Smalltalk has been a waste of time). 

 

Do I give a f*** about implementing a complex piece of machine learning software in 22 hours, compared to 3 months for the Java version?  Well, actually yes, I do, because that was 3 months of my life down the toilet for something that is too slow to be useful in Java.

 

Any argument depends on your priorities. I’ve written tons of web apps, because I needed to get paid.  I’ve written better shitty mobile apps than the average shitty mobile apps.  However, I’m not going to do any of that any longer in crap that never improves, because after 26 years the irritability it produces is more than it’s worth. 

 

A few weeks ago, a recruiter that specializes in Smalltalk called me about a job, although they were well aware I live 1500 miles away from the city I lived in when I had worked through them, to see if I’d be willing to move back there for a job.  That sounds like another ‘there aren’t enough Smalltalk developers”, but it wasn’t, because the job wasn’t writing Smalltalk.  It was writing Java.

 

The person hiring, though, wouldn’t look at anyone who didn’t write Smalltalk, because “people who grew up with Java don’t know how to write code”.  I don’t agree with that, I’ve known a (very few) good Java developers.  I would say, though, that I’ve known far more incompetent ones than good ones, and I can’t think of any incompetent Smalltalk developers off the top of my head. 

 

Nor have I ever heard a developer in Smalltalk, or Haskell, or LISP, or even C, complain about how hard maintaining state is or coming up with various hacks to avoid it, which seems to be the main point of every JavaScript based ‘technology’.  An application is by definition a state-machine, which implies plenty about JS developers on the whole.

 

If you’re a good developer you can write good code in (nearly) anything.  My question then is why would you want to write in crap?  The better question is why aren’t there more good developers in any language?

 

Every project I have been able to do in Smalltalk, though, has had one thing in common, the “shit has to work”.  Companies do use it, in fact I could name 4 large enterprises I’ve worked for who’ve written their own dialects, and they all use it only when “shit has to work”.  They know it’s more productive, they also know using it for more things would increase the availability of Smalltalk developers. 

 

Why do they not do it?  One reason, though it takes a while to recognize it, because management doesn’t admit even to themselves why they do it, or not very often.  Being inefficient, as long as it doesn’t ‘really’ matter, is an advantage to large enterprises because they have resources smaller competitors don’t. 

 

Why don’t their competitors do it?  Because they can’t see past an hourly rate, what’s fashionable, or just new, or because their customers can’t.  Put more generally, average stupidity that isn’t corrected by the market.  Fashion affects smaller companies more than larger ones, because they can’t afford a few customers walking away because they wanted an app in Electron, even if they can’t give any relevant reason for wanting it, and even the samples on the Electron site don’t work. 

 

Enterprises can, and do use Smalltalk when it matters.  When it doesn’t, it’s to their advantage to promote things that are inefficient, buggy and unreliable.

 

Cost is relevant, but not in the simple way people look at things.  A crucial but rarely mentioned perspective on its relevance is that while Java based software runs TV set top boxes, Smalltalk based software runs things like medical equipment, automated defense systems, tanks, etc.  Cost becomes largely irrelevant when ‘shit has to work’. 

 

Productivity is primarily relevant to less talented developers, in an inversely sense, since unproductive environments and attitudes have a leveling tendency in general, and more specifically make accomplishing what the less talented are capable of in any environment sufficiently laborious for them to have a role.  Capability in Smalltalk, as implied by the person hiring for the Java role I mentioned, is a fairly decent means of judging whether someone is a so-so developer or a good one.

 

The productivity argument is realistically only relevant in the context of an already higher hourly cost.  Given that it is relevant at that point, companies that know Smalltalk is more productive would use it outside things that have to be 100%, if their own productivity were relevant to the same degree that competitors’ productivity is inversely relevant.

 

All these ways of looking at it are contingent perspectives though.  Yes, if the number of libraries is relevant to you, Smalltalk is less attractive, but that’s only a contingent phenomenon based on the relative popularity of Java and JavaScript, as a result it can’t be used as explanatory for that popularity.  All the ways of looking at it that are fully determinate are determinate via contingencies of that kind, which for the most part are precisely the other perspectives, including productivity, cost, availability of developers, etc.  None of them is in itself anything but a result of the others. 

 

If availability of developers is contingent on popularity (and further, popularity contingent on industry attitudes), to use an example already mentioned in Joachim’s post, then his simultaneous posit of library availability is if anything more contingent on the same popularity, so positing it as a cause and not a result, or merely a correlate, of popularity is incoherent.  We can go one step further, and demonstrate that even when large enterprises make something that works reliably available, they fail to promote and support it, which destroys the market for reliable tooling by simultaneously owning it while not promoting it, something IBM is particularly good at.  But IBM can’t (and if they can’t, neither can any other company) operate that way without the tacit agreement of the industry. 

 

To understand it in a more general way, software development has to be looked at in the context where it occurs, and how it’s determined to a large degree by that context, with a specific difference.  That difference is itself implicit in the context, i.e. capitalism, but only purely effective in software development. It’s a result of virtualization as an implicit goal of capitalism, and the disruptions implicit in the virtual but so far only realized completely in software.  In terms of that understanding, the analysis of virtualization and disruption as inherent to capitalism is better accomplished in Kapital than in any more recent work.

 

Or you can simply decide, as I’ve done recently, that working in ways and with tools that prevent doing good work in a reasonable timeframe isn’t worthwhile to you, no matter how popular those ways and tools might be, or what the posited reasons are, since at the end popularity is only insofar as it already is.  What those tools and methods are depends to a degree on your priorities, but if developers are engineers those priorities can’t be completely arbitrary.  Engineers are defined by their ability to make things work.

 

Software as virtual is inherently disruptive, and the software industry disrupts itself too often and too easily to build on anything. A further disruption caused by developers, as engineers, refusing to work with crap that doesn’t, i.e. insisting on being engineers, while in itself merely an aggravation of the disruptive tendencies, might have an inverse result.

 

Using a stable core of technologies as the basis for a more volatile set of products, in the way nearly every other industry does, is the best means we know of to build things both flexibly and reasonably efficiently.  The computer hardware industry is the extreme example of this, while the software industry is the extreme contradiction.

 

From: Pharo-users <[hidden email]> on behalf of David Mason <[hidden email]>
Reply-To: Any question about pharo is welcome <[hidden email]>
Date: Tuesday, October 24, 2017 at 11:52 AM
To: Any question about pharo is welcome <[hidden email]>
Subject: Re: [Pharo-users] Smalltalk Argument

 

PharoJS is working to give you that mobile app/browser app experience.  As with others, we're not there yet, but getting there.  See http://pharojs.org

 

The 67% loved means that 67% of people using Smalltalk (or perhaps have ever used it) want to continue - so it's presumably a high percentage of a smallish number of people.

 

On 20 October 2017 at 03:23, [hidden email] <[hidden email]> wrote:

First of all: I'd say the question itself is not a question but an excuse. I am not arguing there are enough Smalltalkers or cheap ones. But I think the question is just a way of saying "we don't want to do it for reasons that we ourselves cannot really express". If you are a good developer, learning Smalltalk is easy. If you are a good developer you've heard the sentence "we've taken the goos parts from x,y,z and Smalltalk" at least twice a year. So you most likely would like to learn it anyways.

 

A shortage of developers doesn't exist. What exists is an unwillingness of companies to get people trained in a technology. If Smalltalk was cool and great in their opinion, they wouldn't care. It's that simple. As a consultant, I've heard that argument so often. Not ferom Startups, but from insurance companies, Banks or Car manufacturers who spend millions on useless, endless meetings and stuff instead of just hiring somebody to teach a couple of developers Smalltalk. It's just a lie: the shortage of Smalltalk developers is not a problem.

 

And, to be honest: what is it we actually are better in by using Smalltalk?

Can we build cool looking web apps in extremely short time? No.

Can we build mobile Apps with little effort? No.

Does our Smalltalk ship lots of great libraries for all kinds of things that are not availabel in similar quality in any other language?

Are we lying when we say we are so extremely over-productive as compared to other languages?

 

I know, all that live debugging stuff and such is great and it is much faster to find & fix a bug in Smalltalk than in any other environment I've used so far. But that is really only true for business code. When I need to connect to things or want to build a modern GUI or a web application with a great look&feel, I am nowhere near productive, because I simply have to build my own stuff or learn how to use other external resources. If I want to build something for a mobile device, I will only hear that somebody somewhere has done it before. No docs, no proof, no ready-made tool for me.

 

 

Shortage of developers is not really the problem. If Smalltalk was as cool as we like to make ourselves believe, this problem would be non-existent. If somebody took out their iPad and told an audience: "We did this in Smalltalk in 40% of the time it would have taken in Swift", and if that something was a must-have for people, things would be much easier. But nobody has.

 

 

I am absolutely over-exaggerating, because I make my living with an SaaS product written in Smalltalk (not Pharo). I have lots of fun with Smalltalk and - as you - am convince that many parts of what we've done so far would've taken much longer or even be impossible in other languages. But the advantage was eaten by our extremely steep learning curve for web technologies and for building something that works almost as well as tools like Angular or jQuery Mobile.

 

Smalltalk is cool, and the day somebody shows me something like Google's flutter in Smalltalk, I am ready to bet a lot on a bright future for Smalltalk. But until then, I'd say these arguments about productivity are just us trying to make ourselves believe we're still the top of the food chain. We've done that for almost thirty years now and still aren't ready to stop it. But we've been lying to ourselves and still do so.

 

I don't think there is a point in discussing about the usefulness of a language using an argument like the number or ready-made developers. That is just an argument they know you can't win. The real question is and should be: what is the benefit of using Smalltalk. Our productivity argument is a lie as soon as we have to build something that uses or runs on technology that has been invented after 1990.

 

 

Okay, shoot ;-)

 

Joachim


--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: <a href="tel:%2B49%207141%2056%2010%2086%200" target="_blank">+49 7141 56 10 86 0         Fax: <a href="tel:%2B49%207141%2056%2010%2086%201" target="_blank">+49 7141 56 10 86 1

 

 

 

 

 

 

 

 


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

henry
In reply to this post by Offray Vladimir Luna Cárdenas-2
I have heard this summarized by the term: "build it and they will come". I think the data visualization aspect is where Pharo entering BigData space could really payoff. That comes down to data manipulation. Can Pharo read Avro?

- HH


On Sun, Oct 29, 2017 at 14:00, Offray Vladimir Luna Cárdenas <[hidden email]> wrote:
Thanks a lot Paulo for starting this thread and all the participants for the clever and enlightening answers. I just want to add my two cents. On 26/10/17 07:53, Dimitris Chloupis wrote: > > My personal opinion is that as pessimistic it may sound, Smalltalk has > very little to offer in the library front. The language is still > stellar and live environment is a great concept but from there on > there is a decline. Sure if your are low demand kind of person on the > library front and dont mind implementing stuff by yourself you wont > mind the lack of libraries but most coders , me included , dont have > this luxury. Especially making a living with a language is a > completely different story from learning it as a hobby,  > > I think and that's a personal opinion, that Smalltalk goes the wrong > direction. It tries to be a do it all language, but we already have an > army of do it all languages. I think it would excel as the backbone in > big complex projects. Like the Moose project is doing with code > analysis and visualization. I think this is an excellent direction to > go with Smalltalk. Reflection is the big strength of Smalltalk the > ability to communicate with its code in a direct matter. So I think > that a Smalltalk implementation that can analyze and visualize code > written in other languages would have been a pretty serious reason for > people to learn Smalltalk.  > > I am very happy to see Pharo go towards that direction and yes I would > definitely recommend it without hesitation  for code analysis and > project management tool. Its no coincidence that we have seen a > serious growth in our community. When I joined back in 2011 we all > were posting at pharo-dev, pharo-users was a dead zone and then the > community grow larger and larger we soon may need a third mailing list.  > > Code complexity is an issues for all large projects and tools that > help manage this without having to convert to another language are > very popular. About finding  niche where you can learn Pharo and make a living from it, I think that I may be behind a sweet spot in the field of reproducible research and data storytelling and visualization, for different fields like activism, journalism, science and engineering. I'm "working in my PhD", so I don't get paid for using Pharo & friends (well if fact I'm in a loan to finish my PhD), but using Pharo have allowed my to get more dynamic results that with previous technologies (mostly Python and Web ones). By being able to prototype quickly I have improved my research experience and results, which is a way to improve research (self) funding. Also, activists, journalist, researchers and other novices interested in data storytelling and visualization, care little about popularity of the language or being able to make apps (mobile or web). What they care is about being able to tell the story and Pharo, agile visualization and moldable tools, have a lot to offer in this front. They're easy to learn and to adapt to fit the needs of the problems behind those stories, as we have done with Grafoscopio[1]. So, is nice to be part of a "trend", (data science, reproducible research, data storytelling and data visualization) but not being part of one that doesn't give you the freedom to use tools that matter to you, because of the ideas they embody and the added value they create for you and your community. [1] http://mutabit.com/grafoscopio/index.en.html Also, being in Latin America, means that we can bootstrap ourselves into alternative futures by using alternative (digital) infrastructures and tools, without to much worry about the deep investments in money and/or expertise on bloated/popular technologies (we don't have such investments here!). We can learn from the experience of the "Global North", without following that path, but by taking a critical approach to it (for example regarding overcomplex, non-dynamic, bloated technologies). On the community front, I think is important to do something to break the circular logic of popularity: Smalltalk is unpopular, so we don't get developers, so we don't have libraries, and this makes such tech unpopular. We're a nascent community of data storytellers and activists learning how to use Pharo to tell our voices and how to modify the tools to tell them in more potent/fluid ways. We have done this mostly by ourselves, without any support from industry or government and mostly none from academy. Despite of the fragility of our hackerspace[2], this has been done in a consistent way since almost two years[3] (I started to learn Pharo, in a sparse way, 3 years ago). So, there are ways to break the circular logic and bootstrap communities around the advantages of the Pharo/Smalltalk environment in places where it can be aligned to the trends but also take a critical approach to them by providing added value. [2] http://hackbo.co/ [3] http://mutabit.com/dataweek/ So finding a niche and bootstrapping tools and communities in it, seems a way to deploy the Smalltalk Argument by example into the world, which is a pretty powerful way to argument against skeptics. Cheers, Offray
Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk Argument

Offray Vladimir Luna Cárdenas-2

Well is more "build and they will come, if you build also a community who will come", which is hard, but data storytelling and visualization as filed and dynamic moldable tools give us a advantage point to tackle such hard problems.

Cheers,

Offray


On 29/10/17 13:13, henry wrote:
I have heard this summarized by the term: "build it and they will come". I think the data visualization aspect is where Pharo entering BigData space could really payoff. That comes down to data manipulation. Can Pharo read Avro?

- HH


On Sun, Oct 29, 2017 at 14:00, Offray Vladimir Luna Cárdenas <[hidden email]> wrote:
Thanks a lot Paulo for starting this thread and all the participants for the clever and enlightening answers. I just want to add my two cents. On 26/10/17 07:53, Dimitris Chloupis wrote: > > My personal opinion is that as pessimistic it may sound, Smalltalk has > very little to offer in the library front. The language is still > stellar and live environment is a great concept but from there on > there is a decline. Sure if your are low demand kind of person on the > library front and dont mind implementing stuff by yourself you wont > mind the lack of libraries but most coders , me included , dont have > this luxury. Especially making a living with a language is a > completely different story from learning it as a hobby,  > > I think and that's a personal opinion, that Smalltalk goes the wrong > direction. It tries to be a do it all language, but we already have an > army of do it all languages. I think it would excel as the backbone in > big complex projects. Like the Moose project is doing with code > analysis and visualization. I think this is an excellent direction to > go with Smalltalk. Reflection is the big strength of Smalltalk the > ability to communicate with its code in a direct matter. So I think > that a Smalltalk implementation that can analyze and visualize code > written in other languages would have been a pretty serious reason for > people to learn Smalltalk.  > > I am very happy to see Pharo go towards that direction and yes I would > definitely recommend it without hesitation  for code analysis and > project management tool. Its no coincidence that we have seen a > serious growth in our community. When I joined back in 2011 we all > were posting at pharo-dev, pharo-users was a dead zone and then the > community grow larger and larger we soon may need a third mailing list.  > > Code complexity is an issues for all large projects and tools that > help manage this without having to convert to another language are > very popular. About finding  niche where you can learn Pharo and make a living from it, I think that I may be behind a sweet spot in the field of reproducible research and data storytelling and visualization, for different fields like activism, journalism, science and engineering. I'm "working in my PhD", so I don't get paid for using Pharo & friends (well if fact I'm in a loan to finish my PhD), but using Pharo have allowed my to get more dynamic results that with previous technologies (mostly Python and Web ones). By being able to prototype quickly I have improved my research experience and results, which is a way to improve research (self) funding. Also, activists, journalist, researchers and other novices interested in data storytelling and visualization, care little about popularity of the language or being able to make apps (mobile or web). What they care is about being able to tell the story and Pharo, agile visualization and moldable tools, have a lot to offer in this front. They're easy to learn and to adapt to fit the needs of the problems behind those stories, as we have done with Grafoscopio[1]. So, is nice to be part of a "trend", (data science, reproducible research, data storytelling and data visualization) but not being part of one that doesn't give you the freedom to use tools that matter to you, because of the ideas they embody and the added value they create for you and your community. [1] http://mutabit.com/grafoscopio/index.en.html Also, being in Latin America, means that we can bootstrap ourselves into alternative futures by using alternative (digital) infrastructures and tools, without to much worry about the deep investments in money and/or expertise on bloated/popular technologies (we don't have such investments here!). We can learn from the experience of the "Global North", without following that path, but by taking a critical approach to it (for example regarding overcomplex, non-dynamic, bloated technologies). On the community front, I think is important to do something to break the circular logic of popularity: Smalltalk is unpopular, so we don't get developers, so we don't have libraries, and this makes such tech unpopular. We're a nascent community of data storytellers and activists learning how to use Pharo to tell our voices and how to modify the tools to tell them in more potent/fluid ways. We have done this mostly by ourselves, without any support from industry or government and mostly none from academy. Despite of the fragility of our hackerspace[2], this has been done in a consistent way since almost two years[3] (I started to learn Pharo, in a sparse way, 3 years ago). So, there are ways to break the circular logic and bootstrap communities around the advantages of the Pharo/Smalltalk environment in places where it can be aligned to the trends but also take a critical approach to them by providing added value. [2] http://hackbo.co/ [3] http://mutabit.com/dataweek/ So finding a niche and bootstrapping tools and communities in it, seems a way to deploy the Smalltalk Argument by example into the world, which is a pretty powerful way to argument against skeptics. Cheers, Offray

12345