Re: [Pharo-users] How to make pharo find sqlite?

2017-10-02 Thread Stephane Ducasse
Thanks Renaud!

Yes it helps!

On Mon, Oct 2, 2017 at 2:57 AM, Renaud de Villemeur
 wrote:
> Hi
>
> I managed to get Sqlite work with Pharo under linux (Fedora), in both 32 and
> 64 bit. The setup has nothing to do with LD_LIBRARY_PATH. I'll use those
> example under fedora linux.
>
> First, of course, you need to install either UDBCSqlite or Garage-Sqlite
> drivers
>
> You first need to have sqlite3 libs installed on your system
> $ rpm -qa | grep sqlite
> sqlite-3.20.1-1.fc26.x86_64
> sqlite-libs-3.20.1-1.fc26.x86_64
> => for 64 bits version
>
> sqlite-3.20.1-1.fc26.i686
> sqlite-libs-3.20.1-1.fc26.i686
> => for 32 bits version
>
> Then find the path of your library
>
> $ rpm -ql sqlite-libs.i686
> /usr/lib/libsqlite3.so.0 -> this is your path in 32 bits
> /usr/lib/libsqlite3.so.0.8.6
> /usr/share/doc/sqlite-libs
> /usr/share/doc/sqlite-libs/README.md
> gnome@rdv:~
> $ rpm -ql sqlite-libs.x86_64
> /usr/lib64/libsqlite3.so.0 -> this is your path in 64 bits
> /usr/lib64/libsqlite3.so.0.8.6
> /usr/share/doc/sqlite-libs
> /usr/share/doc/sqlite-libs/README.md
>
>
> Under Linux, you have to give the library path inside Pharo Image, or link
> the library from pharo VM folder:
>
> 1. Update library path from pharo image
>
> Using UDBDSQLite, update to return the path of the library on your system
>
> UDBCSQLite3Library >> library
>
> Smalltalk os isMacOS ifTrue: [ ^ #sqlite3 ].
>
> ^ 'sqlite3'
>
> to
>
> UDBCSQLite3Library >> library
>
> Smalltalk os isMacOS ifTrue: [ ^ #sqlite3 ].
>
> ^ '/usr/lib/libsqlite3.so.0'
>
>
> If you are using Garage,Update:
>
> GASqlite3FFI >> library
>
> ^ '/usr/lib/libsqlite3.so.0'
>
> 2. link the library from VM folder:
>
> ln -s /usr/lib/libsqlite3.so.0 libsqlite3 or ln -s
> /usr/lib64/libsqlite3.so.0 sqlite3 if the module name is sqlite3 in your
> library method.
>
>
> Then your test should pass green.
>
> The reason it pass under windows is because the method library return by
> default sqlite3, which is the dll name you put under pharo VM directory to
> get it work.
> On linux, unless you link your library in the VM folder, the image has no
> clue where to find sqlite3.
>
> Hope this helps.
> Renaud
>
>
> 2017-09-30 17:16 GMT-04:00 Herby Vojčík :
>>
>> p...@highoctane.be wrote:
>>>
>>> Is https://pharo.fogbugz.com/f/cases/19990 showing again?
>>>
>>> What is the module being loaded ?
>>
>>
>> This seems to be the important question. It seems FFI for some reason
>> struggles with 'lib' and/or '.so.0' things in linux (even if LD_LIBRARY_PATH
>> is properly set).
>>
>> I had to do this:
>>
>> TARGETDIR=`find . -type f -name SqueakSSL.so -print0 | xargs -0 dirname`
>> ln -s `/sbin/ldconfig -p | sed -e 's|[^/]*||' | grep sqlite3`
>> ${TARGETDIR}/sqlite3.so
>>
>> (so, link in plugin directory, and the name is plain 'sqlite3.so'). With
>> that, things work. Maybe, libsqlite.so would do the trick as well, but I got
>> no nerve to play with it more.
>>
>> But, frankly, do not tell me this is what ppl need to do to load external
>> libs in linux. :-/
>>
>> Herby
>>
>>> Phil
>>>
>>>
>>> On Sat, Sep 30, 2017 at 1:28 PM, Herby Vojčík >> > wrote:
>>>
>>> p...@highoctane.be  wrote:
>>>
>>> What about
>>>
>>> LD_LIBRARY_PATH=;$LD_LIBRARYPATH  ./pharo-ui
>>> some.image
>>>
>>> Phil
>>>
>>>
>>> Thanks for answer, did not help.
>>>
>>> In fact it must be something different. As can be seen in the stack,
>>> it fails during finalizers, and as can be seen by looking at
>>> UDBCSQLite3DatabaseExternalObject class>>finalizeResourceData: code,
>>> the method it calls is sqlite close. It is hardly the first method
>>> that is should call...
>>>
>>> I suspect something around image save / load. Again. Lots of errors
>>> in those parts. But may be something else, as it kicks in only when
>>> SQLite-using tests starts to run. :-(
>>>
>>> Herby
>>>
>>> P.S.: I saw there is a similar thread out there, but it has problems
>>> with 32bit loaded by 64bit vm; but here, I have 32bit linux, so the
>>> vm installed should be 32bit.
>>>
>>> On Thu, Sep 28, 2017 at 7:40 PM, Herby Vojčík >> 
>>> >> wrote:
>>>
>>>  Hello!
>>>
>>>  I try to deploy UDBCSQLite-using image in a 32bit ubuntu
>>> 16.04.3.
>>>
>>>  I do have libsqlite3:
>>>
>>>  root@32bit-agent:~# find / -name '*libsqlite*' -type f
>>> 2>>/dev/null
>>>  /usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6
>>>  /var/lib/dpkg/info/libsqlite0.list
>>>  /var/lib/dpkg/info/libsqlite3-0:i386.postinst
>>>  /var/lib/dpkg/info/libsqlite3-0:i386.md5sums
>>>  /var/lib/dpkg/info/libsqlite3-0:i386.shlibs
>>>  /var/lib/dpkg/info/libsqlite0.postrm
>>>  /var/lib/dpkg/info/libsqlite3-0:i386.symbols
>>> 

Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Stephane Ducasse
Not that I know.
Because it can be a little project.
Now what is the key point to encapsulate this computation?

On Mon, Oct 2, 2017 at 12:51 AM, Vitor Medina Cruz 
wrote:

> Hello!
>
> Is there, in Pharo, builders for equals (=) and hash messages similar to:
> https://commons.apache.org/proper/commons-lang/javadocs/
> api-release/org/apache/commons/lang3/builder/EqualsBuilder.html
>
> and
>
> https://commons.apache.org/proper/commons-lang/javadocs/
> api-release/org/apache/commons/lang3/builder/HashCodeBuilder.html?
>
> Thanks in advance,
> Vitor
>
>
> 
>  Livre
> de vírus. www.avg.com
> .
> <#m_7375944706768832526_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Esteban Lorenzano
in java, because this is a pain to do it each time. 
for us, maybe for the same… even if is a lot easier.

Esteban

> On 2 Oct 2017, at 09:42, Stephane Ducasse  wrote:
> 
> Not that I know. 
> Because it can be a little project.
> Now what is the key point to encapsulate this computation?
> 
> On Mon, Oct 2, 2017 at 12:51 AM, Vitor Medina Cruz  > wrote:
> Hello!
> 
> Is there, in Pharo, builders for equals (=) and hash messages similar to: 
> https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/builder/EqualsBuilder.html
>  
> 
>  
> 
> and 
> 
> https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/builder/HashCodeBuilder.html
>  
> ?
> 
> Thanks in advance,
> Vitor
> 
>  
> 
>  Livre de vírus. www.avg.com 
> .
>  



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Denis Kudriashov
Hi.

I just use RBGenerateEqualHashRefactoring for this:

r := RBGenerateEqualHashRefactoring className: MyClass variables: #(vars
which should be used in equal and hash).
r execute


But it is a bit different.

2017-10-02 0:51 GMT+02:00 Vitor Medina Cruz :

> Hello!
>
> Is there, in Pharo, builders for equals (=) and hash messages similar to:
> https://commons.apache.org/proper/commons-lang/javadocs/
> api-release/org/apache/commons/lang3/builder/EqualsBuilder.html
>
> and
>
> https://commons.apache.org/proper/commons-lang/javadocs/
> api-release/org/apache/commons/lang3/builder/HashCodeBuilder.html?
>
> Thanks in advance,
> Vitor
>
>
> 
>  Livre
> de vírus. www.avg.com
> .
> <#m_4862217785176417547_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Jose San Leandro
Hi,

I wrote a generator for that. Probably it makes no sense to publish it as a
standalone project. I tend to think code generation fits better in other
languages.
I can paste the relevant code here if needed.

2017-10-02 9:44 GMT+02:00 Esteban Lorenzano :

> in java, because this is a pain to do it each time.
> for us, maybe for the same… even if is a lot easier.
>
> Esteban
>
>
> On 2 Oct 2017, at 09:42, Stephane Ducasse  wrote:
>
> Not that I know.
> Because it can be a little project.
> Now what is the key point to encapsulate this computation?
>
> On Mon, Oct 2, 2017 at 12:51 AM, Vitor Medina Cruz 
> wrote:
>
>> Hello!
>>
>> Is there, in Pharo, builders for equals (=) and hash messages similar to:
>> https://commons.apache.org/proper/commons-lang/javadocs/api-
>> release/org/apache/commons/lang3/builder/EqualsBuilder.html
>>
>> and
>>
>> https://commons.apache.org/proper/commons-lang/javadocs/api-
>> release/org/apache/commons/lang3/builder/HashCodeBuilder.html?
>>
>> Thanks in advance,
>> Vitor
>>
>>
>> 
>>  Livre
>> de vírus. www.avg.com
>> .
>>
>>
>
>
>


Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread stephan

On 01-10-17 21:03, Steven R. Baker wrote:

First, is there some trick to managing images? Are people using
one-per-project, or one-per-computer? All of the above? Anyone using
PharoLauncher these days? Other tools?


PharoLauncher indeed. I name images after project and download 
date/build. I regularly move projects to a new image version.
For issue fixing I nearly always download a new image and recreate the 
situation in that.



Once the application is done, I assume I'll want to ship it in a minimal
Pharo image. Is there documentation or prior art on this?


That is right, and you'd be early in doing that :) Basically just look 
at how the full Pharo image is built from the minimal image.


Stephan





Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread Dimitris Chloupis
On Sun, Oct 1, 2017 at 10:04 PM Steven R. Baker 
wrote:

> Heya folks,
>
> [Please jump on any of my statements that sound crazy: use of Spec,
> other assumptions, etc.]
>
> I'm starting an application in Pharo, using Spec. Basically, a GTD
> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
> code is working just fine, but I'm left with a lot of questions about
> how to organize it.
>
> First, is there some trick to managing images? Are people using
> one-per-project, or one-per-computer? All of the above? Anyone using
> PharoLauncher these days? Other tools?
>

Personally I rely on the image as least as possible. Even for live state
which is what the image excels you can use several micro formats like fuel
, ston or other files of your own definition.

Code wise I am relying on git.

To build a new image I use a makefile, together with pharo startup script.

https://github.com/kilon/makePharo

The make file does the downloading of the vm and the image to the lastest
version and also the deletion of a previous installation
The startup script (regular smalltalk source file) it triggers only when
the image is opened the first time and it dowloads my project.
The project is available also via Package Browser, it acts as an umbrella
that dowload all my projects and their dependencies using metacello and
git.

I only save images ONLY in case I wanto to store the live state which means
almost never.
Code is handlied only through git and github.
 I use an external git client called Gitup (Mac only).

I dont use Pharolauncher or Iceberg. I was planning once to replace
makefile with my own gui for getting and installing latest vm and image but
I never tried it because I was happy with the makefile.



> I'm assuming that the current state of the art is Iceberg; where can I
> find a "This is how you should organize your project using Iceberg"
> document, blog, book, tutorial, video, or otherwise.
>
> Once the application is done, I assume I'll want to ship it in a minimal
> Pharo image. Is there documentation or prior art on this?
>

 There is project bootstrap that has such a goal its still a WIP.


> Finally, is there a way to run and capture keybindings globally? I have
> one part of my application (a quick-entry window) which I want summoned
> from a global (OS-wide) hotkey. Has this been done before? Or is it not
> easy to break the fourth wall, so to speak, and register a global
> keybinding from inside the VM?
>

Last time I checked it was not possible to have global shortcuts the easy
way. But yes you could do it. I am not aware of a GUI tool that will do
this for you , you will have to do this using code. Hacking the VM sounds
too extreme for me, you dont need to, you could run a forked process inside
Pharo and use UFFI to detect key presses without touching the VM. Of course
this si necessary only if Pharo still does not have an API for global
shortcuts.

UFFI can do some pretty insane stuff, but be warned that most of them are
platform specific which is both a blessing and a curse. UFFI basically
gives access to C libraries which means the OS libraries as well so you can
manipulate anything.

You even make it capture shortcuts outside Pharo, for example when your
application is meant to be run on the background, with minimised or no
pharo window.

Thanks!
>
> -Steven
>
>
>
>


[Pharo-users] Reading a text file line by line

2017-10-02 Thread Dirk Olmes
Hi,

I'm trying to get started with Pharo doing something really simple - at
least that's what I thought ... I'm trying to read a text file line by line.

If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
debugger telling me that BinaryFileStream does not understand nextLine.

Now I've tried my best to find a stream that may be reading plain text
lines but to no avail ...

Help!

-dirk



Re: [Pharo-users] Reading a text file line by line

2017-10-02 Thread Sven Van Caekenberghe
Hi,

> On 2 Oct 2017, at 13:07, Dirk Olmes  wrote:
> 
> Hi,
> 
> I'm trying to get started with Pharo doing something really simple - at
> least that's what I thought ... I'm trying to read a text file line by line.
> 
> If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
> debugger telling me that BinaryFileStream does not understand nextLine.
> 
> Now I've tried my best to find a stream that may be reading plain text
> lines but to no avail ...
> 
> Help!
> 
> -dirk

$ cat > /tmp/lines.txt
one
two
three

(FileLocator temp / 'lines.txt') contents lines.

'/tmp/lines.txt' asFileReference contents lines.

'/tmp/lines.txt' asFileReference readStreamDo: [ :in | 
  Array streamContents: [ :out | 
[ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].

(File named: '/tmp/lines.txt') readStreamDo: [ :in | 
  | characterStream |
  characterStream := ZnCharacterReadStream on: in.
  Array streamContents: [ :out | 
[ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
nextLine ] ] ].

They all return #('one' 'two' 'three').

In the last, more complex example, you first get a binary stream (and a 'line' 
is a character based concept), so wrapping the binary stream in a character 
read stream (which does know about lines) solves the problem.

HTH,

Sven


Re: [Pharo-users] How to make pharo find sqlite?

2017-10-02 Thread Herby Vojčík

Renaud de Villemeur wrote:

Hi


[...snip...]


The reason it pass under windows is because the method library return by
default sqlite3, which is the dll name you put under pharo VM directory
to get it work.


Not true. It is not in pharo vm directory. It finds it on %PATH%.


On linux, unless you link your library in the VM folder, the image has
no clue where to find sqlite3.


And this should be fixed, IMNSHO. It probably _partly_ works, but it 
should be made to work better.


Herby


Hope this helps.
Renaud



.



Re: [Pharo-users] How to make pharo find sqlite?

2017-10-02 Thread p...@highoctane.be
Yes, all of this should work and we need to improve on this.

I am willing to do something about that because it frustrates me too.

Herby,

How would you see it working?

Phil

On Mon, Oct 2, 2017 at 1:45 PM, Herby Vojčík  wrote:

> Renaud de Villemeur wrote:
>
>> Hi
>>
>
> [...snip...]
>
> The reason it pass under windows is because the method library return by
>> default sqlite3, which is the dll name you put under pharo VM directory
>> to get it work.
>>
>
> Not true. It is not in pharo vm directory. It finds it on %PATH%.
>
> On linux, unless you link your library in the VM folder, the image has
>> no clue where to find sqlite3.
>>
>
> And this should be fixed, IMNSHO. It probably _partly_ works, but it
> should be made to work better.
>
> Herby
>
> Hope this helps.
>> Renaud
>>
>
>
> .
>
>
>


Re: [Pharo-users] How to make pharo find sqlite?

2017-10-02 Thread Herby Vojčík

p...@highoctane.be wrote:

Yes, all of this should work and we need to improve on this.

I am willing to do something about that because it frustrates me too.

Herby,

How would you see it working?


Hard to answer. But linux knows where its libs are, at least when you do 
`/sbin/ldconfig -p` in CLI. Pharo should probably use this info somehow, 
question is, is there a kernel API to get to this, or is there another 
sane way to get to it? Of course, accepting 'libfoo' when asking for 
'foo', but that probably is there already (I hope).


And of course, honouring LD_LIBRARY_PATH, as it _is_ set in the pharo 
start script, so maybe even used, but... I am sorry I don't know how 
shared lib resolving works on linux. I am just the "as far as I can 
tell, the whole point of shared libraries is to ask OS for them and get 
them handed over" kind of person here.


Ppl love Smalltalk so much, they forgive lots of rough edges - I think 
we should not be that forgiving (like, garbled utf-8 names read from git 
in iceberg-metacello integration; and there are lots of details like 
this, the issue in this thread being one of more serious ones of them. IMO).


Herby


Phil

On Mon, Oct 2, 2017 at 1:45 PM, Herby Vojčík mailto:he...@mailbox.sk>> wrote:

Renaud de Villemeur wrote:

Hi


[...snip...]

The reason it pass under windows is because the method library
return by
default sqlite3, which is the dll name you put under pharo VM
directory
to get it work.


Not true. It is not in pharo vm directory. It finds it on %PATH%.

On linux, unless you link your library in the VM folder, the
image has
no clue where to find sqlite3.


And this should be fixed, IMNSHO. It probably _partly_ works, but it
should be made to work better.

Herby

Hope this helps.
Renaud



.






.



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Stephane Ducasse
Publish it in a package and let us have a look.


On Mon, Oct 2, 2017 at 9:53 AM, Jose San Leandro 
wrote:

> Hi,
>
> I wrote a generator for that. Probably it makes no sense to publish it as
> a standalone project. I tend to think code generation fits better in other
> languages.
> I can paste the relevant code here if needed.
>
> 2017-10-02 9:44 GMT+02:00 Esteban Lorenzano :
>
>> in java, because this is a pain to do it each time.
>> for us, maybe for the same… even if is a lot easier.
>>
>> Esteban
>>
>>
>> On 2 Oct 2017, at 09:42, Stephane Ducasse 
>> wrote:
>>
>> Not that I know.
>> Because it can be a little project.
>> Now what is the key point to encapsulate this computation?
>>
>> On Mon, Oct 2, 2017 at 12:51 AM, Vitor Medina Cruz 
>> wrote:
>>
>>> Hello!
>>>
>>> Is there, in Pharo, builders for equals (=) and hash messages similar
>>> to: https://commons.apache.org/proper/commons-lang/javadocs/api-
>>> release/org/apache/commons/lang3/builder/EqualsBuilder.html
>>>
>>> and
>>>
>>> https://commons.apache.org/proper/commons-lang/javadocs/api-
>>> release/org/apache/commons/lang3/builder/HashCodeBuilder.html?
>>>
>>> Thanks in advance,
>>> Vitor
>>>
>>>
>>> 
>>>  Livre
>>> de vírus. www.avg.com
>>> .
>>>
>>>
>>
>>
>>
>


Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread Stephane Ducasse
I discussed with esteban sooner this summer and we really want to have a process
where people can deploy applications and not just code.
Now we are not yet there.

Stef

On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker  wrote:
> Heya folks,
>
> [Please jump on any of my statements that sound crazy: use of Spec,
> other assumptions, etc.]
>
> I'm starting an application in Pharo, using Spec. Basically, a GTD
> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
> code is working just fine, but I'm left with a lot of questions about
> how to organize it.
>
> First, is there some trick to managing images? Are people using
> one-per-project, or one-per-computer? All of the above? Anyone using
> PharoLauncher these days? Other tools?
>
> I'm assuming that the current state of the art is Iceberg; where can I
> find a "This is how you should organize your project using Iceberg"
> document, blog, book, tutorial, video, or otherwise.
>
> Once the application is done, I assume I'll want to ship it in a minimal
> Pharo image. Is there documentation or prior art on this?
>
> Finally, is there a way to run and capture keybindings globally? I have
> one part of my application (a quick-entry window) which I want summoned
> from a global (OS-wide) hotkey. Has this been done before? Or is it not
> easy to break the fourth wall, so to speak, and register a global
> keybinding from inside the VM?
>
> Thanks!
>
> -Steven
>
>
>



Re: [Pharo-users] Reading a text file line by line

2017-10-02 Thread Stephane Ducasse
Sven I do not see the binary stream. Is it ZnCharacterReadStream?

Stef

On Mon, Oct 2, 2017 at 1:22 PM, Sven Van Caekenberghe  wrote:
> Hi,
>
>> On 2 Oct 2017, at 13:07, Dirk Olmes  wrote:
>>
>> Hi,
>>
>> I'm trying to get started with Pharo doing something really simple - at
>> least that's what I thought ... I'm trying to read a text file line by line.
>>
>> If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
>> debugger telling me that BinaryFileStream does not understand nextLine.
>>
>> Now I've tried my best to find a stream that may be reading plain text
>> lines but to no avail ...
>>
>> Help!
>>
>> -dirk
>
> $ cat > /tmp/lines.txt
> one
> two
> three
>
> (FileLocator temp / 'lines.txt') contents lines.
>
> '/tmp/lines.txt' asFileReference contents lines.
>
> '/tmp/lines.txt' asFileReference readStreamDo: [ :in |
>   Array streamContents: [ :out |
> [ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].
>
> (File named: '/tmp/lines.txt') readStreamDo: [ :in |
>   | characterStream |
>   characterStream := ZnCharacterReadStream on: in.
>   Array streamContents: [ :out |
> [ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
> nextLine ] ] ].
>
> They all return #('one' 'two' 'three').
>
> In the last, more complex example, you first get a binary stream (and a 
> 'line' is a character based concept), so wrapping the binary stream in a 
> character read stream (which does know about lines) solves the problem.
>
> HTH,
>
> Sven



Re: [Pharo-users] X11 options on Ubuntu VM / Athens rendering problems

2017-10-02 Thread Stephane Ducasse
How could we help?


On Sun, Oct 1, 2017 at 9:14 PM, Hilaire  wrote:
> I had situation where the system libcairo:i386 does not work with Dr.Geo[1],
> Pharo crashes with what looks like a Cairo crash! Looks like not a Pharo
> fault, but I am definitely stuck.
>
> It is problematic, it is a system (LinuxMint based) used in Geneva primary
> schools and Dr. Geo was expected to be used there :(
>
> Hilaire
>
> [1] http://forum.world.st/Cairo-related-crash-with-Dr-Geo-tt4952023.html
>
>
> Le 01/10/2017 à 19:50, Igor Stasenko a écrit :
>>
>>
>> All these difficulties are good argument to get the appropriate
>> libcairo/libpng shipped with the Linux VM, as done with Windows
>> and MacOSX VM
>>
>> Nah, in my case, there's nothing that can be lableled as "Pharo fault". It
>> is definitely a linux/ubuntu ecosystem fault. - by not providing parallel
>> updates for 32 & 64 bit variant of same library.
>
>
> --
> Dr. Geo
> http://drgeo.eu
>
>
>



Re: [Pharo-users] Reading a text file line by line

2017-10-02 Thread Sven Van Caekenberghe
If you do 

  (File named: '/tmp/lines.txt') readStream[Do:]

you seem to get a binary stream (this is the new implementation I guess), when 
you go via FileReference you get a character stream (but that are old ones).

I know, very confusing. We're always in the midst of transitions.

> On 2 Oct 2017, at 15:17, Stephane Ducasse  wrote:
> 
> Sven I do not see the binary stream. Is it ZnCharacterReadStream?
> 
> Stef
> 
> On Mon, Oct 2, 2017 at 1:22 PM, Sven Van Caekenberghe  wrote:
>> Hi,
>> 
>>> On 2 Oct 2017, at 13:07, Dirk Olmes  wrote:
>>> 
>>> Hi,
>>> 
>>> I'm trying to get started with Pharo doing something really simple - at
>>> least that's what I thought ... I'm trying to read a text file line by line.
>>> 
>>> If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
>>> debugger telling me that BinaryFileStream does not understand nextLine.
>>> 
>>> Now I've tried my best to find a stream that may be reading plain text
>>> lines but to no avail ...
>>> 
>>> Help!
>>> 
>>> -dirk
>> 
>> $ cat > /tmp/lines.txt
>> one
>> two
>> three
>> 
>> (FileLocator temp / 'lines.txt') contents lines.
>> 
>> '/tmp/lines.txt' asFileReference contents lines.
>> 
>> '/tmp/lines.txt' asFileReference readStreamDo: [ :in |
>>  Array streamContents: [ :out |
>>[ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].
>> 
>> (File named: '/tmp/lines.txt') readStreamDo: [ :in |
>>  | characterStream |
>>  characterStream := ZnCharacterReadStream on: in.
>>  Array streamContents: [ :out |
>>[ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
>> nextLine ] ] ].
>> 
>> They all return #('one' 'two' 'three').
>> 
>> In the last, more complex example, you first get a binary stream (and a 
>> 'line' is a character based concept), so wrapping the binary stream in a 
>> character read stream (which does know about lines) solves the problem.
>> 
>> HTH,
>> 
>> Sven
> 




Re: [Pharo-users] Reading a text file line by line

2017-10-02 Thread Stephane Ducasse
Yes this is why we should continue to clean and remove cruft. Now I
remember that guille did that for File.

Stef

On Mon, Oct 2, 2017 at 3:20 PM, Sven Van Caekenberghe  wrote:
> If you do
>
>   (File named: '/tmp/lines.txt') readStream[Do:]
>
> you seem to get a binary stream (this is the new implementation I guess), 
> when you go via FileReference you get a character stream (but that are old 
> ones).
>
> I know, very confusing. We're always in the midst of transitions.
>
>> On 2 Oct 2017, at 15:17, Stephane Ducasse  wrote:
>>
>> Sven I do not see the binary stream. Is it ZnCharacterReadStream?
>>
>> Stef
>>
>> On Mon, Oct 2, 2017 at 1:22 PM, Sven Van Caekenberghe  wrote:
>>> Hi,
>>>
 On 2 Oct 2017, at 13:07, Dirk Olmes  wrote:

 Hi,

 I'm trying to get started with Pharo doing something really simple - at
 least that's what I thought ... I'm trying to read a text file line by 
 line.

 If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
 debugger telling me that BinaryFileStream does not understand nextLine.

 Now I've tried my best to find a stream that may be reading plain text
 lines but to no avail ...

 Help!

 -dirk
>>>
>>> $ cat > /tmp/lines.txt
>>> one
>>> two
>>> three
>>>
>>> (FileLocator temp / 'lines.txt') contents lines.
>>>
>>> '/tmp/lines.txt' asFileReference contents lines.
>>>
>>> '/tmp/lines.txt' asFileReference readStreamDo: [ :in |
>>>  Array streamContents: [ :out |
>>>[ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].
>>>
>>> (File named: '/tmp/lines.txt') readStreamDo: [ :in |
>>>  | characterStream |
>>>  characterStream := ZnCharacterReadStream on: in.
>>>  Array streamContents: [ :out |
>>>[ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
>>> nextLine ] ] ].
>>>
>>> They all return #('one' 'two' 'three').
>>>
>>> In the last, more complex example, you first get a binary stream (and a 
>>> 'line' is a character based concept), so wrapping the binary stream in a 
>>> character read stream (which does know about lines) solves the problem.
>>>
>>> HTH,
>>>
>>> Sven
>>
>
>



Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread Esteban Lorenzano

> On 2 Oct 2017, at 15:12, Stephane Ducasse  wrote:
> 
> I discussed with esteban sooner this summer and we really want to have a 
> process
> where people can deploy applications and not just code.
> Now we are not yet there.
> 
> Stef
> 
> On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker  
> wrote:
>> Heya folks,
>> 
>> [Please jump on any of my statements that sound crazy: use of Spec,
>> other assumptions, etc.]
>> 
>> I'm starting an application in Pharo, using Spec. Basically, a GTD
>> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
>> code is working just fine, but I'm left with a lot of questions about
>> how to organize it.
>> 
>> First, is there some trick to managing images? Are people using
>> one-per-project, or one-per-computer? All of the above? Anyone using
>> PharoLauncher these days? Other tools?

pharo users tend to prefer one-per-project approach :)
most people uses (or should use) pharo launcher. In fact, we want to make it 
the default download, is just that to get it right is complicated :)

but… pharo launcher is to developers. A final app would require other stuff to 
be accomplished (like closing development tools, etc.).

>> I'm assuming that the current state of the art is Iceberg; where can I
>> find a "This is how you should organize your project using Iceberg"
>> document, blog, book, tutorial, video, or otherwise.

beware: Iceberg is a cvs (like Monticello or git or svn…): it is use to store 
code, not to organise your project. 
To organise your project you have Metacello.

>> 
>> Once the application is done, I assume I'll want to ship it in a minimal
>> Pharo image. Is there documentation or prior art on this?

this is what is hard :)
I imagine with the headless VMs we are about to finish it will be easier (to 
just initiate a window with your app, instead initiate a window with the full 
world as now). 
but we still require some work.

>> Finally, is there a way to run and capture keybindings globally? I have
>> one part of my application (a quick-entry window) which I want summoned
>> from a global (OS-wide) hotkey. Has this been done before? Or is it not
>> easy to break the fourth wall, so to speak, and register a global
>> keybinding from inside the VM?

there is a keybindings framework inside pharo, but since you have a lot of 
development tools, it becomes hard to use (again, something that can be solved 
in the near future, with same approach as before, but not yet). 
now, to get the keybindings of the system you will need to install that *in* 
the system. 

for mac, for example, you can doit using the ObjC bridge (which does not works 
in 64bit images... I’m working on a UFFI replacement, but… guess what? not yet 
:P)
and I guess using UFFI you can get that to work on windows and linux? I’m 
really don’t know.

all you ask is *doable*… but not all your requirements are *easily* doable 
right now, which is want I want to fix :)

Esteban

>> 
>> Thanks!
>> 
>> -Steven
>> 
>> 
>> 
> 




Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Vitor Medina Cruz
*in java, because this is a pain to do it each time.*

*for us, maybe for the same… even if is a lot easier.*

Yeah, and it is boring to implement that every time, especially because it
is tricky to get it right sometimes. Another interesting thing I use in
Java to test my equals and hash implementation is the
http://jqno.nl/equalsverifier/

I just use RBGenerateEqualHashRefactoring for this:

Oh! That is nice, I will give a deeper look at it, I think this may do the
job. Thanks!



On Mon, Oct 2, 2017 at 10:09 AM, Stephane Ducasse 
wrote:

> Publish it in a package and let us have a look.
>
>
> On Mon, Oct 2, 2017 at 9:53 AM, Jose San Leandro  > wrote:
>
>> Hi,
>>
>> I wrote a generator for that. Probably it makes no sense to publish it as
>> a standalone project. I tend to think code generation fits better in other
>> languages.
>> I can paste the relevant code here if needed.
>>
>> 2017-10-02 9:44 GMT+02:00 Esteban Lorenzano :
>>
>>> in java, because this is a pain to do it each time.
>>> for us, maybe for the same… even if is a lot easier.
>>>
>>> Esteban
>>>
>>>
>>> On 2 Oct 2017, at 09:42, Stephane Ducasse 
>>> wrote:
>>>
>>> Not that I know.
>>> Because it can be a little project.
>>> Now what is the key point to encapsulate this computation?
>>>
>>> On Mon, Oct 2, 2017 at 12:51 AM, Vitor Medina Cruz >> > wrote:
>>>
 Hello!

 Is there, in Pharo, builders for equals (=) and hash messages similar
 to: https://commons.apache.org/proper/commons-lang/javadocs/api-
 release/org/apache/commons/lang3/builder/EqualsBuilder.html

 and

 https://commons.apache.org/proper/commons-lang/javadocs/api-
 release/org/apache/commons/lang3/builder/HashCodeBuilder.html?

 Thanks in advance,
 Vitor


 
  Livre
 de vírus. www.avg.com
 .


>>>
>>>
>>>
>>
>


[Pharo-users] [Demo] Creating Bloc widgets: A Color Panel

2017-10-02 Thread Stephan Eggermont

Bloc is ready for your experiments. Here is my second one.
Please let me know what and how to improve.

Bloc allows for the easy creation of beautiful widgets.
Here is a simple color panel that allows custom colors to be added 
(using the current Morphic color selector dialog) and allows colors to 
be applied using drag-and-drop.


https://vimeo.com/236419682

Stephan
BlElement subclass: #DrColorPanel
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'BlocDragPanels'!

!DrColorPanel methodsFor: 'initialization' stamp: 'StephanEggermont 10/2/2017 
15:04'!
initialize
super initialize.
self background: Color white;
size: 100@100;
border: (BlBorder paint: Color gray width: 1);
layout: BlFlowLayout new horizontal;
constraintsDo: [ :c |
c horizontal exact: 100.
c vertical fitContent ];
padding: (BlInsets top: 20 right: 2 bottom: 2 left: 2 ).
self addEventHandler: DrColorPanelListener new! !

"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

DrColorPanel class
instanceVariableNames: ''!

!DrColorPanel class methodsFor: 'examples' stamp: 'StephanEggermont 10/2/2017 
14:54'!
chooseAColor
| dialog |
dialog := ColorSelectorDialogWindow new
title: 'Choose color'.
World openModal: dialog.
dialog cancelled
ifFalse: [^dialog selectedColor]
ifTrue: [ ^nil ]
! !

!DrColorPanel class methodsFor: 'examples' stamp: 'StephanEggermont 10/2/2017 
16:03'!
panelWithSomeColors

| space panel |
space := BlSpace new.
space extent: 500@500.
panel := self new.
panel addChild: (DrPlusWell new
addEventHandlerOn: BlClickEvent do: [ :evt |
self chooseAColor ifNotNil: [ :color | 
panel addChild: (DrColorWell colored: color )].
evt consumed: true];
yourself)   .
#(yellow paleGreen paleBlue green) do: [ :colorName | |well|
well := DrColorWell colored: (Color perform: colorName).
panel addChild: well].
space root addChild: panel.
space show
! !


BlElementEventListener subclass: #DrColorPanelListener
instanceVariableNames: 'dragOffset'
classVariableNames: ''
poolDictionaries: ''
category: 'BlocDragPanels'!

!DrColorPanelListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 14:30'!
dragEvent: anEvent
anEvent currentTarget position: anEvent position - dragOffset.
anEvent consumed: true.! !

!DrColorPanelListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 14:28'!
dragStartEvent: anEvent
dragOffset := (anEvent position - anEvent currentTarget position).
anEvent consumed: true.! !

!DrColorPanelListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 14:30'!
dragEndEvent: anEvent
dragOffset := nil.
anEvent consumed: true.! !


BlElementEventListener subclass: #DrColorWellListener
instanceVariableNames: 'dragOffset'
classVariableNames: ''
poolDictionaries: ''
category: 'BlocDragPanels'!

!DrColorWellListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 14:58'!
dragEvent: anEvent
anEvent consumed: true.
anEvent currentTarget position: anEvent position - dragOffset
! !

!DrColorWellListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 15:43'!
dragStartEvent: anEvent
|colorPanel colorWell colorWellCopy index|
dragOffset := (anEvent position - anEvent currentTarget position - 
anEvent currentTarget parent position).
colorWell := anEvent currentTarget.
colorPanel := colorWell parent.
index := colorPanel childIndexOf: colorWell.
colorPanel removeChild: colorWell.
colorPanel space root addChild: colorWell.
colorWellCopy := DrColorWell colored: colorWell color.
colorPanel addChild: colorWellCopy at: index.
anEvent consumed: true.! !

!DrColorWellListener methodsFor: 'dnd handlers' stamp: 'StephanEggermont 
10/2/2017 15:22'!
dragEndEvent: anEvent
|me space target|
dragOffset := nil.
me := anEvent currentTarget.
space := me space.
space root removeChild: me. 
target := space root findMouseEventTargetAt: anEvent position. 
target ifNotNil: [ (target respondsTo: #background:) ifTrue: [ 
target background: me color ]  ].
anEvent consumed: true.! !


!DrColorWellListener methodsFor: 'mouse handlers' stamp: 'StephanEggermont 
10/2/2017 14:40'!
mouseEnterEvent: anEvent
anEvent currentTarget showBorder! !

!DrColorWellListener methodsFor: 'mouse handlers' s

Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Sean P. DeNigris
Denis Kudriashov wrote
> I just use RBGenerateEqualHashRefactoring for this:
> 
> r := RBGenerateEqualHashRefactoring className: MyClass variables: #(vars
> which should be used in equal and hash).
> r execute

That is so cool! I shudder to think how many times I implemented just
that by hand!!

Two questions/comments about the generated code:
1. #=
...
self class = anObject class "should compare #species instead?"
ifFalse: [ ^ false ].
...
Typically, I've seen #species instead of #class in the guard statement.
Should we change it to that?


2. #hash 
^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
Is this implementation always safe? It's what I usually hand roll based on
what I've seen, but Andres Valloud wrote a whole (large) book on hashing, so
I've always wondered if I was missing something…



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Sean P. DeNigris
Denis Kudriashov wrote
> I just use RBGenerateEqualHashRefactoring for this:

I added your answer to the Pharo wiki. Is this available through the UI? If
not, maybe it should be!



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Denis Kudriashov
Hi Sean.

I did not know about quality of generated hash function.
But if I remember correctly the same code is generated for java using
Eclipse or Idea. So it should be good enough.

2017-10-02 16:37 GMT+02:00 Sean P. DeNigris :

> Denis Kudriashov wrote
> > I just use RBGenerateEqualHashRefactoring for this:
> >
> > r := RBGenerateEqualHashRefactoring className: MyClass variables: #(vars
> > which should be used in equal and hash).
> > r execute
>
> That is so cool! I shudder to think how many times I implemented just
> that by hand!!
>
> Two questions/comments about the generated code:
> 1. #=
> ...
> self class = anObject class "should compare #species instead?"
> ifFalse: [ ^ false ].
> ...
> Typically, I've seen #species instead of #class in the guard statement.
> Should we change it to that?
>
>
> 2. #hash
> ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
> Is this implementation always safe? It's what I usually hand roll based on
> what I've seen, but Andres Valloud wrote a whole (large) book on hashing,
> so
> I've always wondered if I was missing something…
>
>
>
> -
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Denis Kudriashov
2017-10-02 16:41 GMT+02:00 Sean P. DeNigris :

> Denis Kudriashov wrote
> > I just use RBGenerateEqualHashRefactoring for this:
>
> I added your answer to the Pharo wiki. Is this available through the UI? If
> not, maybe it should be!
>
>
As I know it not exists


>
>
> -
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Vitor Medina Cruz
I think it should have an option to generate with species (which I think
should be the default). Also It would be nice if it could implement the
solution for pitfall #4 described in
http://www.artima.com/lejava/articles/equality.html

On Mon, Oct 2, 2017 at 11:45 AM, Denis Kudriashov 
wrote:

> 2017-10-02 16:41 GMT+02:00 Sean P. DeNigris :
>
>> Denis Kudriashov wrote
>> > I just use RBGenerateEqualHashRefactoring for this:
>>
>> I added your answer to the Pharo wiki. Is this available through the UI?
>> If
>> not, maybe it should be!
>>
>>
> As I know it not exists
>
>
>>
>>
>> -
>> Cheers,
>> Sean
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>
>>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Denis Kudriashov
2017-10-02 16:37 GMT+02:00 Sean P. DeNigris :

>
> Two questions/comments about the generated code:
> 1. #=
> ...
> self class = anObject class "should compare #species instead?"
> ifFalse: [ ^ false ].
> ...
> Typically, I've seen #species instead of #class in the guard statement.
> Should we change it to that?
>

I doubt that it is important for domain classes. Because I never saw the
user of #species which is not a kind of Collection. And for collections
this refactoring is not valid anyway.


>
>
> 2. #hash
> ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
> Is this implementation always safe? It's what I usually hand roll based on
> what I've seen, but Andres Valloud wrote a whole (large) book on hashing,
> so
> I've always wondered if I was missing something…
>
>
>
> -
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>
>


Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread Sean P. DeNigris
Steven Baker wrote
> using Spec

It really depends on your aim. The *idea* of Spec was to write once and
deploy "everywhere", but as yet there is only a Morphic backend that I know
of, and you would be restricting yourself to standard desktop widgets. So,
if that is not a problem, Spec might be an easy route to a working
application. If you want to create a more imaginative UI, you'll probably
have to hand roll on each target (e.g. Morphic for desktop, PharoJS or Amber
for web).


Steven Baker wrote
> a GTD application in the spirit of nirvanahq, omnifocus, things, nozbe

Cool! I'll be your first customer ;)


Steven Baker wrote
> Are people using one-per-project, or one-per-computer?

Yes and yes. I prefer one per project for development projects I'm working
on and one per computer for personal images (a la my own personal Dynabook).
The former is also fine for personal tools, but the latter can get hairy
e.g. if you're digging into the system and accidentally break an image with
all your personal data in it (assuming I'm not the only one who is a little
sloppy with persistence in personal contexts ha ha)[1].


Steven Baker wrote
> Anyone using
> PharoLauncher these days? Other tools?

Yes! I now use it exclusively and love it. There are minor hiccups here and
there as Pharo rapidly evolves in parallel, but Christophe and team are
really responsive and helpful. I also made a project called SmallWorld [2]
which is like my own personal SqueakMap/Project-catalog that keeps track of
projects I care about. What makes it a little different that e.g. Pharo
Catalog is that it lets me specify how *I* want to load a project (e.g.
which repo/branch), which may not be the canonical way, especially if I am
typical in a developer role and not a user. I built a tiny extension which
hooks this into Launcher, providing a button to automatically load one of
these projects into an image of my choice. Beware I am the only user (that I
know of), so the UI is very primitive (a combination of GT and Magritte),
but I'm happy to help anyone along if the idea seems helpful.

 


Steven Baker wrote
> I'm assuming that the current state of the art is Iceberg; where can I
> find a "This is how you should organize your project using Iceberg"
> document, blog, book, tutorial, video, or otherwise.

As Esteban mentioned, Iceberg is a vcs, so if you mean how to organize
*code*, Pharo handles this automatically under the hood. The only thing you
have to decide is the root folder. Typically people choose a top level
folder inside the git repo for this, named 'source' (or 'src', 'repository',
or 'mc'), so that you can have other top level categories like wiki,
scripts, etc. If you mean project in a wider context, as in including
documentation, this seems to be an open field with many different
possibilities.

I can't help on the other parts of your question, but am eager to hear any
answers!

[1] Although the beauty of Smalltalk is that there's (almost) always a way
forward (see
http://forum.world.st/Fwd-Oops-I-put-a-halt-in-a-startup-method-tp3800729.html)
[2] https://github.com/seandenigris/Small-World



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Vitor Medina Cruz
I am sorry, not species, but #isKindOf istead of #= to compare classes.

On Mon, Oct 2, 2017 at 11:57 AM, Denis Kudriashov 
wrote:

>
> 2017-10-02 16:37 GMT+02:00 Sean P. DeNigris :
>
>>
>> Two questions/comments about the generated code:
>> 1. #=
>> ...
>> self class = anObject class "should compare #species instead?"
>> ifFalse: [ ^ false ].
>> ...
>> Typically, I've seen #species instead of #class in the guard statement.
>> Should we change it to that?
>>
>
> I doubt that it is important for domain classes. Because I never saw the
> user of #species which is not a kind of Collection. And for collections
> this refactoring is not valid anyway.
>
>
>>
>>
>> 2. #hash
>> ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
>> Is this implementation always safe? It's what I usually hand roll based on
>> what I've seen, but Andres Valloud wrote a whole (large) book on hashing,
>> so
>> I've always wondered if I was missing something…
>>
>>
>>
>> -
>> Cheers,
>> Sean
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>
>>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Denis Kudriashov
2017-10-02 17:13 GMT+02:00 Vitor Medina Cruz :

> I am sorry, not species, but #isKindOf istead of #= to compare classes.
>

It is bad idea. #= should be transitive. How you will generate it with
isKindOf: logic? You need to know common parent.

Also I not remember cases where I was needed two instances of different
classes to be equal.
And I can imaging the problems which it will lead to.


>
> On Mon, Oct 2, 2017 at 11:57 AM, Denis Kudriashov 
> wrote:
>
>>
>> 2017-10-02 16:37 GMT+02:00 Sean P. DeNigris :
>>
>>>
>>> Two questions/comments about the generated code:
>>> 1. #=
>>> ...
>>> self class = anObject class "should compare #species instead?"
>>> ifFalse: [ ^ false ].
>>> ...
>>> Typically, I've seen #species instead of #class in the guard statement.
>>> Should we change it to that?
>>>
>>
>> I doubt that it is important for domain classes. Because I never saw the
>> user of #species which is not a kind of Collection. And for collections
>> this refactoring is not valid anyway.
>>
>>
>>>
>>>
>>> 2. #hash
>>> ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
>>> Is this implementation always safe? It's what I usually hand roll based
>>> on
>>> what I've seen, but Andres Valloud wrote a whole (large) book on
>>> hashing, so
>>> I've always wondered if I was missing something…
>>>
>>>
>>>
>>> -
>>> Cheers,
>>> Sean
>>> --
>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>
>>>
>>
>


Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Prof. Andrew P. Black

> On 2 Oct 2017, at 16:37 , Sean P. DeNigris  wrote:
> 
> 2. #hash 
>   ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
> Is this implementation always safe? It's what I usually hand roll based on
> what I've seen, but Andres Valloud wrote a whole (large) book on hashing, so
> I've always wondered if I was missing something…

If you read Andres book (which is hard, because he won’t make it available 
online), you will learn that it’s better to
take the order of the instance variables into account.  #bitXor: is 
commutative, so it of course ignores order.

In other words, if you have a Point with x and y fields, then 3@9 and 9@3 will 
have the same hash.

For this reason, it’s better to multiply successive fields by a constant (e.g. 
shifting left by 2) before XORing them into the hash.  But then, for objects 
with lots of fields, the later ones are lot completely, because they are 
multiplied by a number so large that they are out of the range of the hash.

One can avoid this by using a circular shift to implement the multiply.

All of this was, I thought, implemented in a #hashCombine: method, but I can’t 
find it in my image.  Maybe some other Smalltalk ...





Re: [Pharo-users] Organisation and workflows

2017-10-02 Thread Steven R. Baker


On 02/10/17 15:28, Esteban Lorenzano wrote:
>> On 2 Oct 2017, at 15:12, Stephane Ducasse  wrote:
>>
>> I discussed with esteban sooner this summer and we really want to have a 
>> process
>> where people can deploy applications and not just code.
>> Now we are not yet there.
>>
>> Stef
>>
>> On Sun, Oct 1, 2017 at 9:03 PM, Steven R. Baker  
>> wrote:
>>> Heya folks,
>>>
>>> [Please jump on any of my statements that sound crazy: use of Spec,
>>> other assumptions, etc.]
>>>
>>> I'm starting an application in Pharo, using Spec. Basically, a GTD
>>> application in the spirit of nirvanahq, omnifocus, things, nozbe. The
>>> code is working just fine, but I'm left with a lot of questions about
>>> how to organize it.
>>>
>>> First, is there some trick to managing images? Are people using
>>> one-per-project, or one-per-computer? All of the above? Anyone using
>>> PharoLauncher these days? Other tools?
> pharo users tend to prefer one-per-project approach :)
> most people uses (or should use) pharo launcher. In fact, we want to make it 
> the default download, is just that to get it right is complicated :)
>
> but… pharo launcher is to developers. A final app would require other stuff 
> to be accomplished (like closing development tools, etc.).
>
>>> I'm assuming that the current state of the art is Iceberg; where can I
>>> find a "This is how you should organize your project using Iceberg"
>>> document, blog, book, tutorial, video, or otherwise.
> beware: Iceberg is a cvs (like Monticello or git or svn…): it is use to store 
> code, not to organise your project. 
> To organise your project you have Metacello.
>
>>> Once the application is done, I assume I'll want to ship it in a minimal
>>> Pharo image. Is there documentation or prior art on this?
> this is what is hard :)
> I imagine with the headless VMs we are about to finish it will be easier (to 
> just initiate a window with your app, instead initiate a window with the full 
> world as now). 
> but we still require some work.
>
>>> Finally, is there a way to run and capture keybindings globally? I have
>>> one part of my application (a quick-entry window) which I want summoned
>>> from a global (OS-wide) hotkey. Has this been done before? Or is it not
>>> easy to break the fourth wall, so to speak, and register a global
>>> keybinding from inside the VM?
> there is a keybindings framework inside pharo, but since you have a lot of 
> development tools, it becomes hard to use (again, something that can be 
> solved in the near future, with same approach as before, but not yet). 
> now, to get the keybindings of the system you will need to install that *in* 
> the system. 
>
> for mac, for example, you can doit using the ObjC bridge (which does not 
> works in 64bit images... I’m working on a UFFI replacement, but… guess what? 
> not yet :P)
> and I guess using UFFI you can get that to work on windows and linux? I’m 
> really don’t know.
>
> all you ask is *doable*… but not all your requirements are *easily* doable 
> right now, which is want I want to fix :)
I don't mind contributing code and time on these things, as they present
real barriers to me. I'm looking for ways to get involved in the
community again. :)

