Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Stephan Eggermont

On 18/07/16 12:03, Denis Kudriashov wrote:

I glad to release first version of RemoteDebuggingTools project. It
allows explore and debug remote images.


That is a great step forwards, thank you!

Stephan





Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Tudor Girba
Great news. Thanks, Denis!

Doru


> On Jul 18, 2016, at 5:03 AM, Denis Kudriashov  wrote:
> 
> I glad to release first version of RemoteDebuggingTools project. It allows 
> explore and debug remote images.
> 
> You can read details at 
> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html 
> and watch demo at https://youtu.be/SgFjgQpo_nU.
> 
> Any feedback is welcome.
> 
> Best regards,
> Denis.
> 
> 

--
www.tudorgirba.com
www.feenk.com

"Presenting is storytelling."




Re: [Pharo-dev] MCSmalltalkhubRepository for Squeak?

2016-07-18 Thread Tobias Pape

On 19.07.2016, at 00:20, Eliot Miranda  wrote:

> Hi,
> 
> any one have MCSmalltalkhubRepository?  I want to load the ASN1 code to 
> explore a performance regression in the VM, but I must first have access to 
> smalltalkhub.

It's plain Monticello:

Use
http://www.smalltalkhub.com/mc/PROJECT/REPO/main/
For example
http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/

Unfortunately, it appears down anyway, at the moment.

Best regards
-Tobias
> 
> _,,,^..^,,,_
> best, Eliot





Re: [Pharo-dev] how to update monticello cypress repository downloaded from github?

2016-07-18 Thread Dale Henrichs

Nicolas and Peter,

At this point, I assume that both of you using metadata-less GitFileTree 
repositories and you have the choice of either replacing the github:// 
scheme with a gitfiletree:// scheme so that GitFileTree is used to load 
the packages or using "the Cypress package extension" for Metacello 
which I've recently announced[1].


The down-side for both of these is that either GitFileTree and/or the 
latest version of Metacello has to be loaded into the users image and 
that may not be practical, since neither is included in the base release 
for Pharo ..


The final option is to stop using metadata-less GitFileTree ...

Dale

[1] 
http://forum.world.st/ANN-Metacello-support-for-GitFileTree-metadata-less-mode-tt4906662.html


On 07/17/2016 02:34 PM, Nicolas Passerini wrote:

It happens the same to me.

On Sun, Jul 17, 2016 at 4:37 PM, Peter Uhnák > wrote:


Metacello new
baseline: 'FileDialog';
repository: 'github://peteruhnak/file-dialog/repository';
get;
load.


Using #get indeed downloads a fresh copy, however the code in
Pharo is _not_ reloaded.
Is this a bug? Or do I need to do yet something more to reload
that too?

Peter






Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Norbert Hartl

> Am 18.07.2016 um 13:42 schrieb Denis Kudriashov :
> 
> Thank's
> 
> 2016-07-18 12:19 GMT+02:00 Norbert Hartl  >:
> Awesome! I'll immediately will stop all my important work and start playing 
> with it. I'm really interested how it will perform over high latency 
> connections. 
> 
> Yes, please report your experience.
>  
> Currently all optimisations are done on minimizing network communication 
> without tools modification. So debugger is same GTDebugger but communication 
> is configured accordingly to debugger behaviour. For example when debugger 
> requests suspendedContext of remote process server returns context proxy 
> together with method, receiver, receiver class name and other properties 
> which debugger is going to use. 
> Other optimization could be done on protocol level. Now transferred objects 
> are traversed twice: by Seamless and by Fuel. It could be merged somehow.
> 
Ok, I experimented a bit with network qualities. I just tested connecting and 
executing 3 + 4 on the remote side.  Connecting transfers already 2-4kb of data 
which should add some latency when the network is bad. Local wifi and DSL 
connections work ok for the simple case because latencies are low.

On a 3G network it can take between 4 and 7 seconds to establish the connection 
and around half a second to execute 3 + 4. I defined a bad mobile network with 
20kb/s bandwidth, 10% packet loss and a delay of 100ms in transmitting. This is 
equally for down and up directions. The connection time raises to 11 seconds 
and the execution of 3 + 4 to 4 seconds. 

In order to be able to test I needed to tweak BasysNetwork>>#initialize to set 
a timeout greater than 45 milliseconds which is pretty low. Usual timeout 
settings for browsers and mobile applications are around 30 seconds. I raised 
it to 10 seconds in order to test the bad network. 

