Re: [Pharo-users] Mutter system news
16 - pass the galaxy test: https://docs.google.com/presentation/d/1FWcSJfZITITckrXyfihpuPnX5xf0e4kOhCnsoRFyLfI/edit#slide=id.p 17 - exchange access categories with contractual code migration 18 - emoji feedback On 12/28/2016 1:11 PM, Charlie Robbats wrote: Hi! Here's the master plan, always malleable; if anyone sees something interesting to dive into, you are welcome. Future Features --- 0 - fix vector corruption through pbeStorage 1 - java/squeak interoperability 2 - FEC-RS testing/repair 3 - define QR-coded PBE identity 4 - switch to SHA256/scrypt PBE for identities 5 - porciniz 6 - DNS/meta layer injection 7 - stack hacking/network discovery/graphing/routing 8 - blockchain 9 - support non-secret finite field key exchange ("Whisper-2")-Oops/add dataEncoder to EncoderData 10 - ratcheting/group join/leave ratcheting 11 - asn1derMetaPragmaEncoder/class autocreation and meta qufrums/qufrum construction/data replication 12 - thermoHarmonics3NeuralRuleGA (PV = nrT + distortion) 13 - Enumify Types, pass named closures, scope projection & protection, detach class/classVariables 14 - autocoerce local eventual calls to immediate sends with reactor pipelining 15 - start a Mutter system news website --- Encoder Velocities: DBL_AESede/asn1der: 100 KB compressed data chunks received: 100 send time: 1096 ms, rate: 73 Mbs. receive time: 1096 ms. rate: 73 Mbs. DBL_AESede/bytes: 100 KB compressed data chunks received: 100 send time: 1094 ms, rate: 73 Mbs. receive time: 1095 ms. rate: 73 Mbs. DBL_AESede,json: 100 KB compressed data chunks received: 10 send time: 2107 ms, rate: 4 Mbs. receive time: 2107 ms. rate: 4 Mbs. ---
Re: [Pharo-users] [Vm-dev] Integrated decentralized localized social networks (was Re: ptsd rage)
Consider words from the street. All those potential Pharo users! https://www.youtube.com/watch?v=jMnLHmTXjgU=PLJiUTrmz_5UMkFsdjCRJD0bpRpuswwccx=1 On 12/19/2016 8:11 PM, Charlie Robbats wrote: This is how I deal with ptsd. Change the system. On 12/19/2016 8:08 PM, Charlie Robbats wrote: Which I have done over the years, used other venues for peaceful warfare. Sorry to disturb you. The 20th century model of society is stale and dated. Look at all the damage done to people for no good reason. We can effect change through technology. What kind of change? Something that leverages modern computing, including the blockchain for trusted interactions, lots of hand-held IoT devices combined into a massive decentralized computational network, leaving REST services behind and presenting functional semantics with robust data marshaling. With these capabilities, transform the way physical interactions occur. I like to term what I am seeing as virtualizing physicality & physicalizing virtuality. Is Pharo just aiming to be a better WebApp? That market is totally saturated. Pharo's/Squeak's strengtsh are robust dynamic presentation of information in graphical form and interconnectivity. Let us leverage that. Smalltalk is perfectly positioned to define the next transformation, because it is the only language system designed to be online 24/7, exactly what is needed for a massive decentralized computer with dynamic un/loading. I merely made a few comments regarding some of the practical functional requirements around the security facet of the new system. My apologies if you felt it was inappropriate. I think you were concerned it may get further out of hand and I do not disagree with you. Let's collect functional requirements for how this new social network will interact with personalized locality. This is my proposition. Why, we could eliminate prisons, massively reducing mental illness and eliminate collective confrontation. I believe completely, with all my heart, that this is in the original spirit of Smalltalk, but I cannot speak for the founders, this is my belief. Thank you for your thoughts, I did not mean to offend or go so far astray. Charlie On 12/19/2016 7:17 PM, Brad wrote: Don't know about anyone else, but I would appreciate it if this kind of commentary never made it to this email list. This topic is so inappropriate. Let's keep the discussion about Pharo. If you feel you must go down the political route, then please be gracious enough to find another venue. Brad Selfridge 913-269-2385 On Dec 19, 2016, at 6:48 PM, Charlie Robbats <charlie.robb...@gmail.com <mailto:charlie.robb...@gmail.com>> wrote: Alright, one more sad observation. Of all the Law Enforcement violence, either perpetrated by LEOs against citizens or by citizens against LEOs, in all cases I am aware or recall having heard, all of these involve police officers. No violence, or very little, is perpetrated against or by Sheriff Deputies. As counties are a good and proper and consistent scope of crime administration, regardless of the density, police ought to report to the Sheriffs and let's put and end to broken windows policy and discriminatory enforcement. Police are always in our shit, and have their egos to boot. Sheriff Deputies, by comparison, are laid back and easy to talk to. They engage the public in respect, without attitude. Bob didn't shoot the deputy. On 12/17/2016 10:11 PM, Charlie Robbats wrote: Last bit, a mantra: Crime & Punishment creates massive mental illness in our society. Ask the Russians. On 12/17/2016 10:05 PM, Charlie Robbats wrote: Well, my paranoia is kicking. I spoke too broadly of police, I have interacted with many and they do a lot of good. A bad apple spoils the whatever and their code of silence allows for that sort of rot. I tell it straight, because they monitor the list. I pissed them off! Do you think it passed the sanity test that cops run all street drugs with their felon database in hand? Damn! All those Fellas are going to turn and bite their masters' hand, you watch! Stacking these grown men like Twinkies in overcrowded prisons. There is a debt that needs to be paid and the righteous are those in prison on a bunch of bullshit paper. Vive la revolucion! Ok, sorry I went political. I am done. On 12/17/2016 9:49 PM, Charlie Robbats wrote: I am sad with you in your diagnosis. I get that too, the blues. I get high if I am holding and listen to "Kind of Blue" or deep house or reggae. Some X would be good, but herbage is my mainstay to drop my constant threat mode (hypervigilence). I do not want a repeat of what happened! Unfortunately I drive people away to make sure of that. I appreciate your alls kindness. I wanted to share a solid explanation of why I am such a dick at times. I flip to active threat mode, I struggle to control this. It doesn't help that the police have be
Re: [Pharo-users] How do Smalltalk disambiguate messages?
Oops, that should be.. | array lookupClosure performClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. performClosure := [ :receiver :selector :args | (lookupClosure value: receiver class value: selector) valueWithReceiver: receiver arguments: args ]. array := { 1 }. performClosure value: array value: #at:put: value: {1. 'Hello, world'}. array inspect. On 10/16/2016 10:03 AM, Charlie Robbats wrote: and a little block cleanup: | array lookupClosure performClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. performClosure := [ :receiver :args | (lookupClosure value: array class value: #at:put:) valueWithReceiver: array arguments: args ]. array := { 1 }. performClosure value: array value: {1. 'Hello, world'}. array inspect. Charlie On 10/16/2016 9:54 AM, Charlie Robbats wrote: Here's a little change to get your #perform:withArguments: implemented. | array lookupClosure method | array := { 1 }. lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector "ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth]" ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. method := lookupClosure value: Array value: #at:put:. method valueWithReceiver: array arguments: {1. 'Hello, world'}. array On 10/16/2016 9:32 AM, Ben Coman wrote: On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats <charlie.robb...@gmail.com> wrote: Here, Dmitry, try this code in playground...maybe helps you understand | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. (cls methodDictionary at: selector ifAbsent: [nil]) ifNil: [lookupClosure value: cls superclass value: selector] ifNotNil: [:meth | Smalltalk tools browser openOnMethod: meth]]. lookupClosure value: Array value: #at:put:. Nice example. Slightly improved... | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. lookupClosure value: Array value: #at:put:. cheers -ben
Re: [Pharo-users] How do Smalltalk disambiguate messages?
and a little block cleanup: | array lookupClosure performClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. performClosure := [ :receiver :args | (lookupClosure value: array class value: #at:put:) valueWithReceiver: array arguments: args ]. array := { 1 }. performClosure value: array value: {1. 'Hello, world'}. array inspect. Charlie On 10/16/2016 9:54 AM, Charlie Robbats wrote: Here's a little change to get your #perform:withArguments: implemented. | array lookupClosure method | array := { 1 }. lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector "ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth]" ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. method := lookupClosure value: Array value: #at:put:. method valueWithReceiver: array arguments: {1. 'Hello, world'}. array On 10/16/2016 9:32 AM, Ben Coman wrote: On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats <charlie.robb...@gmail.com> wrote: Here, Dmitry, try this code in playground...maybe helps you understand | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. (cls methodDictionary at: selector ifAbsent: [nil]) ifNil: [lookupClosure value: cls superclass value: selector] ifNotNil: [:meth | Smalltalk tools browser openOnMethod: meth]]. lookupClosure value: Array value: #at:put:. Nice example. Slightly improved... | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. lookupClosure value: Array value: #at:put:. cheers -ben
Re: [Pharo-users] How do Smalltalk disambiguate messages?
Here's a little change to get your #perform:withArguments: implemented. | array lookupClosure method | array := { 1 }. lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('method lookup failure: ', selector)]. cls methodDictionary at: selector "ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth]" ifPresent: [:meth | meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. method := lookupClosure value: Array value: #at:put:. method valueWithReceiver: array arguments: {1. 'Hello, world'}. array On 10/16/2016 9:32 AM, Ben Coman wrote: On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats <charlie.robb...@gmail.com> wrote: Here, Dmitry, try this code in playground...maybe helps you understand | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. (cls methodDictionary at: selector ifAbsent: [nil]) ifNil: [lookupClosure value: cls superclass value: selector] ifNotNil: [:meth | Smalltalk tools browser openOnMethod: meth]]. lookupClosure value: Array value: #at:put:. Nice example. Slightly improved... | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. lookupClosure value: Array value: #at:put:. cheers -ben
Re: [Pharo-users] How do Smalltalk disambiguate messages?
Here, Dmitry, try this code in playground...maybe helps you understand | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. (cls methodDictionary at: selector ifAbsent: [nil]) ifNil: [lookupClosure value: cls superclass value: selector] ifNotNil: [:meth | Smalltalk tools browser openOnMethod: meth]]. lookupClosure value: Array value: #at:put:. On 10/16/2016 8:27 AM, CodeDmitry wrote: I define Magic as "An opaque abstraction or an abstraction you think is opaque until you learn better.", to a beginner, everything is deeply Magical. That said, much of Smalltalk's opaqueness is not due to the language, but due to me being a beginner. I'm sure there's a way to actually force sending a message to a dictionary via something like dict['at:put:']('foo', 'bar') but I am not familiar enough with Smalltalk to express it, so it feels like the only way to send a message is via this multi-part message abstraction. -- View this message in context: http://forum.world.st/How-do-Smalltalk-disambiguate-messages-tp4918946p4918966.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Re: [Pharo-users] How do Smalltalk disambiguate messages?
I think the nub of your confusion is twofold. The method #at:put: is a keyword method and it isn't right to think o them as two keys. It is one compound key and unlike most every other system, Smalltalk keyword message sends allow the programmer to name each argument. This is very fine indeed. The other item is in your thinking that these methods are defined in a prototype chain, like JavaScript. Primarily Smalltalk is a class-based inheritance system for method lookup on message send. What I mean by your example is that when the message #at:put: is sent, the system will start with the concrete class in question, Array, and attempts lookup of #at:put:. When this fails, it then traverses the lookup to the superclass (->ArrayedCollection) and so on on lookup failure (->SequenceableCollection ->Collection ->Object) and at the Object class, the lookup into that Class's methodDictionary succeeds. It tuns out that Object>>#at:put: is a primitive in the vm (#61) that is able to store into an Array object, a variable class and indexable, by the way. Consider the method Array>>atWrap:put: also calling primitive 61. This may help with foundations: http://samizdat.cc/shelf/documents/2004/08.02-historyOfSmalltalk/historyOfSmalltalk.pdf I hope this helps. On 10/16/2016 12:44 AM, CodeDmitry wrote: I understand that it is a single message send, but to know how to handle the message at runtime, the parser needs to somehow determine where the implementation of that message is. It must do a lookup based on multiple keys(at, and put), which is really confusing. "methods" are easy to look up because they only have one name, but messages have one name which is split amongst each argument. Simple concatenation does not make sense, since {at: x, put: y} and {a: x, tput: y} are different messages. The only way I can think of this being implemented "easily" is by storing a table of entries {num_args, arg_names, impl_ref}, and then have the function "send" do a linear search over this table until it finds an entry with num_args = 2, each arg_name matching the argument name keys in order, and then calling the impl_ref with the array of values without the names. I'm wondering if there is a way to do this without having to loop over every single message the object has, then every message its' parent object has, and so on, just to find which function you actually want to call. -- View this message in context: http://forum.world.st/How-do-Smalltalk-disambiguate-messages-tp4918946p4918948.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.