Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Denis Kudriashov
Hi.

It would be nice to see simple code (not in video) how to create memory and
read/write data to it.
As I understand you create bindings to OS shared memory functions. What
else CPPBridge provides? Why not separate bindings to another project?
because it could be useful without any C++ relation.

Best regards,
Denis

2016-11-09 0:06 GMT+01:00 Dimitris Chloupis :

>
> *https://youtu.be/pI4PR3XaX6Q *
>
> *What is it ?*
>
> CPPBridge is a library that allows Pharo to share memory with any C/C++
> application. Opening the door not only to IPC and data sharing but also
> even complete control of C++ code from Pharo and vice versa.
>
> *How to install ?*
>
> In a few hours it should be available from Package Browser, if not you can
> always fetch it with Metacello from here because it comes with a Baseline
>
> https://github.com/kilon/CPPBridge
>
> *Why bother making such a library ? *
>
> In my saga to find a way to use Pharo as a scripting language for Unreal
> Game Engine, I had two options
>
> a) Build Unreal as a Library and use Pharo UFFI to launch and control it
> b) Embed Pharo inside the Unreal Executable (this is what every other
> scripting language uses for controlling Unreal)
>
> Option (a) was a no go, because Unreal is huge , complex and uses its own
> custom made build tools, making a DLL for Pharo or an army of DLLs  out of
> the question
>
> Option (b) Embeding Pharo inside an executable is impossible and
> implementing it also insanely complex
>
> Naturally my mind went first into sockets which is what I use to make
> Pharo able to use Python libraries. However sockets have proven too slow
> for the insanely fast loops of Unreal.
>
> *What are the advantages ?*
>
> 1) *No need to move data around.* Sharing memory means you don't have to
> move data around, you can use directly the shared memory
>
> 2)* Extend the Pharo image beyond Pharo.* Shared memory is mapped into a
> file means that you can do with C++ what you can do with Pharo image, save
> the live state directly to a binary file. That means we no longer need to
> worry about sessions and reinitializing C/C++ data since memory mapped file
> acts as an extension of the Pharo image.
>
> 3) *Blazing fast. *Memory mapping is a function that comes directly from
> the OS kernel and as such it has to be extremely fast. Memory mapping is
> also what is used for dynamically linked shared libraries an extremely
> important feature for any application including Pharo that heavily depends
> on (see Cairo for Athens). So its a very mature , well tested method.
>
> 4) *No extra libraries needed* to be installed, CPPBridge uses OS
> libraries to work out of the box
>
> 5) *Low level handling of memory.* Direct access to memory you can even
> manipulate the memory byte by byte
>
> 6)* Memory efficient.* Memory mapping excels at large data, the bigger
> the better. Can take full advantage of your entire free memory and not
> waste a byte.  That means also that can be used to optimise Pharo memory,
> since you could compress your Pharo objects to bytes and mapped file will
> store the live state.
>
> 7) *Tons of Languages. *Because memory mapping is a core functionality
> for every OS out there, pretty much every programming language supports it.
> CPPBridge currently supports only C/C++ but all languages can be supported
> giving access to Pharo to any library for any programming language. Sky is
> the limit
>
> 8) *Self Documented. *CPPBridge is small, simple and with large class
> comment and comments for every method. YouTube video tutorial also
> available and linked on top.
>
> 9) *Works both ways*, C/C++ and Pharo can access and modify the shared
> memory. Making it possible for C/C++ to use Pharo libraries and Pharo to
> use C/C++ libraries.
>
> 10) Experiments have proven that it improves sex life...  if it does not
> please file a bug report ;)
>
>
> *What are the disadvantages ?*
>
> 1) *Candy Crash Saga*. Dare do something incorrectly and Pharo will
> crash. CPPBridge can easily point to wrong address if you are not aware of
> what you doing.
>
> 2) *C++/C* . If you think you can avoid learning C/C++ and that this is a
> magic solution , think again. The C/C++ application must be modified to
> include shared memory mapping for CPPBridge to work .
>
> 3) *Local only*. Unlike sockets, Shared Memory works only on the same
> machine so no remote execution and manipulation of code like in my socket
> bridge to Python
>
> 4) *UFFI still No1 option*. No replacement for UFFI it actually depends
> on it to work , so if you can turn your C/C++ code into a DLL that should
> be your first option.
>
> *Roadmap *
>
> Currently CPPBridge works only on MacOS , most likely on Linux too
> (because it uses the Unix architecture) but I will have to test it.
>
> Windows is coming next ASAP, since its my No1 platform for creating
> commercial games.
>
> Maybe establish a small protocol of communication via the Shared Memory ,
> JS

Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Dimitris Chloupis
"Hi.

It would be nice to see simple code (not in video) how to create memory and
read/write data to it."

