Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- 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
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
October 2013
- 93 participants
- 1807 messages
Re: [Pharo-dev] Questions about Athens
by Alexandre Bergel
Not sure to fully understand the problem. In what ShivaVG would solve a situation better than with Athens? If I understand well, a then working with Cairo uses the hardware acceleration right?
What is it not enough for you need?
Alexandre
> Le 31-10-2013 à 19:16, Igor Stasenko <siguctua(a)gmail.com> a écrit :
>
> I cannot say, of course, how it would be for you, but there is ShivaVG[1] open-source
> opengl implementation of OpenVG, more or less feature-complete,
> so all what is needed is to port this code from C to smalltalk.
> Or if not for porting, but using as a source of insights how to implement it.
> I think it is fairly doable.
Oct. 31, 2013
Re: [Pharo-dev] Questions about Athens
by Alexandre Bergel
Regarding OpenGL, we intensively use it for Roassal3d, also available on smalltalkhub. Screenshots are available on https://m.facebook.com/ObjectProfile?id=340543479365589&_rdr
Cheers,
Alexandre
> Le 31-10-2013 à 16:01, kilon alios <kilon.alios(a)gmail.com> a écrit :
>
> Thank you Alexander and Stephane , I did not know that Roassal use Athens. This certainly will be helpful for me.
>
> Stephane, about NBOpenGL , my problem was opengl itself not NBOpenGL , I learned a lot of things true and yeah I did not know Roassal is using NBOpenGL but even if I did as you said opengl is not what I really needed. At the time I did not realize the effort to do vector graphics with opengl and the whole difficulty of learning the API, now I know I need something way more high level for my needs.
>
> About Athens tutorial, I dont know such thing, the only thing I know is AthensDemoMorph and the Athens-Examples Package and a video presentation that Igor posted way back in vimeo. So no I dont know of such tutorial.
>
> Wow the guy took 62 K euros and left ? Sorry to hear that :( cant believe how people do such things .
>
>
>> On Thu, Oct 31, 2013 at 7:49 PM, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
>> Hi
>>
>>> I created a new subject
>>>
>>> About the problem to recreate it all it takes is a demo := AthensDemoMorph new openInWorld . It opens the morph with the Athens grey box, I save the image , close pharo, open pharo which reloads the image automagically and BOOM Red Box of Doom :) My other tries also are based on AthensDemoMorph since I cant find documentation to do things differently.
>>>
>>> So lets get to the questions
>>>
>>> 1) You say you have morphs using Athens that don't have this problem, care to explain further ?
>>
>> Did you see the tutorial?
>>
>>> 2) How do I recreate automatically those surfaces ?
>>>
>>> 3) Do I need to instruct the image on load to reinitialize those objects ?
>>>
>>> 4) If yes How I do that ?
>>>
>>> You say its a major problem but yet its not an Athens bug. I know this is has to do with how image saves live objects and that NB calls are not part of the image hence creating the problem.
>>>
>>> 5) Are there ways to avoid the problem ?
>>>
>>> 6) Also why there is a Red Box of Doom in the first place ?
>>
>>>
>>> 7) Why the debugger is not triggered as it should be ?
>>
>> It is now you should bring the halos and click on debug draw something error
>>
>>>
>>> 8) Is that critical a failure of Morphic ?
>>>
>>> 9) Why Athens even though is based largely on Cairo , and taking into consideration the intention to extend to other graphical interfaces, not following the Cairo design more closely so we can use the Cairo tutorials ?
>>
>> Because Athens is not Cairo. Athens is an API so that we can have multiple graphical back-ends in the future.
>>
>>
>>> 10) Is the Cairo design so prohibiting / limiting for Athens ? Does Cairo do things so differently than other vector based libraries ?
>>
>> Cairo does not have an OO design from what I know.
>>
>>
>>> 11) How important is Athens to Pharo community , meaning further bug fixes, improvements , tutorials etc ? I hear there is an intention to gradual move Morphic to it. Is this true ?
>>
>> Athens is the new canvas and we will rewrite everything to use it. Now Athens will have a default version that is just the default balloon.
>> Now the guy that should have helped us (fernando) left in hurry and we lost the money 62 K Euros of his salary.
>> Igor has been working more than a year in total on Athens, textEditor and others so we will not give up now.
>>
>>
>>> I really like Athens, I am asking all these questions because I need to make a fast decision whether I will continue to use Pharo or not for my project. Learning OpenGL and using NBOpenGL produced zero results for me.
>>
>> Did you check Roassal 3d because they forgot to publish the enhancements they did to NBOpenGL
>>
>>> I was not even able to create a single triangle.
>>
>> You should look at Roassal 3d because this is working.
>>
>>> My gpu driver because of Macos gave me close to zero errors, and Red Box of Doom made it impossible to debug opengl problems. In short close to zero error reporting made it a no go for me.
>>>
>>> So I fall back at much simpler solutions because I want to create my own GUI API. I see several solutions for this
>>>
>>> 1) Pharo Athens
>>> 2) Amber SVG / WebGL based Vector libs like Pixi / Athens / HTML5 + CSS
>>> 3) Python + PyQT + QT
>>>
>>> I rather stay with Pharo. But I already wasted months of doing nothing and going nowhere with NBOpenGL , I am tried of moving in circles.
>>
>> I'm sure you learned probably a lot.
>> Now for a GUI API may be openGL is not the best to start. What I can tell you is that with Athens we will be able to have the first
>> mix between 3D and 2D vector graphics.
>>
>>> I am not frustrated cause I knew when I tried that OpenGL was very hard ( I was warned by several opengl people ) so failure was always an option , but I can no longer justify wasting my time getting nowhere.
>>>
>>> I dont need much from a graphic lib all I need is
>>>
>>> a) Stability . If it crashes regularly its no good
>>>
>>> b) Speed, if moving graphic elements around slows down (anything above 20%) dual cores , its no good
>>>
>>> c) Basic Feature set like , lines, curves , circles and ellipses , display of raster graphics, simple animations , import export of graphic formats, png , jpg and svg is enough.
>>>
>>> Looks like Athens satisfies b and c , I am not so sure about a.
>>
>> It is stable.
>>
>>> I am trying to understand Athens code from reading it, once again I am a big failure at understanding code.
>>
>> The tutorial is the way to go. Why this is not enough.
>>
>>> So is there any hope for someone like me , that he is not a very good coder, he is new to Pharo and he has a simple mind to use Athens to make a basic GUI API ?
>>
>> Yes just focus on Athens.
>> For example extend the
>>
>>
>>
>>>> On Thu, Oct 31, 2013 at 6:07 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>
>>>>> On 31 October 2013 16:40, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>> save the image while the morph is displayed, reload the image and in its place there is the big red box with the yellow X , reporting an error with Athens. I have reproduced the error on Windows too with the Athens examples. I assumed my explanation was clear , I hope its clear now.
>>>>
>>>>
>>>> no. not clear. which morph? what class, how you using it etc.
>>>> I have morphs which using Athens for drawing and i can save and load image back and i don't have red squares of death.
>>>>
>>>>> This means that its impossible to save an image with a morph using Athens displaying and have it reload back when the image is reloaded.
>>>> The athens-surface, especially cairo surface is valid only within a single session.
>>>> if you boot new image, you must recreate (or stop using) surface you used in previous session.
>>>> Otherwise you will have red box of doom.
>>>>
>>>> And while i agree that this is pretty major problem (in terms of making your morph to be session-aware
>>>> and in terms of managing external resources) i am far from calling it a bug of Athens of any kind per se.
>>>>
>>>>
>>>>>> On Thu, Oct 31, 2013 at 5:05 PM, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
>>>>>>
>>>>>>> On Oct 31, 2013, at 9:55 AM, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>>>>
>>>>>>> yes I am aware of the examples already, I am learning from them. Please note I have found a bug with Athens, which looks to me pretty major. If I save a morph using Athens
>>>>>>
>>>>>> what do you mean save a morph
>>>>>>
>>>>>>> and reload the image,
>>>>>>
>>>>>> what do you mean?
>>>>>>
>>>>>>
>>>>>>> I see the red box of doom. For example trying your example from stackoverflow. Are you aware of this bug ?
>>>>>>>
>>>>>>>
>>>>>>>> On Thu, Oct 31, 2013 at 2:43 AM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>>> ah, yes , there's also examples in
>>>>>>>> Athens-Examples package.
>>>>>>>>
>>>>>>>>
>>>>>>>>> On 31 October 2013 01:30, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> On 30 October 2013 23:02, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>>>>>>> well I just asked if there is any kind of Documentation about Athens . Or should I just read the code and ask questions ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> the main source of documentation right now is class comments
>>>>>>>>> and tutorial.
>>>>>>>>> I've spent quite of a time commenting the central classes of athens,
>>>>>>>>> hope that's helpful.
>>>>>>>>> Of course this does not replacement for a well written docu, and that needs to be done.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Wed, Oct 30, 2013 at 11:51 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>>>>>> i hope you satisfied with my answer.
>>>>>>>>>>> you welcome to ask more, if you not :)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On 30 October 2013 22:32, dimitris chloupis <thekilon(a)yahoo.co.uk> wrote:
>>>>>>>>>>>> http://stackoverflow.com/questions/19694197/how-to-create-lines-with-athens
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Best regards,
>>>>>>>>>>> Igor Stasenko.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards,
>>>>>>>>> Igor Stasenko.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards,
>>>>>>>> Igor Stasenko.
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Igor Stasenko
Btw, if you remember, i already proposed how to solve 'extending object's
state with arbitrary state' , mainly by changing the object format to
support variable number of key-value properties per object.
Similar to javascript or self, where you can define a new property on a
per-object basis.
This is fairly easy to implement, at VM level, just reserve extra field in
object format,
define the format of key/value dictionary and add primitives to retrieve
and store key-based properties for objects.
What i like in it, that at language side it is cost nothing: you don't have
to extend
the language to formally define the slots (but you may, of course),
and there's nothing preventing you from using private keys and not giving
them away
to anyone to keep your data private and not exposing it globally (except
from reflection tools i guess).
And, what is important, you are free to use them or not.. and it costs
almost nothing in terms of performance, and nothing in terms of formalism
and extra rules in language/package/source management etc etc
--
Best regards,
Igor Stasenko.
Oct. 31, 2013
Re: [Pharo-dev] Questions about Athens
by Igor Stasenko
On 31 October 2013 22:39, kilon alios <kilon.alios(a)gmail.com> wrote:
> thanks Igor for the very thorough answer. I took a look at AthensViewScene
> , I see initializeForNewSession , Smalltalk session and the other state
> methods, it starts to make sense now.
>
> I will get the tutorial and together with Roassal I should be able to make
> a lot more progress.
>
> Feel free to ask any question you need to be answered.
> About OpenGL , no I did not give up too easily. I have been told that
> OpenGL is complex for a good reason but now I know more about it I just
> know its the typical C/C++ library, badly designed to the bone. Its a huge
> pile of mess and the very fact that my macos drivers of my gpu does ( a
> typical behavior for macos gpu drivers) not report detailed errors it makes
> it a No Go area for me. Documentation is also a in a very bad state ,
> definitely does not make life easier. My idea was to follow your advise
> implement OpenVg and then use that as a backend for Athens. But alas at
> this point I hear OpenGL and just run :D
>
> The main problem however was that even if I could use OpenGL I would have
> to learn also a lot of math to do the OpenVG implementation, So yeah not my
> cup of tea. I did not expect it to work, I just wanted to learn Nativeboost
> and NBOpenGL was a good chance to do that. So I realize that the whole deal
> just was way over my level of skill as a coder. I wanted something a lot
> simpler.
>
>
I cannot say, of course, how it would be for you, but there is ShivaVG[1]
open-source
opengl implementation of OpenVG, more or less feature-complete,
so all what is needed is to port this code from C to smalltalk.
Or if not for porting, but using as a source of insights how to implement
it.
I think it is fairly doable.
[1] https://github.com/ileben/ShivaVG
I cant justify wasting months to draw a single curve in the shake of GPU
> acceleration.
>
> Fortunately with Athens I am already able to draw curves, lines, boxes and
> circles, For me thats a very good start. I dont need 3d graphics at this
> point, but I may at the distant future. When that time comes then I will
> consider moving back to NBOpenGL, but not before that. Again thank you all
> for your help I will keep you posted on my progress.
>
>
I want to have Athens at one day harnessing GPU power.
I want such things for myself. :) But right now i have other things to do..
(and i want many other things aside of this ;)
>
> On Thu, Oct 31, 2013 at 9:53 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>
>>
>>
>>
>> On 31 October 2013 20:01, kilon alios <kilon.alios(a)gmail.com> wrote:
>>
>>> Thank you Alexander and Stephane , I did not know that Roassal use
>>> Athens. This certainly will be helpful for me.
>>>
>>> Stephane, about NBOpenGL , my problem was opengl itself not NBOpenGL , I
>>> learned a lot of things true and yeah I did not know Roassal is using
>>> NBOpenGL but even if I did as you said opengl is not what I really needed.
>>> At the time I did not realize the effort to do vector graphics with opengl
>>> and the whole difficulty of learning the API, now I know I need something
>>> way more high level for my needs.
>>>
>>> About Athens tutorial, I dont know such thing, the only thing I know is
>>> AthensDemoMorph and the Athens-Examples Package and a video presentation
>>> that Igor posted way back in vimeo. So no I dont know of such tutorial.
>>>
>>>
>> MCSmalltalkhubRepository
>> owner: 'Pharo'
>> project: 'Athens'
>> user: ''
>> password: ''
>>
>> Load Athens-Tutorial package
>> Run:
>> AthensTutorial open
>>
>> Wow the guy took 62 K euros and left ? Sorry to hear that :( cant
>>> believe how people do such things .
>>>
>>> no, he didn't. It was a budget allocated for him if he would stay and
>> work with us.
>>
>>
>>>
>>> On Thu, Oct 31, 2013 at 7:49 PM, Stéphane Ducasse <
>>> stephane.ducasse(a)inria.fr> wrote:
>>>
>>>> Hi
>>>>
>>>> I created a new subject
>>>>
>>>> About the problem to recreate it all it takes is a demo
>>>> := AthensDemoMorph new openInWorld . It opens the morph with the Athens
>>>> grey box, I save the image , close pharo, open pharo which reloads the
>>>> image automagically and BOOM Red Box of Doom :) My other tries also are
>>>> based on AthensDemoMorph since I cant find documentation to do things
>>>> differently.
>>>>
>>>> So lets get to the questions
>>>>
>>>> 1) You say you have morphs using Athens that don't have this problem,
>>>> care to explain further ?
>>>>
>>>>
>>>> Did you see the tutorial?
>>>>
>>>> 2) How do I recreate automatically those surfaces ?
>>>>
>>>> 3) Do I need to instruct the image on load to reinitialize those
>>>> objects ?
>>>>
>>>> 4) If yes How I do that ?
>>>>
>>>> You say its a major problem but yet its not an Athens bug. I know this
>>>> is has to do with how image saves live objects and that NB calls are not
>>>> part of the image hence creating the problem.
>>>>
>>>> 5) Are there ways to avoid the problem ?
>>>>
>>>> 6) Also why there is a Red Box of Doom in the first place ?
>>>>
>>>>
>>>>
>>>> 7) Why the debugger is not triggered as it should be ?
>>>>
>>>>
>>>> It is now you should bring the halos and click on debug draw something
>>>> error
>>>>
>>>>
>>>> 8) Is that critical a failure of Morphic ?
>>>>
>>>> 9) Why Athens even though is based largely on Cairo , and taking into
>>>> consideration the intention to extend to other graphical interfaces, not
>>>> following the Cairo design more closely so we can use the Cairo tutorials ?
>>>>
>>>>
>>>> Because Athens is not Cairo. Athens is an API so that we can have
>>>> multiple graphical back-ends in the future.
>>>>
>>>>
>>>> 10) Is the Cairo design so prohibiting / limiting for Athens ? Does
>>>> Cairo do things so differently than other vector based libraries ?
>>>>
>>>>
>>>> Cairo does not have an OO design from what I know.
>>>>
>>>>
>>>> 11) How important is Athens to Pharo community , meaning further bug
>>>> fixes, improvements , tutorials etc ? I hear there is an intention to
>>>> gradual move Morphic to it. Is this true ?
>>>>
>>>>
>>>> Athens is the new canvas and we will rewrite everything to use it. Now
>>>> Athens will have a default version that is just the default balloon.
>>>> Now the guy that should have helped us (fernando) left in hurry and we
>>>> lost the money 62 K Euros of his salary.
>>>> Igor has been working more than a year in total on Athens, textEditor
>>>> and others so we will not give up now.
>>>>
>>>>
>>>> I really like Athens, I am asking all these questions because I need to
>>>> make a fast decision whether I will continue to use Pharo or not for my
>>>> project. Learning OpenGL and using NBOpenGL produced zero results for me.
>>>>
>>>>
>>>> Did you check Roassal 3d because they forgot to publish the
>>>> enhancements they did to NBOpenGL
>>>>
>>>> I was not even able to create a single triangle.
>>>>
>>>>
>>>> You should look at Roassal 3d because this is working.
>>>>
>>>> My gpu driver because of Macos gave me close to zero errors, and Red
>>>> Box of Doom made it impossible to debug opengl problems. In short close to
>>>> zero error reporting made it a no go for me.
>>>>
>>>> So I fall back at much simpler solutions because I want to create my
>>>> own GUI API. I see several solutions for this
>>>>
>>>> 1) Pharo Athens
>>>> 2) Amber SVG / WebGL based Vector libs like Pixi / Athens / HTML5 + CSS
>>>> 3) Python + PyQT + QT
>>>>
>>>> I rather stay with Pharo. But I already wasted months of doing nothing
>>>> and going nowhere with NBOpenGL , I am tried of moving in circles.
>>>>
>>>>
>>>> I'm sure you learned probably a lot.
>>>> Now for a GUI API may be openGL is not the best to start. What I can
>>>> tell you is that with Athens we will be able to have the first
>>>> mix between 3D and 2D vector graphics.
>>>>
>>>> I am not frustrated cause I knew when I tried that OpenGL was very hard
>>>> ( I was warned by several opengl people ) so failure was always an option ,
>>>> but I can no longer justify wasting my time getting nowhere.
>>>>
>>>> I dont need much from a graphic lib all I need is
>>>>
>>>> a) Stability . If it crashes regularly its no good
>>>>
>>>> b) Speed, if moving graphic elements around slows down (anything above
>>>> 20%) dual cores , its no good
>>>>
>>>> c) Basic Feature set like , lines, curves , circles and ellipses ,
>>>> display of raster graphics, simple animations , import export of graphic
>>>> formats, png , jpg and svg is enough.
>>>>
>>>> Looks like Athens satisfies b and c , I am not so sure about a.
>>>>
>>>>
>>>> It is stable.
>>>>
>>>> I am trying to understand Athens code from reading it, once again I am
>>>> a big failure at understanding code.
>>>>
>>>>
>>>> The tutorial is the way to go. Why this is not enough.
>>>>
>>>> So is there any hope for someone like me , that he is not a very good
>>>> coder, he is new to Pharo and he has a simple mind to use Athens to make a
>>>> basic GUI API ?
>>>>
>>>>
>>>> Yes just focus on Athens.
>>>> For example extend the
>>>>
>>>>
>>>>
>>>> On Thu, Oct 31, 2013 at 6:07 PM, Igor Stasenko <siguctua(a)gmail.com>wrote:
>>>>
>>>>>
>>>>> On 31 October 2013 16:40, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>>
>>>>>> save the image while the morph is displayed, reload the image and in
>>>>>> its place there is the big red box with the yellow X , reporting an error
>>>>>> with Athens. I have reproduced the error on Windows too with the Athens
>>>>>> examples. I assumed my explanation was clear , I hope its clear now.
>>>>>>
>>>>>>
>>>>> no. not clear. which morph? what class, how you using it etc.
>>>>> I have morphs which using Athens for drawing and i can save and load
>>>>> image back and i don't have red squares of death.
>>>>>
>>>>>
>>>>>> This means that its impossible to save an image with a morph using
>>>>>> Athens displaying and have it reload back when the image is reloaded.
>>>>>>
>>>>>> The athens-surface, especially cairo surface is valid only within a
>>>>> single session.
>>>>> if you boot new image, you must recreate (or stop using) surface you
>>>>> used in previous session.
>>>>> Otherwise you will have red box of doom.
>>>>>
>>>>> And while i agree that this is pretty major problem (in terms of
>>>>> making your morph to be session-aware
>>>>> and in terms of managing external resources) i am far from calling it
>>>>> a bug of Athens of any kind per se.
>>>>>
>>>>>
>>>>>
>>>>>> On Thu, Oct 31, 2013 at 5:05 PM, Stéphane Ducasse <
>>>>>> stephane.ducasse(a)inria.fr> wrote:
>>>>>>
>>>>>>>
>>>>>>> On Oct 31, 2013, at 9:55 AM, kilon alios <kilon.alios(a)gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> yes I am aware of the examples already, I am learning from them.
>>>>>>> Please note I have found a bug with Athens, which looks to me pretty major.
>>>>>>> If I save a morph using Athens
>>>>>>>
>>>>>>>
>>>>>>> what do you mean save a morph
>>>>>>>
>>>>>>> and reload the image,
>>>>>>>
>>>>>>>
>>>>>>> what do you mean?
>>>>>>>
>>>>>>>
>>>>>>> I see the red box of doom. For example trying your example from
>>>>>>> stackoverflow. Are you aware of this bug ?
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 31, 2013 at 2:43 AM, Igor Stasenko <siguctua(a)gmail.com>wrote:
>>>>>>>
>>>>>>>> ah, yes , there's also examples in
>>>>>>>> Athens-Examples package.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 31 October 2013 01:30, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 30 October 2013 23:02, kilon alios <kilon.alios(a)gmail.com>wrote:
>>>>>>>>>
>>>>>>>>>> well I just asked if there is any kind of Documentation about
>>>>>>>>>> Athens . Or should I just read the code and ask questions ?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> the main source of documentation right now is class comments
>>>>>>>>> and tutorial.
>>>>>>>>> I've spent quite of a time commenting the central classes of
>>>>>>>>> athens,
>>>>>>>>> hope that's helpful.
>>>>>>>>> Of course this does not replacement for a well written docu, and
>>>>>>>>> that needs to be done.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Oct 30, 2013 at 11:51 PM, Igor Stasenko <
>>>>>>>>>> siguctua(a)gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> i hope you satisfied with my answer.
>>>>>>>>>>> you welcome to ask more, if you not :)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 30 October 2013 22:32, dimitris chloupis <
>>>>>>>>>>> thekilon(a)yahoo.co.uk> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> http://stackoverflow.com/questions/19694197/how-to-create-lines-with-athens
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Best regards,
>>>>>>>>>>> Igor Stasenko.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards,
>>>>>>>>> Igor Stasenko.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards,
>>>>>>>> Igor Stasenko.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko.
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>
>
--
Best regards,
Igor Stasenko.
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Igor Stasenko
On 31 October 2013 22:52, Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com> wrote:
> I agree, on all you said.
> But sometimes it's also interesting to push the concepts further and
> explore their benefits/drawbacks before knowing exactly which problems they
> will solve.
> A researcher POV rather than an engineer one.
> I'm an engineer, so I can play advocatus diaboli ;)
>
> ah, don't worry, i am myself sometimes like to think in such mode:
'what if...'
'it would be nice to try .. '
but certainly when its about addind/changing something in existing system
(not just experiment), my main rule is to see how new idea could help to
simplify the system,
in terms of less code, cleaner design and less effort to implement.
What i see in proposed one is straightly opposite to that.
There's an infinite ways how you can draw a line on white board (and which
tools you using to do that).. but i doubt you can invent something simpler
and easier than using pen and own hand.
>
>
> 2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>
>>
>>
>>
>> On 31 October 2013 22:37, Nicolas Cellier <
>> nicolas.cellier.aka.nice(a)gmail.com> wrote:
>>
>>> Hehe, no problem, because any method from SecondThirdPartyRandomExtensio
>>> nPackage would know which z slot to use.
>>> Or if you insist on uniqueness, you can invent decorators like well
>>> known languages ;)
>>>
>>> It could get more complex if a FourthThirdPartyExtension would like to
>>> extend the second extension further and directly access this specific z
>>> slot ;)
>>>
>>> like i said, we can invent anything, put many workaround and/or
>> conflict-resolution
>> rules. The main question is it really worth it?
>>
>> We can endlessly theorize, how to put such thing and what should be
>> done/changed,
>> but first i need a compelling reason, clearly showing the advantage of
>> having it.
>> So far, i can only see, that it will bring more problems than solve.
>> I am in favor of KISS, unless there is big and apparent wins in having
>> extra complexity.
>>
>>
>>> 2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>>>
>>>>
>>>>
>>>>
>>>> On 31 October 2013 08:25, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>>>
>>>>> I completely disagree with this point of view :).
>>>>>
>>>>> We should assume an open world, not a close one. From this point of
>>>>> view, any part of the system should be extensible by anyone. In most other
>>>>> languages I know, it is not even possible to extend easily a class with new
>>>>> functionality. In Pharo we can, and we know it is a powerful mechanism. It
>>>>> is not the responsibility of the base class to know what extensions are out
>>>>> there and protect against them. Just like with subclassing, It is in the
>>>>> responsibility of the extender.
>>>>>
>>>>> We should be able to do the same with state as well. Without this
>>>>> mechanism, we are forced to put in place clunky dictionary-based mechanism
>>>>> to support state extension. Essentially, any white-box framework does that.
>>>>> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
>>>>> this is not a bad thing).
>>>>>
>>>>> We need this mechanism in the environment, and if I understand Slots
>>>>> correctly, now we have first class support for it. This also means that
>>>>> overrides will be easier to deal with, too. Of course, overrides can induce
>>>>> headaches from time to time, but we should treat these headaches with
>>>>> proper tools, not by forbidding the world to extend.
>>>>>
>>>>> And if we are at it, we should also be able to extend a class with
>>>>> Traits, too.
>>>>>
>>>>> it is doable, and easily, as others saying nothing prevents you from
>>>> saying
>>>> SomeClass addInstvarNames: 'foo'
>>>>
>>>> but the problems in not extending per se, but how you manage it at
>>>> source level?
>>>>
>>>> Like you said, we now having slots.. so
>>>> then how you think a class definition may look like if some class has
>>>> extension slots
>>>> defined by other package?
>>>>
>>>> Object subclass: #Point
>>>> slots: {
>>>> x, y -> Kernel-Classes
>>>> z -> ThirdPartyRandomExtensionPackage
>>>> z -> SecondThirdPartyRandomExtensionPackage
>>>> z -> ThirdThirdPartyRandomExtensionPackage
>>>> }
>>>>
>>>> i am not against being open.
>>>> i am against being open to opening can of worms ;)
>>>>
>>>> (Apart from completely inadequate proportion between effort to
>>>> implement such feature and supporting it in many tools (MC etc) comparing
>>>> to the actual/current need of having it).
>>>>
>>>> Clearly, there is no limits in complexity where we can go in attempt to
>>>> describe our systems with metadata up to tiniest level of detail.
>>>> Except from some real-world ones:
>>>> - implementation effort
>>>> - ease of learn & use
>>>> - and at last.. sanity :)
>>>>
>>>> Cheers,
>>>>> Doru
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni <
>>>>> camillobruni(a)gmail.com> wrote:
>>>>>
>>>>>>
>>>>>> On 2013-10-30, at 22:36, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>
>>>>>> > I don't think there's something to fix.
>>>>>> > You cannot 'extend' classes belonging to other package in any other
>>>>>> way
>>>>>> > than adding extension methods.
>>>>>> > Allowing extension of ivars or any other vars by foreign package
>>>>>> > is road to nowhere.
>>>>>> >
>>>>>> > I would not like if shape of my kernel classes depends on what
>>>>>> packages i load
>>>>>> > or in what order i loaded them.
>>>>>> > To me it is clear that if one needs to add/remove/modify instance
>>>>>> variables
>>>>>> > of some class, those changes should belong to the package
>>>>>> containing that class,
>>>>>> > not some random package.
>>>>>>
>>>>>> Exactly, it would cause the same problem as we have with overrides in
>>>>>> monticello
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> www.tudorgirba.com
>>>>>
>>>>> "Every thing has its own flow"
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>>>>
>>>
>>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>
>
--
Best regards,
Igor Stasenko.
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Nicolas Cellier
I agree, on all you said.
But sometimes it's also interesting to push the concepts further and
explore their benefits/drawbacks before knowing exactly which problems they
will solve.
A researcher POV rather than an engineer one.
I'm an engineer, so I can play advocatus diaboli ;)
2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>
>
>
> On 31 October 2013 22:37, Nicolas Cellier <
> nicolas.cellier.aka.nice(a)gmail.com> wrote:
>
>> Hehe, no problem, because any method from SecondThirdPartyRandomExtensio
>> nPackage would know which z slot to use.
>> Or if you insist on uniqueness, you can invent decorators like well known
>> languages ;)
>>
>> It could get more complex if a FourthThirdPartyExtension would like to
>> extend the second extension further and directly access this specific z
>> slot ;)
>>
>> like i said, we can invent anything, put many workaround and/or
> conflict-resolution
> rules. The main question is it really worth it?
>
> We can endlessly theorize, how to put such thing and what should be
> done/changed,
> but first i need a compelling reason, clearly showing the advantage of
> having it.
> So far, i can only see, that it will bring more problems than solve.
> I am in favor of KISS, unless there is big and apparent wins in having
> extra complexity.
>
>
>> 2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>>
>>>
>>>
>>>
>>> On 31 October 2013 08:25, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>>
>>>> I completely disagree with this point of view :).
>>>>
>>>> We should assume an open world, not a close one. From this point of
>>>> view, any part of the system should be extensible by anyone. In most other
>>>> languages I know, it is not even possible to extend easily a class with new
>>>> functionality. In Pharo we can, and we know it is a powerful mechanism. It
>>>> is not the responsibility of the base class to know what extensions are out
>>>> there and protect against them. Just like with subclassing, It is in the
>>>> responsibility of the extender.
>>>>
>>>> We should be able to do the same with state as well. Without this
>>>> mechanism, we are forced to put in place clunky dictionary-based mechanism
>>>> to support state extension. Essentially, any white-box framework does that.
>>>> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
>>>> this is not a bad thing).
>>>>
>>>> We need this mechanism in the environment, and if I understand Slots
>>>> correctly, now we have first class support for it. This also means that
>>>> overrides will be easier to deal with, too. Of course, overrides can induce
>>>> headaches from time to time, but we should treat these headaches with
>>>> proper tools, not by forbidding the world to extend.
>>>>
>>>> And if we are at it, we should also be able to extend a class with
>>>> Traits, too.
>>>>
>>>> it is doable, and easily, as others saying nothing prevents you from
>>> saying
>>> SomeClass addInstvarNames: 'foo'
>>>
>>> but the problems in not extending per se, but how you manage it at
>>> source level?
>>>
>>> Like you said, we now having slots.. so
>>> then how you think a class definition may look like if some class has
>>> extension slots
>>> defined by other package?
>>>
>>> Object subclass: #Point
>>> slots: {
>>> x, y -> Kernel-Classes
>>> z -> ThirdPartyRandomExtensionPackage
>>> z -> SecondThirdPartyRandomExtensionPackage
>>> z -> ThirdThirdPartyRandomExtensionPackage
>>> }
>>>
>>> i am not against being open.
>>> i am against being open to opening can of worms ;)
>>>
>>> (Apart from completely inadequate proportion between effort to implement
>>> such feature and supporting it in many tools (MC etc) comparing to the
>>> actual/current need of having it).
>>>
>>> Clearly, there is no limits in complexity where we can go in attempt to
>>> describe our systems with metadata up to tiniest level of detail.
>>> Except from some real-world ones:
>>> - implementation effort
>>> - ease of learn & use
>>> - and at last.. sanity :)
>>>
>>> Cheers,
>>>> Doru
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni <camillobruni(a)gmail.com
>>>> > wrote:
>>>>
>>>>>
>>>>> On 2013-10-30, at 22:36, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>
>>>>> > I don't think there's something to fix.
>>>>> > You cannot 'extend' classes belonging to other package in any other
>>>>> way
>>>>> > than adding extension methods.
>>>>> > Allowing extension of ivars or any other vars by foreign package
>>>>> > is road to nowhere.
>>>>> >
>>>>> > I would not like if shape of my kernel classes depends on what
>>>>> packages i load
>>>>> > or in what order i loaded them.
>>>>> > To me it is clear that if one needs to add/remove/modify instance
>>>>> variables
>>>>> > of some class, those changes should belong to the package containing
>>>>> that class,
>>>>> > not some random package.
>>>>>
>>>>> Exactly, it would cause the same problem as we have with overrides in
>>>>> monticello
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> www.tudorgirba.com
>>>>
>>>> "Every thing has its own flow"
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>>
>>
>>
>
>
> --
> Best regards,
> Igor Stasenko.
>
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Igor Stasenko
On 31 October 2013 22:37, Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com> wrote:
> Hehe, no problem, because any method from SecondThirdPartyRandomExtensio
> nPackage would know which z slot to use.
> Or if you insist on uniqueness, you can invent decorators like well known
> languages ;)
>
> It could get more complex if a FourthThirdPartyExtension would like to
> extend the second extension further and directly access this specific z
> slot ;)
>
> like i said, we can invent anything, put many workaround and/or
conflict-resolution
rules. The main question is it really worth it?
We can endlessly theorize, how to put such thing and what should be
done/changed,
but first i need a compelling reason, clearly showing the advantage of
having it.
So far, i can only see, that it will bring more problems than solve.
I am in favor of KISS, unless there is big and apparent wins in having
extra complexity.
> 2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>
>>
>>
>>
>> On 31 October 2013 08:25, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>>
>>> I completely disagree with this point of view :).
>>>
>>> We should assume an open world, not a close one. From this point of
>>> view, any part of the system should be extensible by anyone. In most other
>>> languages I know, it is not even possible to extend easily a class with new
>>> functionality. In Pharo we can, and we know it is a powerful mechanism. It
>>> is not the responsibility of the base class to know what extensions are out
>>> there and protect against them. Just like with subclassing, It is in the
>>> responsibility of the extender.
>>>
>>> We should be able to do the same with state as well. Without this
>>> mechanism, we are forced to put in place clunky dictionary-based mechanism
>>> to support state extension. Essentially, any white-box framework does that.
>>> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
>>> this is not a bad thing).
>>>
>>> We need this mechanism in the environment, and if I understand Slots
>>> correctly, now we have first class support for it. This also means that
>>> overrides will be easier to deal with, too. Of course, overrides can induce
>>> headaches from time to time, but we should treat these headaches with
>>> proper tools, not by forbidding the world to extend.
>>>
>>> And if we are at it, we should also be able to extend a class with
>>> Traits, too.
>>>
>>> it is doable, and easily, as others saying nothing prevents you from
>> saying
>> SomeClass addInstvarNames: 'foo'
>>
>> but the problems in not extending per se, but how you manage it at source
>> level?
>>
>> Like you said, we now having slots.. so
>> then how you think a class definition may look like if some class has
>> extension slots
>> defined by other package?
>>
>> Object subclass: #Point
>> slots: {
>> x, y -> Kernel-Classes
>> z -> ThirdPartyRandomExtensionPackage
>> z -> SecondThirdPartyRandomExtensionPackage
>> z -> ThirdThirdPartyRandomExtensionPackage
>> }
>>
>> i am not against being open.
>> i am against being open to opening can of worms ;)
>>
>> (Apart from completely inadequate proportion between effort to implement
>> such feature and supporting it in many tools (MC etc) comparing to the
>> actual/current need of having it).
>>
>> Clearly, there is no limits in complexity where we can go in attempt to
>> describe our systems with metadata up to tiniest level of detail.
>> Except from some real-world ones:
>> - implementation effort
>> - ease of learn & use
>> - and at last.. sanity :)
>>
>> Cheers,
>>> Doru
>>>
>>>
>>>
>>>
>>> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni <camillobruni(a)gmail.com>wrote:
>>>
>>>>
>>>> On 2013-10-30, at 22:36, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>
>>>> > I don't think there's something to fix.
>>>> > You cannot 'extend' classes belonging to other package in any other
>>>> way
>>>> > than adding extension methods.
>>>> > Allowing extension of ivars or any other vars by foreign package
>>>> > is road to nowhere.
>>>> >
>>>> > I would not like if shape of my kernel classes depends on what
>>>> packages i load
>>>> > or in what order i loaded them.
>>>> > To me it is clear that if one needs to add/remove/modify instance
>>>> variables
>>>> > of some class, those changes should belong to the package containing
>>>> that class,
>>>> > not some random package.
>>>>
>>>> Exactly, it would cause the same problem as we have with overrides in
>>>> monticello
>>>>
>>>
>>>
>>>
>>> --
>>> www.tudorgirba.com
>>>
>>> "Every thing has its own flow"
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>
>
--
Best regards,
Igor Stasenko.
Oct. 31, 2013
Re: [Pharo-dev] Questions about Athens
by kilon alios
thanks Igor for the very thorough answer. I took a look at AthensViewScene
, I see initializeForNewSession , Smalltalk session and the other state
methods, it starts to make sense now.
I will get the tutorial and together with Roassal I should be able to make
a lot more progress.
About OpenGL , no I did not give up too easily. I have been told that
OpenGL is complex for a good reason but now I know more about it I just
know its the typical C/C++ library, badly designed to the bone. Its a huge
pile of mess and the very fact that my macos drivers of my gpu does ( a
typical behavior for macos gpu drivers) not report detailed errors it makes
it a No Go area for me. Documentation is also a in a very bad state ,
definitely does not make life easier. My idea was to follow your advise
implement OpenVg and then use that as a backend for Athens. But alas at
this point I hear OpenGL and just run :D
The main problem however was that even if I could use OpenGL I would have
to learn also a lot of math to do the OpenVG implementation, So yeah not my
cup of tea. I did not expect it to work, I just wanted to learn Nativeboost
and NBOpenGL was a good chance to do that. So I realize that the whole deal
just was way over my level of skill as a coder. I wanted something a lot
simpler.
I cant justify wasting months to draw a single curve in the shake of GPU
acceleration.
Fortunately with Athens I am already able to draw curves, lines, boxes and
circles, For me thats a very good start. I dont need 3d graphics at this
point, but I may at the distant future. When that time comes then I will
consider moving back to NBOpenGL, but not before that. Again thank you all
for your help I will keep you posted on my progress.
On Thu, Oct 31, 2013 at 9:53 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>
>
>
> On 31 October 2013 20:01, kilon alios <kilon.alios(a)gmail.com> wrote:
>
>> Thank you Alexander and Stephane , I did not know that Roassal use
>> Athens. This certainly will be helpful for me.
>>
>> Stephane, about NBOpenGL , my problem was opengl itself not NBOpenGL , I
>> learned a lot of things true and yeah I did not know Roassal is using
>> NBOpenGL but even if I did as you said opengl is not what I really needed.
>> At the time I did not realize the effort to do vector graphics with opengl
>> and the whole difficulty of learning the API, now I know I need something
>> way more high level for my needs.
>>
>> About Athens tutorial, I dont know such thing, the only thing I know is
>> AthensDemoMorph and the Athens-Examples Package and a video presentation
>> that Igor posted way back in vimeo. So no I dont know of such tutorial.
>>
>>
> MCSmalltalkhubRepository
> owner: 'Pharo'
> project: 'Athens'
> user: ''
> password: ''
>
> Load Athens-Tutorial package
> Run:
> AthensTutorial open
>
> Wow the guy took 62 K euros and left ? Sorry to hear that :( cant believe
>> how people do such things .
>>
>> no, he didn't. It was a budget allocated for him if he would stay and
> work with us.
>
>
>>
>> On Thu, Oct 31, 2013 at 7:49 PM, Stéphane Ducasse <
>> stephane.ducasse(a)inria.fr> wrote:
>>
>>> Hi
>>>
>>> I created a new subject
>>>
>>> About the problem to recreate it all it takes is a demo
>>> := AthensDemoMorph new openInWorld . It opens the morph with the Athens
>>> grey box, I save the image , close pharo, open pharo which reloads the
>>> image automagically and BOOM Red Box of Doom :) My other tries also are
>>> based on AthensDemoMorph since I cant find documentation to do things
>>> differently.
>>>
>>> So lets get to the questions
>>>
>>> 1) You say you have morphs using Athens that don't have this problem,
>>> care to explain further ?
>>>
>>>
>>> Did you see the tutorial?
>>>
>>> 2) How do I recreate automatically those surfaces ?
>>>
>>> 3) Do I need to instruct the image on load to reinitialize those objects
>>> ?
>>>
>>> 4) If yes How I do that ?
>>>
>>> You say its a major problem but yet its not an Athens bug. I know this
>>> is has to do with how image saves live objects and that NB calls are not
>>> part of the image hence creating the problem.
>>>
>>> 5) Are there ways to avoid the problem ?
>>>
>>> 6) Also why there is a Red Box of Doom in the first place ?
>>>
>>>
>>>
>>> 7) Why the debugger is not triggered as it should be ?
>>>
>>>
>>> It is now you should bring the halos and click on debug draw something
>>> error
>>>
>>>
>>> 8) Is that critical a failure of Morphic ?
>>>
>>> 9) Why Athens even though is based largely on Cairo , and taking into
>>> consideration the intention to extend to other graphical interfaces, not
>>> following the Cairo design more closely so we can use the Cairo tutorials ?
>>>
>>>
>>> Because Athens is not Cairo. Athens is an API so that we can have
>>> multiple graphical back-ends in the future.
>>>
>>>
>>> 10) Is the Cairo design so prohibiting / limiting for Athens ? Does
>>> Cairo do things so differently than other vector based libraries ?
>>>
>>>
>>> Cairo does not have an OO design from what I know.
>>>
>>>
>>> 11) How important is Athens to Pharo community , meaning further bug
>>> fixes, improvements , tutorials etc ? I hear there is an intention to
>>> gradual move Morphic to it. Is this true ?
>>>
>>>
>>> Athens is the new canvas and we will rewrite everything to use it. Now
>>> Athens will have a default version that is just the default balloon.
>>> Now the guy that should have helped us (fernando) left in hurry and we
>>> lost the money 62 K Euros of his salary.
>>> Igor has been working more than a year in total on Athens, textEditor
>>> and others so we will not give up now.
>>>
>>>
>>> I really like Athens, I am asking all these questions because I need to
>>> make a fast decision whether I will continue to use Pharo or not for my
>>> project. Learning OpenGL and using NBOpenGL produced zero results for me.
>>>
>>>
>>> Did you check Roassal 3d because they forgot to publish the enhancements
>>> they did to NBOpenGL
>>>
>>> I was not even able to create a single triangle.
>>>
>>>
>>> You should look at Roassal 3d because this is working.
>>>
>>> My gpu driver because of Macos gave me close to zero errors, and Red
>>> Box of Doom made it impossible to debug opengl problems. In short close to
>>> zero error reporting made it a no go for me.
>>>
>>> So I fall back at much simpler solutions because I want to create my own
>>> GUI API. I see several solutions for this
>>>
>>> 1) Pharo Athens
>>> 2) Amber SVG / WebGL based Vector libs like Pixi / Athens / HTML5 + CSS
>>> 3) Python + PyQT + QT
>>>
>>> I rather stay with Pharo. But I already wasted months of doing nothing
>>> and going nowhere with NBOpenGL , I am tried of moving in circles.
>>>
>>>
>>> I'm sure you learned probably a lot.
>>> Now for a GUI API may be openGL is not the best to start. What I can
>>> tell you is that with Athens we will be able to have the first
>>> mix between 3D and 2D vector graphics.
>>>
>>> I am not frustrated cause I knew when I tried that OpenGL was very hard
>>> ( I was warned by several opengl people ) so failure was always an option ,
>>> but I can no longer justify wasting my time getting nowhere.
>>>
>>> I dont need much from a graphic lib all I need is
>>>
>>> a) Stability . If it crashes regularly its no good
>>>
>>> b) Speed, if moving graphic elements around slows down (anything above
>>> 20%) dual cores , its no good
>>>
>>> c) Basic Feature set like , lines, curves , circles and ellipses ,
>>> display of raster graphics, simple animations , import export of graphic
>>> formats, png , jpg and svg is enough.
>>>
>>> Looks like Athens satisfies b and c , I am not so sure about a.
>>>
>>>
>>> It is stable.
>>>
>>> I am trying to understand Athens code from reading it, once again I am a
>>> big failure at understanding code.
>>>
>>>
>>> The tutorial is the way to go. Why this is not enough.
>>>
>>> So is there any hope for someone like me , that he is not a very good
>>> coder, he is new to Pharo and he has a simple mind to use Athens to make a
>>> basic GUI API ?
>>>
>>>
>>> Yes just focus on Athens.
>>> For example extend the
>>>
>>>
>>>
>>> On Thu, Oct 31, 2013 at 6:07 PM, Igor Stasenko <siguctua(a)gmail.com>wrote:
>>>
>>>>
>>>> On 31 October 2013 16:40, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>
>>>>> save the image while the morph is displayed, reload the image and in
>>>>> its place there is the big red box with the yellow X , reporting an error
>>>>> with Athens. I have reproduced the error on Windows too with the Athens
>>>>> examples. I assumed my explanation was clear , I hope its clear now.
>>>>>
>>>>>
>>>> no. not clear. which morph? what class, how you using it etc.
>>>> I have morphs which using Athens for drawing and i can save and load
>>>> image back and i don't have red squares of death.
>>>>
>>>>
>>>>> This means that its impossible to save an image with a morph using
>>>>> Athens displaying and have it reload back when the image is reloaded.
>>>>>
>>>>> The athens-surface, especially cairo surface is valid only within a
>>>> single session.
>>>> if you boot new image, you must recreate (or stop using) surface you
>>>> used in previous session.
>>>> Otherwise you will have red box of doom.
>>>>
>>>> And while i agree that this is pretty major problem (in terms of making
>>>> your morph to be session-aware
>>>> and in terms of managing external resources) i am far from calling it a
>>>> bug of Athens of any kind per se.
>>>>
>>>>
>>>>
>>>>> On Thu, Oct 31, 2013 at 5:05 PM, Stéphane Ducasse <
>>>>> stephane.ducasse(a)inria.fr> wrote:
>>>>>
>>>>>>
>>>>>> On Oct 31, 2013, at 9:55 AM, kilon alios <kilon.alios(a)gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> yes I am aware of the examples already, I am learning from them.
>>>>>> Please note I have found a bug with Athens, which looks to me pretty major.
>>>>>> If I save a morph using Athens
>>>>>>
>>>>>>
>>>>>> what do you mean save a morph
>>>>>>
>>>>>> and reload the image,
>>>>>>
>>>>>>
>>>>>> what do you mean?
>>>>>>
>>>>>>
>>>>>> I see the red box of doom. For example trying your example from
>>>>>> stackoverflow. Are you aware of this bug ?
>>>>>>
>>>>>>
>>>>>> On Thu, Oct 31, 2013 at 2:43 AM, Igor Stasenko <siguctua(a)gmail.com>wrote:
>>>>>>
>>>>>>> ah, yes , there's also examples in
>>>>>>> Athens-Examples package.
>>>>>>>
>>>>>>>
>>>>>>> On 31 October 2013 01:30, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> On 30 October 2013 23:02, kilon alios <kilon.alios(a)gmail.com>wrote:
>>>>>>>>
>>>>>>>>> well I just asked if there is any kind of Documentation about
>>>>>>>>> Athens . Or should I just read the code and ask questions ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>> the main source of documentation right now is class comments
>>>>>>>> and tutorial.
>>>>>>>> I've spent quite of a time commenting the central classes of athens,
>>>>>>>> hope that's helpful.
>>>>>>>> Of course this does not replacement for a well written docu, and
>>>>>>>> that needs to be done.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Oct 30, 2013 at 11:51 PM, Igor Stasenko <
>>>>>>>>> siguctua(a)gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> i hope you satisfied with my answer.
>>>>>>>>>> you welcome to ask more, if you not :)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 30 October 2013 22:32, dimitris chloupis <thekilon(a)yahoo.co.uk
>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> http://stackoverflow.com/questions/19694197/how-to-create-lines-with-athens
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Best regards,
>>>>>>>>>> Igor Stasenko.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards,
>>>>>>>> Igor Stasenko.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>> Igor Stasenko.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>>>>
>>>
>>>
>>>
>>
>
>
> --
> Best regards,
> Igor Stasenko.
>
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Igor Stasenko
On 31 October 2013 18:49, Stéphane Ducasse <stephane.ducasse(a)inria.fr>wrote:
>
> On Oct 31, 2013, at 8:25 AM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>
> I completely disagree with this point of view :).
>
> We should assume an open world, not a close one. From this point of view,
> any part of the system should be extensible by anyone. In most other
> languages I know, it is not even possible to extend easily a class with new
> functionality. In Pharo we can, and we know it is a powerful mechanism. It
> is not the responsibility of the base class to know what extensions are out
> there and protect against them. Just like with subclassing, It is in the
> responsibility of the extender.
>
>
> + 1
> the runtime should be smart enough to recalculate objects shape.
>
> and run into conflict with each and every use of instance where it implies
that it has certain shape (or state) but not the other one.
IMO, extending original class is anti-modular. It is global, thus
anti-modular
by definition.
I would much more prefer instead of saying:
Package A is: {
extends: Object withSlot: x
}
saying:
in scope of Package A {
Object instances i creating has extra slot: x
}
because when you making extension to class globally visible,
while nobody else is aware of (because it comes only with your package you
just loaded), this brings nothing but just problems
on many different levels.
Aside there's much wiser path (imo), how you can 'extend' the state:
by either subclassing or delegation/wrapping/decoration, which helps to
clearly separate between what is yours and what is not.
We should be able to do the same with state as well. Without this
> mechanism, we are forced to put in place clunky dictionary-based mechanism
> to support state extension. Essentially, any white-box framework does that.
> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
> this is not a bad thing).
>
> We need this mechanism in the environment, and if I understand Slots
> correctly, now we have first class support for it. This also means that
> overrides will be easier to deal with, too. Of course, overrides can induce
> headaches from time to time, but we should treat these headaches with
> proper tools, not by forbidding the world to extend.
>
>
> This is not the same :)
>
>
> And if we are at it, we should also be able to extend a class with Traits,
> too.
>
> Cheers,
> Doru
>
>
>
>
> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni <camillobruni(a)gmail.com>wrote:
>
>>
>> On 2013-10-30, at 22:36, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>
>> > I don't think there's something to fix.
>> > You cannot 'extend' classes belonging to other package in any other way
>> > than adding extension methods.
>> > Allowing extension of ivars or any other vars by foreign package
>> > is road to nowhere.
>> >
>> > I would not like if shape of my kernel classes depends on what packages
>> i load
>> > or in what order i loaded them.
>> > To me it is clear that if one needs to add/remove/modify instance
>> variables
>> > of some class, those changes should belong to the package containing
>> that class,
>> > not some random package.
>>
>> Exactly, it would cause the same problem as we have with overrides in
>> monticello
>>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
>
>
--
Best regards,
Igor Stasenko.
Oct. 31, 2013
Re: [Pharo-dev] Losing instance variable addition
by Nicolas Cellier
Hehe, no problem, because any method from SecondThirdPartyRandomExtensio
nPackage would know which z slot to use.
Or if you insist on uniqueness, you can invent decorators like well known
languages ;)
It could get more complex if a FourthThirdPartyExtension would like to
extend the second extension further and directly access this specific z
slot ;)
2013/10/31 Igor Stasenko <siguctua(a)gmail.com>
>
>
>
> On 31 October 2013 08:25, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>
>> I completely disagree with this point of view :).
>>
>> We should assume an open world, not a close one. From this point of view,
>> any part of the system should be extensible by anyone. In most other
>> languages I know, it is not even possible to extend easily a class with new
>> functionality. In Pharo we can, and we know it is a powerful mechanism. It
>> is not the responsibility of the base class to know what extensions are out
>> there and protect against them. Just like with subclassing, It is in the
>> responsibility of the extender.
>>
>> We should be able to do the same with state as well. Without this
>> mechanism, we are forced to put in place clunky dictionary-based mechanism
>> to support state extension. Essentially, any white-box framework does that.
>> For example, Morphic does that, FAMIX and Roassal do that, too (and yes,
>> this is not a bad thing).
>>
>> We need this mechanism in the environment, and if I understand Slots
>> correctly, now we have first class support for it. This also means that
>> overrides will be easier to deal with, too. Of course, overrides can induce
>> headaches from time to time, but we should treat these headaches with
>> proper tools, not by forbidding the world to extend.
>>
>> And if we are at it, we should also be able to extend a class with
>> Traits, too.
>>
>> it is doable, and easily, as others saying nothing prevents you from
> saying
> SomeClass addInstvarNames: 'foo'
>
> but the problems in not extending per se, but how you manage it at source
> level?
>
> Like you said, we now having slots.. so
> then how you think a class definition may look like if some class has
> extension slots
> defined by other package?
>
> Object subclass: #Point
> slots: {
> x, y -> Kernel-Classes
> z -> ThirdPartyRandomExtensionPackage
> z -> SecondThirdPartyRandomExtensionPackage
> z -> ThirdThirdPartyRandomExtensionPackage
> }
>
> i am not against being open.
> i am against being open to opening can of worms ;)
>
> (Apart from completely inadequate proportion between effort to implement
> such feature and supporting it in many tools (MC etc) comparing to the
> actual/current need of having it).
>
> Clearly, there is no limits in complexity where we can go in attempt to
> describe our systems with metadata up to tiniest level of detail.
> Except from some real-world ones:
> - implementation effort
> - ease of learn & use
> - and at last.. sanity :)
>
> Cheers,
>> Doru
>>
>>
>>
>>
>> On Wed, Oct 30, 2013 at 10:54 PM, Camillo Bruni <camillobruni(a)gmail.com>wrote:
>>
>>>
>>> On 2013-10-30, at 22:36, Igor Stasenko <siguctua(a)gmail.com> wrote:
>>>
>>> > I don't think there's something to fix.
>>> > You cannot 'extend' classes belonging to other package in any other way
>>> > than adding extension methods.
>>> > Allowing extension of ivars or any other vars by foreign package
>>> > is road to nowhere.
>>> >
>>> > I would not like if shape of my kernel classes depends on what
>>> packages i load
>>> > or in what order i loaded them.
>>> > To me it is clear that if one needs to add/remove/modify instance
>>> variables
>>> > of some class, those changes should belong to the package containing
>>> that class,
>>> > not some random package.
>>>
>>> Exactly, it would cause the same problem as we have with overrides in
>>> monticello
>>>
>>
>>
>>
>> --
>> www.tudorgirba.com
>>
>> "Every thing has its own flow"
>>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
Oct. 31, 2013