Re: [Pharo-dev] About inspectors

2014-03-11 Thread Tudor Girba
Thank you.

In this case yes, it blurs the line between an SQL Editor and the
inspector. And between a table and an Excel code editor. But, here is
another blurred line between the file browser and the inspector:
http://www.humane-assessment.com/blog/browsing-files-with-gtinspector-video/

The GTInspector blurs all sorts of lines and it even empowers you to blur
your own lines :).

Just a note: the GToolkit is also the work of Andrei.

Doru


On Mon, Mar 10, 2014 at 8:01 PM, Esteban A. Maringolo
emaring...@gmail.comwrote:

 Excellent Tudor!

 Very impressive. It blurs the line between a the Smalltalk tools and
 an SQL Editor.
 Esteban A. Maringolo


 2014-03-10 12:15 GMT-03:00 Alexandre Bergel alexandre.ber...@me.com:
  Yes!
 
  We have Roassal 2 which is pretty well advanced already. We would like
 to announce Roassal2 the way its deserve: with fireworks and a big fanfare.
 
  The coming months will be full of surprises.
 
  Alexandre
 
 
  On Mar 10, 2014, at 9:59 AM, Sven Van Caekenberghe s...@stfx.eu wrote:
 
  Alex,
 
  On 10 Mar 2014, at 13:54, Alexandre Bergel alexandre.ber...@me.com
 wrote:
 
  Yesterday evening I watched the Wolfram video. I think we can produce
 Pharo-based video as impressive as what this strange guy did.
 
  Please do ! Visualization and marketing is important indeed.
 
  Sven
 
  --
  _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
  Alexandre Bergel  http://www.bergel.eu
  ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 




-- 
www.tudorgirba.com

Every thing has its own flow


Re: [Pharo-dev] May I have a write permission to MetaRepoForPharo30?

2014-03-11 Thread Torsten Bergmann
Hi Attila,

I added zeroflag as contributor. Feel free to upload
your configs. Note that they require a #stable definition
to work in config browser.
(just have a look at the other configs)

Thx
T.


 Gesendet: Montag, 10. März 2014 um 21:47 Uhr
 Von: Attila Magyar m.magy...@gmail.com
 An: pharo-dev@lists.pharo.org
 Betreff: [Pharo-dev] May I have a write permission to MetaRepoForPharo30?

 I'ld like to publis my app. My user is this one:
 http://smalltalkhub.com/#!/~zeroflag
 
 
 
 --
 View this message in context: 
 http://forum.world.st/May-I-have-a-write-permission-to-MetaRepoForPharo30-tp4748477.html
 Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
 




Re: [Pharo-dev] About a Spec dedicated mailing-list

2014-03-11 Thread Torsten Bergmann
+1

 Gesendet: Dienstag, 11. März 2014 um 03:46 Uhr
 Von: Alexandre Bergel alexandre.ber...@me.com
 An: Pharo Development List pharo-dev@lists.pharo.org
 Betreff: Re: [Pharo-dev] About a Spec dedicated mailing-list

 + 1
 
  Le 10-03-2014 à 16:48, Sven Van Caekenberghe s...@stfx.eu a écrit :
  
  Ben,
  
  I don't think that makes that much sense (right now):
  
  - there is not that much spec specific traffic
  - spec is a fundamental and critical part of pharo
  - pharo is a fundamental and critical part of spec
  - we have to make spec better all together
  
  ;-)
  
  My 2c,
  
  Sven
  
  On 10 Mar 2014, at 18:23, Benjamin benjamin.vanryseghem.ph...@gmail.com 
  wrote:
  
  Hello guys :)
  
  I was wondering if it will make sense to have a spec dedicated mailing 
  list :)
  As I have pros and cons, I am asking for your opinion :)
  
  Thanks in advance,
  Ben
  
  
 




[Pharo-dev] Sort by property

2014-03-11 Thread Yuriy Tymchuk
Hi guys.

This is a thing that I encounter quite often.

Eg I have a collection of projects and I want to sort them by creation date. It 
would be nice to be able to do something like:

projects sortByProp: #creationDate

or by birth date of the author

projects sortByProp: [ :proj | proj author birthDate ]

Maybe I’m wrong, but as I’ve told already I encounter it quite often and 
writing something like

projects sortBy: [ :prev :next | prev creationDate = next creationDate ]

is boring for me.

Cheers.
Uko


[Pharo-dev] Bug in valueWithin:onTimeout: ?

2014-03-11 Thread Clément Bera
Hello guys,

Yesterday I had this problem that at startup a pharo image has several
process running at priority 40. The problem is that my tests (run from
command line) trigger #valueWithin:onTimeout: and the protected block (the
block calling #valueWithin:onTimeout:) would always timed out for the first
test as resuming the watchdog in #valueWithin:onTimeout: allows another
runnable process at the same priority as the active process to be run.

Example:

Here we have two process at the activePriority, the second process takes
100ms to be run and as the transcript shows, the protected block always
times out because this other process is started after the watchdog so
during the protected block activation.

| p endTime |
p := Processor activeProcess priority.
[ 'Process2Start' logCr.
endTime := Time millisecondClockValue + 100.
 [ Time millisecondClockValue  endTime ] whileFalse: [ 1 + 2 + 3 ].
'Process2End' logCr. ] forkAt: p.
[ 'protected' logCr] valueWithin: 0.05 second onTimeout: [ 'timeout' logCr
].

Transcript displays:
'Process2Start'
'Process2End'
'timeout'

I'm not very familiar with Pharo's process framework nor with processes in
general so I would like to discuss the problem.

*Question 1: Is it a bug ?*


I fixed it by adding a Processor yield just before resuming the watchdog in
#valueWithin:onTimeout: to allow other runnable process at the
activePriority to be run before the protected block and therefore
forbidding other process started outside of the protected block to trigger
the time out. No process can be started in between the Processor yield and
watchdog resume.

*Question 2: Can someone tell me if this code looks ok ? I've just added
Processor yield.*

valueWithin: aDuration onTimeout: timeoutBlock
Evaluate the receiver.
 If the evaluation does not complete in less than aDuration evaluate the
timeoutBlock instead

| theProcess delay watchdog tag |

aDuration = Duration zero ifTrue: [^ timeoutBlock value ].

the block will be executed in the current process
 theProcess := Processor activeProcess.
delay := aDuration asDelay.
tag := self.

make a watchdog process
watchdog := [
delay wait. wait for timeout or completion
 theProcess ifNotNil:[ theProcess signalException: (TimedOut new tag: tag)]
] newProcess.

 Watchdog needs to run at high priority to do its job (but not at timing
priority)
watchdog priority: Processor timingPriority-1.

*Processor yield.*

catch the timeout signal
^ [ watchdog resume. start up the watchdog
 self ensure:[ evaluate the receiver
theProcess := nil. it has completed, so ...
 delay delaySemaphore signal. arrange for the watchdog to exit
]] on: TimedOut do: [ :e |
 e tag == tag
ifTrue:[ timeoutBlock value ]
ifFalse:[ e pass]].


Re: [Pharo-dev] Sort by property

2014-03-11 Thread Camille Teruel
Hi Yuriy,

I though the same. There is a similar situation with pluggable collections 
where you have to specify two blocks: one for the hash the other for equality.
So you have to repeat three times the property you're interested in:

PluggableSet new
hashBlock: [ :each | each name hash ];
equalBlock: [ :a :b | a name = b name ];
yourself.

Where I would like to be able to write: 

PluggableSet by: #name.




On 11 mars 2014, at 09:19, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

 Hi guys.
 
 This is a thing that I encounter quite often.
 
 Eg I have a collection of projects and I want to sort them by creation date. 
 It would be nice to be able to do something like:
 
 projects sortByProp: #creationDate
 
 or by birth date of the author
 
 projects sortByProp: [ :proj | proj author birthDate ]
 
 Maybe I’m wrong, but as I’ve told already I encounter it quite often and 
 writing something like
 
 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]
 
 is boring for me.
 
 Cheers.
 Uko




Re: [Pharo-dev] Sort by property

2014-03-11 Thread Clément Bera
Hello,

[ Note: So in the default Pharo the method is named #sort: not #sortByProp:
or #sortBy: but it's a detail ]

I like this idea because I also have always the problem. So I would like to
be able to do:

projects sort: #creationDate

The implementation would be, in a similar fashion to how Symbolvalue: is
implemented for aCollection collect: #isPlague :

Symbolvalue: val1 value: val2
^ (val1 perform: self) = (val2 perform: self)

Then :

(#( 10 42 31 23 90 87 65) collect: #asValueHolder) sort: #value

Answers:

 an Array(a NewValueHolder[ 10 ] a NewValueHolder[ 23 ] a NewValueHolder[
31 ] a NewValueHolder[ 42 ] a NewValueHolder[ 65 ] a NewValueHolder[ 87 ] a
NewValueHolder[ 90 ])

which is correct :-).

However I do not like:

projects sort: [ :proj | proj author birthDate ]

If you allow that where is the limit to the thing you want to allow ? In
addition, I do not see any nice implementation and you could just implement
in project

ProjectauthorBirthDate
^ self author birthDate

Best,

Clement



2014-03-11 9:19 GMT+01:00 Yuriy Tymchuk yuriy.tymc...@me.com:

 Hi guys.

 This is a thing that I encounter quite often.

 Eg I have a collection of projects and I want to sort them by creation
 date. It would be nice to be able to do something like:

 projects sortByProp: #creationDate

 or by birth date of the author

 projects sortByProp: [ :proj | proj author birthDate ]

 Maybe I'm wrong, but as I've told already I encounter it quite often and
 writing something like

 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]

 is boring for me.

 Cheers.
 Uko



Re: [Pharo-dev] About a Spec dedicated mailing-list

2014-03-11 Thread Nicolai Hess
Are those +1 meant for
yes a dedicated mailling list
or for
sven's  I don't think  that makes much sense
comment ?


even if you don't want to do something directly with spec (and so, you
wouldn't follow that mailinglist), many changes
done for spec have an influence on common tools or morphic components.

+1 (for svens comment).