To me the results are more or less expected. Well, I hoped they would be much 
better :) It works reliably even over slow networks. The main problem is that 
when it comes to remote debugging environments or browsers the number of 
message sends is quite high. So it is to see what kind of environment these 
tools can serve. For sure there is plenty of space to optimize (I hope). I did 
the tests with bad/mobile networks just get a clear mark where it cannot be 
used. To me personally the benchmark is DSL upload speeds. If it is doable over 
these (could be 256k/s) I can connect from the office (DSL down)  the my little 
devices at home (DSL up)  ;) 

Anyway, it is a wonderful tool I was waiting for so long. 

Thanks,

Norbert




[Pharo-dev] git iceberg and gitfiletree

2016-07-18 Thread Peter Uhnak
Hi,

since my question in the bugtracker went under the radar, I am asking here.

What is the underlying export format of iceberg? Is it compatible with 
gitfiletree?

Is it (would it be) possible to use one alongside the other? Because even now 
iceberg seems like much better choice in some respects (from my limited 
testing).

So it would be cool if I could use that, and if there were issues I could 
always fall back to gitfiletree.

Thanks,
Peter



Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Ben Coman
On Mon, Jul 18, 2016 at 10:26 PM, Denis Kudriashov  wrote:
> Hi Ben.
>
> 2016-07-18 14:46 GMT+02:00 Ben Coman :
>>
>> Cool stuff Dennis.  Does it utilise the remote image's DebuggerUI, or
>> DebuggerSession directly?  i.e. Is the aim to remotely debug a
>> headless/UI-less image?  This could open up some great possibilities
>> running a minimal image on embedded hardware.
>
>
> Local debugger is opened on remote process. No UI needed to work with remote
> image.
> Also there is command line option to start image with running server:
>
> ./pharo PharoWithServer.image debuggerServer --port=40423
>
> With Marcus we played with beaglebon device. It works fine like in my demo.

I've been meaning to get a BBB.  I looks like bit better platform for
an industrial controller / robotics than the Rpi - in particular its
Programming Realtime Unit.   Knowing someone else has one maybe I'll
get one now. In the back of my mind I've been considering whether its
PRU could be modelled as a CPU target for Slang , so Slang could be
re-purposed from just compiling VM, to compiling embedded programs for
the PRU, developed from within Pharo and loaded on the fly into the
PRU.

>>
>> When I read "Async evaluation ... does not wait for a result" I wonder
>> if there a particular need for the fork is used here?...
>> debugger evaluateAsync: [ [1/0] fork ].
>>
>
> Yes, it looks strange. Now all remote requests are executed such way that
> errors will be returned as SeamlessRemoteException and server signaller
> process will die. So instead of debugger with failed remote expression you
> will see debugger with local process which performed remote message send
> (but in case of async evaluation no result will returned to client and error
> will be just ignored). To escape such "exception handler" fork is needed.
> Fork will lead to unhanded error which will ask registered remote debugger
> to debug it.

Could you not just fork at the remote side?
Perhaps the invocation would be #evaluateFork:


> It was simplest strategy for error handling and in future it is probably
> possible to implement real smalltalk semantics over distributed errors.
>
>>
>>
>> An interesting proof demonstration would be when setting up the server
>> image do...
>>   Smalltalk at: #whoami put: #IAmTheServer
>>
>> then in the client do...
>>   debugger evaluate: [ Smalltalk at: #whoami ]
>
>
> It works exactly like you want. Evaluation scripts transfer block to remote
> side by value. And for blocks "by value" means transfer all literals as
> "well known objects" (which are known on remote side). If globals not exist
> on remote side then error will be returned. Some literals could be
> transferred by reference. For example workspace variables.
>
>>
>>
>> although maybe its hard to bind to the remote Smalltalk rather than
>> the local one?
>> What is the tradeoff of the #evaluate: parameter being a string rather
>> than a block?
>
>
> In this case you can't execute scripts which reference local objects like
> self, temps or workspace variables. Also it would be impossible to implement
> non local return with regular semantics.
>
>>
>> Without having looked at the Seamless mechanism, intuitively there
>> would seem some benefit having the remote system compile the string to
>> bind to the remote  classes.
>
>
> There is scenario which needs to be covered: debugging images which has no
> compiler. I probably will work on it at some point.
>
>>
>> Another interesting demo might be remotely evaluating...
>>   Object inform: 'Test'
>> and the notification showing up on the remote (if indeed that is the
>> desired behaviour)
>
> Yes, it works: https://youtu.be/Aop7KOGOFN0

HAharrrgh!!   Thats *very* cool indeed !!

cheers -ben



Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Denis Kudriashov
Hi Ben.

2016-07-18 14:46 GMT+02:00 Ben Coman :

> Cool stuff Dennis.  Does it utilise the remote image's DebuggerUI, or
> DebuggerSession directly?  i.e. Is the aim to remotely debug a
> headless/UI-less image?  This could open up some great possibilities
> running a minimal image on embedded hardware.
>

Local debugger is opened on remote process. No UI needed to work with
remote image.
Also there is command line option to start image with running server:

./pharo PharoWithServer.image debuggerServer --port=40423

With Marcus we played with beaglebon device. It works fine like in my demo.


>
>
> When I read "Async evaluation ... does not wait for a result" I wonder
> if there a particular need for the fork is used here?...
> debugger evaluateAsync: [ [1/0] fork ].
>
>
Yes, it looks strange. Now all remote requests are executed such way that
errors will be returned as SeamlessRemoteException and server signaller
process will die. So instead of debugger with failed remote expression you
will see debugger with local process which performed remote message send
(but in case of async evaluation no result will returned to client and
error will be just ignored). To escape such "exception handler" fork is
needed. Fork will lead to unhanded error which will ask registered remote
debugger to debug it.
It was simplest strategy for error handling and in future it is probably
possible to implement real smalltalk semantics over distributed errors.


>
> An interesting proof demonstration would be when setting up the server
> image do...
>   Smalltalk at: #whoami put: #IAmTheServer
>
> then in the client do...
>   debugger evaluate: [ Smalltalk at: #whoami ]
>

It works exactly like you want. Evaluation scripts transfer block to remote
side by value. And for blocks "by value" means transfer all literals as
"well known objects" (which are known on remote side). If globals not exist
on remote side then error will be returned. Some literals could be
transferred by reference. For example workspace variables.


>
> although maybe its hard to bind to the remote Smalltalk rather than
> the local one?
> What is the tradeoff of the #evaluate: parameter being a string rather
> than a block?
>

In this case you can't execute scripts which reference local objects like
self, temps or workspace variables. Also it would be impossible to
implement non local return with regular semantics.


> Without having looked at the Seamless mechanism, intuitively there
> would seem some benefit having the remote system compile the string to
> bind to the remote  classes.
>

There is scenario which needs to be covered: debugging images which has no
compiler. I probably will work on it at some point.


> Another interesting demo might be remotely evaluating...
>   Object inform: 'Test'
> and the notification showing up on the remote (if indeed that is the
> desired behaviour)
>

Yes, it works: https://youtu.be/Aop7KOGOFN0


>
>
> > and watch demo at https://youtu.be/SgFjgQpo_nU.
>
> I got a bit lost which one was client and which remote.  Maybe the
> next demo you could have the server and client side by side.  A bit of
> overlap should be okay but it would be useful for the debug
> notification appearing in the client to be immediately visible when an
> error is is caused in the server image.   It would be intuitive if the
> web browser fully overlapped the server image it connected to.
>


Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Norbert Hartl

> Am 18.07.2016 um 15:00 schrieb Denis Kudriashov :
> 
> 
> 2016-07-18 12:33 GMT+02:00 Norbert Hartl  >:
> Needless to say it runs only on pharo6? :)
> 
> I make special version of Seamless which works with Pharo 5. So both Pharo 5 
> and 6 are now supported. Just use latest config of RemoteDebuggingTools. All 
> tests are green. 

That's great, Denis!




Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Denis Kudriashov
2016-07-18 12:33 GMT+02:00 Norbert Hartl :

> Needless to say it runs only on pharo6? :)


I make special version of Seamless which works with Pharo 5. So both Pharo
5 and 6 are now supported. Just use latest config of RemoteDebuggingTools.
All tests are green.


Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Ben Coman
On Mon, Jul 18, 2016 at 6:19 PM, Norbert Hartl  wrote:
> Awesome! I'll immediately will stop all my important work and start playing
> with it. I'm really interested how it will perform over high latency
> connections.
>
> Well done,
>
> Norbert
>
> Am 18.07.2016 um 12:03 schrieb Denis Kudriashov :
>
> I glad to release first version of RemoteDebuggingTools project. It allows
> explore and debug remote images.
>
> You can read details at
> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html

Cool stuff Dennis.  Does it utilise the remote image's DebuggerUI, or
DebuggerSession directly?  i.e. Is the aim to remotely debug a
headless/UI-less image?  This could open up some great possibilities
running a minimal image on embedded hardware.


When I read "Async evaluation ... does not wait for a result" I wonder
if there a particular need for the fork is used here?...
debugger evaluateAsync: [ [1/0] fork ].


An interesting proof demonstration would be when setting up the server
image do...
  Smalltalk at: #whoami put: #IAmTheServer