If you get the Project it comes with an example how to use in the class
side of the CPPBridge Class and its in methods retrieveSharedValueStep1 and
retrieveSharedValueStep2, first one open the files , access the shared
memory and pick the value from shared memory, the second unmaps the file
from memory and closes the file (access to shared memory remains , the file
is is just no longer auto-saved by the OS). All methods are documented and
class comes with a comment.

Yes basically what I have done is to extend the LibC class because every
function I am using is from LibC aka as C standard library that comes
included in MacOS and Linux. Windows is doing its own thing , I have not
ported to windows yet, though if you have something that install LibC (part
of GCC) on Windows probably  it works there too. But I will make a native
port to Windows as well because its crucial for my gamers to play my games
out of the box with no additional install of libraries or what else.

One thing I did not make clear, the file opened plays a minor role for the
shared memory its just used to store a dumb of the memory just like we do
with the Pharo image (though in the case of Pharo image is bytecode) . As
such file I/O is never involved in accessing the data instead it gives
direct access to the memory , hence why its blazing fast.

I don't have any issue to add this to LibC of UFFI but this decision is to
Esteban, I just did not want to put more things in the Pharo image that
people wont use since we try to decrease the size of the image.

CPPBridge currently does not provide anything else, however in truth it
does not need to. The moment you share date, that means you share state and
you can even control code execution. Unfortunately C/C++ is not a dynamic
language like Python, with Python all I had to do was to pass strings to
python eval() and let python execute whatever command I wanted, but with
C++ these things will have to be precompiled in order to work.

Most likely I will be adding in the near future classes and method of
convenience for using C++ libraries/code from Pharo and Pharo
libraries/code from C++. Possible will add also Python support. Other
language that can be supported are C# (and any other language running on
.NET or Mono related) , Java (again any other language running on JavaVM ),
Ruby , Pearl, D, J, Julia, R , so pretty much any language out there. C/C++
obviously is optional.

I am pasting bellow the source of the two methods I mentioned, code can be
also viewed here

https://github.com/kilon/CPPBridge/blob/master/CPPBridge.package/CPPBridge.class/class/retrieveSharedValueStep1.st

and here

https://github.com/kilon/CPPBridge/blob/master/CPPBridge.package/CPPBridge.class/class/retrieveSharedValueStep2.st

-
 retrieveSharedValueStep1

"This method is an example that retrieves a struct from a shared memory
section, in order for this example to work you need you first copy paste
the contents of the Example Souce Code of the C++ file in the comment
section of this class to a C++ source code file and compile it a run then
replace the path of in this code of CPPBridge openFile: with the correct
path of the bin that the C++ files has created , in order for this to work
also you need to execute the C++ example first so it creates and file and
share the memory.

After executing this method you can execute retrieveSharedValueStep2 to
unmap and close the memory mapped file (keeps sharing the memory it just
does not store it to the file)"

| instance fdNumber lseek mmapPointer data struct |

instance := CPPBridge new.
fdNumber := CPPBridge openFile: '/Users/kilon/git/Pharo/Atlas/mmapped.bin'
flags: (O_RDWR) .

"Warning !!! You must change the path to the file that is located in your
hard drive. The file should be at the same location you built
atlas-server.cpp which is responsible for creating the file."

lseek := CPPBridge lSeek_fd: fdNumber range:3999  value:0.
mmapPointer := CPPBridge  mmap_adress: 0 fileSize:4000  flag1: (PROT_READ |
PROT_WRITE )flag2: MAP_SHARED  fd: fdNumber  offset: 0  .
struct := CPPStruct pointTo: (mmapPointer getHandle ).


data :={ instance.  fdNumber . lseek. mmapPointer  .  struct}.
data inspect.

ExampleDATA := data.
^data

"
This is an alternative array that contains only the two values of the C
Struct :

1) data = char[3000]  this is where we store the string
2) count = int this is where we store the size of the string

struct := {(mmapPointer getHandle  copyFrom: 1 to:3000 )asString .
(mmapPointer getHandle integerAt: 3001 size:4 signed: false)}.

mmapPointer is the pointer that points to the first byte of the shared
memory.

getHandle gives us the memory adress that the pointer points to

copyFrom:1 to:3000 copies byte from byte 0 (remember C counts from 0 ,
Pharo counts from 1) to byte 3000 because the string we

Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Denis Kudriashov
2016-11-09 11:41 GMT+01:00 Dimitris Chloupis :

> "Hi.
>
> It would be nice to see simple code (not in video) how to create memory
> and read/write data to it."
>
> If you get the Project it comes with an example how to use in the class
> side of the CPPBridge Class and its in methods retrieveSharedValueStep1 and
> retrieveSharedValueStep2


I just a lazy guy. Thank's for pointing code here.


Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Dimitris Chloupis
I would not call you lazy, its normal to want to see documentation before
installing something and at least an example. Actually thats a good idea, I
will add a few more comments in the example and use it on repo's front
page.

On Wed, Nov 9, 2016 at 12:56 PM Denis Kudriashov 
wrote:

>
> 2016-11-09 11:41 GMT+01:00 Dimitris Chloupis :
>
> "Hi.
>
> It would be nice to see simple code (not in video) how to create memory
> and read/write data to it."
>
> If you get the Project it comes with an example how to use in the class
> side of the CPPBridge Class and its in methods retrieveSharedValueStep1 and
> retrieveSharedValueStep2
>
>
> I just a lazy guy. Thank's for pointing code here.
>
>


Re: [Pharo-users] may I please be added to the Mercap/HighchartsSt repo

2016-11-09 Thread Mariano Martinez Peck
That's great to hear. Let me know if the latest commits do work for you
(they should work for 5.0.2).

Cheers,

On Tue, Nov 8, 2016 at 7:43 PM, Richard Pillar via Pharo-users <
pharo-users@lists.pharo.org> wrote:

>
>
> -- Forwarded message --
> From: Richard Pillar 
> To: Any question about pharo is welcome 
> Cc:
> Date: Tue, 8 Nov 2016 22:43:30 +
> Subject: Re: [Pharo-users] may I please be added to the
> Mercap/HighchartsSt repo
> Hi,
>
> This is great news.
>
> I have been using Highcharts for some of my personal projects and have
> added code to build box plots and heat charts.
>
> I will download the updates shortly.
>
> Many Thanks
>
> Richard
>
> On Mon, Nov 7, 2016 at 2:33 AM, Mariano Martinez Peck <
> marianop...@gmail.com> wrote:
>
>> Paul,
>>
>> Quick comment: I was about to make an ANN soon but I have been
>> refactoring it a LOT these last days and I did:
>>
>> 1) make it fully the auto-generation code (already done)
>> 2) making it work for highcharts 5.0.2 (already done)
>> 3) start supporting highstocks (was going to start this this week).
>>
>> Please please please grab the very last version. What are your plans with
>> it?
>>
>> I just added you.
>>
>> Cbest
>>
>>
>>
>> On Sat, Nov 5, 2016 at 3:24 PM, PAUL DEBRUICKER 
>> wrote:
>>
>>> I'd like to add code that allows the creation of boxplots:
>>>
>>> http://www.highcharts.com/docs/chart-and-series-types/box-plot-series
>>>
>>>
>>> my username is pdebruic
>>>
>>>
>>> Thanks
>>>
>>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>
>
>


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


Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Dimitris Chloupis
Ok documentation has improved a lot , it should be more obvious now

https://kilon.github.io/CPPBridge/

Any comment , critic more than welcomed :)

On Wed, Nov 9, 2016 at 1:10 PM Dimitris Chloupis 
wrote:

> I would not call you lazy, its normal to want to see documentation before
> installing something and at least an example. Actually thats a good idea, I
> will add a few more comments in the example and use it on repo's front
> page.
>
> On Wed, Nov 9, 2016 at 12:56 PM Denis Kudriashov 
> wrote:
>
>
> 2016-11-09 11:41 GMT+01:00 Dimitris Chloupis :
>
> "Hi.
>
> It would be nice to see simple code (not in video) how to create memory
> and read/write data to it."
>
> If you get the Project it comes with an example how to use in the class
> side of the CPPBridge Class and its in methods retrieveSharedValueStep1 and
> retrieveSharedValueStep2
>
>
> I just a lazy guy. Thank's for pointing code here.
>
>


[Pharo-users] connecting to remote pharo 5 image on server.

2016-11-09 Thread itay yahalom
Hi all,
is there any RFB or VNC to use with pharo 5?
i want to connect to my pharo 5 environment remotly, the image  sit on a
linux server that is hosted on digital-ocean .
all of this is so i can control and see if something go bad with the image
(and debug it) or that i can use pharo to check the mongodb data.
any help will be great .
itay.


[Pharo-users] Ideas for a binary format for an image acting as an extension of the Pharo image

2016-11-09 Thread Dimitris Chloupis
So now that CPPBridge at least basic are sort out I have to figure out a
binary file format

The idea here is to implement an image format which will be part of the
memory of the Pharo process but will live outside the memory of the Pharo
VM. Lets call this CPPMemory will be stored to an image file, lets call it
CPPImage, like we do with the Pharo image and will store a shared state
among all other processes (Pharo or not) that connect to this shared memory
(CPPMemory) via accessing the file (CPPImage). So basically it will act as
an extension to the Pharo image.

In the image file , objects will be stored obviously not in a byte-code
format but definitely in a byte format that will basically store the data
of this object using very basic primitives like character , integers and of
course bytes.

Obviously each object will have to have an id as a header and also its size
in bytes and the size of each of its instance variables.

There will be also a global headers for the entire file with the list of
the objects included and probably a references to other CPP images that
they will be able to interconnect with each other like lego blocks.