2014-03-11 9:02 GMT+01:00 Torsten Bergmann asta...@gmx.de:

 +1

  Gesendet: Dienstag, 11. März 2014 um 03:46 Uhr
  Von: Alexandre Bergel alexandre.ber...@me.com
  An: Pharo Development List pharo-dev@lists.pharo.org
  Betreff: Re: [Pharo-dev] About a Spec dedicated mailing-list
 
  + 1
 
   Le 10-03-2014 à 16:48, Sven Van Caekenberghe s...@stfx.eu a écrit :
  
   Ben,
  
   I don't think that makes that much sense (right now):
  
   - there is not that much spec specific traffic
   - spec is a fundamental and critical part of pharo
   - pharo is a fundamental and critical part of spec
   - we have to make spec better all together
  
   ;-)
  
   My 2c,
  
   Sven
  
   On 10 Mar 2014, at 18:23, Benjamin 
 benjamin.vanryseghem.ph...@gmail.com wrote:
  
   Hello guys :)
  
   I was wondering if it will make sense to have a spec dedicated
 mailing list :)
   As I have pros and cons, I am asking for your opinion :)
  
   Thanks in advance,
   Ben
  
  
 
 




Re: [Pharo-dev] About inspectors

2014-03-11 Thread Guillermo Polito
Doru, for the DBXTalk inspector, maybe it is useful for you this package:

http://www.smalltalkhub.com/#!/~DBXTalk/DBXDatabaseModel/

That allows to retrieve database schema metadata in a polymorphic way :)


On Tue, Mar 11, 2014 at 7:43 AM, Tudor Girba tu...@tudorgirba.com wrote:

 Thank you.

 In this case yes, it blurs the line between an SQL Editor and the
 inspector. And between a table and an Excel code editor. But, here is
 another blurred line between the file browser and the inspector:

 http://www.humane-assessment.com/blog/browsing-files-with-gtinspector-video/

 The GTInspector blurs all sorts of lines and it even empowers you to blur
 your own lines :).

 Just a note: the GToolkit is also the work of Andrei.

 Doru


 On Mon, Mar 10, 2014 at 8:01 PM, Esteban A. Maringolo 
 emaring...@gmail.com wrote:

 Excellent Tudor!

 Very impressive. It blurs the line between a the Smalltalk tools and
 an SQL Editor.
 Esteban A. Maringolo


 2014-03-10 12:15 GMT-03:00 Alexandre Bergel alexandre.ber...@me.com:
  Yes!
 
  We have Roassal 2 which is pretty well advanced already. We would like
 to announce Roassal2 the way its deserve: with fireworks and a big fanfare.
 
  The coming months will be full of surprises.
 
  Alexandre
 
 
  On Mar 10, 2014, at 9:59 AM, Sven Van Caekenberghe s...@stfx.eu
 wrote:
 
  Alex,
 
  On 10 Mar 2014, at 13:54, Alexandre Bergel alexandre.ber...@me.com
 wrote:
 
  Yesterday evening I watched the Wolfram video. I think we can produce
 Pharo-based video as impressive as what this strange guy did.
 
  Please do ! Visualization and marketing is important indeed.
 
  Sven
 
  --
  _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
  Alexandre Bergel  http://www.bergel.eu
  ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 




 --
 www.tudorgirba.com

 Every thing has its own flow



Re: [Pharo-dev] Sort by property

2014-03-11 Thread Yuriy Tymchuk

On 11 Mar 2014, at 10:19, Clément Bera bera.clem...@gmail.com wrote:

 Hello,
 
 [ Note: So in the default Pharo the method is named #sort: not #sortByProp: 
 or #sortBy: but it's a detail ]

Yes, my mistake, I was misguided by #isSortedBy:

Now #sortByProp: is my own example method that accepts a block and executes it 
for each sortable item and then the result is compared.

I don’t like the idea to implement #value:value: for a symbol because it caries 
a bit of a logic inside it.

Uko

 
 I like this idea because I also have always the problem. So I would like to 
 be able to do:
 
 projects sort: #creationDate
 
 The implementation would be, in a similar fashion to how Symbolvalue: is 
 implemented for aCollection collect: #isPlague :
 
 Symbolvalue: val1 value: val2
   ^ (val1 perform: self) = (val2 perform: self)
 
 Then :
 
 (#( 10 42 31 23 90 87 65) collect: #asValueHolder) sort: #value 
 
 Answers:
 
  an Array(a NewValueHolder[ 10 ] a NewValueHolder[ 23 ] a NewValueHolder[ 31 
 ] a NewValueHolder[ 42 ] a NewValueHolder[ 65 ] a NewValueHolder[ 87 ] a 
 NewValueHolder[ 90 ])
 
 which is correct :-).
 
 However I do not like:
 
 projects sort: [ :proj | proj author birthDate ]
 
 If you allow that where is the limit to the thing you want to allow ? In 
 addition, I do not see any nice implementation and you could just implement 
 in project
 
 ProjectauthorBirthDate
 ^ self author birthDate
 
 Best,
 
 Clement
 
 
 
 2014-03-11 9:19 GMT+01:00 Yuriy Tymchuk yuriy.tymc...@me.com:
 Hi guys.
 
 This is a thing that I encounter quite often.
 
 Eg I have a collection of projects and I want to sort them by creation date. 
 It would be nice to be able to do something like:
 
 projects sortByProp: #creationDate
 
 or by birth date of the author
 
 projects sortByProp: [ :proj | proj author birthDate ]
 
 Maybe I’m wrong, but as I’ve told already I encounter it quite often and 
 writing something like
 
 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]
 
 is boring for me.
 
 Cheers.
 Uko
 



Re: [Pharo-dev] Bug in valueWithin:onTimeout: ?

2014-03-11 Thread Stefan Marr
Hi Clément:

On 11 Mar 2014, at 09:58, Clément Bera bera.clem...@gmail.com wrote:

 Yesterday I had this problem that at startup a pharo image has several 
 process running at priority 40. The problem is that my tests (run from 
 command line) trigger #valueWithin:onTimeout: and the protected block (the 
 block calling #valueWithin:onTimeout:) would always timed out for the first 
 test as resuming the watchdog in #valueWithin:onTimeout: allows another 
 runnable process at the same priority as the active process to be run.
 
 I'm not very familiar with Pharo's process framework nor with processes in 
 general so I would like to discuss the problem.
 
 Question 1: Is it a bug ?

Just a brief answer: Processes on the same priority are scheduled 
cooperatively. So, no, it is not a bug. Only processes of different priority 
are scheduled preemptively. So, it is ‘by design’ and the expected behavior 
(which some parts of the system rely on).


Best regards
Stefan

-- 
Stefan Marr
INRIA Lille - Nord Europe
http://stefan-marr.de/research/






Re: [Pharo-dev] About inspectors

2014-03-11 Thread Tudor Girba
Thanks. I was looking for something like that!

I will check it and get back to you.

Doru


On Tue, Mar 11, 2014 at 10:42 AM, Guillermo Polito 
guillermopol...@gmail.com wrote:

 Doru, for the DBXTalk inspector, maybe it is useful for you this package:

 http://www.smalltalkhub.com/#!/~DBXTalk/DBXDatabaseModel/

 That allows to retrieve database schema metadata in a polymorphic way :)


 On Tue, Mar 11, 2014 at 7:43 AM, Tudor Girba tu...@tudorgirba.com wrote:

 Thank you.

 In this case yes, it blurs the line between an SQL Editor and the
 inspector. And between a table and an Excel code editor. But, here is
 another blurred line between the file browser and the inspector:

 http://www.humane-assessment.com/blog/browsing-files-with-gtinspector-video/

 The GTInspector blurs all sorts of lines and it even empowers you to blur
 your own lines :).

 Just a note: the GToolkit is also the work of Andrei.

 Doru


 On Mon, Mar 10, 2014 at 8:01 PM, Esteban A. Maringolo 
 emaring...@gmail.com wrote:

 Excellent Tudor!

 Very impressive. It blurs the line between a the Smalltalk tools and
 an SQL Editor.
 Esteban A. Maringolo


 2014-03-10 12:15 GMT-03:00 Alexandre Bergel alexandre.ber...@me.com:
  Yes!
 
  We have Roassal 2 which is pretty well advanced already. We would like
 to announce Roassal2 the way its deserve: with fireworks and a big fanfare.
 
  The coming months will be full of surprises.
 
  Alexandre
 
 
  On Mar 10, 2014, at 9:59 AM, Sven Van Caekenberghe s...@stfx.eu
 wrote:
 
  Alex,
 
  On 10 Mar 2014, at 13:54, Alexandre Bergel alexandre.ber...@me.com
 wrote:
 
  Yesterday evening I watched the Wolfram video. I think we can
 produce Pharo-based video as impressive as what this strange guy did.
 
  Please do ! Visualization and marketing is important indeed.
 
  Sven
 
  --
  _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
  Alexandre Bergel  http://www.bergel.eu
  ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 




 --
 www.tudorgirba.com

 Every thing has its own flow





-- 
www.tudorgirba.com

Every thing has its own flow


Re: [Pharo-dev] Sort by property

2014-03-11 Thread Clément Bera
Hello,

@Uko

Well I implemented Symbolvalue:value: in a similar fashion than
Symbolvalue: for 'aCollection collect: #aSymbol'. But that's not a
perfect solution for sure.

@Camille

