[Pharo-dev] [ANN] Pharo Sprint tomorrow, March 3

2017-03-01 Thread Marcus Denker
We will organize a Pharo sprint / Moose dojo March, 03, starting at

10:00am. (Local Time Paris).

Goals of this sprint:

• Clean issue tracker to prepare for release Pharo6
• remove Pharo6 tag from not-important cases
• Check Pharo5 Issues and pending back-ports

Remotely, you can join us on Slack. During the sprint, we will try to 
synchronize local and remote Pharo sprinters.

Known Local Sprint meetings:

Lille/France:
It will be at the Inria Lille, Building B, third floor (RMoD offices). 
As the building is not open to the public, please contact us before if you plan 
to come.

Santiago/Chile:

At DCC (https://www.dcc.uchile.cl), Universidad de Chile. Avenida 
Beauchef 851, edificio poniente, tercer piso, oficina 307, Santiago, Chile.
Chile sprint will be 9:00 local time and finish at a lunch time (13:00).


https://association.pharo.org/event-2451866




[Pharo-dev] Regarding the autocomplete project information

2017-03-01 Thread Siddharth Gupta
Hello, I am interested in taking up the autoComplete project. I played
around Pharo last year too. Could you tell me places to start from, with
respect to the autocomplete project.

Regards Siddharth Gupta,
Ph: 9871012292
Linkedin  | Github
 | Codechef
 | Twitter
 | Facebook



Re: [Pharo-dev] [ANN] Regex Tester Tool for Pharo

2017-03-01 Thread Max Leske
Awesome! Thanks!


> On 1 Mar 2017, at 21:32, Torsten Bergmann  wrote:
> 
> Hi,
> 
> I wrote a little tool to test regular expressions and verify that
> given samples match it. It also helps to divide an expression into
> subexpressions to retrieve parts of a matched string.
> 
> Screenshot is attached. Code, load instructions and full tutorial 
> on how to use it is on https://github.com/astares/Pharo-Regex-Tools
> 
> Hope it is useful for others too. Have fun!
> 
> Bye
> T.




Re: [Pharo-dev] [ANN] Regex Tester Tool for Pharo

2017-03-01 Thread stepharong

Torsten

Olivier in our team that is perl freaks from time to time, told me that  
this is

sad that Pharo regexp are not compatible with the "standard" = rePlugin.

And I think that his remark makes sense. I was wondering if we should not  
ressurect
the RePlugin to make sure that users can use perlish regexp and do not  
feel that our world is strange.


Do you have experience with re in the past?
What do you think about this proposal?

Stef


Hi,

I wrote a little tool to test regular expressions and verify that
given samples match it. It also helps to divide an expression into
subexpressions to retrieve parts of a matched string.

Screenshot is attached. Code, load instructions and full tutorial
on how to use it is on https://github.com/astares/Pharo-Regex-Tools

Hope it is useful for others too. Have fun!

Bye
T.



--
Using Opera's mail client: http://www.opera.com/mail/



Re: [Pharo-dev] [ANN] XML Metadata Interchange (XMI) for Pharo

2017-03-01 Thread stepharong

Hi torsten

do you know the work of peter to generate classes out of XMI and populate  
models?

Because it complements your approach.

stef


On Wed, 01 Mar 2017 22:26:05 +0100, Torsten Bergmann   
wrote:



Hi,
if you work with UML, modeling tools or model data exchange often you  
might know XMI -

the XML Metadata Interchange format.
I wrote a little package that makes it easier to work and browse data  
based on this

format within Pharo.
For instance you can open an XMI object either from a given stream
or URL:
 (XMIFile fromURL: 'http://www.omg.org/spec/UML/20131001/UML.xmi')  
inspect

You can also open a file
 XMIFile importFile
Code is available on https://github.com/astares/Pharo-XMI
The package includes a small GT extension allowing you to walk and dive  
through the XMI
structure (see attached screenshot) and as the XMI nodes are unified it  
is easy to

code some code generators or transformers in Pharo afterwards.
For instance I used this package for a simple Pharo code generator based  
on Eclipse EMF models/diagrams.
Within the code you will find some examples to browse through prominent  
XMI models like:

- UML Spec
   => (XMIFile fromURL: 'http://www.omg.org/spec/UML/20131001/UML.xmi')  
inspect

- VISUAL PARADIGM
   => (XMIFile fromURL:  
'https://raw.githubusercontent.com/staruml/XMI/master/unittest-files/VP_XMI21.xmi')  
inspect

- ENTERPRISE ARCHITECT
   => (XMIFile fromURL:  
'https://raw.githubusercontent.com/staruml/XMI/master/unittest-files/EA_XMI21.xmi')  
inspect

- ARCHIMATE
   => (XMIFile fromURL:  
'https://www.reflektis.com/repos/archimate-3.0.xmi) inspect
Once the inspector opens you have to select the "rootNode" and then the  
"Hierarchy" tab.
In Pharo 6 you can load "XMI" right from catalog. Hope the package is  
useful for others too.

Bye
T.



--
Using Opera's mail client: http://www.opera.com/mail/



[Pharo-dev] [ANN] XML Metadata Interchange (XMI) for Pharo

2017-03-01 Thread Torsten Bergmann
Hi,

if you work with UML, modeling tools or model data exchange often you might 
know XMI - 
the XML Metadata Interchange format. 

I wrote a little package that makes it easier to work and browse data based on 
this 
format within Pharo.

For instance you can open an XMI object either from a given stream 
or URL:

  (XMIFile fromURL: 'http://www.omg.org/spec/UML/20131001/UML.xmi') inspect

You can also open a file

  XMIFile importFile

Code is available on https://github.com/astares/Pharo-XMI

The package includes a small GT extension allowing you to walk and dive through 
the XMI
structure (see attached screenshot) and as the XMI nodes are unified it is easy 
to 
code some code generators or transformers in Pharo afterwards.

For instance I used this package for a simple Pharo code generator based on 
Eclipse EMF models/diagrams.

Within the code you will find some examples to browse through prominent XMI 
models like:

 - UML Spec
   => (XMIFile fromURL: 'http://www.omg.org/spec/UML/20131001/UML.xmi') inspect

 - VISUAL PARADIGM
   => (XMIFile fromURL: 
'https://raw.githubusercontent.com/staruml/XMI/master/unittest-files/VP_XMI21.xmi')
 inspect
 
 - ENTERPRISE ARCHITECT
   => (XMIFile fromURL: 
'https://raw.githubusercontent.com/staruml/XMI/master/unittest-files/EA_XMI21.xmi')
 inspect
 
 - ARCHIMATE
   => (XMIFile fromURL: 'https://www.reflektis.com/repos/archimate-3.0.xmi) 
inspect

Once the inspector opens you have to select the "rootNode" and then the 
"Hierarchy" tab.

In Pharo 6 you can load "XMI" right from catalog. Hope the package is useful 
for others too.

Bye
T.

Re: [Pharo-dev] [squeak-dev] Re: [vwnc] Does anyone have a "new" string literal?

2017-03-01 Thread DavidLeibs
Let me add some more motivation and background for the discussion. I
responded to stephar...@free.fr questions by mail yesterday but it didn't
wind up on the forum.  Sorry about that.

http://www.erights.org/elang/quasi/overview.html
Provides very good background for quasi-liberals. I believe this work lead
to the ES6 solution by way of Mark Miller.

As to macros I would posit that you have been using them in Smalltalk80 all
along without the benefit of having the capability for yourself.  There are
a classic set of selectors that get special processing by the compiler. "to:
do:" is an example of one. It gets turned into a while loop by AST
transformation. These special selectors that are really macros are known to
the compiler in a special table. A proper macro system opens the capability
up everyone.

 As to 30 years without noticing that macros were needed, I would say they
are long over due. I needed them back in 1997 when Adele Goldberg and I had
a company called Neometron. We used them for for a large system that had
thousands of templates in a template language which had escapes Smalltalk80
code embedded within. Also embedded within the tempting code and Smalltalk
code was SQL code.  This was allowed to be recursive so it was a little
language free for all. We did not want string concatenation style coding
with errors only found at run time. By having a Smalltalk80 with macros and
quasi-literal little languages we and our non programmer users continued to
compile method by method in the browser as usual but all the errors in
template or sql syntax were found at compile time. There were no external
files and everything continued to work with Change Sets and Change List
technology that allowed recovering after a crash. The compile time
processing by way of compiler staging plugins also allowed for an order of
magnitude performance increase because there was a lot of evaluations that
could be done in advance. By doing the work properly in the parser and
compiler and making sure code transformations tracked source code offsets
proper single stepping in the debugger was preserved.  Of course if really
aggressive rewriting was done you would sometimes have to debug in the
expansion but we emitted code to help the debugger with macros  and custom
optimizations. The need to debug some macros in the expansion is a very old
unsolved problem.

Sadly, I was unable to convince Eliot and Steve Dahl to incorporate the work
into Visualworks 20 years ago. Also sadly, I don't spend a lot of effort
arguing with people that don't understand the need for some technology I see
as useful. I have continually had to wait years before the time was right.
:-)

I know this will sound a bit "Snarky" but for more examples I suggest taking
a look at 60 years of Lisp. Stochastic sampeling of the corpus should be
revealing. :-)

And now for a appeal to authority, 

"Lisp isn't a language, it's a building material."

- Alan Kay


and in conclusion:

Simple quasi-literally are relatively easy and can be done with out being
too disruptive. A real macro system takes very careful design that leads to
compiler plugins that can go way beyond macros and open up a world compile
time meta programming and the wonderful world of application dependent
optimizations.

cheers,
-David (voice from the distant past) Leibs



--
View this message in context: 
http://forum.world.st/Re-vwnc-Does-anyone-have-a-new-string-literal-tp4667088p4936696.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] strange idea about slots

2017-03-01 Thread Richard Sargent
Ben Coman wrote
> I'm not sure I'm thinking straight, but I wonder...
> Can you put Slots inside an Association?
> 
> For example, could have two slots x and y,
> and then be able to do the following...
> 
> (x -> y) substitute: (1 -> 2).
> self assert: x equals: 1.
> self assert: y equals: 2.
> 
> So the association method #substitute:
> assigns into the relevant variables.
> 
> And even better if you could do...
> (x -> y) := (1 -> 2).
> and...
> { x. y ) := #(1 2).
> 
> For example, when you're hacking fast and want to return two values from a
> method without mucking around with creating an object for this, it might
> look like...
> myCalc
> ^#(1 2)
> 
> but instead of...
> result := inst myCalc.
> x := result at: 1.
> y := result at: 2.
> 
> you could do...
> { x . y } := inst myCalc.

I see this often, and even practice it sometimes. :-(

But every time I think about it, I get frustrated. We have no problem
creating instances of an existing class (Array, Association, even
Dictionary) to return multiple values from a method.

However, I always feel like doing so abdicates our responsibilities. At
least with a Dictionary, the values are properly identified rather than
stuffed into an anonymous collection or mis-represented as key and value.

Ultimately, I always conclude that this anti-pattern indicates a modelling
failure. Why not create a class which does the computation, holds the
several desired result objects, and provides the ability to answer them? 

Worst case, you have a simple computation that produces more than one result
object. In such a case, create a data transfer object (no real behaviour)
that holds the results in appropriately named instance variables.


There seems to be a fear of creating new classes. Don't let that rule your
designs.



> cheers -ben





--
View this message in context: 
http://forum.world.st/strange-idea-about-slots-tp4936623p4936691.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] Google Summer of Code 2017: Call for mentors for Pharo Consortium

2017-03-01 Thread Max Leske
It seems that I can’t. It’s not in the list of channels, I guess I have to be 
invited.

> On 1 Mar 2017, at 20:19, Serge Stinckwich  wrote:
> 
> Please join the #gsoc-planning channel on Slack !
> 
> On Wed, Mar 1, 2017 at 8:16 PM, Max Leske  wrote:
>> Good stuff!
>> 
>> I’m up for mentoring.
>> 
>>> On 1 Mar 2017, at 13:45, Serge Stinckwich  
>>> wrote:
>>> 
>>> Heartiest Congratulations !
>>> 
>>> Pharo Consortium has been selected as a mentor organisation for Google
>>> Summer of Code 2017.
>>> 
>>> Google Summer of Code is a global program focused on introducing
>>> students to open source software development.
>>> 
>>> Students work on a 3 month programming project with an open source
>>> organisation during their break from university. Read more at
>>> https://summerofcode.withgoogle.com/
>>> 
>>> How the program works ?
>>> 
>>> Organizations:
>>> Open source projects apply to be mentor organizations. Once accepted,
>>> organizations discuss possible ideas with students and then decide on
>>> the proposals they wish to mentor for the summer. They provide mentors
>>> to help guide each student through the program.
>>> 
>>> Mentors:
>>> Existing contributors with the organizations can choose to mentor a
>>> student project. Mentors and students work together to determine
>>> appropriate milestones and requirements for the summer. Mentor
>>> interaction is a vital part of the program. A mentor may propose or
>>> endorse a project  and each project has to be about Pharo or its
>>> ecosystem (e.g., a library). Projects will be mentored by one or more
>>> mentors and executed by one student.
>>> 
>>> Students:
>>> Students contact the mentor organizations they want to work with and
>>> write up a project proposal for the summer. If accepted, students
>>> spend a month integrating with their organizations prior to the start
>>> of coding. Students then have three months to code, meeting the
>>> deadlines agreed upon with their mentors. Student coding period: May
>>> 30 - Aug 29 (Entire timeline can be viewed at:
>>> https://summerofcode.withgoogle.com/how-it-works/#timeline). Student
>>> stipend: 
>>> https://developers.google.com/open-source/gsoc/help/student-stipends
>>> 
>>> We are currently at the phase of identifying mentors and projects. The
>>> next phases will be about students selecting projects, and the
>>> community selecting the projects with their associated mentors and
>>> students which will be sponsored by the GSOC program.
>>> 
>>> How to register ?
>>> Simply by replying to this email and joining the Slack channel... to
>>> have more discussion about what project the mentor will take up, what
>>> she/he wants at the end of the coding period and then we can invite
>>> them to the GSoC org dashboard).
>>> 
>>> Hence, we invite regular & enthusiastic Pharo contributors to be a
>>> mentor with Pharo Consortium for GSoC 2017:
>>> 
>>> 1. Kindly respond on this thread if you'd like to be a mentor, or wish
>>> to propose a project.
>>> 
>>> An existing list of projects is already available here:
>>> http://gsoc.pharo.org/ and we already have a handful of projects and
>>> mentors chosen. Feel free to collaborate with existing mentors as
>>> well.
>>> 
>>> 2. Join dedicated channels, #gsoc-students for general interactions
>>> with students & #gsoc-planning channel only for GSOC admins and
>>> mentors on Pharo slack. In order to get an invitation for
>>> pharoproject.slack.com visit the URL here:
>>> http://slackinvites.pharo.org/
>>> 
>>> 3. Please open relevant issues and make a roadmap of the projects
>>> being mentored by you so that students can start contributing to them
>>> already. If you want to mentor a project and there is no open-source
>>> repository at the moment, please built one ASAP.
>>> 
>>> 4. If you know any students that might be interested to work on Pharo
>>> during the summer and be a part of GSoC as well, please ask him/her to
>>> start contributing to the Pharo projects, discuss their proposal,
>>> follow instructions that shall be posted soon in this mailing thread
>>> and submit their application by April 3, 2017.
>>> We don't know the number of slots attributed by Google to Pharo org,
>>> but the more students proposal we will receive, the more slots will be
>>> attributed to us.
>>> 
>>> We remind you about the mentor responsibilities:
>>> 
>>> ... to your Org Admins
>>> 
>>> - Communicate availability and interaction expectations
>>> - Inform when mentoring capacity will be reduced, as early as possible
>>> (e.g., family, health, vacation)
>>> - Inform when there is an issue with a student
>>>  - Lacking communication, activity, visibility (MIA), or progress
>>>  - Participant Agreement violations (e.g., plagiarism, harassment, fraud)
>>>  - Bad fit or stepping down
>>> - Formally evaluate student participation.
>>>  - Communicate with admin and student before failing
>>> 
>>> ... to your 

Re: [Pharo-dev] Google Summer of Code 2017: Call for mentors for Pharo Consortium

2017-03-01 Thread Serge Stinckwich
Please join the #gsoc-planning channel on Slack !

On Wed, Mar 1, 2017 at 8:16 PM, Max Leske  wrote:
> Good stuff!
>
> I’m up for mentoring.
>
>> On 1 Mar 2017, at 13:45, Serge Stinckwich  wrote:
>>
>> Heartiest Congratulations !
>>
>> Pharo Consortium has been selected as a mentor organisation for Google
>> Summer of Code 2017.
>>
>> Google Summer of Code is a global program focused on introducing
>> students to open source software development.
>>
>> Students work on a 3 month programming project with an open source
>> organisation during their break from university. Read more at
>> https://summerofcode.withgoogle.com/
>>
>> How the program works ?
>>
>> Organizations:
>> Open source projects apply to be mentor organizations. Once accepted,
>> organizations discuss possible ideas with students and then decide on
>> the proposals they wish to mentor for the summer. They provide mentors
>> to help guide each student through the program.
>>
>> Mentors:
>> Existing contributors with the organizations can choose to mentor a
>> student project. Mentors and students work together to determine
>> appropriate milestones and requirements for the summer. Mentor
>> interaction is a vital part of the program. A mentor may propose or
>> endorse a project  and each project has to be about Pharo or its
>> ecosystem (e.g., a library). Projects will be mentored by one or more
>> mentors and executed by one student.
>>
>> Students:
>> Students contact the mentor organizations they want to work with and
>> write up a project proposal for the summer. If accepted, students
>> spend a month integrating with their organizations prior to the start
>> of coding. Students then have three months to code, meeting the
>> deadlines agreed upon with their mentors. Student coding period: May
>> 30 - Aug 29 (Entire timeline can be viewed at:
>> https://summerofcode.withgoogle.com/how-it-works/#timeline). Student
>> stipend: https://developers.google.com/open-source/gsoc/help/student-stipends
>>
>> We are currently at the phase of identifying mentors and projects. The
>> next phases will be about students selecting projects, and the
>> community selecting the projects with their associated mentors and
>> students which will be sponsored by the GSOC program.
>>
>> How to register ?
>> Simply by replying to this email and joining the Slack channel... to
>> have more discussion about what project the mentor will take up, what
>> she/he wants at the end of the coding period and then we can invite
>> them to the GSoC org dashboard).
>>
>> Hence, we invite regular & enthusiastic Pharo contributors to be a
>> mentor with Pharo Consortium for GSoC 2017:
>>
>> 1. Kindly respond on this thread if you'd like to be a mentor, or wish
>> to propose a project.
>>
>> An existing list of projects is already available here:
>> http://gsoc.pharo.org/ and we already have a handful of projects and
>> mentors chosen. Feel free to collaborate with existing mentors as
>> well.
>>
>> 2. Join dedicated channels, #gsoc-students for general interactions
>> with students & #gsoc-planning channel only for GSOC admins and
>> mentors on Pharo slack. In order to get an invitation for
>> pharoproject.slack.com visit the URL here:
>> http://slackinvites.pharo.org/
>>
>> 3. Please open relevant issues and make a roadmap of the projects
>> being mentored by you so that students can start contributing to them
>> already. If you want to mentor a project and there is no open-source
>> repository at the moment, please built one ASAP.
>>
>> 4. If you know any students that might be interested to work on Pharo
>> during the summer and be a part of GSoC as well, please ask him/her to
>> start contributing to the Pharo projects, discuss their proposal,
>> follow instructions that shall be posted soon in this mailing thread
>> and submit their application by April 3, 2017.
>> We don't know the number of slots attributed by Google to Pharo org,
>> but the more students proposal we will receive, the more slots will be
>> attributed to us.
>>
>> We remind you about the mentor responsibilities:
>>
>> ... to your Org Admins
>>
>> - Communicate availability and interaction expectations
>> - Inform when mentoring capacity will be reduced, as early as possible
>> (e.g., family, health, vacation)
>> - Inform when there is an issue with a student
>>   - Lacking communication, activity, visibility (MIA), or progress
>>   - Participant Agreement violations (e.g., plagiarism, harassment, fraud)
>>   - Bad fit or stepping down
>> - Formally evaluate student participation.
>>   - Communicate with admin and student before failing
>>
>> ... to your Students
>>
>> - Help and/or teach the student
>>   - how to be a part of your community
>>   - communicate more effectively and in the open
>>   - work with your org’s preferred communication channel (IRC, Slack, etc)
>>   - use your org’s version control system
>>   - ask good questions and get answers to 

Re: [Pharo-dev] Google Summer of Code 2017: Call for mentors for Pharo Consortium

2017-03-01 Thread Max Leske
Good stuff!

I’m up for mentoring.

> On 1 Mar 2017, at 13:45, Serge Stinckwich  wrote:
> 
> Heartiest Congratulations !
> 
> Pharo Consortium has been selected as a mentor organisation for Google
> Summer of Code 2017.
> 
> Google Summer of Code is a global program focused on introducing
> students to open source software development.
> 
> Students work on a 3 month programming project with an open source
> organisation during their break from university. Read more at
> https://summerofcode.withgoogle.com/
> 
> How the program works ?
> 
> Organizations:
> Open source projects apply to be mentor organizations. Once accepted,
> organizations discuss possible ideas with students and then decide on
> the proposals they wish to mentor for the summer. They provide mentors
> to help guide each student through the program.
> 
> Mentors:
> Existing contributors with the organizations can choose to mentor a
> student project. Mentors and students work together to determine
> appropriate milestones and requirements for the summer. Mentor
> interaction is a vital part of the program. A mentor may propose or
> endorse a project  and each project has to be about Pharo or its
> ecosystem (e.g., a library). Projects will be mentored by one or more
> mentors and executed by one student.
> 
> Students:
> Students contact the mentor organizations they want to work with and
> write up a project proposal for the summer. If accepted, students
> spend a month integrating with their organizations prior to the start
> of coding. Students then have three months to code, meeting the
> deadlines agreed upon with their mentors. Student coding period: May
> 30 - Aug 29 (Entire timeline can be viewed at:
> https://summerofcode.withgoogle.com/how-it-works/#timeline). Student
> stipend: https://developers.google.com/open-source/gsoc/help/student-stipends
> 
> We are currently at the phase of identifying mentors and projects. The
> next phases will be about students selecting projects, and the
> community selecting the projects with their associated mentors and
> students which will be sponsored by the GSOC program.
> 
> How to register ?
> Simply by replying to this email and joining the Slack channel... to
> have more discussion about what project the mentor will take up, what
> she/he wants at the end of the coding period and then we can invite
> them to the GSoC org dashboard).
> 
> Hence, we invite regular & enthusiastic Pharo contributors to be a
> mentor with Pharo Consortium for GSoC 2017:
> 
> 1. Kindly respond on this thread if you'd like to be a mentor, or wish
> to propose a project.
> 
> An existing list of projects is already available here:
> http://gsoc.pharo.org/ and we already have a handful of projects and
> mentors chosen. Feel free to collaborate with existing mentors as
> well.
> 
> 2. Join dedicated channels, #gsoc-students for general interactions
> with students & #gsoc-planning channel only for GSOC admins and
> mentors on Pharo slack. In order to get an invitation for
> pharoproject.slack.com visit the URL here:
> http://slackinvites.pharo.org/
> 
> 3. Please open relevant issues and make a roadmap of the projects
> being mentored by you so that students can start contributing to them
> already. If you want to mentor a project and there is no open-source
> repository at the moment, please built one ASAP.
> 
> 4. If you know any students that might be interested to work on Pharo
> during the summer and be a part of GSoC as well, please ask him/her to
> start contributing to the Pharo projects, discuss their proposal,
> follow instructions that shall be posted soon in this mailing thread
> and submit their application by April 3, 2017.
> We don't know the number of slots attributed by Google to Pharo org,
> but the more students proposal we will receive, the more slots will be
> attributed to us.
> 
> We remind you about the mentor responsibilities:
> 
> ... to your Org Admins
> 
> - Communicate availability and interaction expectations
> - Inform when mentoring capacity will be reduced, as early as possible
> (e.g., family, health, vacation)
> - Inform when there is an issue with a student
>   - Lacking communication, activity, visibility (MIA), or progress
>   - Participant Agreement violations (e.g., plagiarism, harassment, fraud)
>   - Bad fit or stepping down
> - Formally evaluate student participation.
>   - Communicate with admin and student before failing
> 
> ... to your Students
> 
> - Help and/or teach the student
>   - how to be a part of your community
>   - communicate more effectively and in the open
>   - work with your org’s preferred communication channel (IRC, Slack, etc)
>   - use your org’s version control system
>   - ask good questions and get answers to their questions
>   - provide convincing technical argument and constructive discussion
>   - be independently motivated and productive
>   - solve difficult technical problems
> - Keep track of their progress, 

Re: [Pharo-dev] strange idea about slots

2017-03-01 Thread Clément Bera
On Wed, Mar 1, 2017 at 3:56 PM, Ben Coman  wrote:

>
> I'm not sure I'm thinking straight, but I wonder...
> Can you put Slots inside an Association?
>
> For example, could have two slots x and y,
> and then be able to do the following...
>
> (x -> y) substitute: (1 -> 2).
> self assert: x equals: 1.
> self assert: y equals: 2.
>

For this you can do it by manipulating the stack in #substitute: . Are x
and y temporary variables or instance variables ? You could look-up in the
context's sender method AST what they are and do something accordingly.


>
> So the association method #substitute:
> assigns into the relevant variables.
>
> And even better if you could do...
> (x -> y) := (1 -> 2).
> and...
> { x. y ) := #(1 2).
>
>
For this you need parser extensions as this is not valid Smalltalk.

For example, when you're hacking fast and want to return two values from a
> method without mucking around with creating an object for this, it might
> look like...
> myCalc
> ^#(1 2)
>
> but instead of...
> result := inst myCalc.
> x := result at: 1.
> y := result at: 2.
>
> you could do...
> { x . y } := inst myCalc.
>

You mean like tuples in Python ?

To cover all your use-cases, the best is to change the bytecode compilation
pipeline.
If you need to extend the Syntax, you need to use Opal with an extended
Parser (Typically a subclass of RBParser you write).
Then the easiest is to transform the AST from your extended parser (or the
default AST if you don't extend the syntax) to standard Smalltalk AST doing
what you want before the semantic analysis and feed it to Opal. You can do
something manually or something with RBParseTreeRewriter :-).
In the cases you show it is enough to generate what you want.

Ah yeah, modifying the syntax or modifying the expected behavior of a
syntax is often considered as a bad practice or evil.


>
> cheers -ben
>


[Pharo-dev] [pharo-project/pharo-core]

2017-03-01 Thread GitHub
  Branch: refs/tags/60420
  Home:   https://github.com/pharo-project/pharo-core


[Pharo-dev] [pharo-project/pharo-core] 6a900f: 60420

2017-03-01 Thread GitHub
  Branch: refs/heads/6.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: 6a900f6d070e3179dfbd5897db9769b5cea5d867
  
https://github.com/pharo-project/pharo-core/commit/6a900f6d070e3179dfbd5897db9769b5cea5d867
  Author: Jenkins Build Server 
  Date:   2017-03-01 (Wed, 01 Mar 2017)

  Changed paths:
M 
BaselineOfIDE.package/BaselineOfIDE.class/instance/actions/postload_package_.st
M 
BaselineOfUI.package/BaselineOfUI.class/instance/actions/postload_package_.st
R 
BaselineOfUI.package/BaselineOfUI.class/instance/actions/preload_package_.st
M BaselineOfUI.package/BaselineOfUI.class/instance/baseline/baseline_.st
M 
Morphic-Base.package/EmbeddedMenuMorph.class/instance/control/selectItem_event_.st
R ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
scripts/script60419.st
A ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
scripts/script60420.st
R ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
updates/update60419.st
A ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
updates/update60420.st
M 
ScriptLoader60.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
M Tool-FileList.package/FileList.class/instance/private/updateFileList.st

  Log Message:
  ---
  60420
19777 BaselineOfUI compiles own version of RubScrolledTextMorph>>#font:
https://pharo.fogbugz.com/f/cases/19777

19772 BaselineOfIDE compiles own version of EpLostChangesDetector>>#startUp:
https://pharo.fogbugz.com/f/cases/19772

18784 FileList selected directory entry is not cleared after selecting a new 
directory
https://pharo.fogbugz.com/f/cases/18784

18871 DNU after showing about box of QA annotation question mark icon
https://pharo.fogbugz.com/f/cases/18871

19774 BaselineOfUI is compiling own version of Pragma>>#methodSelector
https://pharo.fogbugz.com/f/cases/19774

http://files.pharo.org/image/60/60420.zip




Re: [Pharo-dev] strange idea about slots

2017-03-01 Thread Pavel Krivanek
Slots only drive access to the instance variables and the association
"literal" is already a message send. But I guess you wold be able to do
such behavior with own Opal plugin.

-- Pavel

2017-03-01 15:56 GMT+01:00 Ben Coman :

>
> I'm not sure I'm thinking straight, but I wonder...
> Can you put Slots inside an Association?
>
> For example, could have two slots x and y,
> and then be able to do the following...
>
> (x -> y) substitute: (1 -> 2).
> self assert: x equals: 1.
> self assert: y equals: 2.
>
> So the association method #substitute:
> assigns into the relevant variables.
>
> And even better if you could do...
> (x -> y) := (1 -> 2).
> and...
> { x. y ) := #(1 2).
>
> For example, when you're hacking fast and want to return two values from a
> method without mucking around with creating an object for this, it might
> look like...
> myCalc
> ^#(1 2)
>
> but instead of...
> result := inst myCalc.
> x := result at: 1.
> y := result at: 2.
>
> you could do...
> { x . y } := inst myCalc.
>
> cheers -ben
>


Re: [Pharo-dev] Google Summer of Code 2017: Call for mentors for Pharo Consortium

2017-03-01 Thread p...@highoctane.be
Ok for helping someone :-)

Phil

On Wed, Mar 1, 2017 at 1:45 PM, Serge Stinckwich  wrote:

> Heartiest Congratulations !
>
> Pharo Consortium has been selected as a mentor organisation for Google
> Summer of Code 2017.
>
> Google Summer of Code is a global program focused on introducing
> students to open source software development.
>
> Students work on a 3 month programming project with an open source
> organisation during their break from university. Read more at
> https://summerofcode.withgoogle.com/
>
> How the program works ?
>
> Organizations:
> Open source projects apply to be mentor organizations. Once accepted,
> organizations discuss possible ideas with students and then decide on
> the proposals they wish to mentor for the summer. They provide mentors
> to help guide each student through the program.
>
> Mentors:
> Existing contributors with the organizations can choose to mentor a
> student project. Mentors and students work together to determine
> appropriate milestones and requirements for the summer. Mentor
> interaction is a vital part of the program. A mentor may propose or
> endorse a project  and each project has to be about Pharo or its
> ecosystem (e.g., a library). Projects will be mentored by one or more
> mentors and executed by one student.
>
> Students:
> Students contact the mentor organizations they want to work with and
> write up a project proposal for the summer. If accepted, students
> spend a month integrating with their organizations prior to the start
> of coding. Students then have three months to code, meeting the
> deadlines agreed upon with their mentors. Student coding period: May
> 30 - Aug 29 (Entire timeline can be viewed at:
> https://summerofcode.withgoogle.com/how-it-works/#timeline). Student
> stipend: https://developers.google.com/open-source/gsoc/help/student-
> stipends
>
> We are currently at the phase of identifying mentors and projects. The
> next phases will be about students selecting projects, and the
> community selecting the projects with their associated mentors and
> students which will be sponsored by the GSOC program.
>
> How to register ?
> Simply by replying to this email and joining the Slack channel... to
> have more discussion about what project the mentor will take up, what
> she/he wants at the end of the coding period and then we can invite
> them to the GSoC org dashboard).
>
> Hence, we invite regular & enthusiastic Pharo contributors to be a
> mentor with Pharo Consortium for GSoC 2017:
>
> 1. Kindly respond on this thread if you'd like to be a mentor, or wish
> to propose a project.
>
> An existing list of projects is already available here:
> http://gsoc.pharo.org/ and we already have a handful of projects and
> mentors chosen. Feel free to collaborate with existing mentors as
> well.
>
> 2. Join dedicated channels, #gsoc-students for general interactions
> with students & #gsoc-planning channel only for GSOC admins and
> mentors on Pharo slack. In order to get an invitation for
> pharoproject.slack.com visit the URL here:
> http://slackinvites.pharo.org/
>
> 3. Please open relevant issues and make a roadmap of the projects
> being mentored by you so that students can start contributing to them
> already. If you want to mentor a project and there is no open-source
> repository at the moment, please built one ASAP.
>
> 4. If you know any students that might be interested to work on Pharo
> during the summer and be a part of GSoC as well, please ask him/her to
> start contributing to the Pharo projects, discuss their proposal,
> follow instructions that shall be posted soon in this mailing thread
> and submit their application by April 3, 2017.
> We don't know the number of slots attributed by Google to Pharo org,
> but the more students proposal we will receive, the more slots will be
> attributed to us.
>
> We remind you about the mentor responsibilities:
>
> ... to your Org Admins
>
> - Communicate availability and interaction expectations
> - Inform when mentoring capacity will be reduced, as early as possible
> (e.g., family, health, vacation)
> - Inform when there is an issue with a student
>- Lacking communication, activity, visibility (MIA), or progress
>- Participant Agreement violations (e.g., plagiarism, harassment, fraud)
>- Bad fit or stepping down
> - Formally evaluate student participation.
>- Communicate with admin and student before failing
>
> ... to your Students
>
> - Help and/or teach the student
>- how to be a part of your community
>- communicate more effectively and in the open
>- work with your org’s preferred communication channel (IRC, Slack, etc)
>- use your org’s version control system
>- ask good questions and get answers to their questions
>- provide convincing technical argument and constructive discussion
>- be independently motivated and productive
>- solve difficult technical problems
> - Keep track of their progress, 

[Pharo-dev] strange idea about slots

2017-03-01 Thread Ben Coman
I'm not sure I'm thinking straight, but I wonder...
Can you put Slots inside an Association?

For example, could have two slots x and y,
and then be able to do the following...

(x -> y) substitute: (1 -> 2).
self assert: x equals: 1.
self assert: y equals: 2.

So the association method #substitute:
assigns into the relevant variables.

And even better if you could do...
(x -> y) := (1 -> 2).
and...
{ x. y ) := #(1 2).

For example, when you're hacking fast and want to return two values from a
method without mucking around with creating an object for this, it might
look like...
myCalc
^#(1 2)

but instead of...
result := inst myCalc.
x := result at: 1.
y := result at: 2.

you could do...
{ x . y } := inst myCalc.

cheers -ben


Re: [Pharo-dev] code loss when cancelling during save.

2017-03-01 Thread Pavel Krivanek
can it be relate?
https://pharo.fogbugz.com/f/cases/18304/Changes-in-protocol-can-cause-usaved-comment-lost-in-other-browser


2017-03-01 15:12 GMT+01:00 Ben Coman :

>
> I just got bitten by a code loss.  I'm not sure what to search for on
> Fogbugz, so I'll just ask if anyone has already logged it.
>
> 1. Start with an existing method
> 2. Add a line assigning to an unknown variable. e.g. blah := 0.
> 3. Click on another method
> ==> "Contents have been modified, what do you want to do?"
> Good!
> 4. Hit cancel, then Save method.
>  When asked "Unknown variable: blah please correct"
>  click .
> ==> code pane shows it is still dirty.
> 5. Click on another method.
> ==> code lost.
> Bad!
> (P.S. you don't really need to do step 3.)
>


[Pharo-dev] code loss when cancelling during save.

2017-03-01 Thread Ben Coman
I just got bitten by a code loss.  I'm not sure what to search for on
Fogbugz, so I'll just ask if anyone has already logged it.

1. Start with an existing method
2. Add a line assigning to an unknown variable. e.g. blah := 0.
3. Click on another method
==> "Contents have been modified, what do you want to do?"
Good!
4. Hit cancel, then Save method.
 When asked "Unknown variable: blah please correct"
 click .
==> code pane shows it is still dirty.
5. Click on another method.
==> code lost.
Bad!
(P.S. you don't really need to do step 3.)


[Pharo-dev] [pharo-project/pharo-core] 26c7e5: 60419

2017-03-01 Thread GitHub
  Branch: refs/heads/6.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: 26c7e56ee19ea1914e471033c1777c373f9cf8db
  
https://github.com/pharo-project/pharo-core/commit/26c7e56ee19ea1914e471033c1777c373f9cf8db
  Author: Jenkins Build Server 
  Date:   2017-03-01 (Wed, 01 Mar 2017)

  Changed paths:
M Athens-Cairo.package/AthensCairoMatrix.class/definition.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/shx.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/shx_.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/shy.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/shy_.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/sx.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/sx_.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/sy.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/sy_.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/x.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/x_.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/y.st
M Athens-Cairo.package/AthensCairoMatrix.class/instance/accessing structure 
variables/y_.st
M Athens-Cairo.package/AthensCairoSurface.class/class/session 
management/checkSession.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/createGetSurfaceFormatFn.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/createLockSurfaceFn.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/createShowSurfaceFn.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/createUnlockSurfaceFn.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/get%5Fdata_.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/get%5Fheight_.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/get%5Fstride_.st
M Athens-Cairo.package/AthensCairoSurface.class/class/surface plugin 
callbacks/get%5Fwidth_.st
M 
Athens-Cairo.package/AthensCairoSurface.class/instance/converting/asForm.st
M Athens-Cairo.package/CairoFontExtents.class/definition.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/ascent.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/ascent_.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/descent.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/descent_.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/height.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/height_.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/max%5Fx%5Fadvance.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/max%5Fx%5Fadvance_.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/max%5Fy%5Fadvance.st
M Athens-Cairo.package/CairoFontExtents.class/instance/accessing structure 
variables/max%5Fy%5Fadvance_.st
M Athens-Cairo.package/CairoGlyph.class/definition.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/index.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/index_.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/x.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/x_.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/y.st
M Athens-Cairo.package/CairoGlyph.class/instance/accessing structure 
variables/y_.st
M Athens-Cairo.package/CairoTextExtents.class/definition.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/height.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/height_.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/width.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/width_.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/x%5Fadvance.st
M Athens-Cairo.package/CairoTextExtents.class/instance/accessing structure 
variables/x%5Fadvance_.st
M 

[Pharo-dev] [pharo-project/pharo-core]

2017-03-01 Thread GitHub
  Branch: refs/tags/60419
  Home:   https://github.com/pharo-project/pharo-core


[Pharo-dev] Google Summer of Code 2017: Call for mentors for Pharo Consortium

2017-03-01 Thread Serge Stinckwich
Heartiest Congratulations !

Pharo Consortium has been selected as a mentor organisation for Google
Summer of Code 2017.

Google Summer of Code is a global program focused on introducing
students to open source software development.

Students work on a 3 month programming project with an open source
organisation during their break from university. Read more at
https://summerofcode.withgoogle.com/

How the program works ?

Organizations:
Open source projects apply to be mentor organizations. Once accepted,
organizations discuss possible ideas with students and then decide on
the proposals they wish to mentor for the summer. They provide mentors
to help guide each student through the program.

Mentors:
Existing contributors with the organizations can choose to mentor a
student project. Mentors and students work together to determine
appropriate milestones and requirements for the summer. Mentor
interaction is a vital part of the program. A mentor may propose or
endorse a project  and each project has to be about Pharo or its
ecosystem (e.g., a library). Projects will be mentored by one or more
mentors and executed by one student.

Students:
Students contact the mentor organizations they want to work with and
write up a project proposal for the summer. If accepted, students
spend a month integrating with their organizations prior to the start
of coding. Students then have three months to code, meeting the
deadlines agreed upon with their mentors. Student coding period: May
30 - Aug 29 (Entire timeline can be viewed at:
https://summerofcode.withgoogle.com/how-it-works/#timeline). Student
stipend: https://developers.google.com/open-source/gsoc/help/student-stipends

We are currently at the phase of identifying mentors and projects. The
next phases will be about students selecting projects, and the
community selecting the projects with their associated mentors and
students which will be sponsored by the GSOC program.

How to register ?
Simply by replying to this email and joining the Slack channel... to
have more discussion about what project the mentor will take up, what
she/he wants at the end of the coding period and then we can invite
them to the GSoC org dashboard).

Hence, we invite regular & enthusiastic Pharo contributors to be a
mentor with Pharo Consortium for GSoC 2017:

1. Kindly respond on this thread if you'd like to be a mentor, or wish
to propose a project.

An existing list of projects is already available here:
http://gsoc.pharo.org/ and we already have a handful of projects and
mentors chosen. Feel free to collaborate with existing mentors as
well.

2. Join dedicated channels, #gsoc-students for general interactions
with students & #gsoc-planning channel only for GSOC admins and
mentors on Pharo slack. In order to get an invitation for
pharoproject.slack.com visit the URL here:
http://slackinvites.pharo.org/

3. Please open relevant issues and make a roadmap of the projects
being mentored by you so that students can start contributing to them
already. If you want to mentor a project and there is no open-source
repository at the moment, please built one ASAP.

4. If you know any students that might be interested to work on Pharo
during the summer and be a part of GSoC as well, please ask him/her to
start contributing to the Pharo projects, discuss their proposal,
follow instructions that shall be posted soon in this mailing thread
and submit their application by April 3, 2017.
We don't know the number of slots attributed by Google to Pharo org,
but the more students proposal we will receive, the more slots will be
attributed to us.

We remind you about the mentor responsibilities:

... to your Org Admins

- Communicate availability and interaction expectations
- Inform when mentoring capacity will be reduced, as early as possible
(e.g., family, health, vacation)
- Inform when there is an issue with a student
   - Lacking communication, activity, visibility (MIA), or progress
   - Participant Agreement violations (e.g., plagiarism, harassment, fraud)
   - Bad fit or stepping down
- Formally evaluate student participation.
   - Communicate with admin and student before failing

... to your Students

- Help and/or teach the student
   - how to be a part of your community
   - communicate more effectively and in the open
   - work with your org’s preferred communication channel (IRC, Slack, etc)
   - use your org’s version control system
   - ask good questions and get answers to their questions
   - provide convincing technical argument and constructive discussion
   - be independently motivated and productive
   - solve difficult technical problems
- Keep track of their progress, keep student informed as to their status
- Communicate on a regular basis, once a week or better (for GSoC)
   - Give constructive feedback, be patient, and be respectful
   - Respond to questions within 24 hours (occasionally under 36 hours is ok)
- Establish realistic work objectives and timeline expectations
- 

[Pharo-dev] [pharo-project/pharo-core] 6cad4e: 60418

2017-03-01 Thread GitHub
  Branch: refs/heads/6.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: 6cad4e2f8a336eac9195a11ac577fbc9f3803340
  
https://github.com/pharo-project/pharo-core/commit/6cad4e2f8a336eac9195a11ac577fbc9f3803340
  Author: Jenkins Build Server 
  Date:   2017-03-01 (Wed, 01 Mar 2017)

  Changed paths:
M 
BaselineOfMorphic.package/BaselineOfMorphic.class/instance/actions/cleanUpAfterMorphicInitialization.st
M 
BaselineOfMorphic.package/BaselineOfMorphic.class/instance/actions/preload_package_.st
M RPackage-Core.package/RPackage.class/instance/removing/removeFromSystem.st
M Rubric.package/RubSmalltalkEditor.class/instance/do-its/debug_.st
R ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
scripts/script60417.st
A ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
scripts/script60418.st
R ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
updates/update60417.st
A ScriptLoader60.package/ScriptLoader.class/instance/pharo - 
updates/update60418.st
M 
ScriptLoader60.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st

  Log Message:
  ---
  60418
19778 NaturalLanguageTranslator contains a class variable AllKnownPhrases in 
bootstrapped image
https://pharo.fogbugz.com/f/cases/19778

19773 BaselineOfMorphic compiles own version of Character>>#characterSet
https://pharo.fogbugz.com/f/cases/19773

19667 After removing of a package by Nautilus the empty extension protocols are 
still there
https://pharo.fogbugz.com/f/cases/19667

18252 debugit on "self" causes endless loop
https://pharo.fogbugz.com/f/cases/18252

http://files.pharo.org/image/60/60418.zip




[Pharo-dev] [pharo-project/pharo-core]

2017-03-01 Thread GitHub
  Branch: refs/tags/60418
  Home:   https://github.com/pharo-project/pharo-core