Thats my vague idea, but I am open to suggestions and even links to
articles and documentation about what a binary format must have to be
considered well architectured.  Obviously I dont expect perfection because
this is my first binary file format but at least I am looking for advise
for avoiding common pitfalls.


Re: [Pharo-users] Ideas for a binary format for an image acting as an extension of the Pharo image

2016-11-09 Thread Johan Fabry

How about using the binary format of the VM itself? It’s a tested format that 
gives you instant compatibility with Pharo. I guess the VM people have 
documentation for it and could give you some pointers.

--
Does this mail seem too brief? Sorry for that, I don’t mean to be rude! Please 
see http://emailcharter.org  .

Johan Fabry   -   http://pleiad.cl/~jfabry
PLEIAD and RyCh labs  -  Computer Science Department (DCC)  -  University of 
Chile

> On 09 Nov 2016, at 17:27, Dimitris Chloupis  wrote:
> 
> So now that CPPBridge at least basic are sort out I have to figure out a 
> binary file format
> 
> The idea here is to implement an image format which will be part of the 
> memory of the Pharo process but will live outside the memory of the Pharo VM. 
> Lets call this CPPMemory will be stored to an image file, lets call it 
> CPPImage, like we do with the Pharo image and will store a shared state among 
> all other processes (Pharo or not) that connect to this shared memory 
> (CPPMemory) via accessing the file (CPPImage). So basically it will act as an 
> extension to the Pharo image. 
> 
> In the image file , objects will be stored obviously not in a byte-code 
> format but definitely in a byte format that will basically store the data of 
> this object using very basic primitives like character , integers and of 
> course bytes. 
> 
> Obviously each object will have to have an id as a header and also its size 
> in bytes and the size of each of its instance variables.
> 
> There will be also a global headers for the entire file with the list of the 
> objects included and probably a references to other CPP images that they will 
> be able to interconnect with each other like lego blocks.
> 
> Thats my vague idea, but I am open to suggestions and even links to articles 
> and documentation about what a binary format must have to be considered well 
> architectured.  Obviously I dont expect perfection because this is my first 
> binary file format but at least I am looking for advise for avoiding common 
> pitfalls. 



Re: [Pharo-users] Ideas for a binary format for an image acting as an extension of the Pharo image

2016-11-09 Thread Dimitris Chloupis
Nice idea I will forward to VM mailing list

On Thu, 10 Nov 2016 at 00:29, Johan Fabry  wrote:

>
> How about using the binary format of the VM itself? It’s a tested format
> that gives you instant compatibility with Pharo. I guess the VM people have
> documentation for it and could give you some pointers.
>
> --
> Does this mail seem too brief? Sorry for that, I don’t mean to be rude!
> Please see http://emailcharter.org .
>
> Johan Fabry   -   http://pleiad.cl/~jfabry
> PLEIAD and RyCh labs  -  Computer Science Department (DCC)  -  University
> of Chile
>
> On 09 Nov 2016, at 17:27, Dimitris Chloupis  wrote:
>
> So now that CPPBridge at least basic are sort out I have to figure out a
> binary file format
>
> The idea here is to implement an image format which will be part of the
> memory of the Pharo process but will live outside the memory of the Pharo
> VM. Lets call this CPPMemory will be stored to an image file, lets call it
> CPPImage, like we do with the Pharo image and will store a shared state
> among all other processes (Pharo or not) that connect to this shared memory
> (CPPMemory) via accessing the file (CPPImage). So basically it will act as
> an extension to the Pharo image.
>
> In the image file , objects will be stored obviously not in a byte-code
> format but definitely in a byte format that will basically store the data
> of this object using very basic primitives like character , integers and of
> course bytes.
>
> Obviously each object will have to have an id as a header and also its
> size in bytes and the size of each of its instance variables.
>
> There will be also a global headers for the entire file with the list of
> the objects included and probably a references to other CPP images that
> they will be able to interconnect with each other like lego blocks.
>
> Thats my vague idea, but I am open to suggestions and even links to
> articles and documentation about what a binary format must have to be
> considered well architectured.  Obviously I dont expect perfection because
> this is my first binary file format but at least I am looking for advise
> for avoiding common pitfalls.
>
>
>


Re: [Pharo-users] Converting an Array of Characters to a String

2016-11-09 Thread Igor Stasenko
On 9 November 2016 at 07:49, Dimitris Chloupis 
wrote:

> Not in C but there std::string in C++ similar to our String object.
>
> Strictly speaking , std::string is again not part of C++ per se, it comes
from library that implements such class.


> C char indeed is more a byte array than a string. Actually C won't allow
> to change the string value mainly because it thinks you try to change the
> size which something that is not allowed for arrays anyway, so the only way
> to change a char string aka char array is character by character.
>
> Null termination is why I filled the shared memory with zeros to be on the
> safe side and then added the string and the number on top
>
> just wanted to warn you, to make sure you understand that char[100] is not
string, not in C , not in C++. And, of course, it should not autoconvert to
smalltalk String object(s) in FFI, because many C coders use 'char' as a
default data type to operate with buffers of certain length and to count
their size in bytes.