I used PluggableSet and PluggableDictionary in my project and they were so
slow that in the end I implemented my own collection. It will be a real
alternative when we will have clean blocks. (For that we need to merge with
Cog's trunk which includes merging Spur)...


2014-03-11 10:45 GMT+01:00 Yuriy Tymchuk yuriy.tymc...@me.com:


 On 11 Mar 2014, at 10:19, Clément Bera bera.clem...@gmail.com wrote:

 Hello,

 [ Note: So in the default Pharo the method is named #sort: not #sortByProp:
 or #sortBy: but it's a detail ]


 Yes, my mistake, I was misguided by #isSortedBy:

 Now #sortByProp: is my own example method that accepts a block and
 executes it for each sortable item and then the result is compared.

 I don't like the idea to implement #value:value: for a symbol because it
 caries a bit of a logic inside it.

 Uko


 I like this idea because I also have always the problem. So I would like
 to be able to do:

 projects sort: #creationDate

 The implementation would be, in a similar fashion to how Symbolvalue: is
 implemented for aCollection collect: #isPlague :

 Symbolvalue: val1 value: val2
 ^ (val1 perform: self) = (val2 perform: self)

 Then :

 (#( 10 42 31 23 90 87 65) collect: #asValueHolder) sort: #value

 Answers:

  an Array(a NewValueHolder[ 10 ] a NewValueHolder[ 23 ] a NewValueHolder[
 31 ] a NewValueHolder[ 42 ] a NewValueHolder[ 65 ] a NewValueHolder[ 87 ] a
 NewValueHolder[ 90 ])

 which is correct :-).

 However I do not like:

 projects sort: [ :proj | proj author birthDate ]

 If you allow that where is the limit to the thing you want to allow ? In
 addition, I do not see any nice implementation and you could just
 implement in project

 ProjectauthorBirthDate
 ^ self author birthDate

 Best,

 Clement



 2014-03-11 9:19 GMT+01:00 Yuriy Tymchuk yuriy.tymc...@me.com:

 Hi guys.

 This is a thing that I encounter quite often.

 Eg I have a collection of projects and I want to sort them by creation
 date. It would be nice to be able to do something like:

 projects sortByProp: #creationDate

 or by birth date of the author

 projects sortByProp: [ :proj | proj author birthDate ]

 Maybe I'm wrong, but as I've told already I encounter it quite often and
 writing something like

 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]

 is boring for me.

 Cheers.
 Uko






[Pharo-dev] Touch Events VM changes

2014-03-11 Thread J.F. Rick
As we move from mouse-keyboard devices to touch-based ones, it would be
nice if we could unify touch development across the different Pharo
platforms (iOS, Android, Windows 8, Linux, etc.), so that we can start to
build touch-aware widgets and frameworks. Currently, there's a lot of
interest but no unified movement. For instance, I've got a very nice
multi-touch 27 computer that I run in Linux. I develop the applications in
Pharo but I currently use a hack to get the touch events: I use OSProcess
to start the mtdev2tuio application that takes touch input and sends it via
TUIO. I then use a UDP socket to read the events on Pharo. If I am to share
my work, I need to get beyond the hack. I (or rather Igor as I watched)
investigated the possibility of using NativeBoost calls to do the same, but
it would not work since mtdev2tuio has to run as superuser, meaning Pharo
would have to run as superuser. We came to the conclusion that this must be
a VM-level change.

I'm not a VM hacker but would like to reach the people who maintain the
linux and windows VM to see if this might not be a reasonable addition to
the standard VM. There does seem to be standard support for touch events in
XFree86, so it shouldn't be too large a change on Linux. I assume that
Windows 8 similarly makes touch events available. Is this the right place
to ask or is there another mailing list (e.g., the cog-vm)?

Cheers,

Jeff

-- 
Jochen Jeff Rick, Ph.D.
http://www.je77.com/
Skype ID: jochenrick


Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread Esteban Lorenzano
Hi,

I agree that we need a unified event model. Now… our vision is to solve that in 
image side, not in vm (and vm should send the raw events “as is”). The reason 
of why we want it in image is easy: image means pharo, and it means more hands 
(or eyes) over it. Then is easier to maintain :)
Anyway, we are slowly working on it (See Igor  Ronnie work around OSWindow). 
But is probably too slow :)

Esteban

On 11 Mar 2014, at 11:37, J.F. Rick s...@je77.com wrote:

 As we move from mouse-keyboard devices to touch-based ones, it would be nice 
 if we could unify touch development across the different Pharo platforms 
 (iOS, Android, Windows 8, Linux, etc.), so that we can start to build 
 touch-aware widgets and frameworks. Currently, there's a lot of interest but 
 no unified movement. For instance, I've got a very nice multi-touch 27 
 computer that I run in Linux. I develop the applications in Pharo but I 
 currently use a hack to get the touch events: I use OSProcess to start the 
 mtdev2tuio application that takes touch input and sends it via TUIO. I then 
 use a UDP socket to read the events on Pharo. If I am to share my work, I 
 need to get beyond the hack. I (or rather Igor as I watched) investigated the 
 possibility of using NativeBoost calls to do the same, but it would not work 
 since mtdev2tuio has to run as superuser, meaning Pharo would have to run as 
 superuser. We came to the conclusion that this must be a VM-level change.
 
 I'm not a VM hacker but would like to reach the people who maintain the linux 
 and windows VM to see if this might not be a reasonable addition to the 
 standard VM. There does seem to be standard support for touch events in 
 XFree86, so it shouldn't be too large a change on Linux. I assume that 
 Windows 8 similarly makes touch events available. Is this the right place to 
 ask or is there another mailing list (e.g., the cog-vm)?
 
 Cheers,
 
 Jeff
 
 -- 
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick



Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread Sergi Reyner
2014-03-11 10:37 GMT+00:00 J.F. Rick s...@je77.com:

 As we move from mouse-keyboard devices to touch-based ones


I certainly hope that we refers to a small group of people, unless we get
onscreen keyboards as good as physical ones, feedback included. The same
goes for touch versus physical pointer :)

Cheers,
Sergi


Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread J.F. Rick
Definitely agreed on the strategy of processing the raw events on the image
side as that will be much more flexible. But, we still need the VM to send
the raw events.

I'll check on the vm-dev list. I think I'm already subscribed to it.

Cheers,

Jeff


On Tue, Mar 11, 2014 at 12:03 PM, Esteban Lorenzano esteba...@gmail.comwrote:

 Hi,

 I agree that we need a unified event model. Now... our vision is to solve
 that in image side, not in vm (and vm should send the raw events as is).
 The reason of why we want it in image is easy: image means pharo, and it
 means more hands (or eyes) over it. Then is easier to maintain :)
 Anyway, we are slowly working on it (See Igor  Ronnie work around
 OSWindow). But is probably too slow :)

 Esteban

 On 11 Mar 2014, at 11:37, J.F. Rick s...@je77.com wrote:

 As we move from mouse-keyboard devices to touch-based ones, it would be
 nice if we could unify touch development across the different Pharo
 platforms (iOS, Android, Windows 8, Linux, etc.), so that we can start to
 build touch-aware widgets and frameworks. Currently, there's a lot of
 interest but no unified movement. For instance, I've got a very nice
 multi-touch 27 computer that I run in Linux. I develop the applications in
 Pharo but I currently use a hack to get the touch events: I use OSProcess
 to start the mtdev2tuio application that takes touch input and sends it via
 TUIO. I then use a UDP socket to read the events on Pharo. If I am to share
 my work, I need to get beyond the hack. I (or rather Igor as I watched)
 investigated the possibility of using NativeBoost calls to do the same, but
 it would not work since mtdev2tuio has to run as superuser, meaning Pharo
 would have to run as superuser. We came to the conclusion that this must be
 a VM-level change.

 I'm not a VM hacker but would like to reach the people who maintain the
 linux and windows VM to see if this might not be a reasonable addition to
 the standard VM. There does seem to be standard support for touch events in
 XFree86, so it shouldn't be too large a change on Linux. I assume that
 Windows 8 similarly makes touch events available. Is this the right place
 to ask or is there another mailing list (e.g., the cog-vm)?

 Cheers,

 Jeff

 --
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick





-- 
Jochen Jeff Rick, Ph.D.
http://www.je77.com/
Skype ID: jochenrick


Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread J.F. Rick
Hi Sergi,

Based on my experience developing touch interfaces since 2007, I believe in
touch. I believe it will be the future of interfaces and I believe it can
be better than mouse-keyboard interfaces. That said, it is not there yet.
Now is the time to innovate and get it there so that touch interfaces won't
be poor replicas of their desktop forebears. Currently, text entry is a
real problem for touch exclusive devices, but there is progress being made
on that front. We don't have the answer yet but I think it will be a
significantly different landscape in five years. In regards to touch vs
physical pointers, this is not as large of a problem as people make it out
to be. It is just that our widgets tend to be created for mouse-based
interfaces and therefore don't transition well to touch. Interfaces
designed with touch in mind can be just as smooth (if not smoother) as
mouse-based interfaces. You just have to take advantage of what touch does
well (faster, more precise routes; multi-touch gestures; bimanual
interaction) and stay clear of things it does poorly (precise touch down,
covering the target with the finger).

Cheers,

Jeff


On Tue, Mar 11, 2014 at 12:34 PM, Sergi Reyner sergi.rey...@gmail.comwrote:

 2014-03-11 10:37 GMT+00:00 J.F. Rick s...@je77.com:

 As we move from mouse-keyboard devices to touch-based ones


 I certainly hope that we refers to a small group of people, unless we
 get onscreen keyboards as good as physical ones, feedback included. The
 same goes for touch versus physical pointer :)

 Cheers,
 Sergi




-- 
Jochen Jeff Rick, Ph.D.
http://www.je77.com/
Skype ID: jochenrick


[Pharo-dev] Access to MetaRepoForPharo30

2014-03-11 Thread Gabriel Cotelli
Hi guys,
can you add me as a contributor to the MetaRepoForPharo30 project? My sthub
user is gcotelli

Gabriel


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

2014-03-11 Thread GitHub
  Branch: refs/tags/30793
  Home:   https://github.com/pharo-project/pharo-core


[Pharo-dev] [pharo-project/pharo-core] 8418a3: 30793

2014-03-11 Thread GitHub
  Branch: refs/heads/3.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: 8418a3fb5bba1056099d38b5e6759db327437dea
  
https://github.com/pharo-project/pharo-core/commit/8418a3fb5bba1056099d38b5e6759db327437dea
  Author: Jenkins Build Server bo...@pharo-project.org
  Date:   2014-03-11 (Tue, 11 Mar 2014)

  Changed paths:
M 
Kernel.package/ContextPart.class/instance/controlling/runUntilErrorOrReturnFrom_.st
A 
OpalCompiler-Core.package/OCASTTranslatorForEffect.class/instance/visitor-double
 dispatching/visitLiteralArrayNode_.st
A ScriptLoader30.package/ScriptLoader.class/instance/pharo - 
scripts/script446.st
A ScriptLoader30.package/ScriptLoader.class/instance/pharo - 
updates/update30793.st
M 
ScriptLoader30.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
A 
Spec-Debugger.package/SpecDebugger.class/instance/updating/updateContextInspectorFromContext_.st
M 
Spec-Debugger.package/SpecDebugger.class/instance/updating/updateInspectorsFromContext_.st
A 
Spec-Debugger.package/SpecDebugger.class/instance/updating/updateReceiverInspectorFromContext_.st

  Log Message:
  ---
  30793
5041 ContextPart#runUntilErrorOrReturnFrom:
https://pharo.fogbugz.com/f/cases/5041

12722 #ifNil:#ifNotNil: must return a value?
https://pharo.fogbugz.com/f/cases/12722

12699 Debugger clears selection on update
https://pharo.fogbugz.com/f/cases/12699

http://files.pharo.org/image/30/30793.zip




Re: [Pharo-dev] [Pharo-users] Tiling Window Manager in 3.0: working but still issues with WorldMorph

