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
November 2015
- 972 messages
[pharo-project/pharo-core] a4ba46: 50457
by GitHub
Branch: refs/heads/5.0
Home: https://github.com/pharo-project/pharo-core
Commit: a4ba46aa059cc15f4892e91086abcdec33c4c677
https://github.com/pharo-project/pharo-core/commit/a4ba46aa059cc15f4892e910…
Author: Jenkins Build Server <board(a)pharo-project.org>
Date: 2015-11-22 (Sun, 22 Nov 2015)
Changed paths:
M Nautilus-GroupManagerUI.package/DialogGroupManagerUI.class/instance/item creation/buildAddSelectedPackageInSelectedGroupButton.st
M Nautilus-GroupManagerUI.package/DialogGroupManagerUI.class/instance/item creation/buildRemoveSelectedPackageFromSelectedGroupButton.st
M Nautilus-Tests.package/PackageTreeNautilusTest.class/instance/tests/setUp.st
R Nautilus.package/AbstractNautilusUI.class/instance/accessing/selectedGroup_.st
R Nautilus.package/AbstractNautilusUI.class/instance/accessing/showHierarchySilently_.st
R Nautilus.package/AbstractNautilusUI.class/instance/build ui/buildSeparator.st
R Nautilus.package/AbstractNautilusUI.class/instance/private/popUpTestsResult_.st
R Nautilus.package/AbstractNautilusUI.class/instance/private/renamePackage_.st
R Nautilus.package/AbstractNautilusUI.class/instance/private/updatePackageView.st
R Nautilus.package/AbstractNautilusUI.class/instance/system announcements/classAdded_.st
R Nautilus.package/NautilusUI.class/class/initialize/initializeCache.st
A Nautilus.package/NautilusUI.class/class/menu/packagesFixMenu_.st
M Nautilus.package/NautilusUI.class/definition.st
A Nautilus.package/NautilusUI.class/instance/accessing/basicSelectPackage_.st
A Nautilus.package/NautilusUI.class/instance/accessing/groups.st
A Nautilus.package/NautilusUI.class/instance/accessing/packages.st
A Nautilus.package/NautilusUI.class/instance/accessing/selectedFromPackageGroupView_.st
A Nautilus.package/NautilusUI.class/instance/accessing/selectedGroup_.st
A Nautilus.package/NautilusUI.class/instance/accessing/selectedPackageWithoutChangingSelection_.st
A Nautilus.package/NautilusUI.class/instance/accessing/selectedPackage_.st
A Nautilus.package/NautilusUI.class/instance/accessing/selectedProtocol.st
A Nautilus.package/NautilusUI.class/instance/accessing/showHierarchy_.st
A Nautilus.package/NautilusUI.class/instance/build ui lists/buildFirstColumn_.st
R Nautilus.package/NautilusUI.class/instance/category-method methods/selectedMethodWithoutAsking_.st
A Nautilus.package/NautilusUI.class/instance/class/addClassIn_.st
A Nautilus.package/NautilusUI.class/instance/class/addTraitIn_.st
A Nautilus.package/NautilusUI.class/instance/events handling/keyPressedOnList_shifted_.st
A Nautilus.package/NautilusUI.class/instance/events handling/keyPressedOnTree_target_.st
M Nautilus.package/NautilusUI.class/instance/initialization/initialize.st
A Nautilus.package/NautilusUI.class/instance/menu pragmas/packageFixPragma.st
A Nautilus.package/NautilusUI.class/instance/menus behavior/addClassCategory.st
R Nautilus.package/NautilusUI.class/instance/menus behavior/findAllMethod.st
M Nautilus.package/NautilusUI.class/instance/menus behavior/fullBrowse.st
A Nautilus.package/NautilusUI.class/instance/menus behavior/removeGroups.st
A Nautilus.package/NautilusUI.class/instance/menus behavior/removePackages.st
M Nautilus.package/NautilusUI.class/instance/menus behavior/renameCategory.st
A Nautilus.package/NautilusUI.class/instance/menus behavior/restrictedBrowsePackages_.st
A Nautilus.package/NautilusUI.class/instance/menus/menu_shifted_.st
A Nautilus.package/NautilusUI.class/instance/package filter/buildPackageSearch.st
A Nautilus.package/NautilusUI.class/instance/package filter/class_matchPackagePatternString_.st
A Nautilus.package/NautilusUI.class/instance/package filter/createPackagePattern_.st
A Nautilus.package/NautilusUI.class/instance/package filter/ensureSafePackagePattern_.st
A Nautilus.package/NautilusUI.class/instance/package filter/fixPackagePattern_ex_.st
A Nautilus.package/NautilusUI.class/instance/package filter/packageMatchPattern_.st
A Nautilus.package/NautilusUI.class/instance/package filter/packagePattern.st
A Nautilus.package/NautilusUI.class/instance/package filter/packagePatternString.st
A Nautilus.package/NautilusUI.class/instance/package filter/packagePatternString_.st
A Nautilus.package/NautilusUI.class/instance/package filter/packageSearchUpdate_.st
A Nautilus.package/NautilusUI.class/instance/package filter/package_matchPackagePattern_.st
A Nautilus.package/NautilusUI.class/instance/package filter/updatePackages.st
A Nautilus.package/NautilusUI.class/instance/package filter/useLastPackagePatternString.st
A Nautilus.package/NautilusUI.class/instance/package filter/useLastPackagePatternStringForClass_.st
A Nautilus.package/NautilusUI.class/instance/package/addPackageBasedOn_.st
A Nautilus.package/NautilusUI.class/instance/package/addPackagesAsGroup_.st
A Nautilus.package/NautilusUI.class/instance/package/alertCategoryName_exitstsAlreadyIn_.st
A Nautilus.package/NautilusUI.class/instance/package/category_existsIn_.st
A Nautilus.package/NautilusUI.class/instance/package/fileOutPackages_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/fullBrowseFromPackage_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/fullBrowseFromTag_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/registerSelectionGroup_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/registerSelectionPackage_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/removeClassCategory_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/removePackageCategory_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/renameClassCategory_.st
A Nautilus.package/NautilusUI.class/instance/private dispatch/renamePackageCategory_.st
A Nautilus.package/NautilusUI.class/instance/private/addClassCategoryBasedOn_.st
A Nautilus.package/NautilusUI.class/instance/private/basicRemoveClasses_.st
A Nautilus.package/NautilusUI.class/instance/private/basicRenamePackage_.st
A Nautilus.package/NautilusUI.class/instance/private/basicShowHierarchy.st
A Nautilus.package/NautilusUI.class/instance/private/clearPackageSelections.st
M Nautilus.package/NautilusUI.class/instance/private/isSelectedPackage_.st
A Nautilus.package/NautilusUI.class/instance/private/listClearSelection.st
A Nautilus.package/NautilusUI.class/instance/private/listSelectItem_.st
R Nautilus.package/NautilusUI.class/instance/private/nextButtonState.st
R Nautilus.package/NautilusUI.class/instance/private/previousButtonState.st
A Nautilus.package/NautilusUI.class/instance/private/renamePackage_.st
A Nautilus.package/NautilusUI.class/instance/private/runPackagesTestsNotifying_.st
A Nautilus.package/NautilusUI.class/instance/private/selectPackageFor_.st
A Nautilus.package/NautilusUI.class/instance/private/updateGroupView.st
A Nautilus.package/NautilusUI.class/instance/private/updatePackageGroupAndClassList.st
A Nautilus.package/NautilusUI.class/instance/private/updatePackageView.st
A Nautilus.package/NautilusUI.class/instance/source code area/defaultClassDescriptor.st
A Nautilus.package/NautilusUI.class/instance/system announcements/classAdded_.st
A Nautilus.package/NautilusUI.class/instance/test creation/buildTestPackageNameFrom_.st
R Nautilus.package/NautilusUI.class/instance/widget method/methodsForCategoriesInGroup_.st
R Nautilus.package/NautilusUI.class/instance/widget method/methodsForCategoryInGroup_.st
R Nautilus.package/PackageTreeNautilusUI.class/class/menu/packagesFixMenu_.st
M Nautilus.package/PackageTreeNautilusUI.class/definition.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/basicSelectPackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/groups.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/packages.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/selectedFromPackageGroupView_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/selectedGroup_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/selectedPackageWithoutChangingSelection_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/selectedPackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/selectedProtocol.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/accessing/showHierarchy_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/build ui lists/buildFirstColumn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/class/addClassIn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/class/addTraitIn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/events handling/keyPressedOnList_shifted_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/events handling/keyPressedOnTree_target_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/initialization/initialize.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menu pragmas/packageFixPragma.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/addClassCategory.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/fullBrowse.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/removeGroups.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/removePackages.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/renameCategory.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus behavior/restrictedBrowsePackages_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/menus/menu_shifted_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/buildPackageSearch.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/class_matchPackagePatternString_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/createPackagePattern_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/ensureSafePackagePattern_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/fixPackagePattern_ex_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/packageMatchPattern_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/packagePattern.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/packagePatternString.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/packagePatternString_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/packageSearchUpdate_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/package_matchPackagePattern_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/updatePackages.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/useLastPackagePatternString.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package filter/useLastPackagePatternStringForClass_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package/addPackageBasedOn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package/addPackagesAsGroup_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package/alertCategoryName_exitstsAlreadyIn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package/category_existsIn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/package/fileOutPackages_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/fullBrowseFromPackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/fullBrowseFromTag_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/registerSelectionGroup_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/registerSelectionPackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/removeClassCategory_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/removePackageCategory_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/renameClassCategory_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private dispatch/renamePackageCategory_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/addClassCategoryBasedOn_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/basicRemoveClasses_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/basicRenamePackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/basicShowHierarchy.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/clearPackageSelections.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/isSelectedPackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/listClearSelection.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/listSelectItem_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/renamePackage_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/runPackagesTestsNotifying_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/selectPackageFor_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/updateGroupView.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/updatePackageGroupAndClassList.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/private/updatePackageView.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/source code area/defaultClassDescriptor.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/system announcements/classAdded_.st
R Nautilus.package/PackageTreeNautilusUI.class/instance/test creation/buildTestPackageNameFrom_.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50456.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50457.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50456.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50457.st
M ScriptLoader50.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
A System-Announcements.package/ClassParentRenamed.class/README.md
A System-Announcements.package/ClassParentRenamed.class/class/instance creation/classParentOf_renamedFrom_to_.st
A System-Announcements.package/ClassParentRenamed.class/definition.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/classAffected.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/classAffected_.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/parentNewName.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/parentNewName_.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/parentOldName.st
A System-Announcements.package/ClassParentRenamed.class/instance/accessing/parentOldName_.st
A System-Announcements.package/SystemAnnouncer.class/instance/triggering/classParentOf_renamedFrom_to_.st
M System-Support.package/SystemDictionary.class/instance/renaming/renameClass_from_to_.st
Log Message:
-----------
50457
17071 merge all methods of PackageTreeNautilusUI into NautilusUI
https://pharo.fogbugz.com/f/cases/17071
17064 Add new SystemAnnouncement for "parent class name changed"
https://pharo.fogbugz.com/f/cases/17064
17073 wrong arrow icon in Group Manager
https://pharo.fogbugz.com/f/cases/17073
http://files.pharo.org/image/50/50457.zip
Nov. 22, 2015
Re: [Pharo-dev] Digest from slack to the mailing list?
by Dimitris Chloupis
Just to clear something up , because I see people in slack saying goodbye,
or "I cant reply right now I have something to do" . Slack is not just a
real time chat, it keeps messages inside a history of 10 thousand messages.
So that means you can log in Slack at any time and not lose a message.
There is no reason for you to be online all time, no reason to say goodbye,
goodmorning , goodafternoon. You can come and go as you please the exact
same way as the mailing list.
The problem arises when we exceed 10k messages, the old ones get lost and I
think having a place to store them is a good idea.
Also what is important is in the eye of the beholder, for example I dont
care about any discussion about web development , its just does not
interest me or database coding or many other things. I have learned to
filter out the messages I dont care about in the mailing list and just
reject them. Slack is same story, I quickly glance through its history and
I can search the messages that interest me using the search bar , I can
star messages that I want to keep, and I can comment on existing messages /
code snippets which create a thread about that message.
In the end its impossible to keep the community in one place but to have a
central hub that collects all the little gems can be quite useful.
On Sun, Nov 22, 2015 at 3:46 PM stepharo <stepharo(a)free.fr> wrote:
> Yes this would be good.
> People should understand that important discussions should be via the
> mailing-list.
> Emails are good because you can consume them the way you want.
> I simply cannot be connected all the time. So emails are good because I
> can process them
> when I decide.
> Slack is good for more interactive session around debugger and things
> like that.
>
> Stef
>
>
> Le 21/11/15 18:05, Stephan Eggermont a écrit :
> > Should we have a digest from slack to a mailing list?
> > We are already losing messages
> >
> > Stephan
> >
> >
> >
>
>
>
Nov. 22, 2015
Re: [Pharo-dev] A plea for responsive coding
by Dimitris Chloupis
because making something work for me comes way before making something work
fast.
On Sun, Nov 22, 2015 at 3:50 PM stepharo <stepharo(a)free.fr> wrote:
> But why don't you manipulate Forms instead of PNGs. Converting from PNGs
> to Forms should be done only once.
>
> Stef
>
> Le 22/11/15 11:53, Dimitris Chloupis a écrit :
>
> here is the tricky part , I am willing to bet that the slow down happens
> because of the stepping of the seconds indicator.
>
> The one thing I forgot to mention is that I dont load my images from
> external files, the images are already converted to method sources ,
> strings , with Peter's IconFactory library. Still the PNGReader class tries
> to convert those string streams to forms and is where most of the time is
> consumed. The reason I chose this approach was in hope of a speed up so
> pharo does not waste time opening and closing files.
>
> In the stepping of the seconds indicator I recreate the form in each step
> , depending on the seconds. I could optomise that part by having all images
> of the animation loaded into seperate forms during initialisation and just
> use the reference of the correct form during stepping that should speed
> things up a lot.
>
> Overall 170ms for opening that GUI is not so bad for a dynamic GC
> language. Taking into account that this is mostly pharo code , unlike
> python that it would be using a C lib to speed things up. I am a happy
> Morphic customer :)
>
> On Sun, Nov 22, 2015 at 12:39 PM Thierry Goubier <
> thierry.goubier(a)gmail.com> wrote:
>
>> Le 22/11/2015 11:27, Dimitris Chloupis a écrit :
>> > tried with ChronosManager
>> >
>> > [ ChronosManager open ] bench
>> >
>> > 5.6 per second
>> >
>> > it opened around 30 instances and Morphic was crawling.
>> >
>> > I profiled it and it reports that it spends a total 170ms which is
>> > consistent with bench. Around 50ms is spent only for loading the image
>> > of the secondary panel and from what I have seen loading the images and
>> > the font accounts around 90% of the time spent and then rest 10% is
>> > actually morphic + logic.
>>
>> If I understand you well, what you have is:
>>
>> - ChronosManager takes 170ms to open, including external resources
>> loading time (which is SSD/HD dependent).
>>
>> - The whole world performance degrades with many ChronosManager
>> instances loaded? (Moving one around probably forces others to refresh
>> as well).
>>
>> What could be nice is to profile rendering time as well (but, if your
>> first render time is included in the 10% of 170ms you quote, then it is
>> probably fine).
>>
>> Would you like to try benchmarking rendering one ChronosManager instance
>> when you have 30 instances opened / only one instance opened?
>>
>> > So from the looks of it , it looks like Morphic does not perform well
>> > with loaded images and external files.
>>
>> This is a clear win if you cache those (i.e. have a LRU cache holding
>> forms and fonts, filled upon first load, reused over subsequent loads).
>>
>> Thierry
>>
>> >
>> >
>> > On Sun, Nov 22, 2015 at 11:34 AM Thierry Goubier
>> > <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>> >
>> > Hi all,
>> >
>> > I would like to ask you, all of you, something significant when
>> doing
>> > GUI coding:
>> >
>> > Pay attention to performance!
>> >
>> > With the current state of our technology (Morphic, Bloc, whatever
>> comes
>> > next) your target should be one hundred milliseconds (100 ms), for
>> > opening / redisplaying the widget.
>> >
>> > Why?
>> >
>> > - Because, in 10ms, Morphic can open and layout dozens of Morphs on
>> a
>> > low-end machine (1.4GHz Celeron).
>> >
>> > - Because most of you work on 3GHz+ i7 Macbook Pro (so, at 10x the
>> cpu
>> > performance of that said Celeron).
>> >
>> > - Because you are not to reproduce the past: that your current
>> tools are
>> > slow is no excuse.
>> >
>> > - Because you now have well designed core widgets (FT) that behaves
>> in
>> > O(1) and opens fully loaded in 10's of milliseconds
>> >
>> > So, profile and clean your code! Eliminate unneeded caches! Clean
>> your
>> > architectures! Avoid or mark slow code and bottlenecks!
>> >
>> > And bring numbers when you want to criticize the performance of a
>> > subsystem...
>> >
>> > Thierry
>> >
>>
>>
>>
>
Nov. 22, 2015
Re: [Pharo-dev] A plea for responsive coding
by stepharo
But why don't you manipulate Forms instead of PNGs. Converting from PNGs
to Forms should be done only once.
Stef
Le 22/11/15 11:53, Dimitris Chloupis a écrit :
> here is the tricky part , I am willing to bet that the slow down
> happens because of the stepping of the seconds indicator.
>
> The one thing I forgot to mention is that I dont load my images from
> external files, the images are already converted to method sources ,
> strings , with Peter's IconFactory library. Still the PNGReader class
> tries to convert those string streams to forms and is where most of
> the time is consumed. The reason I chose this approach was in hope of
> a speed up so pharo does not waste time opening and closing files.
>
> In the stepping of the seconds indicator I recreate the form in each
> step , depending on the seconds. I could optomise that part by having
> all images of the animation loaded into seperate forms during
> initialisation and just use the reference of the correct form during
> stepping that should speed things up a lot.
>
> Overall 170ms for opening that GUI is not so bad for a dynamic GC
> language. Taking into account that this is mostly pharo code , unlike
> python that it would be using a C lib to speed things up. I am a happy
> Morphic customer :)
>
> On Sun, Nov 22, 2015 at 12:39 PM Thierry Goubier
> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>
> Le 22/11/2015 11:27, Dimitris Chloupis a écrit :
> > tried with ChronosManager
> >
> > [ ChronosManager open ] bench
> >
> > 5.6 per second
> >
> > it opened around 30 instances and Morphic was crawling.
> >
> > I profiled it and it reports that it spends a total 170ms which is
> > consistent with bench. Around 50ms is spent only for loading the
> image
> > of the secondary panel and from what I have seen loading the
> images and
> > the font accounts around 90% of the time spent and then rest 10% is
> > actually morphic + logic.
>
> If I understand you well, what you have is:
>
> - ChronosManager takes 170ms to open, including external resources
> loading time (which is SSD/HD dependent).
>
> - The whole world performance degrades with many ChronosManager
> instances loaded? (Moving one around probably forces others to refresh
> as well).
>
> What could be nice is to profile rendering time as well (but, if your
> first render time is included in the 10% of 170ms you quote, then
> it is
> probably fine).
>
> Would you like to try benchmarking rendering one ChronosManager
> instance
> when you have 30 instances opened / only one instance opened?
>
> > So from the looks of it , it looks like Morphic does not perform
> well
> > with loaded images and external files.
>
> This is a clear win if you cache those (i.e. have a LRU cache holding
> forms and fonts, filled upon first load, reused over subsequent
> loads).
>
> Thierry
>
> >
> >
> > On Sun, Nov 22, 2015 at 11:34 AM Thierry Goubier
> > <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>
> <mailto:thierry.goubier@gmail.com
> <mailto:thierry.goubier@gmail.com>>> wrote:
> >
> > Hi all,
> >
> > I would like to ask you, all of you, something significant
> when doing
> > GUI coding:
> >
> > Pay attention to performance!
> >
> > With the current state of our technology (Morphic, Bloc,
> whatever comes
> > next) your target should be one hundred milliseconds (100
> ms), for
> > opening / redisplaying the widget.
> >
> > Why?
> >
> > - Because, in 10ms, Morphic can open and layout dozens of
> Morphs on a
> > low-end machine (1.4GHz Celeron).
> >
> > - Because most of you work on 3GHz+ i7 Macbook Pro (so, at
> 10x the cpu
> > performance of that said Celeron).
> >
> > - Because you are not to reproduce the past: that your
> current tools are
> > slow is no excuse.
> >
> > - Because you now have well designed core widgets (FT) that
> behaves in
> > O(1) and opens fully loaded in 10's of milliseconds
> >
> > So, profile and clean your code! Eliminate unneeded caches!
> Clean your
> > architectures! Avoid or mark slow code and bottlenecks!
> >
> > And bring numbers when you want to criticize the performance
> of a
> > subsystem...
> >
> > Thierry
> >
>
>
Nov. 22, 2015
Re: [Pharo-dev] A plea for responsive coding
by stepharo
+100000
Stef
> Hi all,
>
> I would like to ask you, all of you, something significant when doing
> GUI coding:
>
> Pay attention to performance!
>
> With the current state of our technology (Morphic, Bloc, whatever
> comes next) your target should be one hundred milliseconds (100 ms),
> for opening / redisplaying the widget.
>
> Why?
>
> - Because, in 10ms, Morphic can open and layout dozens of Morphs on a
> low-end machine (1.4GHz Celeron).
>
> - Because most of you work on 3GHz+ i7 Macbook Pro (so, at 10x the cpu
> performance of that said Celeron).
>
> - Because you are not to reproduce the past: that your current tools
> are slow is no excuse.
>
> - Because you now have well designed core widgets (FT) that behaves in
> O(1) and opens fully loaded in 10's of milliseconds
>
> So, profile and clean your code! Eliminate unneeded caches! Clean your
> architectures! Avoid or mark slow code and bottlenecks!
>
> And bring numbers when you want to criticize the performance of a
> subsystem...
>
> Thierry
>
>
Nov. 22, 2015
Re: [Pharo-dev] Digest from slack to the mailing list?
by stepharo
Yes this would be good.
People should understand that important discussions should be via the
mailing-list.
Emails are good because you can consume them the way you want.
I simply cannot be connected all the time. So emails are good because I
can process them
when I decide.
Slack is good for more interactive session around debugger and things
like that.
Stef
Le 21/11/15 18:05, Stephan Eggermont a écrit :
> Should we have a digest from slack to a mailing list?
> We are already losing messages
>
> Stephan
>
>
>
Nov. 22, 2015
Re: [Pharo-dev] recompiling all classes and traits is slow (at least on windows)
by Alexandre Bergel
Wow, I did not know you can close and open source files.
Everyday there is something to learn.
Cheers,
Alexandre
> On Nov 22, 2015, at 8:16 AM, Max Leske <maxleske(a)gmail.com> wrote:
>
> If you only need it for yourself you could probably speed things up by doing
>
> Smalltalk closeSourceFiles. [ compile⦠] ensure: [ Smalltalk openSourceFiles ].
>
> That will prevent reads and writes from and to the changes / sources files. Of course, that doesnât solve the problem in general.
>
> Cheers,
> Max
>
>
>> On 21 Nov 2015, at 20:09, Nicolai Hess <nicolaihess(a)gmail.com> wrote:
>>
>> recompiling all classes -> ~ 2 minutes
>> recompiling all traits -> ~ 13 minutes
>>
>> is there any way to recompile all without removing and adding all trait methods
>> for trait users ? Because this touches the changes file (although recompiling
>> shouldn't change the source) and touching the changes file for many methods
>> is pretty slow on windows.
>>
>>
>> nicolai
>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Nov. 22, 2015
Re: [Pharo-dev] Digest from slack to the mailing list?
by Stephan Eggermont
On 22/11/15 12:14, Max Leske wrote:
> I donât think thatâs necessary. Important stuff will still be sent via mail and be documented in issues on fogbugz. Thatâs my personal feeling at least.
I don't see that happening at all. We don't publish design notes
(abstracts from design discussions) and we only track simple issues.
Stephan
Nov. 22, 2015
Re: [Pharo-dev] Digest from slack to the mailing list?
by Stephan Eggermont
On 22/11/15 13:26, Marcus Denker wrote:
> Honestly, who has the time to read all this?
That's not the point. The importance is searchability. It is essential
to be able to follow design discussions from 10-15 years ago to
understand how to fix things now. That information needs to be openly
available. Putting it all in a full text search engine with a web
interface might work too.
Stephan
Nov. 22, 2015
Re: [Pharo-dev] Digest from slack to the mailing list?
by Marcus Denker
Honestly, who has the time to read all this?
I never read the old discussions that happened when I was off in Slack.
(And I try to not read everything on this list, too).
Just because if I would read everything, I would not have the time to actually
*do* anything.
Marcus
> On 22 Nov 2015, at 08:37, Dimitris Chloupis <kilon.alios(a)gmail.com> wrote:
>
> I think its important to have, I have already learned a ton via Slack and I have marked several posts there are favorites so that I wont lose them .
>
> The Slack experiment, even though I have been very skeptical at first, has been a huge success and it can easily compete with the importance of the mailing list. Merging the two would be a huge win for our community.
>
> On Sat, Nov 21, 2015 at 7:06 PM Stephan Eggermont <stephan(a)stack.nl <mailto:stephan@stack.nl>> wrote:
> Should we have a digest from slack to a mailing list?
> We are already losing messages
>
> Stephan
>
>
Nov. 22, 2015