Re: [Pharo-project] Getting started with Athens

2012-12-02 Thread Stéphane Ducasse
 
  
 Stef,
 
 With Ze great Stef? Incredible, indeed :)
 I'll start putting down my questions and learning then. Can you tell me 
 when you will be starting? I'll start the one for Roassal soon.

 
 I will also ask tristan to join because he will work on athens for a large 
 industrial :).
 
 Stef
 
  
 Would that touch on implementing any industrial communications protocols, 
 like Modbus[1]?  I plan to try implementing Modbus next year after I get a 
 few other things out of the way.
 
 [1] http://en.wikipedia.org/wiki/Modbus Simple and robust, it has since 
 become a de facto standard communication protocol, and it is now amongst the 
 most commonly available means of connecting industrial electronic devices.

Without a project behind I do not think that we cant decently implement protocol
Now if people give a try and we see what it is…

We have OSC and TUIO already

Stef




[Pharo-project] Open Source and Constraints | Documentation is King

2012-12-02 Thread Sven Van Caekenberghe
Well written:

  http://kennethreitz.org/open-source-and-constraints.html 

I also find that writing documentation (minimal method/class comments or longer 
standalone documents) improves coding, because you take another perspective.  I 
wouldn't value it above tests though.

Sven

--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill




Re: [Pharo-project] Open Source and Constraints | Documentation is King

2012-12-02 Thread Frank Shearar
On 2 December 2012 18:57, Sven Van Caekenberghe s...@stfx.eu wrote:
 Well written:

   http://kennethreitz.org/open-source-and-constraints.html

 I also find that writing documentation (minimal method/class comments or 
 longer standalone documents) improves coding, because you take another 
 perspective.  I wouldn't value it above tests though.

I'm designing an API and experience for myself and others as
developers. That's exactly why I write tests in the first place: you
write the tests to design the API. And hopefully the tests serve as
good examples of how to use the API. (If they aren't good examples,
you're writing your tests wrongly.)

frank

 Sven

 --
 Sven Van Caekenberghe
 http://stfx.eu
 Smalltalk is the Red Pill





[Pharo-project] DynamicVariablevalue:during:

2012-12-02 Thread Sebastian Sastre
Hey guys,

would not make much much more sense if we return the result of evaluating the 
block when we use dynamic variables?

Here is the patch I'm using these days:

DynamicVariablevalue: anObject during: aBlock

| p oldValue result |
p := Processor activeProcess.
oldValue := (p psValueAt: index) ifNil: [self default].
[
p psValueAt: index put: anObject.
result := aBlock value.
] ensure: [ 
p psValueAt: index put: oldValue 
].

^ result 







Re: [Pharo-project] DynamicVariablevalue:during:

2012-12-02 Thread Sven Van Caekenberghe
Yes, I think so too, but maybe there was some reason for not doing it ?

On 02 Dec 2012, at 20:52, Sebastian Sastre sebast...@flowingconcept.com wrote:

 Hey guys,
 
 would not make much much more sense if we return the result of evaluating the 
 block when we use dynamic variables?
 
 Here is the patch I'm using these days:
 
 DynamicVariablevalue: anObject during: aBlock
 
   | p oldValue result |
   p := Processor activeProcess.
   oldValue := (p psValueAt: index) ifNil: [self default].
   [
   p psValueAt: index put: anObject.
   result := aBlock value.
   ] ensure: [ 
   p psValueAt: index put: oldValue 
   ].
 
   ^ result 

--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill




Re: [Pharo-project] [[ false ] whileFalse: [ ]] in workspace

2012-12-02 Thread Guillermo Polito
Hi!

I've hacked a fix, but I don't know if it is correct... can somebody check
it so I make a Slice?

Guille

On Sun, Dec 2, 2012 at 8:56 PM, Guillermo Polito
guillermopol...@gmail.comwrote:

 Ok, I've found the cause :).

 From update 20043:

  Issue 5744:Clean up Temp Embedding 2): DoIts
 http://code.google.com/p/pharo/issues/detail?id=5744


 - Doits are now compiled with source embedded
 - embedding sources for doits pretty prints from AST as doits are compiled
 specially (with a return added)

 CompiledMethod:

 - remove blockExtendsToTempsMap: Not needed anymore, all calls go the
 MethodNode
 - remove #copyWitTempsFromMethodNode: All senders use #copyWithSource
 - remove #holdsTempNames. Temp name embedding not needed
 - add isDoit
 - schematicTempNamesString always returns the schematic string
 representation of all temps
 - tempNames forwards to methodNode
 - remove tempNamesString. Concatenate yourself if you need that.

 DebuggerselectedMessage asks the selectedContext directly for the
 source. No need for the methodMap.

 DebuggerMethodMap

 - no special handling of methods that encode temps. Just as for methodNode
 always.

 MethodNode

 - generateWithSource. embedd pretty printed code in case of doit
 - remove generateWithTempNames

 In general: rewrite code to use #generateWithSource


 On Sat, Dec 1, 2012 at 6:24 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:

 Sebastian

 I can tell you that what you did is **useful** because we are all working
 like mad
 and such kind of help is really welcome.

 Stef

 On Dec 1, 2012, at 3:24 PM, Sebastian Nozzi wrote:

  It's the #7076.
 
  2012/11/29 Camillo Bruni camillobr...@gmail.com:
  perfect! can you open a bug report with this information? :)
 