-Steven

> Esteban
>
>>> Thanks!
>>>
>>> -Steven
>>>
>>>
>>>
>




Re: [Pharo-users] Roasssal not working on Windows with Pharo 6.1

2017-10-02 Thread kmo
The problem is fixed now. I loaded up pharo at lunchtime and all the roassal
images worked perfectly. No problems at all. But I had done nothing. No
changes at all. The only thing I can think of is that I may have rebooted
since the last time I ran pharo. But I'm not sure. So it's all still a
mystery but at least everything is working now.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Equals and HashCode Builder

2017-10-02 Thread Vitor Medina Cruz
Denis,

That can be done with an canEqual implementation as described by
http://www.artima.com/lejava/articles/equality.html.

For this reason, it’s better to multiply successive fields by a constant
> (e.g. shifting left by 2) before XORing them into the hash.  But then, for
> objects with lots of fields, the later ones are lot completely, because
> they are multiplied by a number so large that they are out of the range of
> the hash.
>

I think this exactly what HasCodeBuidler does, however I saw no special
treatment for hashes made of many fields



On Mon, Oct 2, 2017 at 12:38 PM, Prof. Andrew P. Black 
wrote:

>
> > On 2 Oct 2017, at 16:37 , Sean P. DeNigris 
> wrote:
> >
> > 2. #hash
> >   ^ var1 hash bitXor: (var2 hash bitXor: var3 hash)
> > Is this implementation always safe? It's what I usually hand roll based
> on
> > what I've seen, but Andres Valloud wrote a whole (large) book on
> hashing, so
> > I've always wondered if I was missing something…
>
> If you read Andres book (which is hard, because he won’t make it available
> online), you will learn that it’s better to
> take the order of the instance variables into account.  #bitXor: is
> commutative, so it of course ignores order.
>
> In other words, if you have a Point with x and y fields, then 3@9 and 9@3
> will have the same hash.
>
> For this reason, it’s better to multiply successive fields by a constant
> (e.g. shifting left by 2) before XORing them into the hash.  But then, for
> objects with lots of fields, the later ones are lot completely, because
> they are multiplied by a number so large that they are out of the range of
> the hash.
>
> One can avoid this by using a circular shift to implement the multiply.
>
> All of this was, I thought, implemented in a #hashCombine: method, but I
> can’t find it in my image.  Maybe some other Smalltalk ...
>
>
>
>


Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Jimmie Houchin