2014-03-11 Thread Laurent Laffont
Thanks a lot Phil. I will try to have a look.

Laurent


Le samedi 8 mars 2014, 11:57:30 p...@highoctane.be a écrit :
 TWM works in 3.0 after some work on icons and updating menus.
 
 Gofer new
 smalltalkhubUser: 'LaurentLaffont' project: 'TilingWindowManager';
 configuration;
 load.
 
 ((Smalltalk at:#ConfigurationOfTilingWindowManager) project version: '3.0')
 load
 
 You can also use
 
 ((Smalltalk at:#ConfigurationOfTilingWindowManager) project version:
 #development) load
 
 but this will for sure change over time.
 
 There is the World management icon which is still there and it looks like
 it can create worlds but switching between them just breaks havoc.
 
 Maybe should we just remove that feature from TWM as 3.0 doesn't seem to be
 multiworld friendly.
 
 Nothing done on tests nor themeing (which appears to be not that working
 well in 3.0 either due to theming changes);
 
 At least the thing is back :-) [I missed it...]
 
 Phil




Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread Igor Stasenko
Jeff, since you running linux you can look at what we have done with Ronie
not long ago.
Basically we changed VM and removed all window/event management code and
instead do everything at image side.
I think it would be good if you can try and add multi-touch events support
to the code.

If you wanna try, you need to build new VM first,
and follow this:
https://pharo.fogbugz.com/f/cases/12743/OSWindow-integration

Then you can look at OSWindow package (its X11 part) and see what is needed
to support multi-touch events.

You should build VM from sources taken from here:
https://github.com/ronsaldo/pharo-vm



On 11 March 2014 11:37, J.F. Rick s...@je77.com wrote:

 As we move from mouse-keyboard devices to touch-based ones, it would be
 nice if we could unify touch development across the different Pharo
 platforms (iOS, Android, Windows 8, Linux, etc.), so that we can start to
 build touch-aware widgets and frameworks. Currently, there's a lot of
 interest but no unified movement. For instance, I've got a very nice
 multi-touch 27 computer that I run in Linux. I develop the applications in
 Pharo but I currently use a hack to get the touch events: I use OSProcess
 to start the mtdev2tuio application that takes touch input and sends it via
 TUIO. I then use a UDP socket to read the events on Pharo. If I am to share
 my work, I need to get beyond the hack. I (or rather Igor as I watched)
 investigated the possibility of using NativeBoost calls to do the same, but
 it would not work since mtdev2tuio has to run as superuser, meaning Pharo
 would have to run as superuser. We came to the conclusion that this must be
 a VM-level change.

 I'm not a VM hacker but would like to reach the people who maintain the
 linux and windows VM to see if this might not be a reasonable addition to
 the standard VM. There does seem to be standard support for touch events in
 XFree86, so it shouldn't be too large a change on Linux. I assume that
 Windows 8 similarly makes touch events available. Is this the right place
 to ask or is there another mailing list (e.g., the cog-vm)?

 Cheers,

 Jeff

 --
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick




-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread Sergi Reyner
2014-03-11 11:54 GMT+00:00 J.F. Rick s...@je77.com:

 Hi Sergi,

 Based on my experience developing touch interfaces since 2007, I believe
 in touch.


Don´t get me wrong, I like touch and non-traditional interfaces in general.
In fact there are five android devices at home, counting phones and
tablets. I also experimented with voice and webcam control for my home
theatre. I just think that they are optimal for some scenarios and
not-so-optimal for others, and that it wouldn´t be an improvement to make
all devices touch-only. As you yourself point out:


 You just have to take advantage of what touch does well (faster, more
 precise routes; multi-touch gestures; bimanual interaction) and stay clear
 of things it does poorly (precise touch down, covering the target with the
 finger).


Both have their strengths and weaknesses. Mice have multiple buttons (I use
the wheel and the back/forward buttons a lot, both for those functions and
as configurable controls in certain games) and are easily identifiable as
distinct input devices, while touch interfaces allow more direct (not
necessarily precise) control over the actions, taking things like pointer
acceleration out of the equation. Almost everyone can draw a lowercase 'g'
on a touch screen, but doing it with a mouse takes some skill (well, and a
decent mouse). As a more concrete use case, trying to craft some pixel art
in a touch device can quickly become tedious.

I certainly wouldn´t mind at all having one or two tactile screens in my
desk. That said, I once had an interesting conversation with a costumer, in
which she told me that she couldn´t play World of Warcraft with her tactile
screen because random passing-by insects kept pressing her skills/spells
buttons at the worst times :)

Cheers,
Sergi


Re: [Pharo-dev] [ANN] RenoirSt 1.0.0 Release for Pharo 3.0

2014-03-11 Thread Benjamin
The usage of Github pages makes it look like http://spec.st/ :P

Ben

On 11 Mar 2014, at 14:13, Gabriel Cotelli g.cote...@gmail.com wrote:

 Hi,
 
 I'm announcing the first official release of RenoirSt, a DSL enabling 
 programmatic cascading style sheet generation for Pharo.
 
 For the impatient, you can load it in your 3.0 image evaluating:
 
 Gofer it
 url: 'http://smalltalkhub.com/mc/gcotelli/RenoirSt/main';
 configurationOf: 'RenoirSt';
 loadStable 
 
 or download a ready to use image from the Contribution CI Server ( a 
 ConfigurationBrowser option comming soon).
 
 Visit the project page and GitHub repository for more information on the 
 supported and planned features, and check-out the online tutorial.
 
 I hope you find it useful. Feel free to ask any questions, suggest ideas and 
 improvements, or report bugs (the issue tracker is in GitHub).
 
 Gabriel



Re: [Pharo-dev] Access to MetaRepoForPharo30

2014-03-11 Thread Damien Cassou
On Tue, Mar 11, 2014 at 12:53 PM, Gabriel Cotelli g.cote...@gmail.com wrote:
 Hi guys,
 can you add me as a contributor to the MetaRepoForPharo30 project? My sthub
 user is gcotelli


done

-- 
Damien Cassou
http://damiencassou.seasidehosting.st

Success is the ability to go from one failure to another without
losing enthusiasm.
Winston Churchill



Re: [Pharo-dev] Access to MetaRepoForPharo30

2014-03-11 Thread Serge Stinckwich
Can you add me also ?
Thank you.
Regards,

On Tue, Mar 11, 2014 at 12:53 PM, Gabriel Cotelli g.cote...@gmail.com wrote:
 Hi guys,
 can you add me as a contributor to the MetaRepoForPharo30 project? My sthub
 user is gcotelli

 Gabriel



-- 
Serge Stinckwich
UCBN  UMI UMMISCO 209 (IRD/UPMC)
Every DSL ends up being Smalltalk
http://www.doesnotunderstand.org/



Re: [Pharo-dev] Access to MetaRepoForPharo30

2014-03-11 Thread Damien Cassou
On Tue, Mar 11, 2014 at 2:50 PM, Serge Stinckwich
serge.stinckw...@gmail.com wrote:
 Can you add me also ?


done

-- 
Damien Cassou
http://damiencassou.seasidehosting.st

Success is the ability to go from one failure to another without
losing enthusiasm.
Winston Churchill



Re: [Pharo-dev] Sort by property

2014-03-11 Thread Alexandre Bergel
hi Uko,

For Roassal, we have a #sortedAs: defined on all collections

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 SequenceableCollectionsortedAs: aSortBlockOrSymbol
Answer a SortedCollection whose elements are the elements of the 
receiver. The sort order is defined by the argument, aSortBlock.
Return a new collection. This method does not do a side effect

| aSortedCollection aSortBlock |
aSortedCollection := SortedCollection new: self size.
aSortBlock := 
aSortBlockOrSymbol isSymbol 
ifTrue: [ [:a :b | |t1 t2|
t1 := (a perform: 
aSortBlockOrSymbol).
t2 := (b perform: 
aSortBlockOrSymbol).
((t1 isKindOf: Boolean) 
and: [t2 isKindOf: Boolean])
ifTrue: [ t1 ]
ifFalse: [ t1  
t2 ] ] ]
ifFalse: [ 
(aSortBlockOrSymbol numArgs = 1)
ifTrue: [ [ :v1 :v2 | 
(aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
ifFalse: [ aSortBlockOrSymbol ] ].
aSortedCollection sortBlock: aSortBlock.
aSortedCollection addAll: self.
^ aSortedCollection
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

You can use it for example:
(1 to: 4) sortedAs: #odd 
= a SortedCollection(1 3 2 4)

Collection withAllSubclasses sortedAs: #numberOfMethods
= a SortedCollection(HashBag IdentityHashBag …)

This is really handy. It should be part of Pharo I believe.

Cheers,
Alexandre


On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

 Hi guys.
 
 This is a thing that I encounter quite often.
 
 Eg I have a collection of projects and I want to sort them by creation date. 
 It would be nice to be able to do something like:
 
 projects sortByProp: #creationDate
 
 or by birth date of the author
 
 projects sortByProp: [ :proj | proj author birthDate ]
 
 Maybe I’m wrong, but as I’ve told already I encounter it quite often and 
 writing something like
 
 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]
 
 is boring for me.
 
 Cheers.
 Uko

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






Re: [Pharo-dev] how can I test soundplugin?

2014-03-11 Thread Esteban Lorenzano

On 11 Mar 2014, at 01:06, b...@openinworld.com wrote:

 J.F. Rick wrote:
 
 Yes, load PharoSound and do the following:
 
 SoundPlayer boinkScale. 
 SoundService soundEnabled.
 SoundService registeredClasses.
 SoundService reset.
 BaseSoundSystem soundEnabled: true.
 SoundService default.
 ss := SoundService default new.
 ss class soundEnabled.
 ss class soundEnabled: true.
 ss beep.
 (FMSound lowMajorScaleOn: FMSound pluckedElecBass) play.
 (FMSound lowMajorScaleOn: FMSound randomWeird1) play.
 (FMSound majorScaleOn: FMSound oboe1) play.
 FMSound testFMInteractively.
 (SampledSound bachFugueVoice2On: SampledSound new) play.
 SoundPlayer shutDown
 
 SoundPlayer boinkScale.
 SoundService soundEnabled.
 BaseSoundSystem soundEnabled: true.
 FMSound testFMInteractively.
 
 sound := FMSound pitch: 'a4' dur: 1.0 loudness: 0.4.
 sound play.
 
 SoundService default new class soundEnabled: true.
 (FMSound pitch: 'a4' dur: 1.0 loudness: 0.4) play
 
 -- 
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick
 
 
 On Mon, Mar 10, 2014 at 5:33 PM, Esteban Lorenzano esteba...@gmail.com 
 wrote:
 Hi,
 
 I’m working on the SoundPlugin (finally!) and I would like to know how can I 
 test that is working.
 Is there a package or a script that I can execute to see if it is working?
 
 cheers,
 Esteban
 
 That is really great news Esteban. Hope that includes Windows :)

working is working :)

 
 Does the SoundPlugin have sound input? 

no idea :)
I just going to make sure the plugins works… but never worked on sound :P

Esteban

 It might be useful on the CI virtual machines to have an audio loopback so 
 the image can test that it receives what it sends.
 * http://superuser.com/questions/55580/virtual-sound-card-driver-for-windows
 * http://forum.virtualaudiostreaming.net/topic24.html
 * 
 http://www.pcworld.idg.com.au/article/73458/audio_-_looping_back_your_sound_card_-_no_cables_required/
 * http://www.e2esoft.cn/vsc/
 
 I'd be interested in working on that aspect.  
 cheers -ben



Re: [Pharo-dev] how can I test soundplugin?

2014-03-11 Thread Esteban Lorenzano
so… I tested this (in mac, still does not tried in other platforms).

On 10 Mar 2014, at 19:33, J.F. Rick s...@je77.com wrote:

 Yes, load PharoSound and do the following:
 
 SoundPlayer boinkScale. 
 SoundService soundEnabled.
 SoundService registeredClasses.
 SoundService reset.

until here works.

 BaseSoundSystem soundEnabled: true.
 SoundService default.
 ss := SoundService default new.
 ss class soundEnabled.
 ss class soundEnabled: true.
 ss beep.

until here does not works, but looks like a package problem, not a plugin one. 

 (FMSound lowMajorScaleOn: FMSound pluckedElecBass) play.
 (FMSound lowMajorScaleOn: FMSound randomWeird1) play.
 (FMSound majorScaleOn: FMSound oboe1) play.
 FMSound testFMInteractively.
 (SampledSound bachFugueVoice2On: SampledSound new) play.
 SoundPlayer shutDown

all of this works.

 
 SoundPlayer boinkScale.
 SoundService soundEnabled.
 BaseSoundSystem soundEnabled: true.
 FMSound testFMInteractively.
 
 sound := FMSound pitch: 'a4' dur: 1.0 loudness: 0.4.
 sound play.

all of this too.

 
 SoundService default new class soundEnabled: true.
 (FMSound pitch: 'a4' dur: 1.0 loudness: 0.4) play

and this too (which is the same as before).

So… I assume is working. 
I will try in linux and windows now. 

Esteban

 
 
 On Mon, Mar 10, 2014 at 5:33 PM, Esteban Lorenzano esteba...@gmail.com 
 wrote:
 Hi,
 
 I’m working on the SoundPlugin (finally!) and I would like to know how can I 
 test that is working.
 Is there a package or a script that I can execute to see if it is working?
 
 cheers,
 Esteban
 
 
 
 -- 
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick



Re: [Pharo-dev] About inspectors

2014-03-11 Thread Juan
Tudor

Thanks for amazing work, just report a trouble , i follow the
http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/
Instructions and trying with one postgres database, one table with date
fields fire problem's SqNumberParser class  is missing in moose image, and
the postgres
use this to read dates or timestamps fields .

best regards
jmdc




On Sun, Mar 9, 2014 at 7:06 PM, Tudor Girba tu...@tudorgirba.com wrote:

 Thanks for the interest.

 I added now a new blog post in which I detail an investigation scenario of
 a Postgres DB with the GTInspector:

 http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/

 The post includes a video that kind of gets you through the most important
 parts:
 - use the playground
 - query the DB and preview the results through dedicated presentations
 - navigate through objects and code to learn the API
 - build a visualization in place and continue exploration
 - extend the inspector with a dedicated presentation

 Please let me know what you think.

 Cheers,
 Doru



 On Sat, Mar 8, 2014 at 8:48 AM, p...@highoctane.be p...@highoctane.bewrote:

 Doru,

 Where to look on your blog for a view on the essentials of this? I see
 http://www.humane-assessment.com/blog/making-the-pharo-settings-browser-open-faster-with-gtinspector/for
  example. A video?

 I look at the blog and vids but it is a bit hard to find a basic demo to
 grasp things.

 TIA
 Phil


 On Sat, Mar 8, 2014 at 8:16 AM, Tudor Girba tu...@tudorgirba.com wrote:

 I hope not. What are we trying to optimize?

 If you look closely at the GT work, you might notice that it is not just
 a tool, it's a whole new philosophy for coding. The EyeInspector picked
 only one aspect out of a whole.

 One high goal is to change programming such that the inspector +
 debugger to capture most of the coding experience. This is what live means.
 Right now, in the default Pharo we only code small things in the debugger
 and nothing in the inspector. We work on the idea of a moldable IDE that
 will change all that.

 Let's look at some facts. Right now, in my image I have 75 different
 extensions for GTInspector. And the total amount of lines of code has
 barely passed 1000 LOC (including all utility code). These are not just
 independent views, but they are combinable. The amount of use cases
 supported span a wide range: querying source code, visualizing performance,
 navigating file system, querying DB, and more (read the posts from
 humane-assessment.com for hints in this direction).

 We programmed most of these extensions from within the inspector both
 because it's fun and because it's significantly more productive. And I am
 not the only one. This power is not serendipity, it's by design. And we
 only started to untap this potential.

 There is still a long way for the concept of inspector and I believe
 there is a large payoff in it, too.

 Optimizing for a small thing now should not be the way to go :)

 Cheers,
 Doru




 On Fri, Mar 7, 2014 at 11:23 PM, Sven Van Caekenberghe s...@stfx.euwrote:

 Well I would hope that some kind of convergence would be possible in
 the future. Maybe some kind of abstract meta description like magritte,
 that different tools can use.

 On 07 Mar 2014, at 16:43, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi everyone.
 
  This day I've attended Moose dojo and I'm pretty impressed with the
 possibilities of GTInspector. The one thing that I've noticed is that both
 GTInspactor and EyeInspector support custom inspections for objects. I'm
 wandering if we can come up with a common protocol to give an object
 specific infector view, and not develop a separate thing for each 
 inspector.
 
  Uko





 --
 www.tudorgirba.com

 Every thing has its own flow





 --
 www.tudorgirba.com

 Every thing has its own flow