MessageNode.GuillermoPolito.cs
Description: Binary data


Re: [Pharo-project] just help :)

2012-12-02 Thread Mariano Martinez Peck
On Fri, Nov 30, 2012 at 10:06 AM, Sebastian Nozzi sebno...@gmail.comwrote:

 2012/11/30 Marcus Denker marcus.den...@inria.fr:
  On Nov 29, 2012, at 11:55 PM, dimitris chloupis theki...@yahoo.co.uk
  wrote:
 
  * Framework for seamless data/object-synchronization. I suggested this a
  while ago, didn't get much response. I don't blame anyone, there is not
 much
  need for this right now. What I would want is to be able to modify
 certain
  objects in my image, while offline, and connect to the Internet, and
 these
  objects be synchronized between other images. This way Internet-enabled
 apps
  could be built on top of Pharo in a better way that web-apps are built
 now
  (because, in Pharo you can not hit F5 and get fresh data ;-). But this is
  low-priority for me.
 
  This is a hard problem… but if would be nice to have, yes.

 I think it would make a nice research project ;-)

 Maybe as an extension(*) to Fuel/Tanker?
 I guess Fuel/Tanker also has to deal with conflicts, right?


Right.  This already happens and Fuel deals with some of them.




 * - Extension or on-top-of




-- 
Mariano
http://marianopeck.wordpress.com


Re: [Pharo-project] CI server down?

2012-12-02 Thread Camillo Bruni
yes it's dead, as usual... the old ci is vry unstable.

so don't use it to get images. All images and VMs are available offsite at

http://pharo.gforge.inria.fr/ci/

= no https transfers
= faster download speed
= higher availability
= simple predictable urls

On 2012-12-02, at 18:51, Sebastian Nozzi sebno...@gmail.com wrote:

 I cannot access:
 
 http://ci.lille.inria.fr/pharo/
 
 (anyone has nagios on that? ;-)
 




Re: [Pharo-project] CI server down?

2012-12-02 Thread Sebastian Nozzi
Re-forwarding to the list. Might be useful.

2012/12/2 Camillo Bruni camillobr...@gmail.com:
 With a change of repeating myself, this is the main use case of 
 http://pharo.gforge.inria.fr/ci

 wget --quiet -qO - http://pharo.gforge.inria.fr/ci/ciPharo20NBCog.sh | sh

 ./vm.sh Pharo.image save $JOB_NAME

 REPO=http://squeaksource.com/Athens
 ./vm.sh $JOB_NAME.image config $REPO ConfigurationOfAthens --install=1.4
 ./vm.sh $JOB_NAME.image test --junit-xml-output Athens-.*

 = Zero-Conf setup with the latest VMs and the Latest images

 On 2012-12-02, at 19:03, Sebastian Nozzi sebno...@gmail.com wrote:
 so don't use it to get images. All images and VMs are available offsite at
 http://pharo.gforge.inria.fr/ci/

 Cool, that's *exactly* what I was using it for... thanks for the tip! :-)




[Pharo-project] Performance Tip: Using buffered streams

2012-12-02 Thread Sven Van Caekenberghe
Hi,

short-version

When doing complex IO, like writing or parsing protocols, to non-memory 
streams, like file streams (and probably socket streams), buffering can make an 
important difference. ZnBufferedWriteStream and ZnBufferedReadStream are an 
easy solution to experience the difference.

/short-version

And now the long version: first some measurements (code based on latest 
versions of Zinc, NeoCSV, NeoJSON and STON):

NeoJSON

| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.json' asFileReference writeStreamDo: [ :stream |
(NeoJSONWriter on: stream) nextPut: data ] ] timeToRun. 22152
 
| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.json' asFileReference writeStreamDo: [ :fstream |
ZnBufferedWriteStream on: fstream do: [ :stream |
(NeoJSONWriter on: stream) nextPut: data ] ] ] timeToRun. 5147
 
[ '/tmp/numbers.json' asFileReference readStreamDo: [ :stream |
(NeoJSONReader on: stream) next ] ] timeToRun. 3502

[ '/tmp/numbers.json' asFileReference readStreamDo: [ :fstream |
ZnBufferedReadStream on: fstream do: [ :stream |
(NeoJSONReader on: stream) next ] ] ] timeToRun. 1214