Back on topic.

To my understanding, if I should port anything GPL licensed that I 
needed from some language to a C library and licensed it GPL. Then I 
called my new GPL C library via UFFI. I should have no problems at all. 
Is that a correct understanding by all?


Does this look like a good approach for most anyone in the Pharo 
community if they desire to port and use GPL software?


Thanks.

Jimmie


On 09/15/2017 03:49 PM, Jimmie Houchin wrote:

Hello,

Pharo 7 to my understanding fundamentally changes Pharo. It is my 
understanding that Pharo 7 starts with a core Pharo kernel and like 
many languages out there, imports or adds code from a variety of 
external sources to the image being built.


With that understanding, I am curious if that would allow for 
inclusion of a specific library/module to be licensed as GPL? And it 
not affect the other code in the composed image?


I am a big believer in the MIT/BSD license and not a big fan of the 
GPL. However, there is software out there that I have avoided looking 
at the source code or attempting to port it to Pharo because it is 
GPL. I would sincerely love if I could now port such a library and 
license it under the GPL as required, and it not affect any other code 
outside of that specific library.


I am not a lawyer. Nor do I know any lawyers. Is is possible for 
someone to get a reasonably definitive answer on this question?


I am sure I am not the only one who has had this desire. I am also 
sure that I am not the only one who will have this question in the 
future. So it would be nice to have a proper legal response that could 
possibly be explicitly stated somewhere on the website or on an FAQ or 
something.