> On Wed, 9 Nov 2016 at 03:41, Igor Stasenko  wrote:
>
>> What i meant, i wanted to warn Dimitris that
>> char[100]
>> are just array of 100 characters (bytes in C).. and has nothing to do
>> with strings.
>> Do not confuse fixed-length C arrays with strings. There's no 'string'
>> data type in C, and instead they use null-terminated character sequence as
>> a convention. But it is not a fixed-size data.
>>
>> On 9 November 2016 at 02:38, Igor Stasenko  wrote:
>>
>>
>>
>> On 8 November 2016 at 14:42, Esteban Lorenzano 
>> wrote:
>>
>> (always with Char100 example in mind):
>>
>> s := MyStructure fromHandle: blah.
>> string := s data readString.
>>
>> should work.
>>
>>
>> IIRC, #readString works correctly only  for correctly null-terminated
>> strings. If not, it will read beyond the structure size , until it find a
>> zero byte somewhere in memory,
>> and thus, results may vary :)
>>
>>
>> Esteban
>>
>>
>> > On 8 Nov 2016, at 14:31, Dimitris Chloupis 
>> wrote:
>> >
>> > I feel like stupid but I cannot find a way to convert an Array of
>> Characters to a String , I can do with a do: and join characters converted
>> to strings to a single string but it feels too many steps.
>> >
>> > Is there a simpler way ?
>>
>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>


-- 
Best regards,
Igor Stasenko.


Re: [Pharo-users] [ANN] CPPBridge: One Ring to rule them ALL

2016-11-09 Thread Igor Stasenko
On 9 November 2016 at 08:41, Dimitris Chloupis 
wrote:

> I am the only potential customer of CPPBridge because
>
> a) I am the only C++ coder AFAIK
> b) Using DLLs (dynamically linked shared libraries) is still by far the
> best solution because using the UFFI you can do everything from Pharo.
> Compared to CPPBridge which you will need to code in C++.
>
> So as you can imagine making a general library for IPC communication via
> shared memory is not my goal.
>
> The Unreal part will be a separate library that will depend on this one. I
> have not touched that one yet but I will soon.
>
> UnrealBridge library will become my most important Pharo project because
> the goal is to start selling games using Pharo and Unreal.
>
> IPC Protocol wise , I don't think synchronisation will be an issue because
> Unreal will be too fast for Pharo anyway and its ok if Pharo lags behind
> even a few dozens of milliseconds which is a matter of losing a couple of
> frames. I may implement a hybrid synchronisation for when Pharo lag becomes
> too severe but that will have and see in practice.
>
> Something that interest me is "stealing" your idea for NBOpenGL where you
> made an automatic generator for the library that used OpenGL headers. This
> is something that could benefit me a lot because Unreal contains over
> 10.000 methods and wrapping them one by one is not something I am looking
> forward to doing. This means generating both C++ and Pharo code.
>
>
Well, a while before that, i wrote own lobotomized smalltalk implementation
in C and started generating bindings to Ogre3D engine. I even had certain
success with it, but then i started grand-rewriting of VM and abandoned it.
That was before i switched to Squeak, then Pharo. So, your incentives quite
familiar to me :)
I was quite fun journey, and i learned a lot while doing it.. especially
about smalltalk.

Of course if I feel that what I implement with UnrealBridge is general
> purpose enough I can port it back to CPPBridge.
>
> In any case I must say it was a lot of fun accomplishing this goal and
> cant wait to dive deeper into IPC magic, making Pharo the nerve centre, the
> brain , of my coding environment is a role that I think Pharo would excel
> at. It will also allow me to use Pharo as much as possible and provide a
> super powerful game / graphics engine to the Pharo community. Shared memory
> is that just the means to that goal.
>
> Moose could also a play role later on for analysing my game code both in
> Pharo and C++ and use Roassal for some nifty visualizations though I could
> use Unreal as backend to Roassal for some nice 3d visualisations.
>
> So ton of ideas, tons of fun and a ton of time to accomplish them.
>
> PS: I have to say you have been inspiration for my IPC saga, you did the
> unthinkable (at least to me) and brought Assembly to Pharo, I never had a
> use for Assembly but nonetheless you taught me that Pharo potential is more
> massive than I imagined, so thank you :)
>

I don't understand why people find assembly scary or mind-boggling? I dived
into assembly few months after i learned my first programming language, it
was Zilog 8-bit CPU. A marvelous gem :)
And this was always fascinating to feel that you can control the computer's
behaviour down to a tiniest detail. We were even researching what certain
i/o ports and interrupts were responsible for by setting different
bits/bytes here and there and see what happen.
Because if you don't understand something down to the tiniest detail - you
cannot be sure that what you doing will work, or work optimally.
So i find it frustrating that most of programmers don't know and not even
thinking about touching assembly. Because it very simple, straightforward
and megalomaniac-rewarding :)
-- 
Best regards,
Igor Stasenko.