then in the client do...
  debugger evaluate: [ Smalltalk at: #whoami ]

although maybe its hard to bind to the remote Smalltalk rather than
the local one?
What is the tradeoff of the #evaluate: parameter being a string rather
than a block?
Without having looked at the Seamless mechanism, intuitively there
would seem some benefit having the remote system compile the string to
bind to the remote  classes.

Another interesting demo might be remotely evaluating...
  Object inform: 'Test'
and the notification showing up on the remote (if indeed that is the
desired behaviour)


> and watch demo at https://youtu.be/SgFjgQpo_nU.

I got a bit lost which one was client and which remote.  Maybe the
next demo you could have the server and client side by side.  A bit of
overlap should be okay but it would be useful for the debug
notification appearing in the client to be immediately visible when an
error is is caused in the server image.   It would be intuitive if the
web browser fully overlapped the server image it connected to.

cheers -ben



Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Denis Kudriashov
Thank's

2016-07-18 12:19 GMT+02:00 Norbert Hartl :

> Awesome! I'll immediately will stop all my important work and start
> playing with it. I'm really interested how it will perform over high
> latency connections.
>

Yes, please report your experience.

Currently all optimisations are done on minimizing network communication
without tools modification. So debugger is same GTDebugger but
communication is configured accordingly to debugger behaviour. For example
when debugger requests suspendedContext of remote process server returns
context proxy together with method, receiver, receiver class name and other
properties which debugger is going to use.
Other optimization could be done on protocol level. Now transferred objects
are traversed twice: by Seamless and by Fuel. It could be merged somehow.



>
> Well done,
>


Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread p...@highoctane.be
Super cool!

On Mon, Jul 18, 2016 at 12:03 PM, Denis Kudriashov 
wrote:

> I glad to release first version of RemoteDebuggingTools project. It allows
> explore and debug remote images.
>
> You can read details at
> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html and
> watch demo at https://youtu.be/SgFjgQpo_nU.
>
> Any feedback is welcome.
>
> Best regards,
> Denis.
>
>
>


Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Denis Kudriashov
In Pharo 5 block evaluation is not works. Some problems with tests. But
debugger works in my simple tests.

2016-07-18 12:33 GMT+02:00 Norbert Hartl :

> Needless to say it runs only on pharo6? :)
>
> Norbert
>
> Am 18.07.2016 um 12:19 schrieb Norbert Hartl :
>
> Awesome! I'll immediately will stop all my important work and start
> playing with it. I'm really interested how it will perform over high
> latency connections.
>
> Well done,
>
> Norbert
>
> Am 18.07.2016 um 12:03 schrieb Denis Kudriashov :
>
> I glad to release first version of RemoteDebuggingTools project. It allows
> explore and debug remote images.
>
> You can read details at
> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html and
> watch demo at https://youtu.be/SgFjgQpo_nU.
>
> Any feedback is welcome.
>
> Best regards,
> Denis.
>
>
>
>
>


Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Norbert Hartl
Needless to say it runs only on pharo6? :)

Norbert
> Am 18.07.2016 um 12:19 schrieb Norbert Hartl :
> 
> Awesome! I'll immediately will stop all my important work and start playing 
> with it. I'm really interested how it will perform over high latency 
> connections. 
> 
> Well done,
> 
> Norbert
> 
>> Am 18.07.2016 um 12:03 schrieb Denis Kudriashov > >:
>> 
>> I glad to release first version of RemoteDebuggingTools project. It allows 
>> explore and debug remote images.
>> 
>> You can read details at 
>> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html 
>>  
>> and watch demo at https://youtu.be/SgFjgQpo_nU 
>> .
>> 
>> Any feedback is welcome.
>> 
>> Best regards,
>> Denis.
>> 
>> 
> 



Re: [Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Norbert Hartl
Awesome! I'll immediately will stop all my important work and start playing 
with it. I'm really interested how it will perform over high latency 
connections. 

Well done,

Norbert

> Am 18.07.2016 um 12:03 schrieb Denis Kudriashov :
> 
> I glad to release first version of RemoteDebuggingTools project. It allows 
> explore and debug remote images.
> 
> You can read details at 
> http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html 
>  
> and watch demo at https://youtu.be/SgFjgQpo_nU .
> 
> Any feedback is welcome.
> 
> Best regards,
> Denis.
> 
> 



[Pharo-dev] [Ann] Remote debugging tools

2016-07-18 Thread Denis Kudriashov
I glad to release first version of RemoteDebuggingTools project. It allows
explore and debug remote images.

You can read details at
http://dionisiydk.blogspot.fr/2016/07/remote-debugging-tools-is-ready.html and
watch demo at https://youtu.be/SgFjgQpo_nU.

Any feedback is welcome.

Best regards,
Denis.