Regardless of the answer, yes or no. It does need to be a settled 
issue for Pharo. That way someone could know if GPL/LGPL or whatever 
software could be in the catalog.


Just wanted to put that out there to the community. I look forward to 
the answer, should one be or become available.


Thanks.


Jimmie







[Pharo-users] Iceberg and proxy

2017-10-02 Thread Vitor Medina Cruz
Hello!

Iceberg don’t work behind a proxy? I have made proper proxy configuration,
if I use Zinc, for example, the proxy information is used, but that don’t
seems to be the case for Iceberg.

Regards,

Vitor


Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Sven Van Caekenberghe


> On 2 Oct 2017, at 19:45, Jimmie Houchin  wrote:
> 
> Back on topic.
> 
> To my understanding, if I should port anything GPL licensed that I needed 
> from some language to a C library and licensed it GPL. Then I called my new 
> GPL C library via UFFI. I should have no problems at all. Is that a correct 
> understanding by all?
> 
> Does this look like a good approach for most anyone in the Pharo community if 
> they desire to port and use GPL software?

https://en.wikipedia.org/wiki/GNU_General_Public_License#Libraries

There are different opinions, but I seem to clearly remember the GNU ReadLine 
case: even though it is a library that you can link to, using it is only 
allowed by other GPL programs.