Re: [Pharo-users] about balkanisation

2016-11-09 Thread Dale Henrichs



On 11/8/16 7:09 AM, Thierry Goubier wrote:

Hi Dale,

2016-11-08 2:03 GMT+01:00 Dale Henrichs 
>:


[ snip ... ]


yes I think this is the area where a Metallo Project Browser comes
into play. The technology for committing the dirty packages in a a
ConfigurationOf has been around for quite awhile, but a tool that
unifies the "multi-package" commit for ConfigurationOf and
BaselineOf hasn't popped out of the wood work ...


I'm having some issues with the scripting approach of Metacello, for 
that. Just manipulating a baseline in the Metacello registry (locking 
it) seems to be like writing a compiler code generation item: write a 
Metacello script ;) (Metacello>>#lock contains interesting code).
I think I agree:) ... that is why i am talking about a tool ... 
developers shouldn't have to pass around workspaces to load and 
manipulate projects .. a project tool can partially automate the 
process, but I believe that there needs to be a "load spec" object that 
can be passed around and massaged by code instead of requiring a user to 
edit a Smalltalk workspace ... it's what I do in tODE ... the only times 
I have to write Smalltalk load scripts is when I work in Pharo :)


I will repeat that I don't think Pharo should do exactly what I've done 
with tODE, but a Metacello Project Browser and some sort of "load spec" 
object that is shared amongst a cluster of images is something that 
needs to be seriously considered ...





What is a bit annoying, really, is this talk of rewriting
everything where some of the pieces (the project browsing you're
talkin about, for example) is already there in the image, just
not exposed.

Well I am annoyed as well .. I would say that perhaps we are in
screaming agreement ... I've said that I don't think it's a lot of
work to do the project-centric tool. but a project-centric tool
that encompasses both ConfigurationOf and BaselineOf will expose
the features that "are already there"


I'm trying to code a little something for that... stay tuned for
a screenshot soon.

Cool:)


And here it is! I'm still fighting with the Metacello lock / unlock thing.

Images intégrées 1

If Pharo was more really modular in configurations and baselines, then 
I would see more things into the registry and I could group packages 
based on that (instead of having to prepare a ad-hoc classification 
for my my browser).
Yes this is headed in the right direction ... I am in Argentina this 
week so it isn't easy for me to do much collaboration, but I would love 
to help you with your lock problem next week ... For example ... you do 
not want to directly expose the Metacello registry as there are "hybrid 
projects" where a ConfigurationOf causes a BaselineOf to be loaded, so 
the BaselineOf needs to take precedence (I have code for resolving this) 
and I strongly suggest that the Project Browser not be built-into the 
Class Browser, but be a separate tool like the CataLogBrowser ... but 
this is just a suggestion --- a separate tool dedicated only to loaded 
Projects and unloaded Projects of interest allows one to get a very 
quick overview of what is in the project or not and when version skew 
pops up, one can easily see the affected projects ... embedding this 
kind of information in the code browser can make it hard to get the 
overview and if you choose to live with version skew can be annoying to 
ignore  again these are just my thoughts ..


Regardless I think you are definitely headed in the right direction and 
it isn't all that much work ... yet:)


Dale


Re: [Pharo-users] about balkanisation

2016-11-09 Thread Dale Henrichs



On 11/8/16 11:04 PM, Igor Stasenko wrote:



On 7 November 2016 at 14:28, stepharo > wrote:



[ ... ]


And this one I don't understand. A smooth, git / iceberg oriented
transition over Monticello/Metacello is perfectly doable... As
Dale explained. A nice Iceberg gui reworking / making git usable
is perfect.

But why make the transition so hard? You get Stef angry on a
Sunday morning because he can't find things anymore... even if he
is a strong proponent of the strategy he complains about ;)


No my point was not that.
My point is that it is important to pay attention and not to add
more noise than necessary. Let us take the time and move alltogether.

If you want to get somewhere with this story, you don't want to wait 
till everything will be ready.
Transition will never start unless you force users to enter the 
minefield and let them clear the mines for you. Step by step. Many 
will blow themselves up, while some will manage to pass unhurt..
Because else, it will be always a minefield between you and the 
destination of your journey :)
I think that at the early stages of the transition you have to support 
both approaches ... when the new tools are in place and stabilized then 
one can consider ... the transition has already started so this is not a 
case where you need to force folks to change, but a case where you need 
to support the folks who choose to change ... it can be relatively low 
cost to keep the old tools around for quite awhile ... I would think ...


Dale


Re: [Pharo-users] MOOC TOC cleanup

2016-11-09 Thread Siemen Baader
Hi Stef,

I have cloned the repository and linked the slides directly from the TOC. I
also have styled it with Bootstrap labels and glyphicons, and added anchors
to every item to make them easily linkable, eg for discussions on the
mailing list / slack.