Re: [Pharo-dev] About inspectors

2014-03-11 Thread Juan
Tudor


 what steps I need to follow  to load the file-exploration example of video
?
any ConfigurationOfxx . package, monticello repository etc...

best


jmdc


On Tue, Mar 11, 2014 at 2:11 PM, Juan smalltalker.marc...@gmail.com wrote:

 Tudor

 Thanks for amazing work, just report a trouble , i follow the
 http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/
 Instructions and trying with one postgres database, one table with date
 fields fire problem's SqNumberParser class  is missing in moose image, and
 the postgres
 use this to read dates or timestamps fields .

 best regards
 jmdc




 On Sun, Mar 9, 2014 at 7:06 PM, Tudor Girba tu...@tudorgirba.com wrote:

 Thanks for the interest.

 I added now a new blog post in which I detail an investigation scenario
 of a Postgres DB with the GTInspector:

 http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/

 The post includes a video that kind of gets you through the most
 important parts:
 - use the playground
 - query the DB and preview the results through dedicated presentations
 - navigate through objects and code to learn the API
 - build a visualization in place and continue exploration
 - extend the inspector with a dedicated presentation

 Please let me know what you think.

 Cheers,
 Doru



 On Sat, Mar 8, 2014 at 8:48 AM, p...@highoctane.be p...@highoctane.bewrote:

 Doru,

 Where to look on your blog for a view on the essentials of this? I see
 http://www.humane-assessment.com/blog/making-the-pharo-settings-browser-open-faster-with-gtinspector/for
  example. A video?

 I look at the blog and vids but it is a bit hard to find a basic demo to
 grasp things.

 TIA
 Phil


 On Sat, Mar 8, 2014 at 8:16 AM, Tudor Girba tu...@tudorgirba.comwrote:

 I hope not. What are we trying to optimize?

 If you look closely at the GT work, you might notice that it is not
 just a tool, it's a whole new philosophy for coding. The EyeInspector
 picked only one aspect out of a whole.

 One high goal is to change programming such that the inspector +
 debugger to capture most of the coding experience. This is what live means.
 Right now, in the default Pharo we only code small things in the debugger
 and nothing in the inspector. We work on the idea of a moldable IDE that
 will change all that.

 Let's look at some facts. Right now, in my image I have 75 different
 extensions for GTInspector. And the total amount of lines of code has
 barely passed 1000 LOC (including all utility code). These are not just
 independent views, but they are combinable. The amount of use cases
 supported span a wide range: querying source code, visualizing performance,
 navigating file system, querying DB, and more (read the posts from
 humane-assessment.com for hints in this direction).

 We programmed most of these extensions from within the inspector both
 because it's fun and because it's significantly more productive. And I am
 not the only one. This power is not serendipity, it's by design. And we
 only started to untap this potential.

 There is still a long way for the concept of inspector and I believe
 there is a large payoff in it, too.

 Optimizing for a small thing now should not be the way to go :)

 Cheers,
 Doru




 On Fri, Mar 7, 2014 at 11:23 PM, Sven Van Caekenberghe s...@stfx.euwrote:

 Well I would hope that some kind of convergence would be possible in
 the future. Maybe some kind of abstract meta description like magritte,
 that different tools can use.

 On 07 Mar 2014, at 16:43, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi everyone.
 
  This day I've attended Moose dojo and I'm pretty impressed with the
 possibilities of GTInspector. The one thing that I've noticed is that both
 GTInspactor and EyeInspector support custom inspections for objects. I'm
 wandering if we can come up with a common protocol to give an object
 specific infector view, and not develop a separate thing for each 
 inspector.
 
  Uko





 --
 www.tudorgirba.com

 Every thing has its own flow





 --
 www.tudorgirba.com

 Every thing has its own flow





Re: [Pharo-dev] Sort by property

2014-03-11 Thread Eliot Miranda
Hi Alexandre,

IMO the isKindOf:, apart from being ugly, will hurt performance badly.
 Why not apply aSortBlockOrSymbol to the first element and then choose the
block appropriately?  e.g.

