Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
I forgot to mention this list of eclipse icons http://eclipse-icons.i24.cc/ Ben Coman wrote: The EPL does not seem the same show stopper as the GPL since the Eclipse License and FAQ indicate it is not viral like the GPL. There is no requirement that an EPL licensed program combined with a non-EPL licensed program requires the combination to be licensed under the EPL as a whole. In fact it is designed to allow distribution of closed source commercial applications based on it while keeping the common base open source. FAQ#17 actually says: "When incorporating a portion of a Program licensed under the EPL into my own proprietary product distributed in object code form, can I use a single license for the full product, in other words, covering the portion of the Program plus my own code? Answer: Yes. The object code for the product may be distributed under a single license as long as it references the EPL portion and complies, for that portion, with the terms of the EPL." Complying with the terms effectively be satisfied by: 1. "sources" be available "just for the icons" 2. Disclaiming warranty and liability - which the MIT already does 3. Assumedly no patent issues arising from inclusion of icons. Stéphane Ducasse wrote: I'm not sure that I would like to carry the Eclipse License around in Pharo :) On Dec 11, 2011, at 3:15 AM, Esteban Lorenzano wrote: Hi, Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... and I never liked the current Pharo icons, so I took one icon library I really like and changed all needed icons (well... all that I saw). Here a couple of screen shots: Captura de pantalla 2011-12-10 a la(s) 23.05.55.png Captura de pantalla 2011-12-10 a la(s) 23.06.20.png Of course, I don't think they are perfect (also maybe I didn't pick the best icons), but I think they look a lot better than the older. If you want to see how they look, this are the packages: for Pharo 1.3: Eclipse-Icons-EstebanLorenzano.2.mcz for Pharo 1.4: Eclipse-Icons-EstebanLorenzano.4.mcz Then you execute: ThemeIcons initializeIcons. World resetWorldMenu. ... and enjoy your new icons :) btw... this icons are in an open-source license, the EPL: http://www.eclipse.org/legal/epl-v10.html so, maybe –if all agree–, we can add this icons to regular distribution :) best, Esteban
Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
Some specific constructive feedback: the ones that don't work (IMHO) are the debug and profile icons. Overall, great job! From: pharo-project-boun...@lists.gforge.inria.fr [pharo-project-boun...@lists.gforge.inria.fr] on behalf of Sven Van Caekenberghe [s...@beta9.be] Sent: Sunday, December 11, 2011 4:04 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] [ANN] Eclipse Icons for Pharo On 11 Dec 2011, at 03:15, Esteban Lorenzano wrote: Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... Great initiative! I personnaly don't like each of them, but these icons form a big, consistent set and make a good modernization of the UI. We should take this as a start and go over all missing ones, and maybe add a few unique once. Thanks. Sven
[Pharo-project] Latest Zinc in Pharo 1.3 with MetacelloConfiguration
But I'd like to do that with a MetacelloConfiguration. May I add a version 14 in the ConfigurationOfZincHTTPComponents? Can I use the latest versions of each package ? Or are there some 'stable' versions I should use ? There are two ConfigurationOfZincHTTPComponents: one in the Zn repository and one in the MetacelloRepository. Which one should I update? Why is there two different place to find it? Cheers, Francois -- http://tulipemoutarde.be BE: +32 (0)65 709 131 CA: +1 778 558 3225
Re: [Pharo-project] Cleaning up SmartRefStream use
On Dec 11, 2011, at 4:54 PM, Mariano Martinez Peck wrote: On Sun, Dec 11, 2011 at 4:35 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 11, 2011, at 4:26 PM, Mariano Martinez Peck wrote: On Sun, Dec 11, 2011 at 11:32 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Indeed this is fun I was doing the same :) Now I do not understand why some parts of the system uses dataStream, others ReferenceStream and finally others SmartRefStream why not all of them use SmartRefStream. It is not that I like these guys, but their class comments are pretty clear: - DataStream does NOT handle cycles, but hence it may be faster in certain scenarios. I guess that for example, Monticello is sure that in its definitions, there cannot be cycles. In addition, it doesn't take into account variables names/order and hence class reshape isn't supported. - ReferenceStream supports cycles but still doesn't support class reshape. - SmartRefStream supports cycles and class reshape. sounds good Yes it does. In fact, I would love also to have those things optional/configurable in Fuel: optional cycle detection and optional class reshape support :) then we should be able to replace all the reference stream and smart by fuel. Yes, but Fuel is not completly ready to fully replace them. There are some hooks they provide that Fuel does not yet. But we will get there at some point. we will have because we do not want to stay indefinitely with image segment and smart ref. :) stef -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Help: Zodiac secure server.
Prasad, Comments inline: On 11 Dec 2011, at 19:06, Prasad Khurd wrote: socketStreamOn: socket | stream sss | stream := ZdcSecureSocketStream on: socket. stream binary; shouldSignal: true; autoFlush: false; bufferSize: self class socketBufferSize; The 4 messages above are not necessary (they are no-ops for ZdcSecureSocketStream, see their implementation). timeout: self class socketStreamTimeout. stream sslSession certificateName: '/home/khurd/pharo/cert.pem'. sss := stream sslSession. Transcript cr; show: 'Is connected: ', sss isConnected printString, 'certVerifState: ', sss certificateVerificationState printString. stream accept. At the transcript output i get Is connected: false certVerifState: 0 which leads me to believe the certificate (cert.pem) is valid but the sslSession has disconnected The SSL session can only be OK *after* the #accept. and i get a walkback in accept stating the connection is closed. Are any of the stream settings wrong? Can u please share briefly how i could debug here… What is the walkback ? Also do i need to set the certificateName on the client stream's sslSession? ss := ZdcSecureSocketStream openConnectionToHostNamed: 'localhost' port: 443. ss sslSession certificateName: '/home/khurd/pharo/cacert.pem'. Each secure stream has an SSLSession instance on which you should set the certificate once. The argument should be the full path to the .pem file which must include both the certificate and the private key. In the document that you used I think it should be key-cert.pem, the combined private key and certificate. Good luck and be sure to let me know how it goes. Sven PS: BTW I guess you are on Linux ? Because on Mac OS X this won't work due to missing functionality in the plugin.
Re: [Pharo-project] NBCairo
Excelent! this is really good! I added you to the NBCairo admins, can you copy them to squeaksource? (I have a really crappy internet connection right now) Cheers, Javier On 12/11/11, Fernando Olivero fernando.oliv...@usi.ch wrote: Hi, Javier i've enhanced a bit the NBCairo bindings. Made the examples work with FS and directly display on the Display, without creating an ImageMorph, and also release the png's. I've changed the protocol of NBCairo, and updated it to subclass NBExternalLibrary, now present in NB. I've attached the monticello packages, let me know what do you think. Fernando pd: almost have the pango bindings working, screenshots soon. -- Lic. Javier Pimás Ciudad de Buenos Aires
Re: [Pharo-project] Keymapping OB conflict (was Re: Chasing Browsers)
All the compilation chain and code management and manipulation tools should be able to work on remote environment. We already discussed and I do not have the time to explain that the design of john was not taking into account that we would like to be able to work with one tool on another environment. The Browser environment = the complete code in the image does not work anymore. Anyway you do not want to change and this is perfect. It is just raging that I do not have enough time to fix it. Now we will see in 1.4 if people want to still use 1.3 or if they have benefit to work with 1.4. We integrated RB because we need to be able to move forward. It would be easy to have two configurations one for 1.3 and one for 1.4 but since you do not want to maintain it when you change your versions then we have to spend more time and frustration but we will do it. I spent a full day the last time while it would have cost you may be 10 min but I have no problem with that since the only thing I can do is to do it, I will do it. We will continue to work and push pharo and people can continue to use it or not. We know where we want to go and we will take responsibility and probably it will burn a bit more of our energy but there is no other paths sadly. Stef On Dec 11, 2011, at 4:42 PM, Lukas Renggli wrote: This is important for us to know that and this is a really nice stab in our back and this will kill a lot of the effort we build over the years. I don't understand why you think this is a stab into your back? I have repeated the same concerns over and over again. Now how can we make progress if we do not change Pharo? Again, we already discussed this many times. I think Pharo is totally off the track: Pharo should concentrate on getting a stable core and enabling distributions on top, not on integrating as much new things as possible. May be a dead pharo is better for you. A dead Pharo is not my goal. I need a minimal Pharo with an absolutely trusted and stable core; a system where I can load all my code; a system that does not force me to use things I don't want to use. @Lukas: please, could you point out what are the expected problems? For example, all PetitParser-Tests are green out of the box in the latest 1.4. Nice, maybe the others also just work? OB does not work though because Polymorph changed (and the debugger doesn't even open in the UI thread anymore either, so it is not possible to figure out the problem); and because it expects a different version of RB. You were against changing RB, so how can we do remote tooling? I was against chaining RB, because the proposed changes undermined design decisions in RB. In general, it feels extremely strange to me if people change code (or even class comments) without understanding the code. Also, for that matter, I don't see how you want to use RB for remote tooling? If you remember, I pointed out an interview a while ago with John where they discuss why remote tooling wouldn't work without rewriting most parts. Lukas -- Lukas Renggli www.lukas-renggli.ch
Re: [Pharo-project] native boost is the best thing since COGVM
Cl!!! On 12/11/11, Fernando Olivero fernando.oliv...@usi.ch wrote: I was able to create the binding to Pango using NB. The ultimate goal is to provide a cleaner implementation of text widgets. Thanks Igor ! Fernando -- Lic. Javier Pimás Ciudad de Buenos Aires
Re: [Pharo-project] Keymapping OB conflict (was Re: Chasing Browsers)
Now how can we make progress if we do not change Pharo? Again, we already discussed this many times. I think Pharo is totally off the track: Pharo should concentrate on getting a stable core and enabling distributions on top, not on integrating as much new things as possible. How can we remove from the kernel the ugly browser classes and tools, if people do not support the new tools? How can we redo senders and implementors (fix the ugly listMorph treemorph) when we cannot maintain OB (because we do not understand it)? So we are probably not so off-track that you believe. It will take more time that if people would collaborate with us, but we will get there. Ok so this is my last mail on that topic. I lost already too much energy that I should have spent on 1.4. Stef
[Pharo-project] [update 1.4] #14256
14256 - Issue 5086: remove #associationDeclareAt: http://code.google.com/p/pharo/issues/detail?id=5086 Issue 5090: remove a call to withAllSuperAndSubclassesDoGently: http://code.google.com/p/pharo/issues/detail?id=5090 Issue 5088: TextStyleTest is empty. Remove http://code.google.com/p/pharo/issues/detail?id=5088 Issue 5074: Move Object#copyTwoLevel to finder package http://code.google.com/p/pharo/issues/detail?id=5074 Issue 4840: Schedulebetween:and:do can iterate over the wrong dates. http://code.google.com/p/pharo/issues/detail?id=4840 Issue 5089: clean unused methods related to filter streaming http://code.google.com/p/pharo/issues/detail?id=5089 -- Marcus Denker -- http://marcusdenker.de
Re: [Pharo-project] Do we need the URI Package?
On 11 Dec 2011, at 11:38, Marcus Denker wrote: Hi, There are three packages concerned with URLs: - ZnUrl in Zinc - Network-URI - Network-Url URI was a package from Impara that was used extensively in all Impara products and Sophie... back than, the idea was to integrate Impara infrastructure in Squeak, but that did not happen due to politics... Network-URI seems to be used nowhere in the system, so I guess we can remove it? Or is anyone using it? ZnUrl started as a copy of Seaside's WAUrl. From the class comment: I am ZnUrl, an implementation of an interpreted HTTP(S) URL/URI. Contrary to other implementations, this one is specific for HTTP(S). In other words, it might not be general enough, although I think it is better in its domain. Covering all possible URI/URL types over all kinds of applications is not simple. Yes, we need to simplify this, but it is a lot of work. Maybe we could have a look at what other libraries do. Sven
Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
Options are good. From: pharo-project-boun...@lists.gforge.inria.fr [pharo-project-boun...@lists.gforge.inria.fr] on behalf of Esteban Lorenzano [esteba...@gmail.com] Sent: Sunday, December 11, 2011 7:59 AM To: Pharo-project@lists.gforge.inria.fr; fernando.oliv...@usi.ch Subject: Re: [Pharo-project] [ANN] Eclipse Icons for Pharo Hi Fernando, oops... I forgot your icon importer, sorry :P I would like –for a future– to integrate it to pharo and replace current ThemeIcons with an icon strategy based on your package... maybe that is the best future scenario for icons. best, Esteban El 11/12/2011, a las 8:49a.m., Fernando Olivero escribió: Hi Esteban, nice work! For importing the icons you can use the toolset i've developed: it automates completely the process of importing a complete set of icons of a given family. ExternalIconFamily @ squeaksource. I've used it for importing the Oxygen icon set, and others (you can google the list for previous related emails). Fernando On Sun, Dec 11, 2011 at 10:38 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Esteban I know that feeling :) :) Now I'm not sure that I would like to carry the Eclipse License around in Pharo :) What are the other icons sets we could use with a nice license and we do it :). famfam? We should clean also the old icons because some are really old. Thanks for pushing that. I would love to have new icons for Pharo. Stef On Dec 11, 2011, at 3:15 AM, Esteban Lorenzano wrote: Hi, Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... and I never liked the current Pharo icons, so I took one icon library I really like and changed all needed icons (well... all that I saw). Here a couple of screen shots: Captura de pantalla 2011-12-10 a la(s) 23.05.55.png Captura de pantalla 2011-12-10 a la(s) 23.06.20.png Of course, I don't think they are perfect (also maybe I didn't pick the best icons), but I think they look a lot better than the older. If you want to see how they look, this are the packages: for Pharo 1.3: Eclipse-Icons-EstebanLorenzano.2.mcz for Pharo 1.4: Eclipse-Icons-EstebanLorenzano.4.mcz Then you execute: ThemeIcons initializeIcons. World resetWorldMenu. ... and enjoy your new icons :) btw... this icons are in an open-source license, the EPL: http://www.eclipse.org/legal/epl-v10.html so, maybe –if all agree–, we can add this icons to regular distribution :) best, Esteban
Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
Sure but we would like to avoid to have more license. I would prefer a CreativeCommons license because it is simple to understand and is not related to code. Stef On Dec 11, 2011, at 4:45 PM, Ben Coman wrote: The EPL does not seem the same show stopper as the GPL since the Eclipse License and FAQ indicate it is not viral like the GPL. There is no requirement that an EPL licensed program combined with a non-EPL licensed program requires the combination to be licensed under the EPL as a whole. In fact it is designed to allow distribution of closed source commercial applications based on it while keeping the common base open source. FAQ#17 actually says: When incorporating a portion of a Program licensed under the EPL into my own proprietary product distributed in object code form, can I use a single license for the full product, in other words, covering the portion of the Program plus my own code? Answer: Yes. The object code for the product may be distributed under a single license as long as it references the EPL portion and complies, for that portion, with the terms of the EPL. Complying with the terms effectively be satisfied by: 1. sources be available just for the icons 2. Disclaiming warranty and liability - which the MIT already does 3. Assumedly no patent issues arising from inclusion of icons. Stéphane Ducasse wrote: I'm not sure that I would like to carry the Eclipse License around in Pharo :) On Dec 11, 2011, at 3:15 AM, Esteban Lorenzano wrote: Hi, Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... and I never liked the current Pharo icons, so I took one icon library I really like and changed all needed icons (well... all that I saw). Here a couple of screen shots: Captura de pantalla 2011-12-10 a la(s) 23.05.55.png Captura de pantalla 2011-12-10 a la(s) 23.06.20.png Of course, I don't think they are perfect (also maybe I didn't pick the best icons), but I think they look a lot better than the older. If you want to see how they look, this are the packages: for Pharo 1.3: Eclipse-Icons-EstebanLorenzano.2.mcz for Pharo 1.4: Eclipse-Icons-EstebanLorenzano.4.mcz Then you execute: ThemeIcons initializeIcons. World resetWorldMenu. ... and enjoy your new icons :) btw... this icons are in an open-source license, the EPL: http://www.eclipse.org/legal/epl-v10.html so, maybe –if all agree–, we can add this icons to regular distribution :) best, Esteban
Re: [Pharo-project] Latest Zinc in Pharo 1.3 with MetacelloConfiguration
François, On 12 Dec 2011, at 05:51, Francois Stephany wrote: But I'd like to do that with a MetacelloConfiguration. May I add a version 14 in the ConfigurationOfZincHTTPComponents? Can I use the latest versions of each package ? Or are there some 'stable' versions I should use ? There are two ConfigurationOfZincHTTPComponents: one in the Zn repository and one in the MetacelloRepository. Which one should I update? Why is there two different place to find it? Cheers, Francois It would be great if you could update both to the latest versions of all packages. Merci beaucoup! Sven
[Pharo-project] IdentitySet but using #hash rather than #identityHash ?
Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Cleaning up SmartRefStream use
On Sun, Dec 11, 2011 at 12:54 PM, Mariano Martinez Peck marianop...@gmail.com wrote: On Sun, Dec 11, 2011 at 4:35 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 11, 2011, at 4:26 PM, Mariano Martinez Peck wrote: On Sun, Dec 11, 2011 at 11:32 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Indeed this is fun I was doing the same :) Now I do not understand why some parts of the system uses dataStream, others ReferenceStream and finally others SmartRefStream why not all of them use SmartRefStream. It is not that I like these guys, but their class comments are pretty clear: - DataStream does NOT handle cycles, but hence it may be faster in certain scenarios. I guess that for example, Monticello is sure that in its definitions, there cannot be cycles. In addition, it doesn't take into account variables names/order and hence class reshape isn't supported. - ReferenceStream supports cycles but still doesn't support class reshape. - SmartRefStream supports cycles and class reshape. sounds good Yes it does. In fact, I would love also to have those things optional/configurable in Fuel: optional cycle detection and optional class reshape support :) But I don't see any performance cost on class reshape support, do you? then we should be able to replace all the reference stream and smart by fuel. Yes, but Fuel is not completly ready to fully replace them. There are some hooks they provide that Fuel does not yet. But we will get there at some point. stef -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Cleaning up SmartRefStream use
When I last looked at SmartReferenceStream, it did two things that were bad: (1) it essentially assumed all users are in fact programmers, have access to the debugger, and (more presumptuous) know what to to with same. There are times when yelling it's broken is about all the system should dare do. SRS made no such distinction. Again, the age of the code is showing. We have exception handling now, and should design with it in mind. (2) reshape code was placed in SRS itself, not in the class that is changing shape. The thing that is being deserialized (which is when problems become apparent) should be in charge of the change. It simplifies both packaging (fewer loose methods to consider, and reduced opportunity for name collisions) and it also helps with using proxies for special circumstances. From: pharo-project-boun...@lists.gforge.inria.fr [pharo-project-boun...@lists.gforge.inria.fr] on behalf of Mariano Martinez Peck [marianop...@gmail.com] Sent: Sunday, December 11, 2011 10:54 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Cleaning up SmartRefStream use On Sun, Dec 11, 2011 at 4:35 PM, Stéphane Ducasse stephane.duca...@inria.frmailto:stephane.duca...@inria.fr wrote: On Dec 11, 2011, at 4:26 PM, Mariano Martinez Peck wrote: On Sun, Dec 11, 2011 at 11:32 AM, Stéphane Ducasse stephane.duca...@inria.frmailto:stephane.duca...@inria.fr wrote: Indeed this is fun I was doing the same :) Now I do not understand why some parts of the system uses dataStream, others ReferenceStream and finally others SmartRefStream why not all of them use SmartRefStream. It is not that I like these guys, but their class comments are pretty clear: - DataStream does NOT handle cycles, but hence it may be faster in certain scenarios. I guess that for example, Monticello is sure that in its definitions, there cannot be cycles. In addition, it doesn't take into account variables names/order and hence class reshape isn't supported. - ReferenceStream supports cycles but still doesn't support class reshape. - SmartRefStream supports cycles and class reshape. sounds good Yes it does. In fact, I would love also to have those things optional/configurable in Fuel: optional cycle detection and optional class reshape support :) then we should be able to replace all the reference stream and smart by fuel. Yes, but Fuel is not completly ready to fully replace them. There are some hooks they provide that Fuel does not yet. But we will get there at some point. stef -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
Janko, stephane and others We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Stef
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
On Mon, 12 Dec 2011, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? If the serialized objects remain unchanged, then it can work. You can also give another IdentitySet implementation a try, e.g.: http://leves.web.elte.hu/squeak/LargeIdentitySet.st . Levente Thanks in advance, -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
On 12 Dec 2011, at 11:28, Stéphane Ducasse wrote: We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Having an active community where many people participate in making Pharo better all the time is the best reference. It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. Sven
[Pharo-project] Citezen
Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] Do we need the URI Package?
On 11 December 2011 16:51, Sven Van Caekenberghe s...@beta9.be wrote: On 11 Dec 2011, at 11:38, Marcus Denker wrote: Hi, There are three packages concerned with URLs: - ZnUrl in Zinc - Network-URI - Network-Url URI was a package from Impara that was used extensively in all Impara products and Sophie... back than, the idea was to integrate Impara infrastructure in Squeak, but that did not happen due to politics... Network-URI seems to be used nowhere in the system, so I guess we can remove it? Or is anyone using it? ZnUrl started as a copy of Seaside's WAUrl. From the class comment: I am ZnUrl, an implementation of an interpreted HTTP(S) URL/URI. Contrary to other implementations, this one is specific for HTTP(S). In other words, it might not be general enough, although I think it is better in its domain. Covering all possible URI/URL types over all kinds of applications is not simple. Indeed - Squeak's Network-URI supports things like mailto: schemes, and there's a registration mechanism for arbitrary URIs (like SIP URIs). I can't imagine that Pharo's Network-URI has diverged very far from Squeak's? frank Yes, we need to simplify this, but it is a lot of work. Maybe we could have a look at what other libraries do. Sven
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
On Dec 12, 2011, at 11:45 AM, Sven Van Caekenberghe wrote: On 12 Dec 2011, at 11:28, Stéphane Ducasse wrote: We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Having an active community where many people participate in making Pharo better all the time is the best reference. It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. :) Yes but I would like to structure that point :) Sven
Re: [Pharo-project] Citezen
did you try to find the ugly entries that break it because I can parse all rmod.bib. Stef On Dec 12, 2011, at 12:26 PM, Alexandre Bergel wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] Do we need the URI Package?
On Dec 12, 2011, at 12:32 PM, Frank Shearar wrote: Indeed - Squeak's Network-URI supports things like mailto: schemes, and there's a registration mechanism for arbitrary URIs (like SIP URIs). I can't imagine that Pharo's Network-URI has diverged very far from Squeak's? No, we did no change anything since I added URI to Squeak 3.8 or 3.9... Marcus -- Marcus Denker -- http://marcusdenker.de
Re: [Pharo-project] Citezen
Not yet. Smacc does not tell where the error happen. Cheers, Alexandre On 12 Dec 2011, at 08:42, Stéphane Ducasse wrote: did you try to find the ugly entries that break it because I can parse all rmod.bib. Stef On Dec 12, 2011, at 12:26 PM, Alexandre Bergel wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
On Mon, 12 Dec 2011, Levente Uzonyi wrote: On Mon, 12 Dec 2011, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? If the serialized objects remain unchanged, then it can work. You can also give another IdentitySet implementation a try, e.g.: http://leves.web.elte.hu/squeak/LargeIdentitySet.st . You can also take a look at SystemTracer, because (IIRC) it uses an IdentitySet which will contain all objects at a point, and it's reasonably fast. IIRC the idea is to use the identityHash of the object mixed with the hash of its class to increase the number of bits in the key. Levente Levente Thanks in advance, -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
Hi Wouldn't the fact that you use hash cause potential loops now? e.g. collection refers to another object that refers to first collection. -- aCollectionhash references an item which causes this current collection's hash to be called again? identityHash is deterministic in this case. Does this help? Cheers Carlo On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Waiting for deferred UI messages
This will get stuck if running in the UI process itself... Regards, Gary - Original Message - From: Sean P. DeNigris s...@clipperadams.com To: pharo-project@lists.gforge.inria.fr Sent: Saturday, December 10, 2011 7:38 AM Subject: [Pharo-project] Waiting for deferred UI messages testSimulateRightClick | workspace menu sem | workspace := Workspace open. [ morph := World submorphThat: [ :m | m model == workspace ] ifNone: [ nil ]. (Delay forMilliseconds: 100) wait. morph isNil ] whileTrue. WorldState addDeferredUIMessage: [ morph simulateRightClick ]. [ execution gets stuck in this loop menu := World submorphThat: [:m | m isKindOf: MenuMorph ] ifNone: [ nil ]. (Delay forMilliseconds: 100) wait. menu isNil ] whileTrue. self assert: menu isNil not. menu delete. When running from OB, the above deferred message block never gets evaluated. Execution loops forever in the last block. I thought that the delay would give the UI an opportunity to process it. How do I modify this to work? Thanks. Sean -- View this message in context: http://forum.world.st/Waiting-for-deferred-UI-messages-tp4179541p4179541.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
Well, i'll write my answer in english and spanish (Mariano and Esteban, please help if in my translate loose some think). English At least for my experience in other technologies management, (My Smalltalks clients are small companies, and save in any think they can), the client feel more comfortable if pait to support to a third person. That is, for much as a small payment, and answers them one person at a call center, which has no idea what the answer and just follow the guide for questions and answers such as Is the power machine on? not matter, they feel more comfortable. Especially when you go to the production stage. In 90% of the cases, calling the provider of the solution to any problem, but they feelmore secure if you have Oracle, Microsofts, Etc. support If you see as the business model of Gemstone Currently, only the Enterprise license is paid. In this sense, I think it would be very important to have a figure as official support and a supported release, is something like RedHator PostgreSQL. If the goal is to grow in space Pharo Enterprise. On the other hand, I agree there is an active community, it is almost meaningless, but keep in mind that many cases those who manage a technology area, don't know technology, and need a comfort zone and someone to call at a crisis With regard to structure, I think that those who agreed to join the Consortum have to have a role, I guess the first line (the most common questions) should be results from a list. After X time, for example 48 hours, or whatever you define. The case must be taken by one of the engineers. All you have to keep in mind that contact with the subscriber, should be one and only, not to make noise. Best Spanish. Por lo menos durante mi experiencia de gestión en otros tecnología, (Los clientes que tengo en smalltalk, son PyMes y ahorran en todo lo que pueden ), el cliente se siente mas cómodo si paga a un tercero, para soporte. Es decir, por mas que sea un canon chico, y lo atiende una persona en un call center, que no tiene idea de lo que esta contestando y solo sigue una guía de preguntas y respuestas tal como, Tiene encendida la maquina, no importa, se sienten mas comodos. Sobre todo cuando pasan a la etapa de producción, en el 90% de los casos, terminan llamando al proveedor de la solución, pero se sienten mas seguros, si tiene el soporte de Oracle, Microsofts, Etc. Si ven como esta armando el negocio de Gemstone Actualmente, solo la licencia de uso Enterprise tiene precio. En este sentido creo que sería muy importante que exista una figura de soporte oficial y un release soportado, algo así como tiene RedHat o PostgreSql. Si el objetivo es hacer crecer Pharo en el espacio Enterprise. Por otra parte estoy de acuerdo existiendo una comunidad activa, esto casi carece de sentido, pero tengan en cuenta que muchos casos los que gestionan un área de tecnología, no conocen de ella y necesitan una área de comodidad y alguien a quien llamar ante una crisis. Con respecto a la estructura para esto, creo que aquellos que aceptamos formar parte del Consortum tenemos que tener un rol, supongo que una primera linea (las preguntas más comunes) deberá ser resulta por una lista y pasado X tiempo, por ejemplo 48 horas, o lo que se defina. El caso deberá ser tomado por alguno de los ingenieros. Lo único que habría que tener en cuenta que el contacto con el suscriptor, debería ser uno y solo, para no hacer lios. Saludos http://about.me/diogenes.moreira 2011/12/12 Stéphane Ducasse stephane.duca...@inria.fr On Dec 12, 2011, at 11:45 AM, Sven Van Caekenberghe wrote: On 12 Dec 2011, at 11:28, Stéphane Ducasse wrote: We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Having an active community where many people participate in making Pharo better all the time is the best reference. It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. :) Yes but I would like to structure that point :) Sven
[Pharo-project] Pharo research page
Dear All, As you may know, the page http://www.pharo-project.org/about/research lists the publications related to Pharo. If you have a publication related to Pharo and want to see it listed there, send me the bibitem. Example of bibentries are http://scg.unibe.ch/scgbib?_k=4LCS3SCqquery=pharo+2011display=bibtex Having a url field in your bibitem will enable people download your paper. 5 publications are listed for 2011. I am sure we have published more than that :-) Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] Citezen
FWIW, my most common source of unparsable entries is Google Scholar. The problems arise when a name contains non-ascii characters. The author name in the entry will have correct syntax (and works fine), but name assigned to the entry as a whole will be invalid. Replacing the accented character(s) with the nearest ascii equivalent works. From: pharo-project-boun...@lists.gforge.inria.fr [pharo-project-boun...@lists.gforge.inria.fr] on behalf of Alexandre Bergel [alexandre.ber...@me.com] Sent: Monday, December 12, 2011 7:26 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Citezen Not yet. Smacc does not tell where the error happen. Cheers, Alexandre On 12 Dec 2011, at 08:42, Stéphane Ducasse wrote: did you try to find the ugly entries that break it because I can parse all rmod.bib. Stef On Dec 12, 2011, at 12:26 PM, Alexandre Bergel wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
Thanks diogenes. First we should - get a consortium - a list of possible freelancers - pay an engineer and see. Stef On Dec 12, 2011, at 2:01 PM, Diogenes Moreira wrote: Well, i'll write my answer in english and spanish (Mariano and Esteban, please help if in my translate loose some think). English At least for my experience in other technologies management, (My Smalltalks clients are small companies, and save in any think they can), the client feel more comfortable if pait to support to a third person. That is, for much as a small payment, and answers them one person at a call center, which has no idea what the answer and just follow the guide for questions and answers such as Is the power machine on? not matter, they feel more comfortable. Especially when you go to the production stage. In 90% of the cases, calling the provider of the solution to any problem, but they feelmore secure if you have Oracle, Microsofts, Etc. support If you see as the business model of Gemstone Currently, only the Enterprise license is paid. In this sense, I think it would be very important to have a figure as official support and a supported release, is something like RedHator PostgreSQL. If the goal is to grow in space Pharo Enterprise. On the other hand, I agree there is an active community, it is almost meaningless, but keep in mind that many cases those who manage a technology area, don't know technology, and need a comfort zone and someone to call at a crisis With regard to structure, I think that those who agreed to join the Consortum have to have a role, I guess the first line (the most common questions) should be results from a list. After X time, for example 48 hours, or whatever you define. The case must be taken by one of the engineers. All you have to keep in mind that contact with the subscriber, should be one and only, not to make noise. Best Spanish. Por lo menos durante mi experiencia de gestión en otros tecnología, (Los clientes que tengo en smalltalk, son PyMes y ahorran en todo lo que pueden ), el cliente se siente mas cómodo si paga a un tercero, para soporte. Es decir, por mas que sea un canon chico, y lo atiende una persona en un call center, que no tiene idea de lo que esta contestando y solo sigue una guía de preguntas y respuestas tal como, Tiene encendida la maquina, no importa, se sienten mas comodos. Sobre todo cuando pasan a la etapa de producción, en el 90% de los casos, terminan llamando al proveedor de la solución, pero se sienten mas seguros, si tiene el soporte de Oracle, Microsofts, Etc. Si ven como esta armando el negocio de Gemstone Actualmente, solo la licencia de uso Enterprise tiene precio. En este sentido creo que sería muy importante que exista una figura de soporte oficial y un release soportado, algo así como tiene RedHat o PostgreSql. Si el objetivo es hacer crecer Pharo en el espacio Enterprise. Por otra parte estoy de acuerdo existiendo una comunidad activa, esto casi carece de sentido, pero tengan en cuenta que muchos casos los que gestionan un área de tecnología, no conocen de ella y necesitan una área de comodidad y alguien a quien llamar ante una crisis. Con respecto a la estructura para esto, creo que aquellos que aceptamos formar parte del Consortum tenemos que tener un rol, supongo que una primera linea (las preguntas más comunes) deberá ser resulta por una lista y pasado X tiempo, por ejemplo 48 horas, o lo que se defina. El caso deberá ser tomado por alguno de los ingenieros. Lo único que habría que tener en cuenta que el contacto con el suscriptor, debería ser uno y solo, para no hacer lios. Saludos http://about.me/diogenes.moreira 2011/12/12 Stéphane Ducasse stephane.duca...@inria.fr On Dec 12, 2011, at 11:45 AM, Sven Van Caekenberghe wrote: On 12 Dec 2011, at 11:28, Stéphane Ducasse wrote: We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Having an active community where many people participate in making Pharo better all the time is the best reference. It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. :) Yes but I would like to structure that point :) Sven
Re: [Pharo-project] Pharo research page
Ok I will tag all our publications using pharo with pharo and I send you that. Stef On Dec 12, 2011, at 2:13 PM, Alexandre Bergel wrote: Dear All, As you may know, the page http://www.pharo-project.org/about/research lists the publications related to Pharo. If you have a publication related to Pharo and want to see it listed there, send me the bibitem. Example of bibentries are http://scg.unibe.ch/scgbib?_k=4LCS3SCqquery=pharo+2011display=bibtex Having a url field in your bibitem will enable people download your paper. 5 publications are listed for 2011. I am sure we have published more than that :-) Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] Citezen
check the stream? Stef On Dec 12, 2011, at 1:26 PM, Alexandre Bergel wrote: Not yet. Smacc does not tell where the error happen. Cheers,
Re: [Pharo-project] [squeak-dev] new VMs available at...
On Thu, 1 Dec 2011, Eliot Miranda wrote: http://www.mirandabanda.org/files/Cog/VM/VM.r2519 Change the VM argument access back to be consistent with linux: CogVM binaries as per VMMaker.oscog-eem.139/r2519. 0 = executable name -1 .. -n = VM arguments *including* image (if explicitly supplied). Provide standard i/o console access on Windows. I found a bug with the windows version. Croquet.exe doesn't show the file dialog for selecting the image when executed by double clicking its icon, instead it shows the usage information, then quits. Levente -- best, Eliot
Re: [Pharo-project] native boost is the best thing since COGVM
I am almost drooling :) Doru On Mon, Dec 12, 2011 at 4:02 PM, Fernando Olivero fernando.oliv...@usi.ch wrote: A taste of what will be available: rendering the same GLabel (the gaucho equivalent to StringMorph), scaling the CairoCanvas. Pesudo Code: create a label label := GLabel on : 'hello Pango-Cairo'. draw it on the canvas label drawOn: canvas. scale the canvas canvas translateBy: aDelta ; scaleBy: aScale. draw it on the canvas label drawOn: canvas. repeat On Sun, Dec 11, 2011 at 7:43 PM, Javier Pimás elpochodelage...@gmail.com wrote: Cl!!! On 12/11/11, Fernando Olivero fernando.oliv...@usi.ch wrote: I was able to create the binding to Pango using NB. The ultimate goal is to provide a cleaner implementation of text widgets. Thanks Igor ! Fernando -- Lic. Javier Pimás Ciudad de Buenos Aires -- www.tudorgirba.com Every thing has its own flow
Re: [Pharo-project] Citezen
We are using Citezen-Pier to parse the scgbib on our web site. I'm on the Netherlands right now so I cannot check ... cheers on --- Prof. Dr. O. Nierstrasz-- os...@iam.unibe.ch Software Composition Group -- http://scg.unibe.ch/oscar University of Bern -- Tel/Fax +41 31 631.4618/3355 On 12 Dec 2011, at 12:26, Alexandre Bergel alexandre.ber...@me.com wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] [COTDC] 95 - GZipReadStream
Sean P. DeNigris wrote Today: GZipReadStream Dear Santa, All I want for Christmas is a comment. Thank you. GZipReadStream -- View this message in context: http://forum.world.st/COTDC-95-GZipReadStream-tp4180360p4186462.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
[Pharo-project] Scat - Public Release and announcement
Hi list, Joan Güell and I have been working on Scat -the Scratch port to Pharo- quite a lot recently. We wanted to push it to a point where we could release the first reasonably working version, which we've just managed today. Please take a look at the release announcementhttp://code.google.com/p/scat/wiki/PublicRelease (which should be read in a bit of a humorous tone), in which we explain what's up with the project and what future is left for it. For the tl;dr version, please read: - Many things are working, many aren't, but the state of the project allows us to move into more interesting stuff based on the graphic programming metaphor. - Scat is a time-consuming, brain-smashing, life sucking-project. - We no longer will be maintaining this massive unmaintainable code. - Suddenly: free time for other projects! Cheers everyone! -- Bernat Romagosa.
Re: [Pharo-project] native boost is the best thing since COGVM
CairoSampleProgramsrectangleAndText does not works, because it uses a following method: NBCairoselectFont: aFamily slant: slant weight: aWeight on: aNBCairoContext primitive: #primitiveNativeCall module: #NativeBoostPlugin ^self call: #(void cairo_select_font_face (NBCairoContext aNBCairoContext, String aFamily, cairo_font_slant_t slant, cairo_font_weight_t aWeight) ) and during code generation it barks that it unable to resolve 'cairo_font_slant_t' type. Because NBCairo class does not includes a corresponding shared pool (NBCairoTypes). Also, Fernando, i don't like that you put everything into a single class (NBCairo). This is wrong, not object-oriented. The original organization made by Javier was much more closer to my tastes. This approach to wrapping a library is too mechanical. It is much better to place calls at proper place(s) in proper classes, rather than putting everything into a single one. Which means that in this way you are at least 1 message send farther from real function call. But in your case its not even that.. NBCairoPatternstatus ^ self cairo patternStatusOf: self cairo ^ NBCairo default so , it is 2 extra message sends, instead of direct call to foreign function! -- Best regards, Igor Stasenko.
Re: [Pharo-project] native boost is the best thing since COGVM
ok, i see your point. I will refactor back to Javier's approach. My rationale was to reify the Cairo library as it is, luckily all the other examples work. If i add the shared pool NBCairoTypes to the NBCairo then NativeBoost automatically associates the type? Because i've been putting directly int. Would be nice to have a couple of examples of NB (whenever the time is enough for you guys, i know you are busy) thanks for the feedback, Fernando On Mon, Dec 12, 2011 at 5:05 PM, Igor Stasenko siguc...@gmail.com wrote: CairoSampleProgramsrectangleAndText does not works, because it uses a following method: NBCairoselectFont: aFamily slant: slant weight: aWeight on: aNBCairoContext primitive: #primitiveNativeCall module: #NativeBoostPlugin ^self call: #(void cairo_select_font_face (NBCairoContext aNBCairoContext, String aFamily, cairo_font_slant_t slant, cairo_font_weight_t aWeight) ) and during code generation it barks that it unable to resolve 'cairo_font_slant_t' type. Because NBCairo class does not includes a corresponding shared pool (NBCairoTypes). Also, Fernando, i don't like that you put everything into a single class (NBCairo). This is wrong, not object-oriented. The original organization made by Javier was much more closer to my tastes. This approach to wrapping a library is too mechanical. It is much better to place calls at proper place(s) in proper classes, rather than putting everything into a single one. Which means that in this way you are at least 1 message send farther from real function call. But in your case its not even that.. NBCairoPatternstatus ^ self cairo patternStatusOf: self cairo ^ NBCairo default so , it is 2 extra message sends, instead of direct call to foreign function! -- Best regards, Igor Stasenko.
Re: [Pharo-project] Waiting for deferred UI messages
Gary Chambers-4 wrote This will get stuck if running in the UI process itself... Thanks Gary! I actually had a dream about this last night (I obviously need a vacation or another hobby). I visualized myself flying through the path of execution and realized exactly that. -- View this message in context: http://forum.world.st/Waiting-for-deferred-UI-messages-tp4179541p4186571.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
Re: [Pharo-project] native boost is the best thing since COGVM
On 12 December 2011 17:16, Fernando Olivero fernando.oliv...@usi.ch wrote: ok, i see your point. I will refactor back to Javier's approach. My rationale was to reify the Cairo library as it is, luckily all the other examples work. Well, it makes sense to do things like that, when you want a fast and dirty working stuff. But a good wrapping makes a lot of difference: there is no need to indicate that you using a library through 'self cairo' everywhere. It is just an indirection without any benefit. Wrapper classes and their instances should provide a required functionality through well defined protocols, and then from user's standpoint it is really makes no difference who implements them. That's why we need Athens. If i add the shared pool NBCairoTypes to the NBCairo then NativeBoost automatically associates the type? Because i've been putting directly int. Would be nice to have a couple of examples of NB (whenever the time is enough for you guys, i know you are busy) Yes, but these examples were written specifically to show how to wrap a library in object-oriented way :) Look at pharo by example book [1], there you can find an explanation how to use shared pools. Of course it is far from complete, but my opinion that your refactoring gives a bad example to future developers. They should think in terms of objects and place callouts in corresponding classes with nicely formed protocol(s). I am looking forward for you to come, so i can explain things more directly and easier :) [1] https://gforge.inria.fr/scm/viewvc.php/*checkout*/PharoByExampleTwo-Eng/Alien/alien.pdf?root=pharobooks thanks for the feedback, Fernando On Mon, Dec 12, 2011 at 5:05 PM, Igor Stasenko siguc...@gmail.com wrote: CairoSampleProgramsrectangleAndText does not works, because it uses a following method: NBCairoselectFont: aFamily slant: slant weight: aWeight on: aNBCairoContext primitive: #primitiveNativeCall module: #NativeBoostPlugin ^self call: #(void cairo_select_font_face (NBCairoContext aNBCairoContext, String aFamily, cairo_font_slant_t slant, cairo_font_weight_t aWeight) ) and during code generation it barks that it unable to resolve 'cairo_font_slant_t' type. Because NBCairo class does not includes a corresponding shared pool (NBCairoTypes). Also, Fernando, i don't like that you put everything into a single class (NBCairo). This is wrong, not object-oriented. The original organization made by Javier was much more closer to my tastes. This approach to wrapping a library is too mechanical. It is much better to place calls at proper place(s) in proper classes, rather than putting everything into a single one. Which means that in this way you are at least 1 message send farther from real function call. But in your case its not even that.. NBCairoPatternstatus ^ self cairo patternStatusOf: self cairo ^ NBCairo default so , it is 2 extra message sends, instead of direct call to foreign function! -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
http://www.famfamfam.com/ ? Hi Fernando, oops... I forgot your icon importer, sorry :P I would like –for a future– to integrate it to pharo and replace current ThemeIcons with an icon strategy based on your package... maybe that is the best future scenario for icons. best, Esteban El 11/12/2011, a las 8:49a.m., Fernando Olivero escribió: Hi Esteban, nice work! For importing the icons you can use the toolset i've developed: it automates completely the process of importing a complete set of icons of a given family. ExternalIconFamily @ squeaksource. I've used it for importing the Oxygen icon set, and others (you can google the list for previous related emails). Fernando On Sun, Dec 11, 2011 at 10:38 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Esteban I know that feeling :) :) Now I'm not sure that I would like to carry the Eclipse License around in Pharo :) What are the other icons sets we could use with a nice license and we do it :). famfam? We should clean also the old icons because some are really old. Thanks for pushing that. I would love to have new icons for Pharo. Stef On Dec 11, 2011, at 3:15 AM, Esteban Lorenzano wrote: Hi, Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... and I never liked the current Pharo icons, so I took one icon library I really like and changed all needed icons (well... all that I saw). Here a couple of screen shots: Captura de pantalla 2011-12-10 a la(s) 23.05.55.png Captura de pantalla 2011-12-10 a la(s) 23.06.20.png Of course, I don't think they are perfect (also maybe I didn't pick the best icons), but I think they look a lot better than the older. If you want to see how they look, this are the packages: for Pharo 1.3: Eclipse-Icons-EstebanLorenzano.2.mcz for Pharo 1.4: Eclipse-Icons-EstebanLorenzano.4.mcz Then you execute: ThemeIcons initializeIcons. World resetWorldMenu. ... and enjoy your new icons :) btw... this icons are in an open-source license, the EPL: http://www.eclipse.org/legal/epl-v10.html so, maybe –if all agree–, we can add this icons to regular distribution :) best, Esteban
Re: [Pharo-project] Scat - Public Release and announcement
Hi bernat Excellent! do you have code that we removed and changed that you would like to be in the system? Stef On Dec 12, 2011, at 4:56 PM, Bernat Romagosa wrote: Hi list, Joan Güell and I have been working on Scat -the Scratch port to Pharo- quite a lot recently. We wanted to push it to a point where we could release the first reasonably working version, which we've just managed today. Please take a look at the release announcement (which should be read in a bit of a humorous tone), in which we explain what's up with the project and what future is left for it. For the tl;dr version, please read: • Many things are working, many aren't, but the state of the project allows us to move into more interesting stuff based on the graphic programming metaphor. • Scat is a time-consuming, brain-smashing, life sucking-project. • We no longer will be maintaining this massive unmaintainable code. • Suddenly: free time for other projects! Cheers everyone! -- Bernat Romagosa.
Re: [Pharo-project] Morphic Cleanup Status
Fernando olivero-2 wrote my overall impression , was that we need to stop being backward compatible in order to create a simple Morphic-like framework for Pharo, and start from scratch Having worked with all three (Morphic, SimpleMorphic, and your from-scratch version), what are the tradeoffs with each? Is the complexity of SimpleMorphic, and more still Morphic, essential [1] or accidental [2]? What I'm really asking is: do you envision your version to offer similar features and power as either of the others? I (totally ignorantly) feel like we could squeeze most of the awesome power of Morphic into a *much* smaller package. Also, it'd be great to read the original Morphic papers (if you haven't already) for inspiration to let the intended liveness and directness shine through in this new project. This work that you're doing is incredibly important. In the hallways at every conference, I hear dreams of amazing tools people have in mind (myself included), which are put on hold due to the mind-boggling complexity and uncertainty of Morphic and its future. Let me know when there's anything I can do. Sean [1] http://en.wikipedia.org/wiki/Essential_complexity [2] http://en.wikipedia.org/wiki/Accidental_complexity -- View this message in context: http://forum.world.st/Morphic-Cleanup-Status-tp4106566p4186864.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
Re: [Pharo-project] Waiting for deferred UI messages
if the symptoms continue you should stop :) I knew pharo was a strong drug but not at this level :) Stef Thanks Gary! I actually had a dream about this last night (I obviously need a vacation or another hobby). I visualized myself flying through the path of execution and realized exactly that. -- View this message in context: http://forum.world.st/Waiting-for-deferred-UI-messages-tp4179541p4186571.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
Re: [Pharo-project] native boost is the best thing since COGVM
Igor what is the link between pango cairo and the work you did on the text model in athens? Because I have the impression that you work on text modeling is important. Stef A taste of what will be available: rendering the same GLabel (the gaucho equivalent to StringMorph), scaling the CairoCanvas. Pesudo Code: create a label label := GLabel on : 'hello Pango-Cairo'. draw it on the canvas label drawOn: canvas. scale the canvas canvas translateBy: aDelta ; scaleBy: aScale. draw it on the canvas label drawOn: canvas. repeat
Re: [Pharo-project] native boost is the best thing since COGVM
On Dec 12, 2011, at 5:35 PM, Igor Stasenko wrote: On 12 December 2011 17:16, Fernando Olivero fernando.oliv...@usi.ch wrote: ok, i see your point. I will refactor back to Javier's approach. My rationale was to reify the Cairo library as it is, luckily all the other examples work. Well, it makes sense to do things like that, when you want a fast and dirty working stuff. But a good wrapping makes a lot of difference: there is no need to indicate that you using a library through 'self cairo' everywhere. It is just an indirection without any benefit. Wrapper classes and their instances should provide a required functionality through well defined protocols, and then from user's standpoint it is really makes no difference who implements them. That's why we need Athens. Indeed we do want to have cairo dependencies inside our system just encapsulated in their respective canvases. If i add the shared pool NBCairoTypes to the NBCairo then NativeBoost automatically associates the type? Because i've been putting directly int. Would be nice to have a couple of examples of NB (whenever the time is enough for you guys, i know you are busy) Yes, but these examples were written specifically to show how to wrap a library in object-oriented way :) Look at pharo by example book [1], there you can find an explanation how to use shared pools. Of course it is far from complete, but my opinion that your refactoring gives a bad example to future developers. They should think in terms of objects and place callouts in corresponding classes with nicely formed protocol(s). I am looking forward for you to come, so i can explain things more directly and easier :) [1] https://gforge.inria.fr/scm/viewvc.php/*checkout*/PharoByExampleTwo-Eng/Alien/alien.pdf?root=pharobooks thanks for the feedback, Fernando On Mon, Dec 12, 2011 at 5:05 PM, Igor Stasenko siguc...@gmail.com wrote: CairoSampleProgramsrectangleAndText does not works, because it uses a following method: NBCairoselectFont: aFamily slant: slant weight: aWeight on: aNBCairoContext primitive: #primitiveNativeCall module: #NativeBoostPlugin ^self call: #(void cairo_select_font_face (NBCairoContext aNBCairoContext, String aFamily, cairo_font_slant_t slant, cairo_font_weight_t aWeight) ) and during code generation it barks that it unable to resolve 'cairo_font_slant_t' type. Because NBCairo class does not includes a corresponding shared pool (NBCairoTypes). Also, Fernando, i don't like that you put everything into a single class (NBCairo). This is wrong, not object-oriented. The original organization made by Javier was much more closer to my tastes. This approach to wrapping a library is too mechanical. It is much better to place calls at proper place(s) in proper classes, rather than putting everything into a single one. Which means that in this way you are at least 1 message send farther from real function call. But in your case its not even that.. NBCairoPatternstatus ^ self cairo patternStatusOf: self cairo ^ NBCairo default so , it is 2 extra message sends, instead of direct call to foreign function! -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
+1 i'm fully agree. http://about.me/diogenes.moreira 2011/12/12 Stéphane Ducasse stephane.duca...@inria.fr Thanks diogenes. First we should - get a consortium - a list of possible freelancers - pay an engineer and see. Stef On Dec 12, 2011, at 2:01 PM, Diogenes Moreira wrote: Well, i'll write my answer in english and spanish (Mariano and Esteban, please help if in my translate loose some think). English At least for my experience in other technologies management, (My Smalltalks clients are small companies, and save in any think they can), the client feel more comfortable if pait to support to a third person. That is, for much as a small payment, and answers them one person at a call center, which has no idea what the answer and just follow the guide for questions and answers such as Is the power machine on? not matter, they feel more comfortable. Especially when you go to the production stage. In 90% of the cases, calling the provider of the solution to any problem, but they feelmore secure if you have Oracle, Microsofts, Etc. support If you see as the business model of Gemstone Currently, only the Enterprise license is paid. In this sense, I think it would be very important to have a figure as official support and a supported release, is something like RedHator PostgreSQL. If the goal is to grow in space Pharo Enterprise. On the other hand, I agree there is an active community, it is almost meaningless, but keep in mind that many cases those who manage a technology area, don't know technology, and need a comfort zone and someone to call at a crisis With regard to structure, I think that those who agreed to join the Consortum have to have a role, I guess the first line (the most common questions) should be results from a list. After X time, for example 48 hours, or whatever you define. The case must be taken by one of the engineers. All you have to keep in mind that contact with the subscriber, should be one and only, not to make noise. Best Spanish. Por lo menos durante mi experiencia de gestión en otros tecnología, (Los clientes que tengo en smalltalk, son PyMes y ahorran en todo lo que pueden ), el cliente se siente mas cómodo si paga a un tercero, para soporte. Es decir, por mas que sea un canon chico, y lo atiende una persona en un call center, que no tiene idea de lo que esta contestando y solo sigue una guía de preguntas y respuestas tal como, Tiene encendida la maquina, no importa, se sienten mas comodos. Sobre todo cuando pasan a la etapa de producción, en el 90% de los casos, terminan llamando al proveedor de la solución, pero se sienten mas seguros, si tiene el soporte de Oracle, Microsofts, Etc. Si ven como esta armando el negocio de Gemstone Actualmente, solo la licencia de uso Enterprise tiene precio. En este sentido creo que sería muy importante que exista una figura de soporte oficial y un release soportado, algo así como tiene RedHat o PostgreSql. Si el objetivo es hacer crecer Pharo en el espacio Enterprise. Por otra parte estoy de acuerdo existiendo una comunidad activa, esto casi carece de sentido, pero tengan en cuenta que muchos casos los que gestionan un área de tecnología, no conocen de ella y necesitan una área de comodidad y alguien a quien llamar ante una crisis. Con respecto a la estructura para esto, creo que aquellos que aceptamos formar parte del Consortum tenemos que tener un rol, supongo que una primera linea (las preguntas más comunes) deberá ser resulta por una lista y pasado X tiempo, por ejemplo 48 horas, o lo que se defina. El caso deberá ser tomado por alguno de los ingenieros. Lo único que habría que tener en cuenta que el contacto con el suscriptor, debería ser uno y solo, para no hacer lios. Saludos http://about.me/diogenes.moreira 2011/12/12 Stéphane Ducasse stephane.duca...@inria.fr On Dec 12, 2011, at 11:45 AM, Sven Van Caekenberghe wrote: On 12 Dec 2011, at 11:28, Stéphane Ducasse wrote: We need your inputs to build a structure to answer these questions. So what would help you to make your clients feel more confident? Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. so do you think that the consortium could have a list of companies offering services? freelancers? … The consortium should help you. Having an active community where many people participate in making Pharo better all the time is the best reference. It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) Although it is important that the community keeps on growing, we reached critical mass a
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
Thanks Stef! Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. We know =) It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. Yep, that's the two main points for me. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) That's true. And I guess there are many silent observers in the list as well. How many people are there on Pharo-Dev and Pharo-Users by the way? Francois
Re: [Pharo-project] Scat - Public Release and announcement
That's pretty cool! Spotted in the announcement: A project we've been longing to start for a while is a music live-coding environment based solely on engaging blocks of different kinds, which the current working code in Scat should let us build without too much hassle! Tell us more :)
Re: [Pharo-project] Citezen
I haven't checked closely, but it may comes from the bibitem Kort08a: @incollection{Kort08a, author = {Kortenkamp, David and Simmons, Reid}, title= {Robotic systems architectures and programming}, chapter = {8}, booktitle= {Springer Handbook of Robotics}, pages= {187--206}, address = {Berlin, Heidelberg}, publisher= {Springer}, doi = {10.1007/978-3-540-30301-5}, year = {2008}, keywords = {robotics springer damiencbib}, isbn = {978-3-540-23957-4} } } Obviously, there is a mismatch of the curly brackets. But both bibtex and make test are happy. Strange. Maybe a white character is somewhere between. Cheers, Alexandre On 12 Dec 2011, at 12:50, Oscar Nierstrasz wrote: We are using Citezen-Pier to parse the scgbib on our web site. I'm on the Netherlands right now so I cannot check ... cheers on --- Prof. Dr. O. Nierstrasz-- os...@iam.unibe.ch Software Composition Group -- http://scg.unibe.ch/oscar University of Bern -- Tel/Fax +41 31 631.4618/3355 On 12 Dec 2011, at 12:26, Alexandre Bergel alexandre.ber...@me.com wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-project] Latest Zinc in Pharo 1.3 with MetacelloConfiguration
Dag Sven, It would be great if you could update both to the latest versions of all packages. I've updated the configuration to all the latest packages except for Gemstone. Wehn Running the 190 tests I get one failure: ZnClientTeststestIfFailNonExistingHost Let me now if I did something wrong ;) Cheers, Francois
Re: [Pharo-project] [Pharo-users] Company/freelance working with Pharo/Seaside
On Dec 12, 2011, at 8:37 PM, Francois Stephany wrote: Thanks Stef! Again I repeat it (and I know that you know): we are really interested in making business grows around pharo. We know =) It is also important that success stories, even small ones, are shared. Having a public list of available consultancy resources would be good, yes. Yep, that's the two main points for me. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) That's true. And I guess there are many silent observers in the list as well. How many people are there on Pharo-Dev 541 and Pharo-Users by the way? 256 But both with the ones that are on [Nomail] which can be because of unsubscribe or because they read the list via a gateway. Marcus -- Marcus Denker -- http://marcusdenker.de
Re: [Pharo-project] Citezen
Ok, I'll bite: is the mismatch somehow acceptable? Without the extraneous brace, Citezen parses the text; with the extraneous brace, it gives a token not expected error, which seems completely correct. Am I missing something? My image is a little old (if it ain't broke...), so maybe there has been a breaking change?? Bill From: pharo-project-boun...@lists.gforge.inria.fr [pharo-project-boun...@lists.gforge.inria.fr] on behalf of Alexandre Bergel [alexandre.ber...@me.com] Sent: Monday, December 12, 2011 2:54 PM To: Oscar Nierstrasz Cc: Pharo Development Subject: Re: [Pharo-project] Citezen I haven't checked closely, but it may comes from the bibitem Kort08a: @incollection{Kort08a, author = {Kortenkamp, David and Simmons, Reid}, title= {Robotic systems architectures and programming}, chapter = {8}, booktitle= {Springer Handbook of Robotics}, pages= {187--206}, address = {Berlin, Heidelberg}, publisher= {Springer}, doi = {10.1007/978-3-540-30301-5}, year = {2008}, keywords = {robotics springer damiencbib}, isbn = {978-3-540-23957-4} } } Obviously, there is a mismatch of the curly brackets. But both bibtex and make test are happy. Strange. Maybe a white character is somewhere between. Cheers, Alexandre On 12 Dec 2011, at 12:50, Oscar Nierstrasz wrote: We are using Citezen-Pier to parse the scgbib on our web site. I'm on the Netherlands right now so I cannot check ... cheers on --- Prof. Dr. O. Nierstrasz-- os...@iam.unibe.ch Software Composition Group -- http://scg.unibe.ch/oscar University of Bern -- Tel/Fax +41 31 631.4618/3355 On 12 Dec 2011, at 12:26, Alexandre Bergel alexandre.ber...@me.com wrote: Hi! Apparently, Citezen does not parse scg.bib (http://scg.unibe.ch/scgbib). The following expression raises an error: CZBibParser parse: (FileStream fileNamed: '/Users/alexandrebergel/Workspace/scgbib/scg.bib') contents Is there something obvious I missed? Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
[Pharo-project] Videos ESUG 2010 on Youtube
Now *complete* 54 videos, 35 hours play time. http://www.youtube.com/playlist?list=PL431285A978F581BB -- Marcus Denker -- http://marcusdenker.de
Re: [Pharo-project] Company/freelance working with Pharo/Seaside
Sven wrote: Having an active community where many people participate in making Pharo better all the time is the best reference. While that is a necessity, it is only relevant for a certain public (technically advanced, developer oriented, long term view). It is not necessarily something other potential customers value. I'm currently doing a data conversion project. Everything outside a timespan of the next 6 months is simply irrelevant. Startups with a lack of deep technological knowledge also cannot tell the difference between a very large but clueless community and a small, but active and knowledgable. It is also important that success stories, even small ones, are shared. Very much so. And (also) in a form that less technical people can understand. But I guess that half the people on these lists are available for remotely delivered services in one form or another ;-) That seems like a correct observation. On the other hand these mailing lists function as a filter and are not a good way to match demand and supply. The problem is in explaining where Pharo/Seaside can provide a good solution in business terms. Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. For innovators yes. For early adopters, no. They value different things. Stephan
Re: [Pharo-project] Sprint friday 16 @ lille
Hi, On 9 déc. 2011, at 09:06, Stéphane Ducasse wrote: Hi guys I'm not sure that my message passed in the mailing-list. We will organize a sprint new friday and everybody is welcome. Cool. I'll be there! Just let us know so that we prepare the rooms. It would be nice if we have a few items we collaborate to addess. One possible item I'm planning to contribute to is to help Marcus/help our selves by reviewing some pending fixes in the bug tracker. Noury -- http://twitter.com/#!/NouryBouraqadi
Re: [Pharo-project] Missing network primitive
Ok. I added it to the Cog bug tracker. http://code.google.com/p/cog/issues/detail?id=68 Noury On 10 déc. 2011, at 16:29, Levente Uzonyi wrote: On Sat, 10 Dec 2011, Noury Bouraqadi wrote: Hi, While working on OCEAN (yes, yes, we're still working on it :-) we have an annoying issue. We have some netname resolver tests that do work with the Squeak Mac VM 5.8, but they are not working in the Mac Cog VMs. This is because the following primitives are missing at the VM side. Still, they are useful cause they allow getting addresses of all network interfaces of your machine. primitiveResolverGetAddressInfo primitiveResolverGetAddressInfoSize primitiveResolverGetAddressInfoResult primitiveResolverGetNameInfo primitiveResolverGetNameInfoHostSize primitiveResolverGetNameInfoHostResult primitiveResolverGetAddressInfoNext There are methods defined in the old NetNameResolver (class side) that call these primitives, but they are NOT referenced. primGetAddressInfoHost:service:flags:family:type:protocol: primGetAddressInfoSize primGetAddressInfoResult: primGetNameInfo:flags: primGetNameInfoHostSize primGetNameInfoHostResult: primGetAddressInfoNext We checked the SqueakVM SVN, and they are there in the SocketPlugin.c Why didn't they get introduced in Mac CogVM? Are there missing for other platforms too? Yes they are, CogVM was forked before these were added to SqueakVM. Levente Luc and Noury -- http://twitter.com/#!/NouryBouraqadi Noury -- http://twitter.com/#!/NouryBouraqadi
Re: [Pharo-project] Company/freelance working with Pharo/Seaside
Stephan Eggermont wrote Although it is important that the community keeps on growing, we reached critical mass a long time ago, IMHO. For innovators yes. For early adopters, no. They value different things. There was a great TED Talk that speaks to this topic: Simon Sinek: How great leaders inspire action http://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action.html And a Smalltalk discussion of it at http://forum.world.st/Spreading-Smalltalk-td3435227.html The bottom line is: tell people what you believe, not what you do; and the tipping point (critical mass) is 15%-18%. You can trip over 10% of the customers... that just 'get it', but the early majority will not try something until someone else has tried it first -- View this message in context: http://forum.world.st/Re-Company-freelance-working-with-Pharo-Seaside-tp4187752p4187913.html Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
[Pharo-project] Big Image Tests
Today I tried to find out if it would be possible to allocate a large amount of memory in a VM. I used the official 32-bit VM (http://gforge.inria.fr/frs/download.php/29042/CogVM-Unix-13307.zip) and a Pharo 1.3 (http://gforge.inria.fr/frs/download.php/29273/Pharo-1.3-13315.zip) derived image on Ubuntu 11.04 (x86_64) Amazon AWS EC2 m1.large instance (about 8Gb RAM) and the following bash and Smalltalk scripts: run.sh #!/bin/bash script_home=$(dirname $0) script_home=$(cd $script_home pwd) image=$script_home/pharo-t3.image script=$script_home/run.st args=$* vm=$script_home/bin/CogVM options=-mmap 1536m -vm-display-null -vm-sound-null #echo $vm $options $image $script $args $vm $options $image $script $args run.st | args size monolithic object | FileStream stdout wantsLineEndConversion: true. Smalltalk garbageCollect. FileStream stdout nextPutAll: 'Running run.st with args: '; nextPutAll: Smalltalk commandLine arguments printString; cr; nextPutAll: Smalltalk vmStatisticsReportString. args := Smalltalk commandLine arguments. size := args first asInteger. monolithic := (args size 1 and: [ args second = 'monolithic' ]). monolithic ifTrue: [ object := ByteArray ofSize: size * 1024 * 1024 ] ifFalse: [ object := Array ofSize: size * 1024. 1 to: size * 1024 do: [ :each | object at: each put: (ByteArray ofSize: 1024) ] ]. Smalltalk garbageCollect. FileStream stdout nextPutAll: 'Allocation of a size '; print: object size; space; print: object class; nextPutAll: ' OK'; cr; nextPutAll: Smalltalk vmStatisticsReportString. Smalltalk quitPrimitive. These were the results trying to allocate 1GB: $ ./run.sh 1024 Running run.st with args: #('1024') uptime 0h0m0s memory 49,103,224 bytes old 36,625,732 bytes (74.61%) young 9,812 bytes (0.0%) used36,635,544 bytes (74.61%) free12,467,680 bytes (25.402%) GCs 8 (90ms between GCs) full2 totalling 212ms (29.402% uptime), avg 106.0ms incr6 totalling 10ms (1.4001% uptime), avg 1.7002ms tenures 0 Allocation of a size 1048576 Array OK uptime 0h0m26s memory -1,007,414,928 bytes old -1,020,337,428 bytes (101.31%) young 5,888 bytes (0.0%) used-1,020,331,540 bytes (101.31%) free12,916,612 bytes (-1.3%) GCs 590 (44ms between GCs) full62 totalling 14,735ms (56.6% uptime), avg 237.72ms incr528 totalling 10,225ms (39.304% uptime), avg 19.402ms tenures 519 (avg 1 GCs/tenure) Since last view 582 (44ms between GCs) uptime 25.3s full60 totalling 14,523ms (57.406% uptime), avg 242.12ms incr522 totalling 10,215ms (40.304% uptime), avg 19.6ms tenures 519 (avg 1 GCs/tenure) $ ./run.sh 1024 monolithic Running run.st with args: #('1024' 'monolithic') uptime 0h0m0s memory 49,103,216 bytes old 36,627,976 bytes (74.61%) young 9,844 bytes (0.0%) used36,637,820 bytes (74.61%) free12,465,396 bytes (25.402%) GCs 8 (46ms between GCs) full2 totalling 208ms (56.1% uptime), avg 104.0ms incr6 totalling 10ms (2.7% uptime), avg 1.7002ms tenures 0 Allocation of a size -1073741824 ByteArray OK uptime 0h0m2s memory -1,020,427,928 bytes old -1,037,112,380 bytes (101.61%) young 5,952 bytes (0.0%) used-1,037,106,428 bytes (101.61%) free16,678,500 bytes (-1.6%) GCs 13 (177ms between GCs) full4 totalling 725ms (31.5% uptime), avg 181.3ms incr9 totalling 14ms (0.6001% uptime), avg 1.6ms tenures 0 Since last view 5 (386ms between GCs) uptime 1.9001s full2 totalling 517ms (26.8% uptime), avg 258.5ms incr3 totalling 4ms (0.2% uptime), avg 1.3ms tenures 0 Basically it seems to work. What I find particulary strange is that #vmStatisticsReportString starts reporting negative sizes, also the size of the 1GB ByteArray is reported as negative. Why ? Tomorrow I might try to find out how much further I can
Re: [Pharo-project] Pharo research page
Hi Alexandre. I attach one of object swapping and ImageSegment, it is a journal. There is the journal of Fuel also but we are waiting the notification :( Cheers @article{Mart11c, Abstract = {In object-oriented systems, runtime memory is composed of an object graph in which objects refer to other objects. This graph of objects evolves while the system is running. Graph exporting and swapping are two important object graph operations. Exporting refers to copying the graph to some other memory so that it can be loaded by another system. Swapping refers to moving the graph to a secondary memory (for example, a hard disk) to temporary release part of the primary memory (for example, RAM). Exporting and swapping are achieved in different ways and the speed in presence of large object graphs is critical. Nevertheless, most of the existing solutions do not address well this issue. Another challenge is to deal with common situations where objects outside the exported/swapped graph point to objects inside the graph. To correctly load back an exported subgraph, it is necessary to compute and export extra information that is not explicit in the object subgraph. This extra information is needed because certain objects may require to be reinitialized or recreated, to run specific code before or after the loading, to be updated to a new class definition, etc. In this paper, we present all general problems to our knowledge about object exporting and swapping. As a case of study, we present an analysis of ImageSegment, a fast solution to export and swap object graphs, developed by Dan Ingalls. ImageSegment addresses the speed problems in an efficient way, as shown by the results of several benchmarks we have conducted using Pharo Smalltalk. However, ImageSegment is not a panacea since it still has other problems that hampers its general use.}, Aeres = {ACL}, Aeresstatus = {aeres12}, Annote = {internationaljournal}, Author = {Martinez Peck, Mariano and Noury Bouraqadi and St\'ephane Ducasse and Luc Fabresse}, Doi = {10.1016/j.cl.2011.10.001}, Labo = {dans}, Journal = {Journal of Computer Languages, Systems and Structures}, Keywords = {pharo-pub lse-pub raweb2011}, Impactfactor = {5 Year ISI impact factor 0.567 (2010)}, Month = nov, Number = {1}, Pages = {1--15}, Peerreview = {yes}, Publisher = {Elsevier}, Title = {Object Swapping Challenges: an Evaluation of ImageSegment}, Url = { http://rmod.lille.inria.fr/archives/papers/Mart11c-COMLAN-ObjectSwapping.pdf }, Volume = {38}, X-Country = {FR}, X-Editorial-Board = {yes}, X-International-Audience = {yes}, X-Language = {EN}, X-Pays = {FR}, X-Proceedings = {yes}, Year = {2012}, Hal-Id = {hal-00646897}, Inria = {RMOD}, Selectif = {non}} On Mon, Dec 12, 2011 at 2:13 PM, Alexandre Bergel alexandre.ber...@me.comwrote: Dear All, As you may know, the page http://www.pharo-project.org/about/researchlists the publications related to Pharo. If you have a publication related to Pharo and want to see it listed there, send me the bibitem. Example of bibentries are http://scg.unibe.ch/scgbib?_k=4LCS3SCqquery=pharo+2011display=bibtex Having a url field in your bibitem will enable people download your paper. 5 publications are listed for 2011. I am sure we have published more than that :-) Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
On Mon, Dec 12, 2011 at 1:56 PM, Carlo snoob...@yahoo.ie wrote: Hi Wouldn't the fact that you use hash cause potential loops now? e.g. collection refers to another object that refers to first collection. -- aCollectionhash references an item which causes this current collection's hash to be called again? Hi Carlo. I am still newbie with Collections but I think I am having exactly that problem. During my tests, it loops in Collection #hash when sending #hash to its elements. Sorry, but I couldn't undertand what is the cause of the problem? why it doesn't work while it does using #identityHash? could you elaborate? thanks identityHash is deterministic in this case. Does this help? Cheers Carlo On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
Thanks Levente. I will try both. Actually, I would also need a fast (or at least I would like to use #hash) IdentityDictionary apart from a IdentitySet ;) On Mon, Dec 12, 2011 at 1:52 PM, Levente Uzonyi le...@elte.hu wrote: On Mon, 12 Dec 2011, Levente Uzonyi wrote: On Mon, 12 Dec 2011, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? If the serialized objects remain unchanged, then it can work. You can also give another IdentitySet implementation a try, e.g.: http://leves.web.elte.hu/**squeak/LargeIdentitySet.sthttp://leves.web.elte.hu/squeak/LargeIdentitySet.st. You can also take a look at SystemTracer, because (IIRC) it uses an IdentitySet which will contain all objects at a point, and it's reasonably fast. IIRC the idea is to use the identityHash of the object mixed with the hash of its class to increase the number of bits in the key. Levente Levente Thanks in advance, -- Mariano http://marianopeck.wordpress.**com http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
On Tue, Dec 13, 2011 at 12:32 AM, Mariano Martinez Peck marianop...@gmail.com wrote: On Mon, Dec 12, 2011 at 1:56 PM, Carlo snoob...@yahoo.ie wrote: Hi Wouldn't the fact that you use hash cause potential loops now? e.g. collection refers to another object that refers to first collection. -- aCollectionhash references an item which causes this current collection's hash to be called again? Hi Carlo. I am still newbie with Collections but I think I am having exactly that problem. During my tests, it loops in Collection #hash when sending #hash to its elements. Sorry, but I couldn't undertand what is the cause of the problem? why it doesn't work while it does using #identityHash? could you elaborate? Well, now I understood, and I understand also why it doesn't happen with #identityHash. But what happens then with regular Dictionaries using #hash? why it doesn't happen there? thanks identityHash is deterministic in this case. Does this help? Cheers Carlo On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Cleaning up SmartRefStream use
On Sun, Dec 11, 2011 at 7:50 PM, Schwab,Wilhelm K bsch...@anest.ufl.eduwrote: When I last looked at SmartReferenceStream, it did two things that were bad: (1) it essentially assumed all users are in fact programmers, have access to the debugger, and (more presumptuous) know what to to with same. There are times when yelling it's broken is about all the system should dare do. SRS made no such distinction. Again, the age of the code is showing. We have exception handling now, and should design with it in mind. (2) reshape code was placed in SRS itself, not in the class that is changing shape. The thing that is being deserialized (which is when problems become apparent) should be in charge of the change. It simplifies both packaging (fewer loose methods to consider, and reduced opportunity for name collisions) and it also helps with using proxies for special circumstances. Thanks for the notes Bill. We will take them into account. -- *From:* pharo-project-boun...@lists.gforge.inria.fr [ pharo-project-boun...@lists.gforge.inria.fr] on behalf of Mariano Martinez Peck [marianop...@gmail.com] *Sent:* Sunday, December 11, 2011 10:54 AM *To:* Pharo-project@lists.gforge.inria.fr *Subject:* Re: [Pharo-project] Cleaning up SmartRefStream use On Sun, Dec 11, 2011 at 4:35 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 11, 2011, at 4:26 PM, Mariano Martinez Peck wrote: On Sun, Dec 11, 2011 at 11:32 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Indeed this is fun I was doing the same :) Now I do not understand why some parts of the system uses dataStream, others ReferenceStream and finally others SmartRefStream why not all of them use SmartRefStream. It is not that I like these guys, but their class comments are pretty clear: - DataStream does NOT handle cycles, but hence it may be faster in certain scenarios. I guess that for example, Monticello is sure that in its definitions, there cannot be cycles. In addition, it doesn't take into account variables names/order and hence class reshape isn't supported. - ReferenceStream supports cycles but still doesn't support class reshape. - SmartRefStream supports cycles and class reshape. sounds good Yes it does. In fact, I would love also to have those things optional/configurable in Fuel: optional cycle detection and optional class reshape support :) then we should be able to replace all the reference stream and smart by fuel. Yes, but Fuel is not completly ready to fully replace them. There are some hooks they provide that Fuel does not yet. But we will get there at some point. stef -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] Scat - Public Release and announcement
2011/12/13 Bernat Romagosa tibabenfortlapala...@gmail.com: Hi list, Joan Güell and I have been working on Scat -the Scratch port to Pharo- quite a lot recently. We wanted to push it to a point where we could release the first reasonably working version, which we've just managed today. Great work Joan Bernat ! Please take a look at the release announcement (which should be read in a bit of a humorous tone), in which we explain what's up with the project and what future is left for it. For the tl;dr version, please read: Many things are working, many aren't, but the state of the project allows us to move into more interesting stuff based on the graphic programming metaphor. Scat is a time-consuming, brain-smashing, life sucking-project. We no longer will be maintaining this massive unmaintainable code. Suddenly: free time for other projects! Why do you say that you will not maintain the project anymore ? Do you mean this is better to rebuild something better ? Any news from Scratch about a relicensing of the core ? Regards, -- Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam Matsuno Laboratory, Kyoto University, Japan (until 12/2011) http://www.mechatronics.me.kyoto-u.ac.jp/ Every DSL ends up being Smalltalk http://doesnotunderstand.org/
[Pharo-project] [COTDC] 96 - GZipWriteStream
94 classes done 16 Packages done 800 classes remaining Continuing in Compression... Today: GZipWriteStream Comment Of The Day Contest - One Day One Comment Rules: #1: Each day a not commented class is elected. Each day the best comment will be integrated with name of the author(s). #2: If you cannot comment it, deprecate it. Results: http://code.google.com/p/pharo/wiki/CommentOfTheDayContest p.s. this message was sent from a pharo image. Did you know you could easily do that?!
Re: [Pharo-project] [ANN] Eclipse Icons for Pharo
Nice! As soon as squeaksource is up, i will import them using the icon importer, so we can give them a try. Fernando On Mon, Dec 12, 2011 at 6:29 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: http://www.famfamfam.com/ ? Hi Fernando, oops... I forgot your icon importer, sorry :P I would like –for a future– to integrate it to pharo and replace current ThemeIcons with an icon strategy based on your package... maybe that is the best future scenario for icons. best, Esteban El 11/12/2011, a las 8:49a.m., Fernando Olivero escribió: Hi Esteban, nice work! For importing the icons you can use the toolset i've developed: it automates completely the process of importing a complete set of icons of a given family. ExternalIconFamily @ squeaksource. I've used it for importing the Oxygen icon set, and others (you can google the list for previous related emails). Fernando On Sun, Dec 11, 2011 at 10:38 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: Esteban I know that feeling :) :) Now I'm not sure that I would like to carry the Eclipse License around in Pharo :) What are the other icons sets we could use with a nice license and we do it :). famfam? We should clean also the old icons because some are really old. Thanks for pushing that. I would love to have new icons for Pharo. Stef On Dec 11, 2011, at 3:15 AM, Esteban Lorenzano wrote: Hi, Today I was bored and not wanting to think too much... but I wanted to do something for Pharo... and I never liked the current Pharo icons, so I took one icon library I really like and changed all needed icons (well... all that I saw). Here a couple of screen shots: Captura de pantalla 2011-12-10 a la(s) 23.05.55.png Captura de pantalla 2011-12-10 a la(s) 23.06.20.png Of course, I don't think they are perfect (also maybe I didn't pick the best icons), but I think they look a lot better than the older. If you want to see how they look, this are the packages: for Pharo 1.3: Eclipse-Icons-EstebanLorenzano.2.mcz for Pharo 1.4: Eclipse-Icons-EstebanLorenzano.4.mcz Then you execute: ThemeIcons initializeIcons. World resetWorldMenu. ... and enjoy your new icons :) btw... this icons are in an open-source license, the EPL: http://www.eclipse.org/legal/epl-v10.html so, maybe –if all agree–, we can add this icons to regular distribution :) best, Esteban
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
Hi Mariano I'm no expert either ;) Without having access to the exact code it would look like either you have a collection that references itself (which would break all collection implementations) or maybe the tests have just slowed down to the point where you think it's 'crashed'. Do you have anymore info or perhaps which methods you changed on IdentitySet? Cheers Carlo On 13 Dec 2011, at 1:57 AM, Mariano Martinez Peck wrote: On Tue, Dec 13, 2011 at 12:32 AM, Mariano Martinez Peck marianop...@gmail.com wrote: On Mon, Dec 12, 2011 at 1:56 PM, Carlo snoob...@yahoo.ie wrote: Hi Wouldn't the fact that you use hash cause potential loops now? e.g. collection refers to another object that refers to first collection. -- aCollectionhash references an item which causes this current collection's hash to be called again? Hi Carlo. I am still newbie with Collections but I think I am having exactly that problem. During my tests, it loops in Collection #hash when sending #hash to its elements. Sorry, but I couldn't undertand what is the cause of the problem? why it doesn't work while it does using #identityHash? could you elaborate? Well, now I understood, and I understand also why it doesn't happen with #identityHash. But what happens then with regular Dictionaries using #hash? why it doesn't happen there? thanks identityHash is deterministic in this case. Does this help? Cheers Carlo On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com
Re: [Pharo-project] native boost is the best thing since COGVM
Done, indeed it's a better design now! I've removed the NBCairo class, reified almost all Cairo objects as a subclass of NBCairoObject. I've also added CairoText, for easier drawing of text using Cairo Toy Text API. (and CairoLineCap, CairoLineJoin ) All the examples work again, also the new ones. As soon as squeaksource is up again i'll commit. Fernando pd: I will apply the same refactoring to NBPango also. I still have to answer your questions regarding the use of Pango. On Mon, Dec 12, 2011 at 6:44 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 12, 2011, at 5:35 PM, Igor Stasenko wrote: On 12 December 2011 17:16, Fernando Olivero fernando.oliv...@usi.ch wrote: ok, i see your point. I will refactor back to Javier's approach. My rationale was to reify the Cairo library as it is, luckily all the other examples work. Well, it makes sense to do things like that, when you want a fast and dirty working stuff. But a good wrapping makes a lot of difference: there is no need to indicate that you using a library through 'self cairo' everywhere. It is just an indirection without any benefit. Wrapper classes and their instances should provide a required functionality through well defined protocols, and then from user's standpoint it is really makes no difference who implements them. That's why we need Athens. Indeed we do want to have cairo dependencies inside our system just encapsulated in their respective canvases. If i add the shared pool NBCairoTypes to the NBCairo then NativeBoost automatically associates the type? Because i've been putting directly int. Would be nice to have a couple of examples of NB (whenever the time is enough for you guys, i know you are busy) Yes, but these examples were written specifically to show how to wrap a library in object-oriented way :) Look at pharo by example book [1], there you can find an explanation how to use shared pools. Of course it is far from complete, but my opinion that your refactoring gives a bad example to future developers. They should think in terms of objects and place callouts in corresponding classes with nicely formed protocol(s). I am looking forward for you to come, so i can explain things more directly and easier :) [1] https://gforge.inria.fr/scm/viewvc.php/*checkout*/PharoByExampleTwo-Eng/Alien/alien.pdf?root=pharobooks thanks for the feedback, Fernando On Mon, Dec 12, 2011 at 5:05 PM, Igor Stasenko siguc...@gmail.com wrote: CairoSampleProgramsrectangleAndText does not works, because it uses a following method: NBCairoselectFont: aFamily slant: slant weight: aWeight on: aNBCairoContext primitive: #primitiveNativeCall module: #NativeBoostPlugin ^self call: #(void cairo_select_font_face (NBCairoContext aNBCairoContext, String aFamily, cairo_font_slant_t slant, cairo_font_weight_t aWeight) ) and during code generation it barks that it unable to resolve 'cairo_font_slant_t' type. Because NBCairo class does not includes a corresponding shared pool (NBCairoTypes). Also, Fernando, i don't like that you put everything into a single class (NBCairo). This is wrong, not object-oriented. The original organization made by Javier was much more closer to my tastes. This approach to wrapping a library is too mechanical. It is much better to place calls at proper place(s) in proper classes, rather than putting everything into a single one. Which means that in this way you are at least 1 message send farther from real function call. But in your case its not even that.. NBCairoPatternstatus ^ self cairo patternStatusOf: self cairo ^ NBCairo default so , it is 2 extra message sends, instead of direct call to foreign function! -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-project] IdentitySet but using #hash rather than #identityHash ?
Hi Mariano, when I read this thread I was a bit confused that you wanted an IdentitySet that used #hash. From that statement it sounded like you just wanted a Set. This would allow any object to define its own hash and importantly what equality means with #=. So if you want to delegate that to the object use a Set. However as the thread has gone on perhaps you want the identity relationship but you just wanted a bigger identity hash space? IdentitySets are fast because they bypass any delegation. Once you have seen the object in your traversal (common usage pattern) that's it. You grab it's identity which is a pretty low level thing to do. As for what happens with collections who knows. Depends. Relying on identity set semantics for a collection is easy. Set semantics is not so. Remember that both hash and equals are important to know if the set already contains the element. Depending on the collection implementation both of these could be composite in terms of the parts. Who knows where you end or how long it takes. I.e. if it is a function of the size of the collection and further collections are composite Cheers Mike On Tuesday, December 13, 2011, Carlo snoob...@yahoo.ie wrote: Hi Mariano I'm no expert either ;) Without having access to the exact code it would look like either you have a collection that references itself (which would break all collection implementations) or maybe the tests have just slowed down to the point where you think it's 'crashed'. Do you have anymore info or perhaps which methods you changed on IdentitySet? Cheers Carlo On 13 Dec 2011, at 1:57 AM, Mariano Martinez Peck wrote: On Tue, Dec 13, 2011 at 12:32 AM, Mariano Martinez Peck marianop...@gmail.com wrote: On Mon, Dec 12, 2011 at 1:56 PM, Carlo snoob...@yahoo.ie wrote: Hi Wouldn't the fact that you use hash cause potential loops now? e.g. collection refers to another object that refers to first collection. -- aCollectionhash references an item which causes this current collection's hash to be called again? Hi Carlo. I am still newbie with Collections but I think I am having exactly that problem. During my tests, it loops in Collection #hash when sending #hash to its elements. Sorry, but I couldn't undertand what is the cause of the problem? why it doesn't work while it does using #identityHash? could you elaborate? Well, now I understood, and I understand also why it doesn't happen with #identityHash. But what happens then with regular Dictionaries using #hash? why it doesn't happen there? thanks identityHash is deterministic in this case. Does this help? Cheers Carlo On 12 Dec 2011, at 10:58 AM, Mariano Martinez Peck wrote: Hi guys. I hope this is not a very stupid question. Background: in Fuel we have a IdentityDictionary where we put each of the objects we find while traversing the graph. We need to use IdentitySet because we cannot have repetitions (and to avoid loops) so we NEED to use #==. In such dictionary we put ALL objects of the graph, so it can be very big. Since IdentitySet uses #identityHash, it means it will be using those ONLY 12 bits in the object header. It means that we have 2^12 = 4096 different values. Question: having explained the previous, I wanted to be able to use #hash rather than #identityHash since several classes implement #hash and hence I thought that using #hash I could have less colisions and hence a better performance. I tried to make a subclass of IdentitySet that uses #hash rather than #identityHash but my image freezes. I also tried something like: set := PluggableSet new. set hashBlock: [ :elem | elem hash ]. set equalBlock: [ :a :b | a == b ]. But it doesn't work either. I works with simple tests in a workspace but when I run the full tests of Fuel, it enters in a loop in the method #hash of Collection.. Anyway, my question is, should that work? if not, what is the exact reason? Thanks in advance, -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com -- Mariano http://marianopeck.wordpress.com