> Thanks.
> 
> Jimmie
> 
> 
> On 09/15/2017 03:49 PM, Jimmie Houchin wrote:
>> Hello,
>> 
>> Pharo 7 to my understanding fundamentally changes Pharo. It is my 
>> understanding that Pharo 7 starts with a core Pharo kernel and like many 
>> languages out there, imports or adds code from a variety of external sources 
>> to the image being built.
>> 
>> With that understanding, I am curious if that would allow for inclusion of a 
>> specific library/module to be licensed as GPL? And it not affect the other 
>> code in the composed image?
>> 
>> I am a big believer in the MIT/BSD license and not a big fan of the GPL. 
>> However, there is software out there that I have avoided looking at the 
>> source code or attempting to port it to Pharo because it is GPL. I would 
>> sincerely love if I could now port such a library and license it under the 
>> GPL as required, and it not affect any other code outside of that specific 
>> library.
>> 
>> I am not a lawyer. Nor do I know any lawyers. Is is possible for someone to 
>> get a reasonably definitive answer on this question?
>> 
>> I am sure I am not the only one who has had this desire. I am also sure that 
>> I am not the only one who will have this question in the future. So it would 
>> be nice to have a proper legal response that could possibly be explicitly 
>> stated somewhere on the website or on an FAQ or something.
>> 
>> Regardless of the answer, yes or no. It does need to be a settled issue for 
>> Pharo. That way someone could know if GPL/LGPL or whatever software could be 
>> in the catalog.
>> 
>> Just wanted to put that out there to the community. I look forward to the 
>> answer, should one be or become available.
>> 
>> Thanks.
>> 
>> 
>> Jimmie
>> 
>> 
> 
> 




