Re: [Pharo-users] Mutter system news

2016-12-28 Thread Charlie Robbats
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)

2016-12-19 Thread Charlie Robbats

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?

2016-10-16 Thread Charlie Robbats

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?

2016-10-16 Thread Charlie Robbats

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?

2016-10-16 Thread Charlie Robbats

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?

2016-10-16 Thread Charlie Robbats

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?

2016-10-15 Thread Charlie Robbats
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.