STON

| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.ston' asFileReference writeStreamDo: [ :stream |
STON writer on: stream; nextPut: data ] ] timeToRun. 22275
 
| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.ston' asFileReference writeStreamDo: [ :fstream |
ZnBufferedWriteStream on: fstream do: [ :stream |
STON writer on: stream; nextPut: data ] ] ] timeToRun. 5501
 
[ '/tmp/numbers.ston' asFileReference readStreamDo: [ :stream |
STON reader on: stream; next ] ] timeToRun. 3632

[ '/tmp/numbers.ston' asFileReference readStreamDo: [ :fstream |
ZnBufferedReadStream on: fstream do: [ :stream |
STON reader on: stream; next ] ] ] timeToRun. 1367

NeoCSV

| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.csv' asFileReference writeStreamDo: [ :stream |
(NeoCSVWriter on: stream) nextPutAll: data ] ] timeToRun. 20916
 
| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each reciprocal asFloat. each sqrt. each asWords 
} ].
[ '/tmp/numbers.csv' asFileReference writeStreamDo: [ :fstream |
ZnBufferedWriteStream on: fstream do: [ :stream |
(NeoCSVWriter on: stream) nextPutAll: data ] ] ] timeToRun. 5559
 
[ '/tmp/numbers.csv' asFileReference readStreamDo: [ :stream |
(NeoCSVReader on: stream) 
addIntegerField; addIntegerField; addFloatField; addFloatField; 
addField;
upToEnd ] ] timeToRun. 1290

[ '/tmp/numbers.csv' asFileReference readStreamDo: [ :fstream |
ZnBufferedReadStream on: fstream do: [ :stream |
(NeoCSVReader on: stream) 
addIntegerField; addIntegerField; addFloatField; 
addFloatField; addField;
upToEnd ] ] ] timeToRun.  970


The reason for these non-trivial speedups is that buffering is missing and/or 
buffer management is suboptimal in the standard file stream classes. Simply 
wrapping the stream with a 64Kb buffer yields results like this. We already 
knew this for writing (and Fuel adapted it as well), but it seems to make a 
similar, although smaller difference when reading.

side-note

Attentive, curious readers might ask why in this particular benchmark the 
reading is so much slower than the writing - normally it should be the inverse 
or at least they should be closer to each other. Lo and behold: another 
performance issue: float printing (as opposed to parsing) is extremely slow 
(probably partially due to its reliance on LargeInteger arithmetic) !

Here is a similar benchmark with only Integers:

| data |
data := (1 to: 25000) collect: [ :each |
{ each. each negated. each + 10. each - 10. each asWords } ].
[ '/tmp/numbers.csv' asFileReference writeStreamDo: [ :fstream |
ZnBufferedWriteStream on: fstream do: [ :stream |
(NeoCSVWriter on: stream) nextPutAll: data ] ] ] timeToRun. 311

[ '/tmp/numbers.csv' asFileReference readStreamDo: [ :fstream |
ZnBufferedReadStream on: fstream do: [ :stream |
(NeoCSVReader on: stream) 
addIntegerField; addIntegerField; addIntegerField; 
addIntegerField; addField;
upToEnd ] ] ] timeToRun. 396

/side-note

If ZnBufferedWriteStream or ZnBufferedReadStream were useful in 

[Pharo-project] using a long running native thread - NativeBoost or Plugin?

2012-12-02 Thread drush66
Would it be possible to start native thread inside pharo? This thread would
run (for quite a long time) some event loop (like the libev), and post some
info to the SharedQueue. Smalltalk code would in turn be reading stuff from
this queue. You could say it would be pumping events from libev to
SharedQueue instance for Smalltalk code to consume.

Is this doable? With NativeBoost or Plugin?

I have also found some info on threaded VM, but if I understand it correctly
it seems more oriented to provide a thread to execute FFI call on it.



-
http://www.cloud208.com/
--
View this message in context: 
http://forum.world.st/using-a-long-running-native-thread-NativeBoost-or-Plugin-tp4657747.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.



Re: [Pharo-project] Performance Tip: Using buffered streams

2012-12-02 Thread Sven Van Caekenberghe
Hi Mariano,

On 02 Dec 2012, at 23:43, Mariano Martinez Peck marianop...@gmail.com wrote:

 This is really really interesting, because it means a speed up of 2x when 
 reading :)
 Where can I get the last version of ZnBufferedReadStream?

I knew you would be interested: it is in the latest Zn, either 
http://mc.stfx.eu or squeaksource (not in the metacello yet).
It should work on binary streams too, I don't know whether it would make a lot 
of difference, I would guess so.
Maybe Fuel uses lots of 'deterministic reading' (size prefixed) instead of 
parsing.