Re: [Pharo-users] Iceberg and proxy

2017-10-02 Thread Esteban Lorenzano
hi,

if you have the ssh port restricted, you need to use one that is not…but then, 
is not clear how it will work on server side.  
can you try if you can do command line git push in your project?

Esteban

> On 2 Oct 2017, at 19:57, Vitor Medina Cruz  wrote:
> 
> Hello!
> Iceberg don’t work behind a proxy? I have made proper proxy configuration, if 
> I use Zinc, for example, the proxy information is used, but that don’t seems 
> to be the case for Iceberg.
> 
> Regards,
> 
> Vito
> 
> 



Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Jimmie Houchin
Thanks for the reply and the link. Reasonably informative, but 
unfortunately not as definitive as one would like. What a mess. Makes me 
really appreciate the permissive licenses. No headaches. :)


I was just curious if that was an option. Fortunately I believe I have 
alternatives to what I was looking to do. So I can avoid it all together.


Someone posted a view by the Racket developers on their understanding of 
their choice of the LGPL for Racket. It seems that they are switching to 
MIT/Apache for Racket 7, the next version. They had all contributors 
sign agreements to the relicensing.


https://github.com/racket/racket/issues/1570

https://groups.google.com/forum/#!msg/racket-dev/FiBLEZ-fmn8/8uLTbNamEwAJ