aSortBlockOrSymbol isSymbol
ifTrue:
[(#(true false) includes: (self first perform:
aSortBlockOrSymbol)
ifTrue:
 [[:a :b | (a perform: aSortBlockOrSymbol)]]
ifFalse:
 [[:a :b | (a perform: aSortBlockOrSymbol)  (b
perform: aSortBlockOrSymbol)]]]
...

Nicer to read and faster, no?

On Tue, Mar 11, 2014 at 8:17 AM, Alexandre Bergel
alexandre.ber...@me.comwrote:

 hi Uko,

 For Roassal, we have a #sortedAs: defined on all collections

 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  SequenceableCollectionsortedAs: aSortBlockOrSymbol
 Answer a SortedCollection whose elements are the elements of the
 receiver. The sort order is defined by the argument, aSortBlock.
 Return a new collection. This method does not do a side effect

 | aSortedCollection aSortBlock |
 aSortedCollection := SortedCollection new: self size.
 aSortBlock :=
 aSortBlockOrSymbol isSymbol
 ifTrue: [ [:a :b | |t1 t2|
 t1 := (a perform:
 aSortBlockOrSymbol).
 t2 := (b perform:
 aSortBlockOrSymbol).
 ((t1 isKindOf:
 Boolean) and: [t2 isKindOf: Boolean])
 ifTrue: [
 t1 ]
 ifFalse: [
 t1  t2 ] ] ]
 ifFalse: [
 (aSortBlockOrSymbol numArgs = 1)
 ifTrue: [ [ :v1 :v2 |
 (aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
 ifFalse: [ aSortBlockOrSymbol ] ].
 aSortedCollection sortBlock: aSortBlock.
 aSortedCollection addAll: self.
 ^ aSortedCollection
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 You can use it for example:
 (1 to: 4) sortedAs: #odd
 = a SortedCollection(1 3 2 4)

 Collection withAllSubclasses sortedAs: #numberOfMethods
 = a SortedCollection(HashBag IdentityHashBag ...)

 This is really handy. It should be part of Pharo I believe.

 Cheers,
 Alexandre


 On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi guys.
 
  This is a thing that I encounter quite often.
 
  Eg I have a collection of projects and I want to sort them by creation
 date. It would be nice to be able to do something like:
 
  projects sortByProp: #creationDate
 
  or by birth date of the author
 
  projects sortByProp: [ :proj | proj author birthDate ]
 
  Maybe I'm wrong, but as I've told already I encounter it quite often and
 writing something like
 
  projects sortBy: [ :prev :next | prev creationDate = next creationDate ]
 
  is boring for me.
 
  Cheers.
  Uko

 --
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.







-- 
best,
Eliot


Re: [Pharo-dev] About inspectors

2014-03-11 Thread Tudor Girba
Hi Juan,

Just download the latest Moose image and you can explore the file system.

Cheers,
Doru


On Tue, Mar 11, 2014 at 6:17 PM, Juan smalltalker.marc...@gmail.com wrote:

 Tudor


  what steps I need to follow  to load the file-exploration example of
 video ?
 any ConfigurationOfxx . package, monticello repository etc...

 best


 jmdc


 On Tue, Mar 11, 2014 at 2:11 PM, Juan smalltalker.marc...@gmail.comwrote:

 Tudor

 Thanks for amazing work, just report a trouble , i follow the
 http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/
 Instructions and trying with one postgres database, one table with date
 fields fire problem's SqNumberParser class  is missing in moose image, and
 the postgres
 use this to read dates or timestamps fields .

 best regards
 jmdc




 On Sun, Mar 9, 2014 at 7:06 PM, Tudor Girba tu...@tudorgirba.com wrote:

 Thanks for the interest.

 I added now a new blog post in which I detail an investigation scenario
 of a Postgres DB with the GTInspector:

 http://www.humane-assessment.com/blog/dynamic-exploration-of-a-postgres-db-with-the-gtinspector/

 The post includes a video that kind of gets you through the most
 important parts:
 - use the playground
 - query the DB and preview the results through dedicated presentations
 - navigate through objects and code to learn the API
 - build a visualization in place and continue exploration
 - extend the inspector with a dedicated presentation

 Please let me know what you think.

 Cheers,
 Doru



 On Sat, Mar 8, 2014 at 8:48 AM, p...@highoctane.be 
 p...@highoctane.bewrote:

 Doru,

 Where to look on your blog for a view on the essentials of this? I see
 http://www.humane-assessment.com/blog/making-the-pharo-settings-browser-open-faster-with-gtinspector/for
  example. A video?

 I look at the blog and vids but it is a bit hard to find a basic demo
 to grasp things.

 TIA
 Phil


 On Sat, Mar 8, 2014 at 8:16 AM, Tudor Girba tu...@tudorgirba.comwrote:

 I hope not. What are we trying to optimize?

 If you look closely at the GT work, you might notice that it is not
 just a tool, it's a whole new philosophy for coding. The EyeInspector
 picked only one aspect out of a whole.

 One high goal is to change programming such that the inspector +
 debugger to capture most of the coding experience. This is what live 
 means.
 Right now, in the default Pharo we only code small things in the debugger
 and nothing in the inspector. We work on the idea of a moldable IDE that
 will change all that.

 Let's look at some facts. Right now, in my image I have 75 different
 extensions for GTInspector. And the total amount of lines of code has
 barely passed 1000 LOC (including all utility code). These are not just
 independent views, but they are combinable. The amount of use cases
 supported span a wide range: querying source code, visualizing 
 performance,
 navigating file system, querying DB, and more (read the posts from
 humane-assessment.com for hints in this direction).

 We programmed most of these extensions from within the inspector both
 because it's fun and because it's significantly more productive. And I am
 not the only one. This power is not serendipity, it's by design. And we
 only started to untap this potential.

 There is still a long way for the concept of inspector and I believe
 there is a large payoff in it, too.

 Optimizing for a small thing now should not be the way to go :)

 Cheers,
 Doru




 On Fri, Mar 7, 2014 at 11:23 PM, Sven Van Caekenberghe 
 s...@stfx.euwrote:

 Well I would hope that some kind of convergence would be possible in
 the future. Maybe some kind of abstract meta description like magritte,
 that different tools can use.

 On 07 Mar 2014, at 16:43, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi everyone.
 
  This day I've attended Moose dojo and I'm pretty impressed with the
 possibilities of GTInspector. The one thing that I've noticed is that 
 both
 GTInspactor and EyeInspector support custom inspections for objects. I'm
 wandering if we can come up with a common protocol to give an object
 specific infector view, and not develop a separate thing for each 
 inspector.
 
  Uko





 --
 www.tudorgirba.com

 Every thing has its own flow





 --
 www.tudorgirba.com

 Every thing has its own flow






-- 
www.tudorgirba.com

Every thing has its own flow


Re: [Pharo-dev] Sort by property

2014-03-11 Thread Eliot Miranda
On Tue, Mar 11, 2014 at 12:19 PM, Eliot Miranda eliot.mira...@gmail.comwrote:

 Hi Alexandre,

 IMO the isKindOf:, apart from being ugly, will hurt performance badly.
  Why not apply aSortBlockOrSymbol to the first element and then choose the
 block appropriately?  e.g.

 aSortBlockOrSymbol isSymbol
 ifTrue:
 [(#(true false) includes: (self first perform:
 aSortBlockOrSymbol)
 ifTrue:
  [[:a :b | (a perform: aSortBlockOrSymbol)]]
 ifFalse:
  [[:a :b | (a perform: aSortBlockOrSymbol)  (b
 perform: aSortBlockOrSymbol)]]]
 ...

 Nicer to read and faster, no?

 On Tue, Mar 11, 2014 at 8:17 AM, Alexandre Bergel alexandre.ber...@me.com
  wrote:

 hi Uko,

 For Roassal, we have a #sortedAs: defined on all collections

 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  SequenceableCollectionsortedAs: aSortBlockOrSymbol
 Answer a SortedCollection whose elements are the elements of the
 receiver. The sort order is defined by the argument, aSortBlock.
 Return a new collection. This method does not do a side effect

 | aSortedCollection aSortBlock |
 aSortedCollection := SortedCollection new: self size.
 aSortBlock :=
 aSortBlockOrSymbol isSymbol
 ifTrue: [ [:a :b | |t1 t2|
 t1 := (a perform:
 aSortBlockOrSymbol).
 t2 := (b perform:
 aSortBlockOrSymbol).
 ((t1 isKindOf:
 Boolean) and: [t2 isKindOf: Boolean])
 ifTrue: [
 t1 ]
 ifFalse:
 [ t1  t2 ] ] ]
 ifFalse: [
 (aSortBlockOrSymbol numArgs = 1)
 ifTrue: [ [ :v1 :v2 |
 (aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
 ifFalse: [ aSortBlockOrSymbol ] ].
 aSortedCollection sortBlock: aSortBlock.
 aSortedCollection addAll: self.
 ^ aSortedCollection
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 You can use it for example:
 (1 to: 4) sortedAs: #odd
 = a SortedCollection(1 3 2 4)

 Collection withAllSubclasses sortedAs: #numberOfMethods
 = a SortedCollection(HashBag IdentityHashBag ...)

 This is really handy. It should be part of Pharo I believe.

 Cheers,
 Alexandre


 On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi guys.
 
  This is a thing that I encounter quite often.
 
  Eg I have a collection of projects and I want to sort them by creation
 date. It would be nice to be able to do something like:
 
  projects sortByProp: #creationDate
 
  or by birth date of the author
 
  projects sortByProp: [ :proj | proj author birthDate ]
 
  Maybe I'm wrong, but as I've told already I encounter it quite often
 and writing something like
 
  projects sortBy: [ :prev :next | prev creationDate = next creationDate
 ]
 
  is boring for me.
 
  Cheers.
  Uko

 --
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.







 --
 best,
 Eliot




-- 
best,
Eliot


SequenceableCollection-sortedAs.st
Description: Binary data


Re: [Pharo-dev] Sort by property

2014-03-11 Thread Eliot Miranda
and here's one with a better comment that includes examples


On Tue, Mar 11, 2014 at 12:19 PM, Eliot Miranda eliot.mira...@gmail.comwrote:

 Hi Alexandre,

 IMO the isKindOf:, apart from being ugly, will hurt performance badly.
  Why not apply aSortBlockOrSymbol to the first element and then choose the
 block appropriately?  e.g.

 aSortBlockOrSymbol isSymbol
 ifTrue:
 [(#(true false) includes: (self first perform:
 aSortBlockOrSymbol)
 ifTrue:
  [[:a :b | (a perform: aSortBlockOrSymbol)]]
 ifFalse:
  [[:a :b | (a perform: aSortBlockOrSymbol)  (b
 perform: aSortBlockOrSymbol)]]]
 ...

 Nicer to read and faster, no?

 On Tue, Mar 11, 2014 at 8:17 AM, Alexandre Bergel alexandre.ber...@me.com
  wrote:

 hi Uko,

 For Roassal, we have a #sortedAs: defined on all collections

 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  SequenceableCollectionsortedAs: aSortBlockOrSymbol
 Answer a SortedCollection whose elements are the elements of the
 receiver. The sort order is defined by the argument, aSortBlock.
 Return a new collection. This method does not do a side effect

 | aSortedCollection aSortBlock |
 aSortedCollection := SortedCollection new: self size.
 aSortBlock :=
 aSortBlockOrSymbol isSymbol
 ifTrue: [ [:a :b | |t1 t2|
 t1 := (a perform:
 aSortBlockOrSymbol).
 t2 := (b perform:
 aSortBlockOrSymbol).
 ((t1 isKindOf:
 Boolean) and: [t2 isKindOf: Boolean])
 ifTrue: [
 t1 ]
 ifFalse:
 [ t1  t2 ] ] ]
 ifFalse: [
 (aSortBlockOrSymbol numArgs = 1)
 ifTrue: [ [ :v1 :v2 |
 (aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
 ifFalse: [ aSortBlockOrSymbol ] ].
 aSortedCollection sortBlock: aSortBlock.
 aSortedCollection addAll: self.
 ^ aSortedCollection
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 You can use it for example:
 (1 to: 4) sortedAs: #odd
 = a SortedCollection(1 3 2 4)

 Collection withAllSubclasses sortedAs: #numberOfMethods
 = a SortedCollection(HashBag IdentityHashBag ...)

 This is really handy. It should be part of Pharo I believe.

 Cheers,
 Alexandre


 On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

  Hi guys.
 
  This is a thing that I encounter quite often.
 
  Eg I have a collection of projects and I want to sort them by creation
 date. It would be nice to be able to do something like:
 
  projects sortByProp: #creationDate
 
  or by birth date of the author
 
  projects sortByProp: [ :proj | proj author birthDate ]
 
  Maybe I'm wrong, but as I've told already I encounter it quite often
 and writing something like
 
  projects sortBy: [ :prev :next | prev creationDate = next creationDate
 ]
 
  is boring for me.
 
  Cheers.
  Uko

 --
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.







 --
 best,
 Eliot




-- 
best,
Eliot


SequenceableCollection-sortedAs.st
Description: Binary data


Re: [Pharo-dev] [Pharo-users] Phratch one-click

2014-03-11 Thread jannik laval
Hi Hilaire,


2014-03-11 17:27 GMT+01:00 Hilaire Fernandes hilaire.fernan...@gmail.com:

 Hi Jannik,

 Don't use the change/update event mecanism.
 This mean a lot of changes in your model.


Yes, this is what I understand :)


 In DrGeo I use a simple loop to update the sketch, but i guess it is
 more complicated with Pratch as you have parallel threads. In the other
 hand, is the original Scratch implemented with change/update? If so why
 it is not as slow?


I don't know why, probably due to the evolution of Pharo.

But, with JB we found some code that we changed: now it is really faster.
It is integrated in Phratch2.0.

We also saw a lot of other things to improve, it will come soon.

Cheers,
Jannik



 Hilaire


 Le 06/03/2014 20:42, jannik laval a écrit :
  Hi Hilaire,
 
  Hum, probably this comes from there...
  Could you explain a bit more how to change it ?
 
  Cheers,
  Jannik
 
 
  2014-03-05 11:19 GMT+01:00 Hilaire Fernandes
  hilaire.fernan...@gmail.com
  mailto:hilaire.fernan...@gmail.com:
 
  For event, how is it developed?
 
  I remember, when I started developing DrGeo I used the change/update
  event mecanism. Then I dropped it for a simple linear top/down
 update of
  the geometric tree model, it becames much faster after that.
 
  Hilaire
 
  Le 05/03/2014 10:44, jannik laval a écrit :
  
   I think now that we need some profiling.
   Any expert for that ?
  
 
  --
  Dr. Geo http://drgeo.eu
 
 
 
 
 
  --
 
  ~~Jannik Laval~~
  École des Mines de Douai
  Enseignant-chercheur
  http://www.jannik-laval.eu
  http://car.mines-douai.fr/
 

 --
 Dr. Geo http://drgeo.eu





-- 

~~Jannik Laval~~
École des Mines de Douai
Enseignant-chercheur
http://www.jannik-laval.eu
http://car.mines-douai.fr/


Re: [Pharo-dev] [ANN] RenoirSt 1.0.0 Release for Pharo 3.0

2014-03-11 Thread Pharo4Stef
Gabriel 

your tutorial is really cool :)

Stef

On 11 Mar 2014, at 21:04, Pharo4Stef pharo4s...@free.fr wrote:

 Gabriel
 
 I would love to write a chapter based on your tutorial for the next book.
 Is it ok for you?
 I can do that during a boring meeting. :)
 Stef
 
 On 11 Mar 2014, at 14:13, Gabriel Cotelli g.cote...@gmail.com wrote:
 
 Hi,
 
 I'm announcing the first official release of RenoirSt, a DSL enabling 
 programmatic cascading style sheet generation for Pharo.
 
 For the impatient, you can load it in your 3.0 image evaluating:
 
 Gofer it
 url: 'http://smalltalkhub.com/mc/gcotelli/RenoirSt/main';
 configurationOf: 'RenoirSt';
 loadStable 
 
 or download a ready to use image from the Contribution CI Server ( a 
 ConfigurationBrowser option comming soon).
 
 Visit the project page and GitHub repository for more information on the 
 supported and planned features, and check-out the online tutorial.
 
 I hope you find it useful. Feel free to ask any questions, suggest ideas and 
 improvements, or report bugs (the issue tracker is in GitHub).
 
 Gabriel
 



Re: [Pharo-dev] Sort by property

2014-03-11 Thread Pharo4Stef
Thanks eliot.
 

On 11 Mar 2014, at 20:51, Eliot Miranda eliot.mira...@gmail.com wrote:

 and here's one with a better comment that includes examples
 
 
 On Tue, Mar 11, 2014 at 12:19 PM, Eliot Miranda eliot.mira...@gmail.com 
 wrote:
 Hi Alexandre,
 
 IMO the isKindOf:, apart from being ugly, will hurt performance badly.  
 Why not apply aSortBlockOrSymbol to the first element and then choose the 
 block appropriately?  e.g.
 
 aSortBlockOrSymbol isSymbol
 ifTrue:
 [(#(true false) includes: (self first perform: aSortBlockOrSymbol)
 ifTrue:
  [[:a :b | (a perform: aSortBlockOrSymbol)]]
 ifFalse:
  [[:a :b | (a perform: aSortBlockOrSymbol)  (b perform: 
 aSortBlockOrSymbol)]]]
 ...
 
 Nicer to read and faster, no?
 
 On Tue, Mar 11, 2014 at 8:17 AM, Alexandre Bergel alexandre.ber...@me.com 
 wrote:
 hi Uko,
 
 For Roassal, we have a #sortedAs: defined on all collections
 
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  SequenceableCollectionsortedAs: aSortBlockOrSymbol
 Answer a SortedCollection whose elements are the elements of the
 receiver. The sort order is defined by the argument, aSortBlock.
 Return a new collection. This method does not do a side effect
 
 | aSortedCollection aSortBlock |
 aSortedCollection := SortedCollection new: self size.
 aSortBlock :=
 aSortBlockOrSymbol isSymbol
 ifTrue: [ [:a :b | |t1 t2|
 t1 := (a perform: 
 aSortBlockOrSymbol).
 t2 := (b perform: 
 aSortBlockOrSymbol).
 ((t1 isKindOf: 
 Boolean) and: [t2 isKindOf: Boolean])
 ifTrue: [ t1 ]
 ifFalse: [ t1 
  t2 ] ] ]
 ifFalse: [
 (aSortBlockOrSymbol numArgs = 1)
 ifTrue: [ [ :v1 :v2 | 
 (aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
 ifFalse: [ aSortBlockOrSymbol ] ].
 aSortedCollection sortBlock: aSortBlock.
 aSortedCollection addAll: self.
 ^ aSortedCollection
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
 You can use it for example:
 (1 to: 4) sortedAs: #odd
 = a SortedCollection(1 3 2 4)
 
 Collection withAllSubclasses sortedAs: #numberOfMethods
 = a SortedCollection(HashBag IdentityHashBag …)
 
 This is really handy. It should be part of Pharo I believe.
 
 Cheers,
 Alexandre
 
 
 On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 
  Hi guys.
 
  This is a thing that I encounter quite often.
 
  Eg I have a collection of projects and I want to sort them by creation 
  date. It would be nice to be able to do something like:
 
  projects sortByProp: #creationDate
 
  or by birth date of the author
 
  projects sortByProp: [ :proj | proj author birthDate ]
 
  Maybe I’m wrong, but as I’ve told already I encounter it quite often and 
  writing something like
 
  projects sortBy: [ :prev :next | prev creationDate = next creationDate ]
 
  is boring for me.
 
  Cheers.
  Uko
 
 --
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 
 
 
 
 -- 
 best,
 Eliot
 
 
 
 -- 
 best,
 Eliot
 SequenceableCollection-sortedAs.st



Re: [Pharo-dev] Sort by property

2014-03-11 Thread Carlo
HiSince Symbol and Blocks are polymorphic could we not simplify the code to be:SequenceableCollectionsortedAs: aSortBlockOrSymbol	"Answer a SortedCollection whose elements are the elements of the	receiver. The sort order is defined by the argument, aSortBlockOrSymbol. The receiver cannot be empty. Answer a new collection. This method does not side effect the	receiver. e.g.			SequenceableCollection withAllSubclasses sortedAs: #name.			SequenceableCollection withAllSubclasses sortedAs: [:class | class	methodDict size]."	| aSortBlock |	aSortBlock := (#(true false )	includes: (aSortBlockOrSymbol value: self first))ifTrue: [[:a :b | aSortBlockOrSymbol value: a]]ifFalse: [[:a :b | (aSortBlockOrSymbol value: a)  (aSortBlockOrSymbol value: b)]].	^ (SortedCollection new: self size) sortBlock: aSortBlock;		 addAll: self;		 yourself

SequenceableCollection-sortedAs.st
Description: Binary data
CheersCarloOn 12 Mar 2014, at 12:32 AM, Pharo4Stef pharo4s...@free.fr wrote:Thanks eliot.On 11 Mar 2014, at 20:51, Eliot Miranda eliot.mira...@gmail.com wrote:and here's one with a better comment that includes examplesOn Tue, Mar 11, 2014 at 12:19 PM, Eliot Miranda eliot.mira...@gmail.com wrote:
Hi Alexandre,  IMO the isKindOf:, apart from being ugly, will hurt performance badly. Why not applyaSortBlockOrSymbol to the first element and then choose the block appropriately? e.g.

  aSortBlockOrSymbol isSymbol
ifTrue:  [(#(true false) includes: (self first perform:aSortBlockOrSymbol)

ifTrue:  [[:a :b |(a perform: aSortBlockOrSymbol)]]

ifFalse:  [[:a :b |(a perform: aSortBlockOrSymbol) (b perform: aSortBlockOrSymbol)]]]

  ...
Nicer to read and faster, no?On Tue, Mar 11, 2014 at 8:17 AM, Alexandre Bergel alexandre.ber...@me.com wrote:

hi Uko,

For Roassal, we have a #sortedAs: defined on all collections

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SequenceableCollectionsortedAs: aSortBlockOrSymbol
"Answer a SortedCollection whose elements are the elements of the
receiver. The sort order is defined by the argument, aSortBlock."
"Return a new collection. This method does not do a side effect"

| aSortedCollection aSortBlock |
aSortedCollection := SortedCollection new: self size.
aSortBlock :=
aSortBlockOrSymbol isSymbol
ifTrue: [ [:a :b | |t1 t2|
t1 := (a perform: aSortBlockOrSymbol).
t2 := (b perform: aSortBlockOrSymbol).
((t1 isKindOf: Boolean) and: [t2 isKindOf: Boolean])
ifTrue: [ t1 ]
ifFalse: [ t1  t2 ] ] ]
ifFalse: [
(aSortBlockOrSymbol numArgs = 1)
ifTrue: [ [ :v1 :v2 | (aSortBlockOrSymbol value: v1)  (aSortBlockOrSymbol value: v2) ] ]
ifFalse: [ aSortBlockOrSymbol ] ].
aSortedCollection sortBlock: aSortBlock.
aSortedCollection addAll: self.
^ aSortedCollection
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

You can use it for example:
(1 to: 4) sortedAs: #odd
= a SortedCollection(1 3 2 4)

Collection withAllSubclasses sortedAs: #numberOfMethods
= a SortedCollection(HashBag IdentityHashBag …)

This is really handy. It should be part of Pharo I believe.

Cheers,
Alexandre


On Mar 11, 2014, at 5:19 AM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

 Hi guys.

 This is a thing that I encounter quite often.

 Eg I have a collection of projects and I want to sort them by creation date. It would be nice to be able to do something like:

 projects sortByProp: #creationDate

 or by birth date of the author

 projects sortByProp: [ :proj | proj author birthDate ]

 Maybe I’m wrong, but as I’ve told already I encounter it quite often and writing something like

 projects sortBy: [ :prev :next | prev creationDate = next creationDate ]

 is boring for me.

 Cheers.
 Uko

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




-- best,Eliot

-- best,Eliot

SequenceableCollection-sortedAs.st

Re: [Pharo-dev] [ANN] RenoirSt 1.0.0 Release for Pharo 3.0

2014-03-11 Thread Sven Van Caekenberghe
Yes, there seems to be a hype of every improving documentation, blog posts, 
screen casts and so on.

Could this be a sign of a maturing community ?

Great work, Gabriel !

On 11 Mar 2014, at 22:06, Pharo4Stef pharo4s...@free.fr wrote:

 Gabriel 
 
 your tutorial is really cool :)
 
 Stef
 
 On 11 Mar 2014, at 21:04, Pharo4Stef pharo4s...@free.fr wrote:
 
 Gabriel
 
 I would love to write a chapter based on your tutorial for the next book.
 Is it ok for you?
 I can do that during a boring meeting. :)
 Stef
 
 On 11 Mar 2014, at 14:13, Gabriel Cotelli g.cote...@gmail.com wrote:
 
 Hi,
 
 I'm announcing the first official release of RenoirSt, a DSL enabling 
 programmatic cascading style sheet generation for Pharo.
 
 For the impatient, you can load it in your 3.0 image evaluating:
 
 Gofer it
 url: 'http://smalltalkhub.com/mc/gcotelli/RenoirSt/main';
 configurationOf: 'RenoirSt';
 loadStable 
 
 or download a ready to use image from the Contribution CI Server ( a 
 ConfigurationBrowser option comming soon).
 
 Visit the project page and GitHub repository for more information on the 
 supported and planned features, and check-out the online tutorial.
 
 I hope you find it useful. Feel free to ask any questions, suggest ideas 
 and improvements, or report bugs (the issue tracker is in GitHub).
 
 Gabriel
 
 




Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread p...@highoctane.be
I've got a Windows 8 laptop with a touch screen. So, I now have to look how
the events are provided.

Phil




On Tue, Mar 11, 2014 at 12:03 PM, Esteban Lorenzano esteba...@gmail.comwrote:

 Hi,

 I agree that we need a unified event model. Now... our vision is to solve
 that in image side, not in vm (and vm should send the raw events as is).
 The reason of why we want it in image is easy: image means pharo, and it
 means more hands (or eyes) over it. Then is easier to maintain :)
 Anyway, we are slowly working on it (See Igor  Ronnie work around
 OSWindow). But is probably too slow :)

 Esteban

 On 11 Mar 2014, at 11:37, J.F. Rick s...@je77.com wrote:

 As we move from mouse-keyboard devices to touch-based ones, it would be
 nice if we could unify touch development across the different Pharo
 platforms (iOS, Android, Windows 8, Linux, etc.), so that we can start to
 build touch-aware widgets and frameworks. Currently, there's a lot of
 interest but no unified movement. For instance, I've got a very nice
 multi-touch 27 computer that I run in Linux. I develop the applications in
 Pharo but I currently use a hack to get the touch events: I use OSProcess
 to start the mtdev2tuio application that takes touch input and sends it via
 TUIO. I then use a UDP socket to read the events on Pharo. If I am to share
 my work, I need to get beyond the hack. I (or rather Igor as I watched)
 investigated the possibility of using NativeBoost calls to do the same, but
 it would not work since mtdev2tuio has to run as superuser, meaning Pharo
 would have to run as superuser. We came to the conclusion that this must be
 a VM-level change.

 I'm not a VM hacker but would like to reach the people who maintain the
 linux and windows VM to see if this might not be a reasonable addition to
 the standard VM. There does seem to be standard support for touch events in
 XFree86, so it shouldn't be too large a change on Linux. I assume that
 Windows 8 similarly makes touch events available. Is this the right place
 to ask or is there another mailing list (e.g., the cog-vm)?

 Cheers,

 Jeff

 --
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick





[Pharo-dev] Making Git and Pharo More Accessible

2014-03-11 Thread Sean P. DeNigris
Two things:
- Are the current git workflow options documented anywhere besides our
mailing lists? If not, will someone who has been using Git successfully
capture their process somewhere more permanent...
- Can we (proverbially, not that I'm intending to help ;)) make a
git-ready image on the community CI server?

TIA



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Making-Git-and-Pharo-More-Accessible-tp4748695.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] Touch Events VM changes

2014-03-11 Thread p...@highoctane.be
I have a pretty decent lineup of devices with touch.

The interactions aren't the same on the iPhone as they are on a Galaxy SII
phone, not are the same on iPads or on a Nexus7. Magic mouses are also
special things. Also my Samsung Windows 8 laptop has a 10 points touch
screen.
With Windows8.1, I find myself using swipes and touches for a lot of
things. And it improves my productivity.
Once equipped with a thing like Classic Shell and boot into the desktop
right away, Metro apps are really nice little things running in the
background and can come fast with a little swipe (cool ones: Skype, Music,
PDF reader of a documentation, like a chapter of a Pharo book: swipe: PDF,
swipe: Pharo, swiper: PDF... and mouse pointer not moving around).
When using my MacBook Pro, I am reaching for the screen and being
disappointed to realize it is not touch (Apple, give us touch screens on
laptops).

Form factors affect the usage patterns as well. But touch is not going
displace touchpads or mouses for fine grained control.

On the contrary, I tested a Leap motion controller and it felt like crap.

Phil



On Tue, Mar 11, 2014 at 12:54 PM, J.F. Rick s...@je77.com wrote:

 Hi Sergi,

 Based on my experience developing touch interfaces since 2007, I believe
 in touch. I believe it will be the future of interfaces and I believe it
 can be better than mouse-keyboard interfaces. That said, it is not there
 yet. Now is the time to innovate and get it there so that touch interfaces
 won't be poor replicas of their desktop forebears. Currently, text entry is
 a real problem for touch exclusive devices, but there is progress being
 made on that front. We don't have the answer yet but I think it will be a
 significantly different landscape in five years. In regards to touch vs
 physical pointers, this is not as large of a problem as people make it out
 to be. It is just that our widgets tend to be created for mouse-based
 interfaces and therefore don't transition well to touch. Interfaces
 designed with touch in mind can be just as smooth (if not smoother) as
 mouse-based interfaces. You just have to take advantage of what touch does
 well (faster, more precise routes; multi-touch gestures; bimanual
 interaction) and stay clear of things it does poorly (precise touch down,
 covering the target with the finger).

 Cheers,

 Jeff


 On Tue, Mar 11, 2014 at 12:34 PM, Sergi Reyner sergi.rey...@gmail.comwrote:

 2014-03-11 10:37 GMT+00:00 J.F. Rick s...@je77.com:

 As we move from mouse-keyboard devices to touch-based ones


 I certainly hope that we refers to a small group of people, unless we
 get onscreen keyboards as good as physical ones, feedback included. The
 same goes for touch versus physical pointer :)

 Cheers,
 Sergi




 --
 Jochen Jeff Rick, Ph.D.
 http://www.je77.com/
 Skype ID: jochenrick



Re: [Pharo-dev] Sort by property

2014-03-11 Thread Otto Behrens
Why do we need one method that takes either a block or symbol?

 SequenceableCollectionsortedAs: aSortBlockOrSymbol

Perhaps sort: can take a block and sortedAs: a symbol?