Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- 7 participants
- 50354 messages
Re: [Pharo-users] SSL client certificates
by Norbert Hartl
> Am 14.01.2016 um 12:42 schrieb Sven Van Caekenberghe <sven(a)stfx.eu>:
>
>>
>> On 14 Jan 2016, at 12:12, Norbert Hartl <norbert(a)hartl.name> wrote:
>>
>>>
>>> Am 12.01.2016 um 16:25 schrieb Sven Van Caekenberghe <sven(a)stfx.eu>:
>>>
>>> Given a ZdcSecureSocketStream you can access the #sslSession. In this session object you can use #certificateName: to set the path or name of the certificate (before you #connect !). That is the general idea.
>>>
>>> Now, I don't know if this works or not. Be prepared to look in the plugin C code! On Linux this will probably work.
>>>
>>> And please let us know how it goes ;-)
>>>
>>>> On 12 Jan 2016, at 16:05, Norbert Hartl <norbert(a)hartl.name> wrote:
>>>>
>>>> Is there a way to make SSL connections to the outside world using client certificates from pharo?
>>>>
>>
>> There were some issues with certificates. I tested a lot but did an error on the way. Now I did everything again like creating certificates etc. I could establish a connection from a linux machine. At least it doesn't signal anything an tells it is connected.
>
> So that *is* good news ! If you could share more details, that might help others as well.
I'm on it :)
>
>> On Mac OS it does not work.
>
> Have you seen the C source code of the Mac SSL Plugin ? It is written against an API from Mac OS System 7, from before Mac OS X, that is an OS from last century, ~199X. This is ancient, you won't find many developers who want to work on that, nor does it make sense towards the future.
>
> OpenSSL is also available standard on Mac OS X, the Linux plugin could just as well be used there (give or take).
>
>> I think it has something to do with the certificate authority. On linux the CA of the apple server is installed system wide. The SSL plugin code only looks for the certificate and the key but not for the CA. So under linux it finds it in the system but on Mac OS I couldn't do the same. I imported the CA in the keychain but openssl does not seem to find it there.
>
> It is very simple why it does not work on Mac (like I said), it is just not implemented !
>
> Try finding where certName is used in sqMacSSL.c, there is a setter and getter, but it is simply not used, so it can never work.
>
> In sqUnixOpenSSL.c on the other hand, there is
>
> /* if a cert is provided, use it */
> if(ssl->certName) {
> if(ssl->loglevel) printf("sqSetupSSL: Using cert file %s\n", ssl->certName);
> if(SSL_CTX_use_certificate_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0)
> ERR_print_errors_fp(stderr);
>
> if(SSL_CTX_use_PrivateKey_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0)
> ERR_print_errors_fp(stderr);
> }
>
Oops I was only looking at the unix code assuming it would be used for Mac OS as well. In the Mac code there is
/* Disable cert verification since we do that ourselves */
status = SSLSetEnableCertVerify(ssl->ctx, false);
I don't understand the comment. But reading it I think this would "solve" the problem as well :)
Norbert
Jan. 14, 2016
Re: [Pharo-users] [ann] gtdebugger in pharo 5.0
by Andrei Chis
Hi Nicolai,
Thanks for reporting these issues. They are indeed bugs and we are working
on fixing them.
Cheers,
Andrei
On Tue, Jan 12, 2016 at 11:24 PM, Nicolai Hess <nicolaihess(a)gmail.com>
wrote:
>
>
> 2016-01-08 11:24 GMT+01:00 Tudor Girba <tudor(a)tudorgirba.com>:
>
>> Hi,
>>
>> We are about to integrate in Pharo a new member of the Glamorous Toolkit:
>> the GTDebugger. As this is a significant change that might affect your
>> workflow, here is some background information to help you deal with the
>> change.
>>
>> First, you should know that the change is not irreversible and it is
>> easily possible to disabled the new debugger through a setting. However,
>> please do take the time to provide us feedback if something does not work
>> out for you. We want to know what can be improved and we try to react as
>> fast as we can.
>>
>> A practical change comes from the fact that the variables are manipulated
>> through a GTInspector, which makes it cheaper to maintain in the longer run.
>>
>
> Accept and Cancel buttons shouldn't be there
> or should not act on if the codepane hasn't changed.
> (every press on "accept" writes a new method version, although the
> contents didn't changed - tested on
> Latest update: #50524 )
>
> Most (all?) other tools don't have Accept/Cancel buttons.
>
> - I really miss the "List Methods using 'varname'/List Methods storing
> into 'varname'
> - is "stackTop" now gone ? I thought you wanted to add it to the stack ?
> - thisContext is gone as well ?
> - the Bytecode/GT button is badly placed, it looks like the "downarrow"
> window menu icon
> is a dropdown menu with label "Bytecode" (since when do we put buttons
> in the title pane?
> - the evaluator pane is shown as "dirty", as it does not make a difference
> if we
> accept the text in this pane, there shouldn't be a dirty indicator.
> - you can not use the inspector pane to change inst var values
> - there is no way to refresh the inspector pane
>
> I don't open bugtracker entries now, I 'll wait maybe this issues aren't
> bugs but
> features.
>
>
> nicolai
>
>
>
Jan. 14, 2016
Re: [Pharo-users] SSL client certificates
by Sven Van Caekenberghe
> On 14 Jan 2016, at 12:12, Norbert Hartl <norbert(a)hartl.name> wrote:
>
>>
>> Am 12.01.2016 um 16:25 schrieb Sven Van Caekenberghe <sven(a)stfx.eu>:
>>
>> Given a ZdcSecureSocketStream you can access the #sslSession. In this session object you can use #certificateName: to set the path or name of the certificate (before you #connect !). That is the general idea.
>>
>> Now, I don't know if this works or not. Be prepared to look in the plugin C code! On Linux this will probably work.
>>
>> And please let us know how it goes ;-)
>>
>>> On 12 Jan 2016, at 16:05, Norbert Hartl <norbert(a)hartl.name> wrote:
>>>
>>> Is there a way to make SSL connections to the outside world using client certificates from pharo?
>>>
>
> There were some issues with certificates. I tested a lot but did an error on the way. Now I did everything again like creating certificates etc. I could establish a connection from a linux machine. At least it doesn't signal anything an tells it is connected.
So that *is* good news ! If you could share more details, that might help others as well.
> On Mac OS it does not work.
Have you seen the C source code of the Mac SSL Plugin ? It is written against an API from Mac OS System 7, from before Mac OS X, that is an OS from last century, ~199X. This is ancient, you won't find many developers who want to work on that, nor does it make sense towards the future.
OpenSSL is also available standard on Mac OS X, the Linux plugin could just as well be used there (give or take).
> I think it has something to do with the certificate authority. On linux the CA of the apple server is installed system wide. The SSL plugin code only looks for the certificate and the key but not for the CA. So under linux it finds it in the system but on Mac OS I couldn't do the same. I imported the CA in the keychain but openssl does not seem to find it there.
It is very simple why it does not work on Mac (like I said), it is just not implemented !
Try finding where certName is used in sqMacSSL.c, there is a setter and getter, but it is simply not used, so it can never work.
In sqUnixOpenSSL.c on the other hand, there is
/* if a cert is provided, use it */
if(ssl->certName) {
if(ssl->loglevel) printf("sqSetupSSL: Using cert file %s\n", ssl->certName);
if(SSL_CTX_use_certificate_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0)
ERR_print_errors_fp(stderr);
if(SSL_CTX_use_PrivateKey_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0)
ERR_print_errors_fp(stderr);
}
Sven
> Norbert
Jan. 14, 2016
Re: [Pharo-users] SSL client certificates
by Norbert Hartl
> Am 12.01.2016 um 16:25 schrieb Sven Van Caekenberghe <sven(a)stfx.eu>:
>
> Given a ZdcSecureSocketStream you can access the #sslSession. In this session object you can use #certificateName: to set the path or name of the certificate (before you #connect !). That is the general idea.
>
> Now, I don't know if this works or not. Be prepared to look in the plugin C code! On Linux this will probably work.
>
> And please let us know how it goes ;-)
>
>> On 12 Jan 2016, at 16:05, Norbert Hartl <norbert(a)hartl.name> wrote:
>>
>> Is there a way to make SSL connections to the outside world using client certificates from pharo?
>>
There were some issues with certificates. I tested a lot but did an error on the way. Now I did everything again like creating certificates etc. I could establish a connection from a linux machine. At least it doesn't signal anything an tells it is connected. On Mac OS it does not work.
I think it has something to do with the certificate authority. On linux the CA of the apple server is installed system wide. The SSL plugin code only looks for the certificate and the key but not for the CA. So under linux it finds it in the system but on Mac OS I couldn't do the same. I imported the CA in the keychain but openssl does not seem to find it there.
Norbert
Jan. 14, 2016
Re: [Pharo-users] I am David Allouche, let me introduce myself.
by Dimitris Chloupis
sure but namespaces do not solve that problem either. They actually make it
much worse. You can have a library named Door by X author and then another
library named Door by author Y , hello name clash. Even worse those
libraries may contain objects than name class, normally that would not be a
problem under the expected usage of name space but lazy coders being ....
well lazy... they love to collapse the namespace to reduce typing. So
House.Door.Handle will become just Handle which may clash with with the
name of another collapsed namespace.
Pharo is immune to such issues and the enviroment guarantees that you wont
have name clashes inside the image. Namespaces , dont.
Add to that that we are very much centralised community around STHub and
GitHub which makes it dead easy to find any potential name clash, compared
to other languages that are spread all over the internet.
So I would say its more a luxury solution than a poor man's. What pharo
lacks is something that helps us organise our classes even more and even
tag them to form relationships between them. But thats easy to implement
the questions is who is going to port the thousands of classes to a new
system.
On Thu, Jan 14, 2016 at 4:50 AM Ben Coman <btc(a)openinworld.com> wrote:
> On Thu, Jan 14, 2016 at 2:12 AM, Dimitris Chloupis
> <kilon.alios(a)gmail.com> wrote:
> > "I have seen someone in another thread expressing the desire for
> namespaces.
> > As a newcomer, I also feel that is something important and missing. But
> > since one of the goals of Pharo is to produce an environment that can be
> > understood by a single person, the lack of namespace might actually be a
> > feature. Namespace are essential for languages like C++, designed for
> large
> > projects, produced by large teams, where nobody understands the whole
> > system. They embody an industrial approach to programming. In contrast, I
> > have the impression that Smalltalk emphasises regularity to minimise
> system
> > size, rather than modularity to manage system size, and that it embodies
> a
> > craftsmanship approach."
> >
> > Pharo contains over 800000 methods spread around several thousands
> classes
> > and the system has not imploded yet even though we have no namespaces.
> The
> > reasoning is simple, Pharo does not need namespaces because its not a
> > programming language. Namespaces primary role is not organization so
> much as
> > prevention of name clashes , this is not a problem for Pharo since it
> does
> > not allow name clashes in the first place.
>
> Name clashes can still happen between different external libraries.
> Effectively we have a poor-mans namespaces with prefixes. But its
> harder to port libraries from other Smalltalks that support
> namespaces, limiting our ecosystem. Not necessarily the main driver,
> but worthy of consideration. Squeak has recently done some namespace
> stuff so will be interesting to see their experience.
>
> cheers -ben
>
>
> > Thats is happening in the
> > enviroment and not language level, if you want to organise your classes
> you
> > use packages . Packages also are not part of the language and are also
> > implemented on enviroment level, though one could argue that language is
> > also part of the enviroment.
> >
> > So yes it feelt strange even for not having namespace coming from python
> but
> > after coding in pharo for over a year its clear to me that pharo does not
> > need it and would probably benefit by more sophisticated and specific
> > implementation when it comes to organisations. But generally speaking we
> > already have plenty of tools that help you locate classes and methods
> with
> > ease, so that is not much of a problem.
> >
> > Pharo enviroment is far from simple, quite the contrary Smalltalk
> > implementations were always far more complex than you average language
> like
> > C++, the big diffirence is that the enviroment is constructed in such
> way to
> > help you deal with complexity. Where modern languages ephasize simplicity
> > pharo and smalltalk in general invest on better dealing with complexity ,
> > hence why Smalltalk has been very popular in specific very complex fields
> > like Banking Sector, Shipping etc. C++ is no where as suitable for
> complex
> > applications , its popularity merely stems from the fact that is OS
> language
> > with immediate access to OS libraries and massive support.
> >
> > On Wed, Jan 13, 2016 at 7:30 PM David Allouche <david(a)allouche.net>
> wrote:
> >>
> >> Thank you everyone for the kind responses. I will answer some of the
> >> questions and suggestions here.
> >>
> >> To get faster to the intellectual stimulation, pick a task / project and
> >> start asking questions. And have fun :).
> >>
> >>
> >> That is good advice, but right now I think I will just explore the
> system,
> >> review changes, and wait for the tasks to find me. There are already
> more
> >> things I want to do than I will probably every be able to accomplish :-)
> >>
> >> I think when people referring to Smalltalk refer to Smalltalk as the
> >> language or OOP itself, but thats only the tip of the iceberg, Pharo
> tries
> >> to stay true to vision of smalltalk creating the virtual enviroment
> where
> >> the user can easily create his or her own tools or modifying the
> existing
> >> ones, something that I feel no other language out there can emulate
> because
> >> they follow a non monolithic approach where there is a deep dichotomy
> >> between language, libraries and the environment itself. You could say
> that
> >> Smalltalk is the anti-Unix architecture , a great example of monolithic
> >> design that works great in practice yet its easy to modify and extend.
> >>
> >>
> >> The fact Smalltalk the language cannot be taken in isolation from
> >> Smalltalk the environment became clear rather early on: reading the
> UPBE and
> >> other materials shows that the language itself does almost nothing: it
> >> cannot even define classes or packages. It is all part of the
> environment.
> >>
> >> I have seen someone in another thread expressing the desire for
> >> namespaces. As a newcomer, I also feel that is something important and
> >> missing. But since one of the goals of Pharo is to produce an
> environment
> >> that can be understood by a single person, the lack of namespace might
> >> actually be a feature. Namespace are essential for languages like C++,
> >> designed for large projects, produced by large teams, where nobody
> >> understands the whole system. They embody an industrial approach to
> >> programming. In contrast, I have the impression that Smalltalk
> emphasises
> >> regularity to minimise system size, rather than modularity to manage
> system
> >> size, and that it embodies a craftsmanship approach.
> >>
> >> Since I am just old enough to remember a time where computer systems
> could
> >> be understood by a single person, I find it an attractive idea to try
> and
> >> produce a modern system with that property.
> >>
> >> I can't remember who famous said something like "The only languages
> >> worth learning are the ones that changes the way you think about
> >> programming..." and I found that with Smalltalk & Pharo.
> >>
> >>
> >> I am familiar with that idea too. And most good languages provide that.
> >>
> >> One day I will have learn some language from the ML family. I choose
> >> Smalltalk because it clearly had such a strong influence on the
> thinking of
> >> people who have used it, I thought I could learn
> >>
> >> A good way to get your hands dirty is to review fixes submitted by
> >> others...
> >> https://pharo.fogbugz.com/default.asp?pgx=LF&ixFilter=45
> >> There are never enough hands there :) (my own action here fluctuates
> >> from time to time)
> >>
> >>
> >> I will try to spend some time reviewing code. That is a good way to get
> >> exposed to things one does not even know they exist.
> >>
> >> Did you look at Seaside?
> >> Since you should be able to read french there is a nice tutorial:
> >> tinyBlog. In two days you can build a small web app
> >> with a mongo back end.
> >>
> >>
> >> I have no looked at Seaside yet, I have not even read the corresponding
> >> chapter in UPBE. But I certainly will, eventually. The web is an
> essential
> >> part of society today.
> >>
> >> Where are you located ?
> >>
> >>
> >> Paris, France.
> >>
> >> It did occur to me that the Pharo community does have a unusually large
> >> fraction of french people. But that is not a factor for me.
> >>
> >> Thanks again for all the kind words. I am sure this journey is going to
> be
> >> a lot of fun. :-)
> >>
> >>
> >
>
>
Jan. 14, 2016
Re: [Pharo-users] Spec: Populating a playground with a particular content (was Re: Spec: Binding widgets how to)
by Nicolai Hess
2016-01-13 23:07 GMT+01:00 Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
:
> Hi,
>
> I've reading the code at [1] but I'm still having problems understanding
> the dynamic spec. I have created a small dictionary and populated with
> data, then created the accessors and initializePresenter, initializeWidgets
> and rebuildWithdCodeLayout and rebuildWithTextLayout, as you can see on the
> following snippets, but nothing happens despite the debugging Transcript is
> showing me that the content subwidget has the proper model, but is not
> rebuild in the GUI.
>
> Any help is, as always, very much appreciated.
>
Hi Offray,
I think you have to call
self needRebuild: false.
in both rebuild... methods.
Otherwise the all "inner"-widgets are rebuild:
>
> [1]
> https://github.com/spec-framework/documentation/blob/master/output/book.md#…
>
> ----------------------
> DynamicDict>>initializeWidgets
>
> | data |
> data := { 'first' -> 'I\"m just text' . 'second' -> 'ProfStef
> openPharoZenWorkspace'} asOrderedDictionary.
> list := self newList.
> list items: data keys.
> content := self newText.
> self focusOrder
> add: list;
> add: content.
> ----------------------
> DynamicDict>>initializePresenter
> list whenSelectedItemChanged: [:item |
> item = 'first'
> ifTrue: [ self rebuildWithTextLayout ].
> item = 'second'
> ifTrue: [ self rebuildWithCodeLayout ].
> ]
> ----------------------
> DynamicDict>>rebuildWithCodeLayout
> | newLayout |
>
> content := self instantiate: GlamourPresentationModel.
> newLayout := SpecLayout composed
> newRow: [:row |
> row
> add: #list right: 0.7;
> add: #content left: 0.3];
> yourself.
> self needRebuild: true.
> content needRebuild: true.
> Transcript show: 'código + ', self content asString, String cr.
> self buildWithSpecLayout: newLayout.
> ----------------------
> DynamicDict>>rebuildWithTextLayout
> | newLayout |
>
> content := self newText.
> newLayout := SpecLayout composed
> newRow: [:row |
> row
> add: #list right: 0.7;
> add: #content left: 0.3];
> yourself.
> self needRebuild: false.
> list needRebuild: false.
> content needRebuild: true.
> Transcript show: 'texto + ', self content asString, String cr..
> self buildWithSpecLayout: newLayout.
> ----------------------
>
> Cheers,
>
> Offray
>
> On 10/01/16 13:39, Johan Fabry wrote:
>
> Sorry for the lateness and short reply but I’m involved in a bunch of
> other things that are taking almost all of my time ...
>
> From what I understand and what I can see in your code, you want to modify
> a widget when the UI is open. However you never trigger the rebuilding of
> the window. For example, see the Spec docs that I sent, where in 9.1 there
> is code that calls buildWithSpecLayout: .
>
> Actually, I am not sure you need to subclass DynamicComposableModel since
> the number of widgets never changes. You can use a normal ComposableModel
> subclass and use what is detailed in 9.1 to change the layout between the
> two options you want to have (a TextModel or a GlamourPresentationModel).
>
> On Jan 8, 2016, at 23:07, Offray Vladimir Luna Cárdenas <offray(a)riseup.net>
> wrote:
>
> Shouldn't be #right dynamically defined according to the values of 'item'
> and be replaced on the m2 layout?
>
>
>
>
> ---> Save our in-boxes! http://emailcharter.org <---
>
> Johan Fabry - http://pleiad.cl/~jfabry
> PLEIAD and RyCh labs - Computer Science Department (DCC) - University
> of Chile
>
>
>
Jan. 14, 2016
Re: [Pharo-users] I am David Allouche, let me introduce myself.
by Ben Coman
On Thu, Jan 14, 2016 at 2:12 AM, Dimitris Chloupis
<kilon.alios(a)gmail.com> wrote:
> "I have seen someone in another thread expressing the desire for namespaces.
> As a newcomer, I also feel that is something important and missing. But
> since one of the goals of Pharo is to produce an environment that can be
> understood by a single person, the lack of namespace might actually be a
> feature. Namespace are essential for languages like C++, designed for large
> projects, produced by large teams, where nobody understands the whole
> system. They embody an industrial approach to programming. In contrast, I
> have the impression that Smalltalk emphasises regularity to minimise system
> size, rather than modularity to manage system size, and that it embodies a
> craftsmanship approach."
>
> Pharo contains over 800000 methods spread around several thousands classes
> and the system has not imploded yet even though we have no namespaces. The
> reasoning is simple, Pharo does not need namespaces because its not a
> programming language. Namespaces primary role is not organization so much as
> prevention of name clashes , this is not a problem for Pharo since it does
> not allow name clashes in the first place.
Name clashes can still happen between different external libraries.
Effectively we have a poor-mans namespaces with prefixes. But its
harder to port libraries from other Smalltalks that support
namespaces, limiting our ecosystem. Not necessarily the main driver,
but worthy of consideration. Squeak has recently done some namespace
stuff so will be interesting to see their experience.
cheers -ben
> Thats is happening in the
> enviroment and not language level, if you want to organise your classes you
> use packages . Packages also are not part of the language and are also
> implemented on enviroment level, though one could argue that language is
> also part of the enviroment.
>
> So yes it feelt strange even for not having namespace coming from python but
> after coding in pharo for over a year its clear to me that pharo does not
> need it and would probably benefit by more sophisticated and specific
> implementation when it comes to organisations. But generally speaking we
> already have plenty of tools that help you locate classes and methods with
> ease, so that is not much of a problem.
>
> Pharo enviroment is far from simple, quite the contrary Smalltalk
> implementations were always far more complex than you average language like
> C++, the big diffirence is that the enviroment is constructed in such way to
> help you deal with complexity. Where modern languages ephasize simplicity
> pharo and smalltalk in general invest on better dealing with complexity ,
> hence why Smalltalk has been very popular in specific very complex fields
> like Banking Sector, Shipping etc. C++ is no where as suitable for complex
> applications , its popularity merely stems from the fact that is OS language
> with immediate access to OS libraries and massive support.
>
> On Wed, Jan 13, 2016 at 7:30 PM David Allouche <david(a)allouche.net> wrote:
>>
>> Thank you everyone for the kind responses. I will answer some of the
>> questions and suggestions here.
>>
>> To get faster to the intellectual stimulation, pick a task / project and
>> start asking questions. And have fun :).
>>
>>
>> That is good advice, but right now I think I will just explore the system,
>> review changes, and wait for the tasks to find me. There are already more
>> things I want to do than I will probably every be able to accomplish :-)
>>
>> I think when people referring to Smalltalk refer to Smalltalk as the
>> language or OOP itself, but thats only the tip of the iceberg, Pharo tries
>> to stay true to vision of smalltalk creating the virtual enviroment where
>> the user can easily create his or her own tools or modifying the existing
>> ones, something that I feel no other language out there can emulate because
>> they follow a non monolithic approach where there is a deep dichotomy
>> between language, libraries and the environment itself. You could say that
>> Smalltalk is the anti-Unix architecture , a great example of monolithic
>> design that works great in practice yet its easy to modify and extend.
>>
>>
>> The fact Smalltalk the language cannot be taken in isolation from
>> Smalltalk the environment became clear rather early on: reading the UPBE and
>> other materials shows that the language itself does almost nothing: it
>> cannot even define classes or packages. It is all part of the environment.
>>
>> I have seen someone in another thread expressing the desire for
>> namespaces. As a newcomer, I also feel that is something important and
>> missing. But since one of the goals of Pharo is to produce an environment
>> that can be understood by a single person, the lack of namespace might
>> actually be a feature. Namespace are essential for languages like C++,
>> designed for large projects, produced by large teams, where nobody
>> understands the whole system. They embody an industrial approach to
>> programming. In contrast, I have the impression that Smalltalk emphasises
>> regularity to minimise system size, rather than modularity to manage system
>> size, and that it embodies a craftsmanship approach.
>>
>> Since I am just old enough to remember a time where computer systems could
>> be understood by a single person, I find it an attractive idea to try and
>> produce a modern system with that property.
>>
>> I can't remember who famous said something like "The only languages
>> worth learning are the ones that changes the way you think about
>> programming..." and I found that with Smalltalk & Pharo.
>>
>>
>> I am familiar with that idea too. And most good languages provide that.
>>
>> One day I will have learn some language from the ML family. I choose
>> Smalltalk because it clearly had such a strong influence on the thinking of
>> people who have used it, I thought I could learn
>>
>> A good way to get your hands dirty is to review fixes submitted by
>> others...
>> https://pharo.fogbugz.com/default.asp?pgx=LF&ixFilter=45
>> There are never enough hands there :) (my own action here fluctuates
>> from time to time)
>>
>>
>> I will try to spend some time reviewing code. That is a good way to get
>> exposed to things one does not even know they exist.
>>
>> Did you look at Seaside?
>> Since you should be able to read french there is a nice tutorial:
>> tinyBlog. In two days you can build a small web app
>> with a mongo back end.
>>
>>
>> I have no looked at Seaside yet, I have not even read the corresponding
>> chapter in UPBE. But I certainly will, eventually. The web is an essential
>> part of society today.
>>
>> Where are you located ?
>>
>>
>> Paris, France.
>>
>> It did occur to me that the Pharo community does have a unusually large
>> fraction of french people. But that is not a factor for me.
>>
>> Thanks again for all the kind words. I am sure this journey is going to be
>> a lot of fun. :-)
>>
>>
>
Jan. 14, 2016
Re: [Pharo-users] I am David Allouche, let me introduce myself.
by Serge Stinckwich
On Wed, Jan 13, 2016 at 6:29 PM, David Allouche <david(a)allouche.net> wrote:
> Thank you everyone for the kind responses. I will answer some of the
> questions and suggestions here.
...
> Where are you located ?
>
>
> Paris, France.
Great !
I'm also located in Paris.
Maybe we could have a Pharo user group in the future. I know 5
Pharoers now in Paris ;-)
Regards,
--
Serge Stinckwich
UCBN & UMI UMMISCO 209 (IRD/UPMC)
Every DSL ends up being Smalltalk
http://www.doesnotunderstand.org/
Jan. 13, 2016
Re: [Pharo-users] Spec: Populating a playground with a particular content (was Re: Spec: Binding widgets how to)
by Offray Vladimir Luna Cárdenas
Hi,
I've reading the code at [1] but I'm still having problems understanding
the dynamic spec. I have created a small dictionary and populated with
data, then created the accessors and initializePresenter,
initializeWidgets and rebuildWithdCodeLayout and rebuildWithTextLayout,
as you can see on the following snippets, but nothing happens despite
the debugging Transcript is showing me that the content subwidget has
the proper model, but is not rebuild in the GUI.
Any help is, as always, very much appreciated.
[1]
https://github.com/spec-framework/documentation/blob/master/output/book.md#…
----------------------
DynamicDict>>initializeWidgets
| data |
data := { 'first' -> 'I\"m just text' . 'second' -> 'ProfStef
openPharoZenWorkspace'} asOrderedDictionary.
list := self newList.
list items: data keys.
content := self newText.
self focusOrder
add: list;
add: content.
----------------------
DynamicDict>>initializePresenter
list whenSelectedItemChanged: [:item |
item = 'first'
ifTrue: [ self rebuildWithTextLayout ].
item = 'second'
ifTrue: [ self rebuildWithCodeLayout ].
]
----------------------
DynamicDict>>rebuildWithCodeLayout
| newLayout |
content := self instantiate: GlamourPresentationModel.
newLayout := SpecLayout composed
newRow: [:row |
row
add: #list right: 0.7;
add: #content left: 0.3];
yourself.
self needRebuild: true.
content needRebuild: true.
Transcript show: 'código + ', self content asString, String cr.
self buildWithSpecLayout: newLayout.
----------------------
DynamicDict>>rebuildWithTextLayout
| newLayout |
content := self newText.
newLayout := SpecLayout composed
newRow: [:row |
row
add: #list right: 0.7;
add: #content left: 0.3];
yourself.
self needRebuild: false.
list needRebuild: false.
content needRebuild: true.
Transcript show: 'texto + ', self content asString, String cr..
self buildWithSpecLayout: newLayout.
----------------------
Cheers,
Offray
On 10/01/16 13:39, Johan Fabry wrote:
> Sorry for the lateness and short reply but I’m involved in a bunch of
> other things that are taking almost all of my time ...
>
> From what I understand and what I can see in your code, you want to
> modify a widget when the UI is open. However you never trigger the
> rebuilding of the window. For example, see the Spec docs that I sent,
> where in 9.1 there is code that calls buildWithSpecLayout: .
>
> Actually, I am not sure you need to subclass DynamicComposableModel
> since the number of widgets never changes. You can use a normal
> ComposableModel subclass and use what is detailed in 9.1 to change the
> layout between the two options you want to have (a TextModel or a
> GlamourPresentationModel).
>
>> On Jan 8, 2016, at 23:07, Offray Vladimir Luna Cárdenas
>> <offray(a)riseup.net <mailto:offray@riseup.net>> wrote:
>>
>> Shouldn't be #right dynamically defined according to the values of
>> 'item' and be replaced on the m2 layout?
>
>
>
> ---> Save our in-boxes! http://emailcharter.org <---
>
> Johan Fabry - http://pleiad.cl/~jfabry <http://pleiad.cl/%7Ejfabry>
> PLEIAD and RyCh labs - Computer Science Department (DCC) -
> University of Chile
>
Jan. 13, 2016
Re: [Pharo-users] I am David Allouche, let me introduce myself.
by Offray Vladimir Luna Cárdenas
Hi,
On 10/01/16 17:16, Dimitris Chloupis wrote:
[...]
>
> I think when people referring to Smalltalk refer to Smalltalk as the
> language or OOP itself, but thats only the tip of the iceberg, Pharo
> tries to stay true to vision of smalltalk creating the virtual
> enviroment where the user can easily create his or her own tools or
> modifying the existing ones, something that I feel no other language
> out there can emulate because they follow a non monolithic approach
> where there is a deep dichotomy between language, libraries and the
> environment itself. You could say that Smalltalk is the anti-Unix
> architecture , a great example of monolithic design that works great
> in practice yet its easy to modify and extend.
>
[...]
A place where I finally got this clear was in the book Tracing the
Dynabook by John W. Maxwell[1], where its author says that a fair
comparison wouldn't be between Smalltalk and other programming
languages, but between Smalltalk and the operative systems paradigm. I
had found Squeak in 2005 and even reading something about the Dynabook,
but was until reading this text on 2007 when I finally get it. It has a
different approach that the classical programming book, but was one of
the most enlightening reading for me about Smalltalk, the dynabook and
the popular computer paradigm we have today.
[1] http://tkbr.ccsp.sfu.ca/dynabook/
Cheers,
Offray
Jan. 13, 2016