The HTML files for the exercises refer to the directory 'support' (
http://rmod-pharo-mooc.lille.inria.fr/MOOC/support ) for css and js files.
I think you have missed to put the directory on the server, the links are
broken. Can you upload it?

As for the videos, they require some sort of aggregation of subtitles and
video, either in a separate HTML file with  tags, or eg. on youtube.
At some point during or after the MOOC I remember the videos were in fact
on youtube, with subtitles. Now they are back in the custom made player on
fun-mooc.fr, which is a bit impractical because the subtitles are on the
right side, slightly out of view when attending to the lecture.

Are the videos still on youtube? I could not find them again.

Would you prefer a 'full', downloadable solution with the videos and
subtitles all on mooc.pharo.org? It would be relatively easy to script
something that generates the html files, but it would take more time than
linking to the youtube videos, and I think the playback experience on
youtube would actually be better / more cross-platform.

I have a put up a preview on
https://siemenbaader.github.io/PharoMooc-website/.

What do you think?

best,
Siemen


On Thu, Nov 3, 2016 at 6:31 PM, stepharo  wrote:

>
>
> Le 3/11/16 à 18:05, Siemen Baader a écrit :
>
> Hi Stef,
>
> Sure.
>> Let me know how I can help.
>> I will forward your mail to christelle that manages the mooc for us
>>
>
> Thanks. I'm looking forward to hear from her.
>
> She translated the page but she is busy I forwarded the email to you.
>
>
>
>> Siemen
>> did you see the web portal
>> http://rmod-pharo-mooc.lille.inria.fr/MOOC/WebPortal/co/pharo.html (we
>> should add a pointer from http://mooc.pharo.org to it)
>> and also the http://mooc.pharo.org page? because we have the full
>> control on this one.
>> And this is on my todo to make sure that people can get an archive with
>> the complete mooc nicely packaged.
>> Now if you want to help it would be great.
>>
>
> Sure, we could either do it at fun-mooc.fr or mooc.pharo.org. The latter
> is cleaner and open to all. How do you generate it, and where is the
> source? I'd like to have a look.
>
> The source is on github.
> https://github.com/SquareBracketAssociates/PharoMooc-website
>
> What is the role of WebPortal?
>
> the idea was to propose a package to user and we were paid and forced to
> use this format.
> I would prefer plain HTML (or even pillar).
>
>
> best,
> Siemen
>
>
> --
> View this message in context: Re: MOOC TOC cleanup
> 
> Sent from the Pharo Smalltalk Users mailing list archive
>  at Nabble.com.
>
>
>


Re: [Pharo-users] MOOC TOC cleanup

2016-11-09 Thread Sven Van Caekenberghe
Wow, this is beautiful, well done !

> On 10 Nov 2016, at 07:21, Siemen Baader  wrote:
> 
> Hi Stef,
> 
> I have cloned the repository and linked the slides directly from the TOC. I 
> also have styled it with Bootstrap labels and glyphicons, and added anchors 
> to every item to make them easily linkable, eg for discussions on the mailing 
> list / slack.
> 
> The HTML files for the exercises refer to the directory 'support' ( 
> http://rmod-pharo-mooc.lille.inria.fr/MOOC/support ) for css and js files. I 
> think you have missed to put the directory on the server, the links are 
> broken. Can you upload it?
> 
> As for the videos, they require some sort of aggregation of subtitles and 
> video, either in a separate HTML file with  tags, or eg. on youtube. 
> At some point during or after the MOOC I remember the videos were in fact on 
> youtube, with subtitles. Now they are back in the custom made player on 
> fun-mooc.fr, which is a bit impractical because the subtitles are on the 
> right side, slightly out of view when attending to the lecture.
> 
> Are the videos still on youtube? I could not find them again.
> 
> Would you prefer a 'full', downloadable solution with the videos and 
> subtitles all on mooc.pharo.org? It would be relatively easy to script 
> something that generates the html files, but it would take more time than 
> linking to the youtube videos, and I think the playback experience on youtube 
> would actually be better / more cross-platform.
> 
> I have a put up a preview on 
> https://siemenbaader.github.io/PharoMooc-website/.
> 
> What do you think?
> 
> best,
> Siemen
> 
> 
> On Thu, Nov 3, 2016 at 6:31 PM, stepharo  wrote:
> 
> 
> Le 3/11/16 à 18:05, Siemen Baader a écrit :
>> Hi Stef,
>> 
>> Sure. 
>> Let me know how I can help. 
>> I will forward your mail to christelle that manages the mooc for us 
>> 
>> Thanks. I'm looking forward to hear from her.
> She translated the page but she is busy I forwarded the email to you. 
>> 
>> 
>> Siemen 
>> did you see the web portal 
>> http://rmod-pharo-mooc.lille.inria.fr/MOOC/WebPortal/co/pharo.html (we 
>> should add a pointer from http://mooc.pharo.org to it) 
>> and also the http://mooc.pharo.org page? because we have the full 
>> control on this one. 
>> And this is on my todo to make sure that people can get an archive with 
>> the complete mooc nicely packaged. 
>> Now if you want to help it would be great. 
>> 
>> Sure, we could either do it at fun-mooc.fr or mooc.pharo.org. The latter is 
>> cleaner and open to all. How do you generate it, and where is the source? 
>> I'd like to have a look.
> The source is on github. 
> https://github.com/SquareBracketAssociates/PharoMooc-website
> 
>> What is the role of WebPortal?
> the idea was to propose a package to user and we were paid and forced to use 
> this format. 
> I would prefer plain HTML (or even pillar). 
>> 
>> best,
>> Siemen
>> 
>> 
>> View this message in context: Re: MOOC TOC cleanup
>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
> 
> 




Re: [Pharo-users] MOOC TOC cleanup

2016-11-09 Thread Siemen Baader
On 10/11/2016, at 07.32, "Sven Van Caekenberghe-2 [via Smalltalk]" 
 wrote:

> Wow, this is beautiful, well done ! 

Thanks, I'm glad you like it. I like your zinc docs ;)

Siemen
> 
> > On 10 Nov 2016, at 07:21, Siemen Baader <[hidden email]> wrote: 
> > 
> > Hi Stef, 
> > 
> > I have cloned the repository and linked the slides directly from the TOC. I 
> > also have styled it with Bootstrap labels and glyphicons, and added anchors 
> > to every item to make them easily linkable, eg for discussions on the 
> > mailing list / slack. 
> > 
> > The HTML files for the exercises refer to the directory 'support' ( 
> > http://rmod-pharo-mooc.lille.inria.fr/MOOC/support ) for css and js files. 
> > I think you have missed to put the directory on the server, the links are 
> > broken. Can you upload it? 
> > 
> > As for the videos, they require some sort of aggregation of subtitles and 
> > video, either in a separate HTML file with  tags, or eg. on youtube. 
> > At some point during or after the MOOC I remember the videos were in fact 
> > on youtube, with subtitles. Now they are back in the custom made player on 
> > fun-mooc.fr, which is a bit impractical because the subtitles are on the 
> > right side, slightly out of view when attending to the lecture. 
> > 
> > Are the videos still on youtube? I could not find them again. 
> > 
> > Would you prefer a 'full', downloadable solution with the videos and 
> > subtitles all on mooc.pharo.org? It would be relatively easy to script 
> > something that generates the html files, but it would take more time than 
> > linking to the youtube videos, and I think the playback experience on 
> > youtube would actually be better / more cross-platform. 
> > 
> > I have a put up a preview on 
> > https://siemenbaader.github.io/PharoMooc-website/. 
> > 
> > What do you think? 
> > 
> > best, 
> > Siemen 
> > 
> > 
> > On Thu, Nov 3, 2016 at 6:31 PM, stepharo <[hidden email]> wrote: 
> > 
> > 
> > Le 3/11/16 à 18:05, Siemen Baader a écrit : 
> >> Hi Stef, 
> >> 
> >> Sure. 
> >> Let me know how I can help. 
> >> I will forward your mail to christelle that manages the mooc for us 
> >> 
> >> Thanks. I'm looking forward to hear from her. 
> > She translated the page but she is busy I forwarded the email to you. 
> >> 
> >> 
> >> Siemen 
> >> did you see the web portal 
> >> http://rmod-pharo-mooc.lille.inria.fr/MOOC/WebPortal/co/pharo.html (we 
> >> should add a pointer from http://mooc.pharo.org to it) 
> >> and also the http://mooc.pharo.org page? because we have the full 
> >> control on this one. 
> >> And this is on my todo to make sure that people can get an archive with 
> >> the complete mooc nicely packaged. 
> >> Now if you want to help it would be great. 
> >> 
> >> Sure, we could either do it at fun-mooc.fr or mooc.pharo.org. The latter 
> >> is cleaner and open to all. How do you generate it, and where is the 
> >> source? I'd like to have a look. 
> > The source is on github. 
> > https://github.com/SquareBracketAssociates/PharoMooc-website
> > 
> >> What is the role of WebPortal? 
> > the idea was to propose a package to user and we were paid and forced to 
> > use this format. 
> > I would prefer plain HTML (or even pillar). 
> >> 
> >> best, 
> >> Siemen 
> >> 
> >> 
> >> View this message in context: Re: MOOC TOC cleanup 
> >> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. 
> > 
> >
> 
> 
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://forum.world.st/MOOC-TOC-cleanup-tp4921304p4922444.html
> To unsubscribe from MOOC TOC cleanup, click here.
> NAML




--
View this message in context: 
http://forum.world.st/MOOC-TOC-cleanup-tp4921304p4922446.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.