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
April 2016
- 843 messages
Re: [Pharo-dev] [bloc] shape size?
by Henrik Nergaard
I changed it mostly because it was messing up the color when you did mouse-over (required to check the owner color to set it correctly when there was a selection, the code was ugly and with corner cases).
Encapsulating a morph with another morph just for a background color is kind of waste IMO. Causing unnecessary overhead for rendering/layout/eventHandling etc...
Mesurable? Donât think I checked, but in the long run there is less allocations, less layout etc..
I would also argue that
------------------
(highligtedRowIndexes includes: rowIndex) ifTrue: [
row selectionColor: (self owner colorForSelection:
primarySelectionIndex = rowIndex) ].
-----------------
Is better than
-----------------
rowSubviews add: ((highligtedRowIndexes includes: rowIndex)
ifTrue: [
"IMPORTANT: I need to set owner to nil because otherwise it will trigger an
invalidation of the owner when adding morph to selectionMorph, causing an
infinite loop"
self
toSelectionRow: (row privateOwner: nil)
primary: primarySelectionIndex = rowIndex ]
ifFalse: [ row ]) ].
-----------------------
Selection could be and drawn by the container, but then again you would need much more code and special logic (updating the damageRecorder with correct rectangles when selection changes for example) than to just extend and specialize one morph to be a row.
I would much rather prefer one specialized morph doing its thing, than encapsulate it.
Best regards,
Henrik
-----Original Message-----
From: Pharo-dev [mailto:pharo-dev-bounces@lists.pharo.org] On Behalf Of Thierry Goubier
Sent: Sunday, April 3, 2016 8:58 PM
To: Pharo Development List <pharo-dev(a)lists.pharo.org>
Subject: Re: [Pharo-dev] [bloc] shape size?
Le 03/04/2016 20:00, Henrik Nergaard a écrit :
>
>> Let me return you the question then: do you do a composition of
>> submorphs if you're trying to get a different drawOn:?
>
>> Oh, ok, that's true FastTable does it for the selection... changing
>> background color by encapsulating a row in another Morph with the
>> right background color.
>
> Did, not anymore.
>
> FTTableRowMorph>>#selectionColor:
Had to check the following code to be sure:
(highligtedRowIndexes includes: rowIndex) ifTrue: [
row selectionColor: (self owner colorForSelection:
primarySelectionIndex = rowIndex) ].
Was there a measurable inpact when changing that?
Because I have now three ways of doing this, and all of them have trade-offs. For example the one above suppose that row items are a specific kind of Morph, i.e. FTTableRowMorph; one could do without a dedicated Morph subclass for rows and display the selection as a transparent colored rectangle over the row; this is what I do.
Thierry
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by stepharo
Le 3/4/16 18:23, Aliaksei Syrel a écrit :
> This means that any abstraction/wrapper around athens will fail.
>
> What if we would remove drawingShape and by default leave drawOn:
> method to be empty. That way we would not put any constraints on
> rendering part. user just gets athens canvas and can do whatever she
> wants.
>
> Instead we would have only clipping shape and event area shape.
> What do you think? :)
I have the impression that this is a good solution.
>
> Cheers,
> Alex
>
> On Sun, Apr 3, 2016 at 6:04 PM, Igor Stasenko <siguctua(a)gmail.com
> <mailto:siguctua@gmail.com>> wrote:
>
>
>
> On 3 April 2016 at 17:58, Aliaksei Syrel <alex.syrel(a)gmail.com
> <mailto:alex.syrel@gmail.com>> wrote:
>
> And you lost me here.. That is complete nonsense.. from
> any perspective.
> Can i unsee this code, please? :)
>
>
> If I would say that we have defaultShape method and it can be
> overridden as:
>
> defaultShape
> ^ BlShape new
> fillPaint: (BlColorPaint new color: (Color yellow));
> path: BlRectanglePath new
>
> would it make you happy?
>
>
> Nope. (see bottom of reply why)
>
> .. to me it feels like: okay, what we need to do, to
> prevent overrides of our beloved default #drawOn: method.
>
> You are wrong concerning preventing to override drawOn :)
> Don't forget that there was a customer
> *requirement* concerning bloc:
>
> Can we change how morph looks on fly? Can we create a
> rectangle morph and change it's shape from rectangle to
> circle? Because it can nicely show while presenting that
> *Pharo is live system*. I'm pretty sure Stef said it once ago.
>
> Do you see how bloc story can nicely be told:
>
> We have basic UI elements and each element has shape that
> can be easily changed live. Shape is defined by a path
> which can be filled or stroked using a paint. Complex
> elements can be created as composition of elements with
> basic shapes (rectangle, circle).
>
>
> Isn't it beautiful? :)
>
>
> Nope. Because it would be beautiful, if your statements would be
> reflected in
> reality and by reality.
> In your example #defaultShape method, you simply isolating some
> behavior into a separate method. It does not changes anything.
>
> You want to achieve to be able to change shapes on the fly. Good.
> A honourable goal. And welcoming. No objections here.
>
> But can we achieve it without losing being able to change the
> color of shape on the fly. Please? :)
> The way you introducing it goes straightly into conflict with: i
> want to be able to draw anything, the way i feel and like.
> You proposing a bad trade: oh yeah, you wanted to change shapes on
> the fly.. good.. but at cost of unable to draw anything else than
> simple rectangles in simple order..
> Well.. i am not buying such trade. Can you sweeten a deal?
>
> The point is, that shape is not the only thing you need to put
> into equation in order to get thing on the screen.. You also need
> paint. And that's the reason why you have
> fillPaint: (BlColorPaint new color: (Color yellow));
>
> (lets put aside the hardcoding of color in unrelated place
> (defaultShape).. for the sake of example)
> but does that fully covers all and any possible ways and needs of
> drawing?
> Nope! Again not..
> And voila, say welcome to composite "shapes" or "elements" or call
> it as you like it.
> But does that fully covers all and any possible ways you can draw
> something with Athens?
> Nope, it is not. Again. Sorry. You can achieve that only if you
> completely encode all possible operations and features provided by
> Athens using some kind of command pattern and put them in
> 'element' or 'compositeElement' or
> 'compositeOfCompositeElementsComposition' whatever.
>
> For instance, how you going to encode AthensPaintMode into your
> elements?
> I guess you will offer to kill it with your 'it is not used so
> often' knife.
>
> Can't you see that you basically creating a wrapper for all Athens
> feature set.
> I can tell you that you wasting effort: you cannot get anything
> extra by doing it. Except from extra complexity.
> And for what? Something that already there and can be used out of
> the box.
>
> If you don't like Athens API - go on, and change it. Make it
> better and more convenient to use. But encapsulating all possible
> combinations of all possible drawing operations? Good luck with that.
>
>
> Cheers,
> Alex
>
> On Sun, Apr 3, 2016 at 3:37 PM, Igor Stasenko
> <siguctua(a)gmail.com <mailto:siguctua@gmail.com>> wrote:
>
>
>
> On 3 April 2016 at 16:20, Igor Stasenko
> <siguctua(a)gmail.com <mailto:siguctua@gmail.com>> wrote:
>
>
>
> On 3 April 2016 at 15:28, Glenn Cavarlé
> <glenn(a)cavarle.fr <mailto:glenn@cavarle.fr>> wrote:
>
> Hi,
>
> Aliaksei Syrel wrote
> > However, in most UI of applications (in web,
> mobile) it is extremely rare
> > that clipping or event handling areas differ
> from drawing one (visual one
> > -
> > one that user sees in the end).
>
> It is the same for desktop UI (Qt, JavaFx,...).
>
> I think the misunderstanding come from "shape", so
> let us forget BlShape and
> concentrate on BlElement.
>
> In fact, using Bloc now, If we want a Rectangle
> with an clickable inner
> Circle, we have to defined 2 elements, the
> Rectangle one and the Circle one
> (subclass of BlElement or using script style).
> The CircleElement must be the child of the
> RectangleElement but we don't
> have to override any method or to rewire
> CircleElement events back to its
> parent, we just need to add an event listener to
> the CircleElement from
> where we want.
> It is the same with a Text in a Rectangle, we need
> a BlElement for the Text
> and another for the Rectangle in order to compose
> them and to position the
> Text in the Rectangle.
>
> For me its like defining a CircleButton in a
> RectanglePanel with any other
> ui libraries, i can do that by subclassing Panel
> or by using script style.
> But i have to manipulate 2 elements and it makes
> sense for me.
>
> Bloc does not provide user-friendly high-level
> abstractions at BlShape or
> BlElement level like BlCircleShape or BlCircleElement.
> I don't know if it is the right place to add them
> but it is clearly a point
> of misunderstanding when people uses Bloc.
>
>
> It seems to me that Bloc is not made to be used
> direclty as a graphical
> framework but it is a librarie to build more
> user-friendly graphical
> framework.
> Shape, Path, ... are implementations stuff, most
> of users should not care
> about that using a "framework".
>
>
> Thanks for explanation..
> Now i have a hard time understanding, what is the
> purpose of so-called 'element'. Element of what? What
> its role?
> What its interaction between morphs and shapes, and
> what you see & feel on the screen?
>
> >From your description, what i can tell is that it is
> completely unnecessary.
> You have morphs to define hierarchy/composition.
> And you can use shapes to define geometry for UI/clipping.
> As for drawing - there's no need to put any
> constraints, you don't have to even mention that there
> are shapes involved. It is indeed, an implementation
> detail from that perspective, since you drawing things
> using Athens, and it uses shapes to define affected
> regions. But that completely orthogonal to what
> happens at UI level.
> Thus, it is very surprising to me see following code
> snippet:
>
>
> BlCell>>initialize
> super initialize.
> self
> shape:
> (BlShape new
> fillPaint: (BlColorPaint new color: (Color yellow));
> path: BlRectanglePath new);
> extent: self extent
>
> because it is really seems like encapsulation of what
> you gonna draw..
> and putting it into #initialize method in some form?
>
> And you lost me here.. That is complete nonsense..
> from any perspective.
> Can i unsee this code, please? :)
>
>
> <acid mode on>
> .. to me it feels like: okay, what we need to do, to
> prevent overrides of our beloved default #drawOn: method.
>
> And you talking about 'sophistication' after that?
> </acid mode off>
>
>
> PS: @Alex, what are the planned refactoring? I'm
> lost in the new intentions
> and in the roadmap of Bloc...
> Regards,
> Glenn.
>
>
>
> -----
> Glenn Cavarlé
> --
> View this message in context:
> http://forum.world.st/bloc-shape-size-tp4887929p4888039.html
> Sent from the Pharo Smalltalk Developers mailing
> list archive at Nabble.com.
>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
>
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by Thierry Goubier
Le 03/04/2016 20:00, Henrik Nergaard a écrit :
>
>> Let me return you the question then: do you do a composition of
>> submorphs if you're trying to get a different drawOn:?
>
>> Oh, ok, that's true FastTable does it for the selection... changing
>> background color by encapsulating a row in another Morph with the
>> right background color.
>
> Did, not anymore.
>
> FTTableRowMorph>>#selectionColor:
Had to check the following code to be sure:
(highligtedRowIndexes includes: rowIndex) ifTrue: [
row selectionColor: (self owner colorForSelection:
primarySelectionIndex = rowIndex) ].
Was there a measurable inpact when changing that?
Because I have now three ways of doing this, and all of them have
trade-offs. For example the one above suppose that row items are a
specific kind of Morph, i.e. FTTableRowMorph; one could do without a
dedicated Morph subclass for rows and display the selection as a
transparent colored rectangle over the row; this is what I do.
Thierry
April 3, 2016
Re: [Pharo-dev] Call about Numerical Methods in Pharo :)
by Cameron Sanders
Seems that it was renamed?
Any hints of the tools I should look at to find the rank of something in a
distribution?
-cam
On Sun, Apr 3, 2016 at 1:54 PM, Cameron Sanders via Pharo-dev <
pharo-dev(a)lists.pharo.org> wrote:
>
>
> ---------- Forwarded message ----------
> From: Cameron Sanders <camsanders(a)aol.com>
> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
> Cc:
> Date: Sun, 3 Apr 2016 13:46:31 -0400
> Subject: Re: [Pharo-dev] Call about Numerical Methods in Pharo :)
> So was SciSmalltalk renamed?
> -cam
>
> On Sun, Mar 6, 2016 at 9:05 AM, Torsten Bergmann <astares(a)gmx.de> wrote:
>
>> It is understandable that over time an own identity for Pharo is helpful
>> (especially
>> because of the bad Smalltalk marketing, failures of commercial vendors in
>> the past, ...).
>> But also no one can not deny/hide the original roots of Pharo: the
>> primary foundations
>> with pure objects all the way down and messages and concepts just plain
>> Smalltalk.
>> Same for the basic class hierarchy, ...
>>
>> So this discussion is useless, especially because Pharo still lacks many
>> of the
>> features a portable, integratable environment should have (and that
>> Smalltalk
>> failed to deliver, at least in a common way). We should not confuse
>> wishes/dreams
>> with existing state of the technology and facts.
>>
>> Also why discuss about this now again? Did we discuss about renaming
>> SUnit into PUnit? No.
>> This just burns our cycles.
>>
>> For the marketing part there is a primary question to be answered: what
>> are the
>> (business) problems Pharo can solve. At least if we want Pharo to be
>> commercially
>> viable and get money (not only our own) into the community.
>> This is the part that was answered by other languages and technologies so
>> far and
>> the simple reason why they are used: even when they are ugly they solve a
>> problem.
>>
>> Nonetheless:
>> ============
>> If there is a rename I would suggest to rename "SciSmalltalk"
>> into "Polymath".
>> - https://en.wikipedia.org/wiki/Polymath
>> - it can be applied to many subject areas
>> - would be related to Math and science
>> - would also have a "P" like Pharo in the name
>> - Da Vinci was a polymath person, as well as Imhotep :)
>>
>> Bye
>> T.
>>
>>
>
>
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by Igor Stasenko
On 3 April 2016 at 20:51, Thierry Goubier <thierry.goubier(a)gmail.com> wrote:
> Le 03/04/2016 19:12, Igor Stasenko a écrit :
>
>>
>>
>> On 3 April 2016 at 19:48, Thierry Goubier <thierry.goubier(a)gmail.com
>> <mailto:thierry.goubier@gmail.com>> wrote:
>>
>> Le 03/04/2016 17:33, stepharo a écrit :
>>
>> If you want to change clicking behaviour you need to override
>> one single
>> method.
>>
>>
>> Everything you wrote with unreadable amount of
>> characters is
>> for nothing.
>>
>> I see clearly point of Igor. And for me it feels very
>> logical.
>> With such design you can lively change clipping area and
>> interaction area for any morph (element) on screen.
>>
>>
>> In short, i see only two cases where indeed, morph requires
>> a nothing
>> of shapes to define:
>> - clipping region(s)
>> - ui interaction region(s)
>>
>> but for drawing? nooooo... really? who cares what you draw
>> there?
>> draw anything, in any possible way you see fit.. compose,
>> decompose,
>> recombine, blend and mix.. that's the whole purpose of
>> drawing and be
>> artistic and be able to express yourself in any possible way
>> you want :)
>> Why nailing and formalizing things that are tend to be hardly
>> formalizable and more than that, unnecessary.
>> That's my main concern about current design.
>>
>>
>> I agree.
>> I do not see why people are forced to create a submorph just to
>> change
>> the rendering.
>> If you want to change it dynamically you can for example pass a
>> different shape.
>>
>>
>> I don't see the problem with subclassing a morph.
>>
>> Me neither. But do you confusing subclassing and submorph compositing?
>>
>
> Let me return you the question then: do you do a composition of submorphs
> if you're trying to get a different drawOn:?
>
> Who, me? No. Maybe i was just misunderstood your reply.
Because what i was tried to demonstrate in previous post(s) that there's
simply no easy way to expose all possible drawing operations via
composition of morphs (or composition of any other kind of elements),
unless, of course you will lift full feature set of Athens to the level of
composition..
As result you will get a full feature set that Athens provides, plus extra
complexity.
Sounds like thing to do, no? :)
> Oh, ok, that's true FastTable does it for the selection... changing
> background color by encapsulating a row in another Morph with the right
> background color.
>
> Well, i don't know what is FastTable beast are.. so i cannot comment on
this one.
>
> The reverse: I feel like current Morphs are huge monsters of
>> configurability and parameter blocks and properties and intricated
>> code and thousands of methods so that one doesn't has to subclass...
>>
>> Agree, the Morph protocol is bloated. And i don't like it too.
>> That is a result of lifting features and properties up in inheritance
>> chain.
>> And i can imagine how it happens over time:
>> - we have a morph..
>> - hurray!
>> - can we have a morph with a border?
>> - yes! Here BorderedMorph for you!
>> - nice.. but can i use border in another subclass of Morph?
>> - yes! Here borderStyle: property for you.. (and BorderedMorph is now
>> useless)
>>
>> Or take a layout.. We could have , say, MorphWithLayout class. That
>> introducing layouts. While other, simpler morph don't. Really, what
>> layout you need in a morph that contains a plain rectangle fully
>> covering its bounds?
>> Or even 'having submorphs'. We could have MorphWithSubmorphs. Which
>> could introduce submorphs concept.
>>
>> Separation of concerns. Good way to go. But if you need to have a morph
>> that both has layout and border, then you are in trouble: you forced to
>> do one of following:
>> - make own Morph subclass, duplicating features of both.. or make a
>> composition of submorphs that will represent both features, or... lift
>> both features to the top of inheritance chain, getting bloat as result.
>> Most of the times, most of things are achiveable through composition..
>> but some of them.. like drawing - apparently not.
>> In any case i agree, that many features, that Morph proposing out of the
>> box needs review and validation in terms, what if we isolate certain
>> feature(s) in separate subclass and provide them via composition.
>>
>
> Yes, I do think you're right.
>
> Simpler, "subclassable" morphs suits me a lot better.
>>
>> Bloc looks like its taking some of the bad aspects of Morphic.
>>
>> One step at a time. You cannot fix all the problems of parent at once.
>> The way how Bloc born, i think (i may be mistaken), it is a 'clean and
>> lean' port of Morphic. But of course Morphic is huge monster, and
>> porting such monster while rewriting its complex logic at the same time
>> could be daunting hard.
>> In any case, i think it is better. Let us hope, it will be even better.
>>
>
> I do hope. Certain points really require switching to Athens (sub-pixel
> rendering of large fonts is extremely slow), and Bloc will be the toolkit
> we'll have to live with.
>
> Regards,
>
> Thierry
>
>
--
Best regards,
Igor Stasenko.
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by Henrik Nergaard
>Let me return you the question then: do you do a composition of submorphs if you're trying to get a different drawOn:?
>Oh, ok, that's true FastTable does it for the selection... changing background color by encapsulating a row in another Morph with the right background color.
Did, not anymore.
FTTableRowMorph>>#selectionColor:
Best regards,
Henrik
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by Thierry Goubier
Le 03/04/2016 19:12, Igor Stasenko a écrit :
>
>
> On 3 April 2016 at 19:48, Thierry Goubier <thierry.goubier(a)gmail.com
> <mailto:thierry.goubier@gmail.com>> wrote:
>
> Le 03/04/2016 17:33, stepharo a écrit :
>
> If you want to change clicking behaviour you need to override
> one single
> method.
>
>
> Everything you wrote with unreadable amount of
> characters is
> for nothing.
>
> I see clearly point of Igor. And for me it feels very
> logical.
> With such design you can lively change clipping area and
> interaction area for any morph (element) on screen.
>
>
> In short, i see only two cases where indeed, morph requires
> a nothing
> of shapes to define:
> - clipping region(s)
> - ui interaction region(s)
>
> but for drawing? nooooo... really? who cares what you draw
> there?
> draw anything, in any possible way you see fit.. compose,
> decompose,
> recombine, blend and mix.. that's the whole purpose of
> drawing and be
> artistic and be able to express yourself in any possible way
> you want :)
> Why nailing and formalizing things that are tend to be hardly
> formalizable and more than that, unnecessary.
> That's my main concern about current design.
>
>
> I agree.
> I do not see why people are forced to create a submorph just to
> change
> the rendering.
> If you want to change it dynamically you can for example pass a
> different shape.
>
>
> I don't see the problem with subclassing a morph.
>
> Me neither. But do you confusing subclassing and submorph compositing?
Let me return you the question then: do you do a composition of
submorphs if you're trying to get a different drawOn:?
Oh, ok, that's true FastTable does it for the selection... changing
background color by encapsulating a row in another Morph with the right
background color.
> The reverse: I feel like current Morphs are huge monsters of
> configurability and parameter blocks and properties and intricated
> code and thousands of methods so that one doesn't has to subclass...
>
> Agree, the Morph protocol is bloated. And i don't like it too.
> That is a result of lifting features and properties up in inheritance chain.
> And i can imagine how it happens over time:
> - we have a morph..
> - hurray!
> - can we have a morph with a border?
> - yes! Here BorderedMorph for you!
> - nice.. but can i use border in another subclass of Morph?
> - yes! Here borderStyle: property for you.. (and BorderedMorph is now
> useless)
>
> Or take a layout.. We could have , say, MorphWithLayout class. That
> introducing layouts. While other, simpler morph don't. Really, what
> layout you need in a morph that contains a plain rectangle fully
> covering its bounds?
> Or even 'having submorphs'. We could have MorphWithSubmorphs. Which
> could introduce submorphs concept.
>
> Separation of concerns. Good way to go. But if you need to have a morph
> that both has layout and border, then you are in trouble: you forced to
> do one of following:
> - make own Morph subclass, duplicating features of both.. or make a
> composition of submorphs that will represent both features, or... lift
> both features to the top of inheritance chain, getting bloat as result.
> Most of the times, most of things are achiveable through composition..
> but some of them.. like drawing - apparently not.
> In any case i agree, that many features, that Morph proposing out of the
> box needs review and validation in terms, what if we isolate certain
> feature(s) in separate subclass and provide them via composition.
Yes, I do think you're right.
> Simpler, "subclassable" morphs suits me a lot better.
>
> Bloc looks like its taking some of the bad aspects of Morphic.
>
> One step at a time. You cannot fix all the problems of parent at once.
> The way how Bloc born, i think (i may be mistaken), it is a 'clean and
> lean' port of Morphic. But of course Morphic is huge monster, and
> porting such monster while rewriting its complex logic at the same time
> could be daunting hard.
> In any case, i think it is better. Let us hope, it will be even better.
I do hope. Certain points really require switching to Athens (sub-pixel
rendering of large fonts is extremely slow), and Bloc will be the
toolkit we'll have to live with.
Regards,
Thierry
April 3, 2016
Philosophy here
by Igor Stasenko
(This philosophical post provoked by discussion in another thread where we
talking about cases of implementing wrappers and layers of composition.)
To achieve more you shall do more.
Usual truth thing in daily life.
Not so true for programming.
It actually
'do less to achieve more'.
Because it's non-linear in programming. Because each line of code you add
to the system is increasing it complexity accordingly. And that means more
effort for future maintenance for you, or for some other unsuspecting
victim.
So, that's why i always look how to do less, reduce the amount of code, to
achieve something. But not just plainly implement yet another feature, so
its done.
--
Best regards,
Igor Stasenko.
April 3, 2016
Re: [Pharo-dev] Call about Numerical Methods in Pharo :)
by Cameron Sanders
So was SciSmalltalk renamed?
-cam
On Sun, Mar 6, 2016 at 9:05 AM, Torsten Bergmann <astares(a)gmx.de> wrote:
> It is understandable that over time an own identity for Pharo is helpful
> (especially
> because of the bad Smalltalk marketing, failures of commercial vendors in
> the past, ...).
> But also no one can not deny/hide the original roots of Pharo: the primary
> foundations
> with pure objects all the way down and messages and concepts just plain
> Smalltalk.
> Same for the basic class hierarchy, ...
>
> So this discussion is useless, especially because Pharo still lacks many
> of the
> features a portable, integratable environment should have (and that
> Smalltalk
> failed to deliver, at least in a common way). We should not confuse
> wishes/dreams
> with existing state of the technology and facts.
>
> Also why discuss about this now again? Did we discuss about renaming SUnit
> into PUnit? No.
> This just burns our cycles.
>
> For the marketing part there is a primary question to be answered: what
> are the
> (business) problems Pharo can solve. At least if we want Pharo to be
> commercially
> viable and get money (not only our own) into the community.
> This is the part that was answered by other languages and technologies so
> far and
> the simple reason why they are used: even when they are ugly they solve a
> problem.
>
> Nonetheless:
> ============
> If there is a rename I would suggest to rename "SciSmalltalk"
> into "Polymath".
> - https://en.wikipedia.org/wiki/Polymath
> - it can be applied to many subject areas
> - would be related to Math and science
> - would also have a "P" like Pharo in the name
> - Da Vinci was a polymath person, as well as Imhotep :)
>
> Bye
> T.
>
>
April 3, 2016
Re: [Pharo-dev] [bloc] shape size?
by Igor Stasenko
On 3 April 2016 at 19:43, Thierry Goubier <thierry.goubier(a)gmail.com> wrote:
> Hi Alex, Igor and others,
>
> this discussion is interesting to follow. GUI frameworks are hard...
>
> Le 03/04/2016 16:58, Aliaksei Syrel a écrit :
>
>> And you lost me here.. That is complete nonsense.. from any
>> perspective.
>> Can i unsee this code, please? :)
>>
>>
>> If I would say that we have defaultShape method and it can be overridden
>> as:
>>
>> defaultShape
>> ^ BlShape new
>> fillPaint: (BlColorPaint new color: (Color yellow));
>> path: BlRectanglePath new
>>
>> would it make you happy?
>>
>
> If you don't tell me there is a cost for creating a shape in athens, I'll
> wonder if you're not asking me to optimise by caching a shape; and that is
> over-engineering.
Of course, creating shapes has own cost, as anything else. But, guess what,
you having caching mechanism in Athens out of the box, if you don't happy
with performance.
>
>
>> .. to me it feels like: okay, what we need to do, to prevent
>> overrides of our beloved default #drawOn: method.
>>
>> You are wrong concerning preventing to override drawOn :)
>>
>
> I wonder if that "shape" thing is not something like the difference
> between Roassal and Trachel: RT vs TR objects. And, yes, for me, the RT/TR
> hierarchy is a reimplementation of objects over Athens, and the end result
> is that it is easy to compose existing objects in Roassal and hard to
> extend it.
>
Sad. Sarcasm tries to flow from my tongue. But i will keep my mouth shut.
No comments :)
>
> Don't forget that there was a customer *requirement* concerning bloc:
>>
>> Can we change how morph looks on fly? Can we create a rectangle morph
>> and change it's shape from rectangle to circle? Because it can nicely
>> show while presenting that *Pharo is live system*. I'm pretty sure Stef
>> said it once ago.
>>
>
> If that is your requirement, then this is bad.
>
> It's a demo requirement with costly consequences. Does it apply in real
> life in a system where recreating a complete Morph is so cheap (witness
> FastTable!)? I'd say no.
>
> Do you see how bloc story can nicely be told:
>>
>> We have basic UI elements and each element has shape that can be
>> easily changed live. Shape is defined by a path which can be filled
>> or stroked using a paint. Complex elements can be created as
>> composition of elements with basic shapes (rectangle, circle).
>>
>>
>> Isn't it beautiful? :)
>>
>
> It is, but it tells of complexity: UI behavior composition (not only
> graphics). Extending elements may also require extending shapes and
> understanding how they interact and compose.
>
That is road to nowhere. You already having morphs for composition. No need
to introduce 'elements' to compose something inside composition of morphs..
If you cannot do something out of composition of morphs, what makes you
think that you can do it introducing another layer of composition? Maybe
you shall think that composition is a wrong tool in that case?
>
> Regards,
>
> Thierry
>
>
--
Best regards,
Igor Stasenko.
April 3, 2016