Sven

--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill






Re: [Pharo-project] Pharo Association

2012-12-02 Thread S Krish
The print out, sign and sending the document is understood.

Where can I pay for individual members by credit card and where.

Can this also be done for bulk payment for multiple membership, if I can
convince a few more locally




On Thu, Nov 15, 2012 at 7:21 PM, Marcus Denker marcus.den...@inria.frwrote:

 Hello,

 We are happy to announce the Pharo User Association:

 http://association.pharo.org

 The goal of the Pharo User Association is to support Pharo development and
 promotion.

 There are two individual memberships

 - Individual Pharo Association Member: Yearly fee 40 Euros
 - Golden Individual Pharo Association Member: Yearly fee 99 Euros

 You will get
 - reduction access to pharo conferences,
 - reduction for training and access to teaching material,
 - be part of the pharoAssociation-individual-members mailing-list,
 - an account at the pharo association web site.

 This Association is complementary to the Pharo consortium managed by INRIA.
 The Consortium is for entities  such as companies, research teams, or
 institutes.
 For more information, see:
 http://www.pharo-project.org/community/consortium

 The funds collected by the Association will be used in coordination with
 the Consortium
 to support the development of Pharo.

 The Pharo Board and Pharo Core Team.





Re: [Pharo-project] Pharo Association

2012-12-02 Thread Marcus Denker

On Dec 3, 2012, at 8:02 AM, S Krish krishnamachari.sudha...@gmail.com wrote:

 
 The print out, sign and sending the document is understood.
 
 Where can I pay for individual members by credit card and where.
 

Hello,

For individuals, the way to support Pharo is not the consortium (as Inria can 
not handle
small payments and especially no credit cards):

http://association.pharo.org


 Can this also be done for bulk payment for multiple membership, if I can 
 convince a few more locally
 
 
 
 
 On Thu, Nov 15, 2012 at 7:21 PM, Marcus Denker marcus.den...@inria.fr wrote:
 Hello,
 
 We are happy to announce the Pharo User Association:
 
 http://association.pharo.org
 
 The goal of the Pharo User Association is to support Pharo development and
 promotion.
 
 There are two individual memberships
 
 - Individual Pharo Association Member: Yearly fee 40 Euros
 - Golden Individual Pharo Association Member: Yearly fee 99 Euros
 
 You will get
 - reduction access to pharo conferences,
 - reduction for training and access to teaching material,
 - be part of the pharoAssociation-individual-members mailing-list,
 - an account at the pharo association web site.
 
 This Association is complementary to the Pharo consortium managed by INRIA.
 The Consortium is for entities  such as companies, research teams, or 
 institutes.
 For more information, see: http://www.pharo-project.org/community/consortium
 
 The funds collected by the Association will be used in coordination with the 
 Consortium
 to support the development of Pharo.
 
 The Pharo Board and Pharo Core Team.
 
 
 



Re: [Pharo-project] CI server down?

2012-12-02 Thread Marcus Denker
Yes, it's dead.

On Dec 2, 2012, at 10:51 PM, Sebastian Nozzi sebno...@gmail.com wrote:

 I cannot access:
 
 http://ci.lille.inria.fr/pharo/
 
 (anyone has nagios on that? ;-)
 
I have a what dog on it and I send a mail to it every time
something stops working (which now is just hours after
it is fixed…).

So, it's dead. We should move everything here:

https://ci.inria.fr/pharo/

Sadly I have no time to work on it last week or this week.

Marcus


Re: [Pharo-project] Performance Tip: Using buffered streams

2012-12-02 Thread drush66
Sven Van Caekenberghe-2 wrote
 Hi Mariano,
 
 On 02 Dec 2012, at 23:43, Mariano Martinez Peck lt;

 marianopeck@

 gt; wrote:
 
 This is really really interesting, because it means a speed up of 2x when
 reading :)
 Where can I get the last version of ZnBufferedReadStream?
 
 I knew you would be interested: it is in the latest Zn, either
 http://mc.stfx.eu or squeaksource (not in the metacello yet).
 It should work on binary streams too, I don't know whether it would make a
 lot of difference, I would guess so.
 Maybe Fuel uses lots of 'deterministic reading' (size prefixed) instead of
 parsing.
 
 Sven
 
 --
 Sven Van Caekenberghe
 http://stfx.eu
 Smalltalk is the Red Pill

Did you (or anybody else for that matter) tried to use persistent arrays as
base for in memory streeams? They are basically shallow tree that provides
array like access. Their claim to fame is that one can avoid copy operation
when array gets resized. So it _might_ be usable when one handles large
write streams and does not know in advance how large they will get.




-
http://www.cloud208.com/
--
View this message in context: 
http://forum.world.st/Performance-Tip-Using-buffered-streams-tp4657739p4657775.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.