Again thanks for the lesson and help.


Jimmie


On 10/02/2017 01:47 PM, Sven Van Caekenberghe wrote:



On 2 Oct 2017, at 19:45, Jimmie Houchin  wrote:

Back on topic.

To my understanding, if I should port anything GPL licensed that I needed from 
some language to a C library and licensed it GPL. Then I called my new GPL C 
library via UFFI. I should have no problems at all. Is that a correct 
understanding by all?

Does this look like a good approach for most anyone in the Pharo community if 
they desire to port and use GPL software?

https://en.wikipedia.org/wiki/GNU_General_Public_License#Libraries

There are different opinions, but I seem to clearly remember the GNU ReadLine 
case: even though it is a library that you can link to, using it is only 
allowed by other GPL programs.


Thanks.

Jimmie


On 09/15/2017 03:49 PM, Jimmie Houchin wrote:

Hello,

Pharo 7 to my understanding fundamentally changes Pharo. It is my understanding 
that Pharo 7 starts with a core Pharo kernel and like many languages out there, 
imports or adds code from a variety of external sources to the image being 
built.

With that understanding, I am curious if that would allow for inclusion of a 
specific library/module to be licensed as GPL? And it not affect the other code 
in the composed image?

I am a big believer in the MIT/BSD license and not a big fan of the GPL. 
However, there is software out there that I have avoided looking at the source 
code or attempting to port it to Pharo because it is GPL. I would sincerely 
love if I could now port such a library and license it under the GPL as 
required, and it not affect any other code outside of that specific library.

I am not a lawyer. Nor do I know any lawyers. Is is possible for someone to get 
a reasonably definitive answer on this question?

I am sure I am not the only one who has had this desire. I am also sure that I 
am not the only one who will have this question in the future. So it would be 
nice to have a proper legal response that could possibly be explicitly stated 
somewhere on the website or on an FAQ or something.

Regardless of the answer, yes or no. It does need to be a settled issue for 
Pharo. That way someone could know if GPL/LGPL or whatever software could be in 
the catalog.

Just wanted to put that out there to the community. I look forward to the 
answer, should one be or become available.

Thanks.


Jimmie











Re: [Pharo-users] Iceberg and proxy

2017-10-02 Thread Vitor Medina Cruz
git push via command line works fine. When I try to pull, for example, from
Iceberg it says "a connection with the server cannot be estabilished". I am
using a cntlm bypass proxy with loggin on, and Iceberg is using it, but it
fails while normal Zinc usage is ok.

I will try to understand better what is happening

On Mon, Oct 2, 2017 at 3:59 PM, Esteban Lorenzano 
wrote:

> hi,
>
> if you have the ssh port restricted, you need to use one that is not…but
> then, is not clear how it will work on server side.
> can you try if you can do command line git push in your project?
>
> Esteban
>
> On 2 Oct 2017, at 19:57, Vitor Medina Cruz  wrote:
>
> Hello!
>
> Iceberg don’t work behind a proxy? I have made proper proxy configuration,
> if I use Zinc, for example, the proxy information is used, but that don’t
> seems to be the case for Iceberg.
>
> Regards,
>
> Vito
>
>
>


Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Peter Uhnák
On Mon, Oct 2, 2017 at 7:45 PM, Jimmie Houchin  wrote:

> Back on topic.
>
> To my understanding, if I should port anything GPL licensed that I needed
> from some language to a C library and licensed it GPL. Then I called my new
> GPL C library via UFFI. I should have no problems at all. Is that a correct
> understanding by all?
>

Have you read the GPL's FAQ?
There's a whole section dedicated to combination of works (Combining work
with code released under the GPL).
https://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.en.html#TOCMereAggregation
.

But of course this is written by FSF, and for them GPL is not just a legal
matter, but an ethical one (and from their perspective GPL being a virus
infecting other code is a good comparison, because they really want to take
over).

Peter


Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Jimmie Houchin
No I have not. I don't tend to go their direction very often. I am an 
advocate of open source software but am not a fan of FSF's ethics or 
political opinions. And as you say, that want all software to be GPL. 
Also, I do prefer to hear third party opinions especially those who have 
potentially court tested ones. That is ultimately where we find the true 
definition and understanding.


Thanks.

Jimmie



On 10/02/2017 02:48 PM, Peter Uhnák wrote:


But of course this is written by FSF, and for them GPL is not just a 
legal matter, but an ethical one (and from their perspective GPL being 
a virus infecting other code is a good comparison, because they really 
want to take over).





[Pharo-users] Hiding the cursor in pharo and/or bloc

2017-10-02 Thread Steven Costiou
Hi, 

i've been playing with bloc, and i am trying to completely remove the
cursor (i.e. always display a blank cursor). I can't find how. Removing
the Pharo cursor would also be ok, but i can't either. I can only show a
blank cursor for a few moments but after moving the mouse too much it
becomes normal again. 

I have tried: 

Cursor currentCursor: Cursor blank (seems not to work ?) 

Cursor blank beCursor (works for a few moments only...) 

Any way to do that permanently ? 

Steven. 

Re: [Pharo-users] Hiding the cursor in pharo and/or bloc

2017-10-02 Thread Aliaksei Syrel
Hi Steven,

What you see is not Bloc's cursor (there is no cursor in bloc)
It is a Morphic cursor :)

Cheers,
Alex

On 2 October 2017 at 22:19, Steven Costiou  wrote:

> Hi,
>
> i've been playing with bloc, and i am trying to completely remove the
> cursor (i.e. always display a blank cursor). I can't find how. Removing the
> Pharo cursor would also be ok, but i can't either. I can only show a blank
> cursor for a few moments but after moving the mouse too much it becomes
> normal again.
>
> I have tried:
>
> Cursor currentCursor: Cursor blank (seems not to work ?)
>
> Cursor blank beCursor (works for a few moments only...)
>
> Any way to do that permanently ?
>
>
> Steven.
>


Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Sven Van Caekenberghe
Jimmie,

Since you started this thread, I have to ask. 

You say you are an advocate of open source software. OK. But are you just on 
the consumer side or also on the producer side ? In other words, have you 
written/published/supported any non-trivial open source software ?

Are you an academic or are you involved in commercial software (i.e. have you 
written closed software that you sell or otherwise make money off) ?

Sven

> On 2 Oct 2017, at 22:06, Jimmie Houchin  wrote:
> 
> No I have not. I don't tend to go their direction very often. I am an 
> advocate of open source software but am not a fan of FSF's ethics or 
> political opinions. And as you say, that want all software to be GPL. Also, I 
> do prefer to hear third party opinions especially those who have potentially 
> court tested ones. That is ultimately where we find the true definition and 
> understanding.
> 
> Thanks.
> 
> Jimmie
> 
> 
> 
> On 10/02/2017 02:48 PM, Peter Uhnák wrote:
>> 
>> But of course this is written by FSF, and for them GPL is not just a legal 
>> matter, but an ethical one (and from their perspective GPL being a virus 
>> infecting other code is a good comparison, because they really want to take 
>> over).
> 
> 




Re: [Pharo-users] Testing a Unicode Character's Category

2017-10-02 Thread Richard Sargent
Andrew, I've tried to comment on the changes. Overall, it was essentially
what I was envisioning. My comments on a few methods are mostly specific
quibbles about the implementation. One reflects that I think the original
implementation contains an error.


Thanks for doing this!


On Sun, Oct 1, 2017 at 7:10 AM, Prof. Andrew P. Black 
wrote:

> Richard (and others):
>
> Marcus and I committed methods to implement these category tests on
> Friday.  If any of you have time to review the code, it would be
> appreciated.  The commit can be found here:
>
>  https://github.com/pharo-project/pharo/pull/326/commits/
> 933b1dcba05b837ab292e19aab413f67b3f9eec5
>
> I noticed that there is one test failing — which seems to be entirely
> unrelated  The test passes in my image.
>
> Andrew
>
>
>


Re: [Pharo-users] How to make pharo find sqlite?

2017-10-02 Thread Pierce Ng
On Sat, Sep 30, 2017 at 10:16:47PM +0200, Herby Vojčík wrote:
> case the library name used is the plain 'sqlite3', I don't know - am
> I supposed to make a symlink on the same directory as the image? Is
> it the thing that is normally needed / done routinely?

Below is how I've been doing it since early days of Pharo. Desktop OS = Linux
Mint. Current server OS = Ubuntu 16.04.

Firstly, I don't use the distro-provided libsqlite3.so. My self-built copy
includes features like FTS, JSON, etc.

I place libsqlite3.so in the VM directory, say /pkg/pharo5vm/. I have a script
/pkg/pharo5vm/gopharo:

  #!/bin/sh
  PHAROVMPATH=$(dirname `readlink -f "$0"`)
  LD_LIBRARY_PATH="$PHAROVMPATH" exec "$PHAROVMPATH/pharo" $@ &

On desktop, I start Pharo using gopharo. On server, I use daemontools. Say my
application directory on the server is /pkg/app1. Here's the daemontools run
file /pkg/app1/run:

  #!/bin/sh
  /usr/bin/setuidgid app1 \
  /pkg/pharo5vm/gopharo -vm-display-null -vm-sound-null smallcms1.image 
--no-quit

The other files in /pkg/app1 are PharoV*.sources and the application
image/changes files.

/pkg/pharo5vm contains the pharo executable, vm-*, and the *so* files/symlinks
that come with Pharo plus any others that I custom build myself such as
libsqlite3.so and libshacrypt.so.

HTH.

Pierce




Re: [Pharo-users] Pharo 7 license question

2017-10-02 Thread Jimmie Houchin

Good and valid questions.

Primarily consumer side. I am a longtime user of Linux, 20+ years. I 
prefer and advocate for open source software even when required to use 
Windows/Mac. So in general in personal life with friends, family, 
acquaintances if the subject is computers or software and the 
opportunity is reasonable I will advocate for open source software. Many 
times simply as an opportunity to educate people who may not know or be 
misinformed.


I am a business man, an employee of a company. My employer is purely a 
Windows shop. No development is a part of my day job.


All of my use of development software is personal projects. I have not 
released any software. Nothing has reached a point to release. I am 
however wanting to release a couple of projects this next year. One I 
hope to make money off of the use of and not the sale of. The other is 
personal, not business software. I hope to have both in a releasable 
state sometime in the next 6 months.


My problem has always been indecision on what I thought would be the 
best language for the project. I have always loved Pharo/Smalltalk. But 
sometimes I explore other languages. Sometimes because they already have 
libraries and bindings that would make the project easier. This is still 
a very reasonable possibility. I am not a professional. I only program 
in my spare time. Due to my job, sometimes that is very little.


Regardless, the software I hope to get to a releasable stage I do plan 
on releasing as MIT. It is the license I prefer and believe in. One need 
not program or release software in order to be an advocate.


I have no problem with someone writing closed source software. That is 
their personal or business choice. Myself, I have spent way to much 
money on software which was closed source and the company disappeared or 
changed directions. Then I am stuck with software that has no future.


Jimmie


On 10/02/2017 03:36 PM, Sven Van Caekenberghe wrote:

Jimmie,

Since you started this thread, I have to ask.

You say you are an advocate of open source software. OK. But are you just on 
the consumer side or also on the producer side ? In other words, have you 
written/published/supported any non-trivial open source software ?

Are you an academic or are you involved in commercial software (i.e. have you 
written closed software that you sell or otherwise make money off) ?

Sven


On 2 Oct 2017, at 22:06, Jimmie Houchin  wrote:

No I have not. I don't tend to go their direction very often. I am an advocate 
of open source software but am not a fan of FSF's ethics or political opinions. 
And as you say, that want all software to be GPL. Also, I do prefer to hear 
third party opinions especially those who have potentially court tested ones. 
That is ultimately where we find the true definition and understanding.

Thanks.

Jimmie



On 10/02/2017 02:48 PM, Peter Uhnák wrote:

But of course this is written by FSF, and for them GPL is not just a legal 
matter, but an ethical one (and from their perspective GPL being a virus 
infecting other code is a good comparison, because they really want to take 
over).