It's been pretty quiet on this list, so I thought I'd start a conversation to see if the list is working. Anyone doing any interesting Self work?
I sidelined my VNC client in Self for a bit due to getting busy in my day job but plan to get back to it soon and finish it off. It's pretty close. The missing part is mostly key handling.
I'd like to tidy up my Android patches too and get them submitted so at least Intel android would work out of the box.
What do people feel would make Self more viable as a fun project to hack on?
On 16 Sep 2014, at 12:03, Chris Double chris.double@double.co.nz [self-interest] wrote:
What do people feel would make Self more viable as a fun project to hack on?
Documentation of the most useful methods in the core image. The one thing I DON'T like about the Smalltalk tradition is "the code is the documentation", and I hope Self can avoid that.
Jason
On 16 Sep 2014, at 12:13 pm, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
On 16 Sep 2014, at 12:03, Chris Double chris.double@double.co.nz [self-interest] wrote:
What do people feel would make Self more viable as a fun project to hack on?
Documentation of the most useful methods in the core image. The one thing I DON'T like about the Smalltalk tradition is "the code is the documentation", and I hope Self can avoid that.
Absolutely!
There is some info on core useful objects in the Handbook. Rearranging and expanding on that could be also a place to start.
Also quite a few objects and methods have an attached comment. One useful thing might be to write something which would extract those into a nice set of html pages.
Russell
Jason
I've been a little quiet because of the arrival of my first child, who is very cute but somewhat demanding. I've tried to interest him in Self but so far his response is to gurgle then throw up all over the computer. :)
On the backburner I have a couple of projects. First is the 'native' primitive which allows me to run arbitrary machine code from within Self. I need to add a simple callback mechanism then we can start to connect to some libraries. Second is a Self cloud so people can run Self worlds online. I've got that running on a single machine and I'm generalising it to a simple set of machines. Nothing big and complex, just enough to play with.
Russell
On 16 Sep 2014, at 12:03 pm, Chris Double chris.double@double.co.nz [self-interest] self-interest@yahoogroups.com wrote:
It's been pretty quiet on this list, so I thought I'd start a conversation to see if the list is working. Anyone doing any interesting Self work?
I sidelined my VNC client in Self for a bit due to getting busy in my day job but plan to get back to it soon and finish it off. It's pretty close. The missing part is mostly key handling.
I'd like to tidy up my Android patches too and get them submitted so at least Intel android would work out of the box.
What do people feel would make Self more viable as a fun project to hack on?
Big congratulations for your child!
- David Sent from my iPhone, tap tap
On Sep 15, 2014, at 7:20 PM, "Russell Allen mail@russell-allen.com [self-interest]" self-interest@yahoogroups.com wrote:
I've been a little quiet because of the arrival of my first child, who is very cute but somewhat demanding. I've tried to interest him in Self but so far his response is to gurgle then throw up all over the computer. :)
On the backburner I have a couple of projects. First is the 'native' primitive which allows me to run arbitrary machine code from within Self. I need to add a simple callback mechanism then we can start to connect to some libraries. Second is a Self cloud so people can run Self worlds online. I've got that running on a single machine and I'm generalising it to a simple set of machines. Nothing big and complex, just enough to play with.
Russell
On 16 Sep 2014, at 12:03 pm, Chris Double chris.double@double.co.nz [self-interest] self-interest@yahoogroups.com wrote:
It's been pretty quiet on this list, so I thought I'd start a conversation to see if the list is working. Anyone doing any interesting Self work?
I sidelined my VNC client in Self for a bit due to getting busy in my day job but plan to get back to it soon and finish it off. It's pretty close. The missing part is mostly key handling.
I'd like to tidy up my Android patches too and get them submitted so at least Intel android would work out of the box.
What do people feel would make Self more viable as a fun project to hack on?
Nope, unless you consider "stealing ideas from Self while singing in the shower" to be interesting Self work (I don't.) Nice to hear a heartbeat on the list though.
You asked a question about what might make Self more fun to hack on. I'm just going to rattle off the first few things that popped into my head.
Web development framework. Okay, so that isn't really fun at all, but it *might* create some new interest in the project.
Mother of Stupid Ideas: do a web browser and fire 90% of the operating system, which is nowadays a life support system for a web browser anyway. I've been wanting to do this in Squeak since I arrived unwashed at the threshold of the mysteries of the message send. In Self, though, one of the ideas I had could really work better than in any other system presently: one could use direct, live manipulation of the morphs that comprise a web page to edit the actual page in a WYSIWYG fashion, and then use a variant of the object transporter, maybe with some parsing expression grammar sauce, to idea send a message which makes the page recursively render itself as HTML, CSS, and Javascript. It's like FrontPage, but without all of the suck! Of course, we'd need recruits, so...
Bad idea from professional experience: make it social. In the run up to Facebook eclipsing everything righteous and humane, we got a lot of play just by taking an existing thing and adding social/game features. GitHub has been enormously successful bringing this stuff into the programming world. It seems like the main problem with Self is that almost no one (except Smalltalk programmers and professional VM hackers) has even heard of it. Sticking a viralish microblogging widget into the image and maybe some instant messaging stuff alone could do wonders with regard to snaring bright, malleable minds to help build the future.
Interesting, timely idea: Juan Vuletich just released a sneak-peek[1] at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is that we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides crisper rendering than anything I know of currently on or off of the market. One of the goals behind the work is to realize a truly zoomable user interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier and more pleasant to navigate? I do! Forget the desktop pager if I can just zoom out, right?
[1] https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/tree/master/Experimenta... [2] https://dps-production.s3.amazonaws.com/uploads/publication/publication/146/...
Idea for which I will not hold any resentment when rotten tomatoes are thrown at me: I wish Self was more portable. I wish that all the brilliant, living people who made real live object systems go fast could combine forces.
CASEY (ducks slightly)
AUDIENCE (nervous silence)
CASEY What if we retargeted Self to run above the Cog/Spur variant of the Squeak VM, and then focused some effort on implementing the necessary bits on ARM and…
AUDIENCE, THROWING ROTTEN TOMATOES Noooooooeeess!
CASEY (drowns to death in tomato juice)
Okay, those were my ideas for the night. Hope you enjoyed reading them as I did writing them:)
Casey
On Mon, Sep 15, 2014 at 7:03 PM, Chris Double chris.double@double.co.nz [self-interest] self-interest@yahoogroups.com wrote:
It's been pretty quiet on this list, so I thought I'd start a conversation to see if the list is working. Anyone doing any interesting Self work?
I sidelined my VNC client in Self for a bit due to getting busy in my day job but plan to get back to it soon and finish it off. It's pretty close. The missing part is mostly key handling.
I'd like to tidy up my Android patches too and get them submitted so at least Intel android would work out of the box.
What do people feel would make Self more viable as a fun project to hack on?
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a sneak-peek[1] at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is that we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides crisper rendering than anything I know of currently on or off of the market. One of the goals behind the work is to realize a truly zoomable user interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier and more pleasant to navigate? I do! Forget the desktop pager if I can just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
Is the a list of 'jobs that need doing'? On the wiki?
I'm back studying PT and working FT, but might be able to squeeze out some time for small jobs as a way of learning self.
I'd also love to know if Korzs will be released into the wild?
Stephens
On Tuesday, 16 September 2014, Mayuresh Kathe mayuresh@kathe.in [self-interest] self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com javascript:_e(%7B%7D,'cvml','casey.obrien.r@gmail.com'); [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a sneak-peek[1] at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is that we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides crisper rendering than anything I know of currently on or off of the market. One of the goals behind the work is to realize a truly zoomable user interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier and more pleasant to navigate? I do! Forget the desktop pager if I can just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
On 16 Sep 2014, at 7:34 pm, Stephen De Gabrielle spdegabrielle@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Is there a list of 'jobs that need doing'? On the wiki?
Good idea - I've created a new page for this https://github.com/russellallen/self/wiki/Suggestions-for-Small-Improvements but haven't added any jobs yet!
Russell
I'm back studying PT and working FT, but might be able to squeeze out some time for small jobs as a way of learning self.
I'd also love to know if Korzs will be released into the wild?
Stephens
On Tuesday, 16 September 2014, Mayuresh Kathe mayuresh@kathe.in [self-interest] self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a sneak-peek[1] at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is that we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides crisper rendering than anything I know of currently on or off of the market. One of the goals behind the work is to realize a truly zoomable user interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier and more pleasant to navigate? I do! Forget the desktop pager if I can just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
-- Sent from Gmail Mobile
Can you be more specific? I read Raskin's book, but I'm not sure what you're trying to say.
On Sep 16, 2014, at 2:23 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a sneak-peek[1] at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is that we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides crisper rendering than anything I know of currently on or off of the market. One of the goals behind the work is to realize a truly zoomable user interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier and more pleasant to navigate? I do! Forget the desktop pager if I can just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
do you need specifics on why i feel a zoomworld interface be bad for a "self"-like system?
~mayuresh
On 2014-09-16 16:37, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Can you be more specific? I read Raskin's book, but I'm not sure what you're trying to say.
On Sep 16, 2014, at 2:23 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a
sneak-peek[1]
at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is
that
we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides
crisper
rendering than anything I know of currently on or off of the
market.
One of the goals behind the work is to realize a truly zoomable
user
interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier
and
more pleasant to navigate? I do! Forget the desktop pager if I
can
just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
Yeah, I was asking why you think being able to zoom in and out over a collection of points of view would be a bad thing or wouldn't work.
Seemed like you had an argument to make there and I'd love to hear it. I'm a fan of Raskin, too. In part I'm asking because my tiny brain thinks it would be absolutely fantastic to have a 2&1/2 3D way of moving over a Self world, and I'm always glad to be wrong!
Or another way of saying it: the desktop pager gets lost if you scroll away from it, and even if you manage to make it work for you... uh. It reminds me of FVWM on Unix hosts. Blergh.
Is there nothing in the world that's more lively, direct and concrete than not-that?
So yeah, I'm 100% interested in user interfaces that can be arbitrarily scaled by the user. I'm not blind to the challenges around that idea either; e.g., zoom very far out and you can't read the text anymore. But user interfaces exist primarily to solve problems like these! An easy out of the example problem I gave can be observed on any Macintosh computer. Push the button, all the windows zoom away, click one, it comes close and into focus. This has worked for like ten years and people love it. It's also _not as good as what we can do_ but if we ignore it, and that it totally works, then we're... ignorant?
On Sep 16, 2014, at 4:39 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
do you need specifics on why i feel a zoomworld interface be bad for a "self"-like system?
~mayuresh
On 2014-09-16 16:37, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Can you be more specific? I read Raskin's book, but I'm not sure what you're trying to say.
On Sep 16, 2014, at 2:23 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a
sneak-peek[1]
at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is
that
we're going to adapt it to Slang so it can be translated as a VM plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides
crisper
rendering than anything I know of currently on or off of the
market.
One of the goals behind the work is to realize a truly zoomable
user
interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier
and
more pleasant to navigate? I do! Forget the desktop pager if I
can
just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt where you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
oh, okay.
the way mr. raskin wanted it to be was to use zoomworld as a means of drilling down to the information you need.
one of the examples he'd told me about was to think about a warehouse where stuff can be stored arbitrarily, tagged and recorded in a database with location aware meta-data. such data can then be _presented_ via a zoomworld like interface where in a person requiring a drill-bit of a particular type would first pan around to the drills area, then start zooming in, panning to the type of drill he has, then zoom in further to the kind of bit, then further on.
do you think the above could make sense in terms of "self"?
i would like to be corrected if i'm wrong, but, what-ever little i have played with the "self" environment, it feels more like a room full of objects, one where one object can be doing something, and the other might be modified and updated without having to stop the operations of the other objects.
yes, in a certain sense, you could use a zoomworld like interface for inspecting an object itself, but, somehow, going beyond it would make the user experience *very* awkward because mapping a 3-d environment and representing it on a 2-d plane doesn't come out all that well.
~mayuresh
On 2014-09-16 17:34, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Yeah, I was asking why you think being able to zoom in and out over a collection of points of view would be a bad thing or wouldn't work.
Seemed like you had an argument to make there and I'd love to hear it. I'm a fan of Raskin, too. In part I'm asking because my tiny brain thinks it would be absolutely fantastic to have a 2&1/2 3D way of moving over a Self world, and I'm always glad to be wrong!
Or another way of saying it: the desktop pager gets lost if you scroll away from it, and even if you manage to make it work for you... uh. It reminds me of FVWM on Unix hosts. Blergh.
Is there nothing in the world that's more lively, direct and concrete than not-that?
So yeah, I'm 100% interested in user interfaces that can be arbitrarily scaled by the user. I'm not blind to the challenges around that idea either; e.g., zoom very far out and you can't rea d the text anymore. But user interfaces exist primarily to solve problems like these! An easy out of the example problem I gave can be observed on any Macintosh computer. Push the button, all the windows zoom away, click one, it comes close and into focus. This has worked for like ten years and people love it. It's also _not as good as what we can do_ but if we ignore it, and that it totally works, then we're... ignorant?
On Sep 16, 2014, at 4:39 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
do you need specifics on why i feel a zoomworld interface be bad for a "self"-like system?
~mayuresh
On 2014-09-16 16:37, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Can you be more specific? I read Raskin's book, but I'm not sure
what
you're trying to say.
On Sep 16, 2014, at 2:23 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
On 2014-09-16 12:47, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Interesting, timely idea: Juan Vuletich just released a
sneak-peek[1]
at his new vector-based Morphic implementation. The renderer is currently written in Smalltalk -- so, slow -- but the idea is
that
we're going to adapt it to Slang so it can be translated as a
VM
plugin in C. The most interesting thing is, his algorithm[2] is unique. It's based on signal processing theory, and provides
crisper
rendering than anything I know of currently on or off of the
market.
One of the goals behind the work is to realize a truly zoomable
user
interface. Do you think that a zooming interface free of pixel complications would make the large contiguous Self world easier
and
more pleasant to navigate? I do! Forget the desktop pager if I
can
just zoom out, right?
based on what-ever (little) i know about "self", and my interactions with mr. j raskin, i would suggest staying away from a zooming interface for a "self"-like project.
a zoomworld, as was described by mr. raskin would be more apt
where
you want to drill down into _knowledge_, which isn't the case with "self".
do correct me if you feel my assumptions are wrong.
~mayuresh
Mayuresh,
the way mr. raskin wanted it to be was to use zoomworld as a means of drilling down to the information you need.
The first few versions of Self were text-only, but the various ideas included in the Morphic user interface were part of the project from the start. Actually, even before the start of you look at the Alternate Reality Kit:
http://www.open-video.org/details.php?videoid=8050
Based on the "artificial reality" ideas being discussed in the Self group at the time, I wrote a short paper in 1991 about a possible user interface:
http://merlintec.com/lsi/jpaper8.html
and soon after that built a quick and dirty prototype:
http://merlintec.com/lsi/gui.html
At that time I met Ken Perlin from New York University and he did a few very impressive demonstrations of zooming interfaces:
http://mrl.nyu.edu/~perlin/ http://mrl.nyu.edu/projects/zui/
I saw that both the 3D GUI and the ZUI had interesting features and complemented each other. A few years later I bought Jef Raskin's Humane Interface book and it reinforced my interest in zooming interfaces. I didn't see anything in the book that would make it seem that such an interface would not be a good idea for Self. In fact, when designing a user interface for a children's computer in 1999 I thought that combining these ideas would result in a really nice product:
http://merlintec.com/pegasus2000/e_gui.html
-- Jecel
On 16 Sep 2014, at 5:17 pm, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Web development framework. Okay, so that isn't really fun at all, but it *might* create some new interest in the project.
We now have an almost web server, which I'm running selflangauge.org on behind nginx
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Mother of Stupid Ideas: do a web browser and fire 90% of the operating system, which is nowadays a life support system for a web browser anyway. I've been wanting to do this in Squeak since I arrived unwashed at the threshold of the mysteries of the message send. In Self, though, one of the ideas I had could really work better than in any other system presently: one could use direct, live manipulation of the morphs that comprise a web page to edit the actual page in a WYSIWYG fashion, and then use a variant of the object transporter, maybe with some parsing expression grammar sauce, to idea send a message which makes the page recursively render itself as HTML, CSS, and Javascript. It's like FrontPage, but without all of the suck! Of course, we'd need recruits, so...
Oh that's easy. Write a javascript->self translator, run webkit through emscripten and Bob's your uncle :p
Bad idea from professional experience: make it social. In the run up to Facebook eclipsing everything righteous and humane, we got a lot of play just by taking an existing thing and adding social/game features. GitHub has been enormously successful bringing this stuff into the programming world. It seems like the main problem with Self is that almost no one (except Smalltalk programmers and professional VM hackers) has even heard of it. Sticking a viralish microblogging widget into the image and maybe some instant messaging stuff alone could do wonders with regard to snaring bright, malleable minds to help build the future.
The ability to share a Self screen is really a hidden superpower. We just need to disentangle it from X Windows.
Idea for which I will not hold any resentment when rotten tomatoes are thrown at me: I wish Self was more portable. I wish that all the brilliant, living people who made real live object systems go fast could combine forces.
CASEY (ducks slightly)
AUDIENCE (nervous silence)
CASEY What if we retargeted Self to run above the Cog/Spur variant of the Squeak VM, and then focused some effort on implementing the necessary bits on ARM and…
AUDIENCE, THROWING ROTTEN TOMATOES Noooooooeeess!
CASEY (drowns to death in tomato juice)
Boo! Hiss!
Actually not a bad idea if we could adjust the Cog JIT to inline getters and setters, otherwise I'm guessing it would be too slow?
:) R
On 16 Sep 2014, at 19:34, Russell Allen mail@russell-allen.com [self-interest] wrote:
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Ditto, for the big ones like Rails. But "microframeworks" like Sinatra - and various clones of Sinatra in other languages - are increasingly popular, and very very simple.
Jason
Oh man! Jason, I was getting ready to point at Sinatra and you got there before I did. The thing I like about Sinatra? He lets me be me and do things how I want to do them ("My Way") and yeah.
I LOVE the way Sinatra handles the underpinnings and allows geeks to march to the beat of their own drums by showing off whatever tech they feel like with regard to overall architecture.
For anyone who hasn't used it, it's rather like one specifies a handler in the form of a closure that deals with a particular variety of HTTP request, and you basically supply some code that tells the system how to deal with the request.
Okay, this one's free: build the framework, and call it Nancy: just give me credit for naming the framework bwahahaha. (Really, Frank named her.)
C
On Sep 16, 2014, at 3:08 AM, "'Jason Grossman' spam-me@xeny.net [self-interest]" self-interest@yahoogroups.com wrote:
On 16 Sep 2014, at 19:34, Russell Allen mail@russell-allen.com [self-interest] wrote:
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Ditto, for the big ones like Rails. But "microframeworks" like Sinatra
- and various clones of Sinatra in other languages - are increasingly
popular, and very very simple.
Jason
Inline.
On Sep 16, 2014, at 2:34 AM, "Russell Allen mail@russell-allen.com [self-interest]" self-interest@yahoogroups.com wrote:
On 16 Sep 2014, at 5:17 pm, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Web development framework. Okay, so that isn't really fun at all, but it *might* create some new interest in the project.
We now have an almost web server, which I'm running selflangauge.org on behind nginx
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Awesome. Can I read the code somewhere?
Mother of Stupid Ideas: do a web browser and fire 90% of the operating system, which is nowadays a life support system for a web browser anyway. I've been wanting to do this in Squeak since I arrived unwashed at the threshold of the mysteries of the message send. In Self, though, one of the ideas I had could really work better than in any other system presently: one could use direct, live manipulation of the morphs that comprise a web page to edit the actual page in a WYSIWYG fashion, and then use a variant of the object transporter, maybe with some parsing expression grammar sauce, to idea send a message which makes the page recursively render itself as HTML, CSS, and Javascript. It's like FrontPage, but without all of the suck! Of course, we'd need recruits, so...
Oh that's easy. Write a javascript->self translator, run webkit through emscripten and Bob's your uncle :p
Haha, but that defeats the entire point. The browser must be written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by. It's an enormous amount of work to support a broken paradigm though, so I'm not oblivious to why it hasn't happened yet.
Bad idea from professional experience: make it social. In the run up to Facebook eclipsing everything righteous and humane, we got a lot of play just by taking an existing thing and adding social/game features. GitHub has been enormously successful bringing this stuff into the programming world. It seems like the main problem with Self is that almost no one (except Smalltalk programmers and professional VM hackers) has even heard of it. Sticking a viralish microblogging widget into the image and maybe some instant messaging stuff alone could do wonders with regard to snaring bright, malleable minds to help build the future.
The ability to share a Self screen is really a hidden superpower. We just need to disentangle it from X Windows.
Well done! I kind of hoped that someone would pipe up with "but we've already done this!" (I knew about the shared world stuff.) Right, now add a chat client. Just for people hacking on Self. It was just an idea, but one that might go interesting places. If we want to make people aware of Self. I do? Of course my idea could be a total waste of energy. People might not use it, preferring to hide in their hacker holes and lament having been alone all their lives.
Idea for which I will not hold any resentment when rotten tomatoes are thrown at me: I wish Self was more portable. I wish that all the brilliant, living people who made real live object systems go fast could combine forces.
CASEY (ducks slightly)
AUDIENCE (nervous silence)
CASEY What if we retargeted Self to run above the Cog/Spur variant of the Squeak VM, and then focused some effort on implementing the necessary bits on ARM and…
AUDIENCE, THROWING ROTTEN TOMATOES Noooooooeeess!
CASEY (drowns to death in tomato juice)
Boo! Hiss!
Actually not a bad idea if we could adjust the Cog JIT to inline getters and setters, otherwise I'm guessing it would be too slow?
I actually can't respond to this in any intelligent way. So I'm just going to blither inanely. Sounds like you're saying the Squeak VM doesn't have facilities for dealing with Self's attitude toward assignment ("it doesn't exist".) Seems like that would be pretty easy to add, I mean isn't assignment ultimately a primitive in the Self VM anyway? The bigger work is the messy speculative inlining stuff in general. There are people working on that. Even thought I heard that David Ungar was working with Eliot Miranda on optimizing Squeak's GC, so it seems like with the two of them working on it, the assignment problem could probably be moot pretty quickly if it met everyone's goals at the right time...
Anyway, some good arguments, and thanks for your reply.
P.S.
In my last life, I was a Software Comedian. If I've offended anyone, it was all in service of a couple of uninformed but poignant arguments wrapped in cookies and laughs.
Casey
:) R
On Tue, Sep 16, 2014 at 11:39 PM, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Haha, but that defeats the entire point. The browser must be written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by.
There's a somewhat ancient web browser written in Self. See here how to load/run it:
<bluishcoder.co.nz/2009/07/27/displaying-images-with-self.html>
Hey Chris. Yeah, Squeak has that same problem too. The browser that was designed to meet the specifications of NCSA Mosaic. But the code for these things is virtually useless now.
The browser, and I'm sure that I'm preaching to the converted here, has absolutely eclipsed the complexity of the operating system that it really actually needs to run above. Another way of saying this: the browser has replaced the operating system.
I'm going to go even further with this argument. It isn't comfortable to talk about and I'm not even comfortable saying it, but: systems like Smalltalk and Self were designed above all to be used by people. The web browser as we have it today is an amalgamation of poorly thought out ideas all jammed together to make something, which in its millions of lines of total code (I count dependencies,) still isn't as good at its job as Self or Smalltalk are.
If we could just magically live in a world where the better ideas won, we wouldn't even be here. We're here because we have a head full of better ideas than the status quo, and we want to fix the status quo.
The bitch of it all is: without a way to give users what they actually want, (never mind that Facebook is in poor taste) we're basically dead. A bunch of academics, lamenting what went wrong with personal computing.
Actually, my "worst idea ever" could really turn the tides. Build the next Google Chrome using Self. Maybe as an accident the computer finally gets to be a "bicycle for the mind."
Of course, this is all absolute crazy-talk:)
On Sep 16, 2014, at 4:44 AM, "Chris Double chris.double@double.co.nz [self-interest]" self-interest@yahoogroups.com wrote:
On Tue, Sep 16, 2014 at 11:39 PM, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Haha, but that defeats the entire point. The browser must be written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by.
There's a somewhat ancient web browser written in Self. See here how to load/run it:
<bluishcoder.co.nz/2009/07/27/displaying-images-with-self.html>
i think we should let go of the notion that the "www" is the only hyperlinking system we should focus on. i believe the "www" is way over-rated.
using the web is like engaging in amateur sex. there's lots of loud action, but very little real pleasure, so you end up doing more of it.
~mayuresh
ps: apologies if i have offended anyones sensibilities.
On 2014-09-16 17:53, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Hey Chris. Yeah, Squeak has that same problem too. The browser that was designed to meet the specifications of NCSA Mosaic. But the code for these things is virtually useless now.
The browser, and I'm sure that I'm preaching to the converted here, has absolutely eclipsed the complexity of the operating system that it really actually needs to run above. Another way of saying this: the browser has replaced the operating system.
I'm going to go even further with this argument. It isn't comfortable to talk about and I'm not even comfortable saying it, but: systems like Smalltalk and Self were designed above all to be used by people. The web browser as we have it today is an amalgamation of poorly thought out ideas all jammed together to make something, which in its millions of lines of total code (I count dependencies,) still isn't as good at its job as Self or Smalltalk are.
If w e could just magically live in a world where the better ideas won, we wouldn't even be here. We're here because we have a head full of better ideas than the status quo, and we want to fix the status quo.
The bitch of it all is: without a way to give users what they actually want, (never mind that Facebook is in poor taste) we're basically dead. A bunch of academics, lamenting what went wrong with personal computing.
Actually, my "worst idea ever" could really turn the tides. Build the next Google Chrome using Self. Maybe as an accident the computer finally gets to be a "bicycle for the mind."
Of course, this is all absolute crazy-talk:)
On Sep 16, 2014, at 4:44 AM, "Chris Double chris.double@double.co.nz [self-interest]" self-interest@yahoogroups.com wrote:
< blockquote type="cite">
On Tue, Sep 16, 2014 at 11:39 PM, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Haha, but that defeats the entire point. The browser must be
written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by.
There's a somewhat ancient web browser written in Self. See here how to load/run it:
<bluishcoder.co.nz/2009/07/27/displaying-images-with-self.html [1]>
The web is fundamentally broken. I'm not advocating it because it's any good, I'm advocating it because it's a way for all of this hard work to survive, man!
If you wanna see a better web? Man, just check out Ted Nelson's work. He needs help with it, too, because his vision reaches beyond his own capability to make it real as a human being. He's got mostly the idea right, he just needs some people to help him make it happen.
Think about it: two-way web links that cannot break. Attribution by design. It's so far ahead of its time and yet it hurts somewhat that we haven't actually accomplished even this seminal, early idea yet.
Anyway, I've always held that people with passion will do better work than those without it, regardless of "aptitude." And if Douglas Engelbart was here, all I could possibly do is thank him for daring to do and write what he did. And maybe a big "thank you" hug.
Also, Mayuresh, when it comes to sex: I would be a professional if that was legal in this state. Bwahahaha!
Casey
On Sep 16, 2014, at 5:33 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
i think we should let go of the notion that the "www" is the only hyperlinking system we should focus on. i believe the "www" is way over-rated.
using the web is like engaging in amateur sex. there's lots of loud action, but very little real pleasure, so you end up doing more of it.
~mayuresh
ps: apologies if i have offended anyones sensibilities.
On 2014-09-16 17:53, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Hey Chris. Yeah, Squeak has that same problem too. The browser that was designed to meet the specifications of NCSA Mosaic. But the code for these things is virtually useless now.
The browser, and I'm sure that I'm preaching to the converted here, has absolutely eclipsed the complexity of the operating system that it really actually needs to run above. Another way of saying this: the browser has replaced the operating system.
I'm going to go even further with this argument. It isn't comfortable to talk about and I'm not even comfortable saying it, but: systems like Smalltalk and Self were designed above all to be used by people. The web browser as we have it today is an amalgamation of poorly thought out ideas all jammed together to make something, which in its millions of lines of total code (I count dependencies,) still isn't as good at its job as Self or Smalltalk are.
If w e could just magically live in a world where the better ideas won, we wouldn't even be here. We're here because we have a head full of better ideas than the status quo, and we want to fix the status quo.
The bitch of it all is: without a way to give users what they actually want, (never mind that Facebook is in poor taste) we're basically dead. A bunch of academics, lamenting what went wrong with personal computing.
Actually, my "worst idea ever" could really turn the tides. Build the next Google Chrome using Self. Maybe as an accident the computer finally gets to be a "bicycle for the mind."
Of course, this is all absolute crazy-talk:)
On Sep 16, 2014, at 4:44 AM, "Chris Double chris.double@double.co.nz [self-interest]" self-interest@yahoogroups.com wrote:
< blockquote type="cite">
On Tue, Sep 16, 2014 at 11:39 PM, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Haha, but that defeats the entire point. The browser must be
written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by.
There's a somewhat ancient web browser written in Self. See here how to load/run it:
<bluishcoder.co.nz/2009/07/27/displaying-images-with-self.html [1]>
yes, i have heard and read about "xanadu".
also, nice to know you have scope for an alternative career path. >:)
~mayuresh
On 2014-09-16 18:43, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
The web is fundamentally broken. I'm not advocating it because it's any good, I'm advocating it because it's a way for all of this hard work to survive, man!
If you wanna see a better web? Man, just check out Ted Nelson's work. He needs help with it, too, because his vision reaches beyond his own capability to make it real as a human being. He's got mostly the idea right, he just needs some people to help him make it happen.
Think about it: two-way web links that cannot break. Attribution by design. It's so far ahead of its time and yet it hurts somewhat that we haven't actually accomplished even this seminal, early idea yet.
Anyway, I've always held that people with passion will do better work than those without it, regardless of "aptitude." And if Douglas Engelbart was here, all I could possibly do is thank him for daring to do and write what he did. And maybe a big "thank y ou" hug.
Also, Mayuresh, when it comes to sex: I would be a professional if that was legal in this state. Bwahahaha!
Casey
On Sep 16, 2014, at 5:33 AM, "Mayuresh Kathe mayuresh@kathe.in [self-interest]" self-interest@yahoogroups.com wrote:
i think we should let go of the notion that the "www" is the only hyperlinking system we should focus on. i believe the "www" is way over-rated.
using the web is like engaging in amateur sex. there's lots of loud action, but very little real pleasure, so you end up doing more of it.
~mayuresh
ps: apologies if i have offended anyones sensibilities.
On 2014-09-16 17:53, Casey Ransberger casey.obrien.r@gmail.com [self-interest] wrote:
Hey Chris. Yeah, Squeak has that same problem too. The browser
that
was designed to meet the specifications of NCSA Mosaic. But the
code
for these things is virtually useless now.
The browser, and I'm sure that I'm preaching to the converted
here,
has absolutely eclipsed the complexity of the operating system
that it
really actually needs to run above. Another way of saying this:
the
browser has replaced the operating system.
I'm going to go even further with this argument. It isn't
comfortable
to talk about and I'm not even comfortable saying it, but:
systems
like Smalltalk and Self were designed above all to be used by
people.
The web browser as we have it today is an amalgamation of poorly thought out ideas all jammed together to make something, which in
its
millions of lines of total code (I count dependencies,) still
isn't as
good at its job as Self or Smalltalk are.
If w e could just magically live in a world where the better
ideas
won, we wouldn't even be here. We're here because we have a head
full
of better ideas than the status quo, and we want to fix the
status
quo.
The bitch of it all is: without a way to give users what they
actually
want, (never mind that Facebook is in poor taste) we're basically dead. A bunch of academics, lamenting what went wrong with
personal
computing.
Actually, my "worst idea ever" could really turn the tides. Build
the
next Google Chrome using Self. Maybe as an accident the computer finally gets to be a "bicycle for the mind."
Of course, this is all absolute crazy-talk:)
On Sep 16, 2014, at 4:44 AM, "Chris Double
chris.double@double.co.nz
[self-interest]" self-interest@yahoogroups.com wrote:
< blockquote type="cite">
On Tue, Sep 16, 2014 at 11:39 PM, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Haha, but that defeats the entire point. The browser must be
written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web
browser,
we could seriously run on nearly bare metal and get by.
There's a somewhat ancient web browser written in Self. See here
how
to load/run it:
<bluishcoder.co.nz/2009/07/27/displaying-images-with-self.html
[1] [1]>
On 16 Sep 2014, at 9:39 pm, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
On Sep 16, 2014, at 2:34 AM, "Russell Allen mail@russell-allen.com [self-interest]" self-interest@yahoogroups.com wrote:
On 16 Sep 2014, at 5:17 pm, Casey Ransberger casey.obrien.r@gmail.com [self-interest] self-interest@yahoogroups.com wrote:
Web development framework. Okay, so that isn't really fun at all, but it *might* create some new interest in the project.
We now have an almost web server, which I'm running selflangauge.org on behind nginx
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Awesome. Can I read the code somewhere?
I've split it out into http://github.com/russellallen/self-webserver
It's more a sketch of a webserver than something real :)
Mother of Stupid Ideas: do a web browser and fire 90% of the operating system, which is nowadays a life support system for a web browser anyway. I've been wanting to do this in Squeak since I arrived unwashed at the threshold of the mysteries of the message send. In Self, though, one of the ideas I had could really work better than in any other system presently: one could use direct, live manipulation of the morphs that comprise a web page to edit the actual page in a WYSIWYG fashion, and then use a variant of the object transporter, maybe with some parsing expression grammar sauce, to idea send a message which makes the page recursively render itself as HTML, CSS, and Javascript. It's like FrontPage, but without all of the suck! Of course, we'd need recruits, so...
Oh that's easy. Write a javascript->self translator, run webkit through emscripten and Bob's your uncle :p
Haha, but that defeats the entire point. The browser must be written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by. It's an enormous amount of work to support a broken paradigm though, so I'm not oblivious to why it hasn't happened yet.
You could easily have a Linux kernel boot into Self (with or without a really cut down userland)
Big problems for me are:
(1) only 32 bit. So either we write a new 64 bit VM, or we run lots of Self vms messaging each other (2) complete lack of security within a Self world. ie code can do abominations like "0 _Quit"
Russell
Self mailing list wrote
(2) complete lack of security within a Self world. ie code can do abominations like "0 _Quit"
Russell
This is where Korz comes in, right?
-- View this message in context: http://forum.selflanguage.org/Quiet-in-Self-land-tp7572769p7572797.html Sent from the Self mailing list archive at Nabble.com.
On 09/17/2014 05:15 AM, Russell Allen mail@russell-allen.com [self-interest] wrote:
On 16 Sep 2014, at 9:39 pm, Casey Ransberger casey.obrien.r@gmail.com mailto:casey.obrien.r@gmail.com [self-interest] <self-interest@yahoogroups.com mailto:self-interest@yahoogroups.com> wrote:
On Sep 16, 2014, at 2:34 AM, "Russell Allen mail@russell-allen.com mailto:mail@russell-allen.com [self-interest]" <self-interest@yahoogroups.com mailto:self-interest@yahoogroups.com> wrote:
On 16 Sep 2014, at 5:17 pm, Casey Ransberger casey.obrien.r@gmail.com mailto:casey.obrien.r@gmail.com [self-interest] <self-interest@yahoogroups.com mailto:self-interest@yahoogroups.com> wrote:
Web development framework. Okay, so that isn't really fun at all, but it *might* create some new interest in the project.
We now have an almost web server, which I'm running selflangauge.org http://selflangauge.org/ on behind nginx
For the simple sites I've written most web frameworks seem weirdly complex to me, but it's not my area so I assume they are useful for people who need them.
Awesome. Can I read the code somewhere?
I've split it out into http://github.com/russellallen/self-webserver
It's more a sketch of a webserver than something real :)
Mother of Stupid Ideas: do a web browser and fire 90% of the operating system, which is nowadays a life support system for a web browser anyway. I've been wanting to do this in Squeak since I arrived unwashed at the threshold of the mysteries of the message send. In Self, though, one of the ideas I had could really work better than in any other system presently: one could use direct, live manipulation of the morphs that comprise a web page to edit the actual page in a WYSIWYG fashion, and then use a variant of the object transporter, maybe with some parsing expression grammar sauce, to idea send a message which makes the page recursively render itself as HTML, CSS, and Javascript. It's like FrontPage, but without all of the suck! Of course, we'd need recruits, so...
Oh that's easy. Write a javascript->self translator, run webkit through emscripten and Bob's your uncle :p
Haha, but that defeats the entire point. The browser must be written in Self. That's how I get to fire my operating system. It could be Self, it could be Squeak, but if we ever built a web browser, we could seriously run on nearly bare metal and get by. It's an enormous amount of work to support a broken paradigm though, so I'm not oblivious to why it hasn't happened yet.
You could easily have a Linux kernel boot into Self (with or without a really cut down userland)
Big problems for me are:
(1) only 32 bit. So either we write a new 64 bit VM, or we run lots of Self vms messaging each other (2) complete lack of security within a Self world. ie code can do abominations like "0 _Quit"
why "0 _Quit" and not just "_Quit"?
Gordon
Russell
On 19 Sep 2014, at 2:05 am, Gordon Cichon selfinterest@lists.cichon.com [self-interest] self-interest@yahoogroups.com wrote:
On 09/17/2014 05:15 AM, Russell Allen mail@russell-allen.com [self-interest] wrote:
(2) complete lack of security within a Self world. ie code can do abominations like "0 _Quit"
why "0 _Quit" and not just "_Quit"? ,_._,___
Because I was conflating two things in my head and failed to communicate both of them :)
1st is the primitive issue - anyone can send _Quit to themselves for example. We could maybe solve this by capability tokens? ie _Quit: token and then we make sure only the objects we want to be able to _Quit can get their hands on the token
2nd is the issue of objects importing lobby (and thus the whole image) as a parent slot. So if we had a "rot13: theString" method, which took only a string and rot13'd it, that method can go "theString lobby" and voila has access to everything. Best I can think at the moment is to re-engineer a core of 'safe' objects including booleans, strings, collections etc so that you can't get to the main lobby from them, only to a 'core lobby'
Russell
On Wed, Sep 17, 2014 at 3:15 PM, Russell Allen mail@russell-allen.com [self-interest] self-interest@yahoogroups.com wrote:
(2) complete lack of security within a Self world. ie code can do abominations like "0 _Quit"
Maybe some form of permissions system like that in MOO languages (eg. LambdaMOO [1]) could be inspiration. This provides read/write/change bits for slots and owner/wizard/programmer bits.
Stack Overflow has started a new documentation platform:
http://stackoverflow.com/tour/documentation
Maybe interesting for Self?
Jason
Interesting. Seems to be focussed on showing examples for specific tasks rather than structural overviews. I could definitely see myself using it for Git, where my normal approach is something like the XKCD comic: https://xkcd.com/1597/
I wonder how it goes with the larger conceptual/framework overview stuff.
My dream doc for Self would be something like the Smalltalk-80 Blue Book: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf
Russell
On 22 Jul 2016, at 7:58 AM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
Stack Overflow has started a new documentation platform:
http://stackoverflow.com/tour/documentation http://stackoverflow.com/tour/documentation
Maybe interesting for Self?
Jason
On 22 Jul 2016, at 9:53, Russell Allen mail@russell-allen.com [self-interest] wrote:
I wonder how it goes with the larger conceptual/framework overview stuff.
I don't know. I guess I was dreaming of harnessing the power of the new and shiny, even if it's nothing special. :-)
My dream doc for Self would be something like the Smalltalk-80 Blue Book: [http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf%5D(http://st...)
Thank you for reminding me/us of that. It is great, isn't it?
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
Jason
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me@xeny.net [self-interest] napsal(a):
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
I am kind of fighting with this now, when I am trying to write first projects in Self and almost no method in collections is documented. Sometimes it may be clear from the name, but even then it is kinda hard to deduce what types the method accepts as parameters (strings especially, where there is methods that accepts just one character long strings).
I think that documentation in method comments would be great for the web browsers like http://browser.russell.larrikin.org.
On the slightly different topic: I implemented the splitBy:* method, which allows you to split source strings by variable length strings. Something like python's str.split(str). Either I wasn't able to find it, or it wasn't there. Would it be possible (or desirable) to add it to official Self distribution (if it isn't already there)? I use it all the time for simple text parsing like
protocol: ('http://domain' splitBy: '://') first
Another issue - the unittests. I've managed to find assert:, and assert: Equals:, but they are hidden somewhere deep in the test suite for traits oddball and there is also assert: in traits block and I am confused on what should I use.
* bootstrap addSlotsTo: bootstrap stub -> 'traits' -> 'string' -> () From: ( | { 'Category: transforming\x7fCategory: tokenizing\x7fComment: Split the string by the `word`. If the word is empty, return string splitted by charactes. If it is nil, return list with the whole string.\x7fModuleInfo: Module: http_client InitialContents: FollowSlot'
splitBy: word = ( | current <- 0. full_size. out. | out: list copy. word = nil ifTrue: [^out add: self].
full_size: self size. full_size <= word size ifTrue: [^out]. word size = 0 ifTrue: [^self asList.].
[current <= full_size] whileTrue: [ self findSubstring: word StartingAt: current IfPresent: [| :pos. | out add: (self copyFrom: current UpTo: pos). current: pos + (word size). ] IfAbsent: [ (current = 0) ifTrue: [^ (list copy) add: self.].
out add: (self copyFrom: current UpTo: full_size). ^out. ]. ]. ^out). } | )
Hey Bystroushaak Which snapshot are you using? Are you building one from the head on Github or using the 4.4 snapshot? I'm sure I added splitOn: as well as joinUsing: and slice: at some point Cheers Russell
On 23 Jul 2016, at 7:18 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me@xeny.net [self-interest] napsal(a):
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
I am kind of fighting with this now, when I am trying to write first projects in Self and almost no method in collections is documented. Sometimes it may be clear from the name, but even then it is kinda hard to deduce what types the method accepts as parameters (strings especially, where there is methods that accepts just one character long strings).
I think that documentation in method comments would be great for the web browsers like http://browser.russell.larrikin.org.
On the slightly different topic: I implemented the splitBy:* method, which allows you to split source strings by variable length strings. Something like python's str.split(str). Either I wasn't able to find it, or it wasn't there. Would it be possible (or desirable) to add it to official Self distribution (if it isn't already there)? I use it all the time for simple text parsing like
protocol: ('http://domain' splitBy: '://') first
Another issue - the unittests. I've managed to find assert:, and assert: Equals:, but they are hidden somewhere deep in the test suite for traits oddball and there is also assert: in traits block and I am confused on what should I use.
bootstrap addSlotsTo: bootstrap stub -> 'traits' -> 'string' -> () From: ( | { 'Category: transforming\x7fCategory: tokenizing\x7fComment: Split the string by the `word`. If the word is empty, return string splitted by charactes. If it is nil, return list with the whole string.\x7fModuleInfo: Module: http_client InitialContents: FollowSlot'
splitBy: word = ( | current <- 0. full_size. out. | out: list copy. word = nil ifTrue: [^out add: self]. full_size: self size. full_size <= word size ifTrue: [^out]. word size = 0 ifTrue: [^self asList.]. [current <= full_size] whileTrue: [ self findSubstring: word StartingAt: current IfPresent: [| :pos. | out add: (self copyFrom: current UpTo: pos). current: pos + (word size). ] IfAbsent: [ (current = 0) ifTrue: [^ (list copy) add: self.]. out add: (self copyFrom: current UpTo: full_size). ^out. ]. ]. ^out). } | )
Yahoo Groups Links
I am using the ~year old snapshot downloaded from the web. I will have to port it to newer version. I didn't wanted to do it yet, because I have there few opened things I work on, but this is definitely strong argument :)
Dne 23.7.2016 v 00:14 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
Hey Bystroushaak Which snapshot are you using? Are you building one from the head on Github or using the 4.4 snapshot? I'm sure I added splitOn: as well as joinUsing: and slice: at some point Cheers Russell
I don't think there is to much that has changed to break code, mostly it has been adding functionality and cosmetic. Porting to the latest shouldn't be too hard.
Basically just clone the repo, cd to the objects dir and run
Self -f worldBuilder.self -o morphic
When the Self prompt comes up, do
desktop open
Russell
Sent from my phone
On 23 Jul 2016, at 8:58 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
I am using the ~year old snapshot downloaded from the web. I will have to port it to newer version. I didn't wanted to do it yet, because I have there few opened things I work on, but this is definitely strong argument :)
Dne 23.7.2016 v 00:14 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
Hey Bystroushaak Which snapshot are you using? Are you building one from the head on Github or using the 4.4 snapshot? I'm sure I added splitOn: as well as joinUsing: and slice: at some point Cheers Russell
Yahoo Groups Links
I have found that comments that document code tend to lie. Machine-checkable info is more reliable. In a live environment, such as Self, you can just try something out to see if you are passing in the right argument. It's a different way to work. The other alternative that IMO can be effective is static typing. Dynamically-typed languages without live, graphical IDEs are the worst of both worlds.
- David (from iPad, typos likely)
On Jul 22, 2016, at 2:18 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me@xeny.net [self-interest] napsal(a):
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
I am kind of fighting with this now, when I am trying to write first projects in Self and almost no method in collections is documented. Sometimes it may be clear from the name, but even then it is kinda hard to deduce what types the method accepts as parameters (strings especially, where there is methods that accepts just one character long strings).
I think that documentation in method comments would be great for the web browsers like http://browser.russell.larrikin.org.
On the slightly different topic: I implemented the splitBy:* method, which allows you to split source strings by variable length strings. Something like python's str.split(str). Either I wasn't able to find it, or it wasn't there. Would it be possible (or desirable) to add it to official Self distribution (if it isn't already there)? I use it all the time for simple text parsing like
protocol: ('http://domain' splitBy: '://') first
Another issue - the unittests. I've managed to find assert:, and assert: Equals:, but they are hidden somewhere deep in the test suite for traits oddball and there is also assert: in traits block and I am confused on what should I use.
bootstrap addSlotsTo: bootstrap stub -> 'traits' -> 'string' -> () From: ( | { 'Category: transforming\x7fCategory: tokenizing\x7fComment: Split the string by the `word`. If the word is empty, return string splitted by charactes. If it is nil, return list with the whole string.\x7fModuleInfo: Module: http_client InitialContents: FollowSlot'
splitBy: word = ( | current <- 0. full_size. out. | out: list copy. word = nil ifTrue: [^out add: self]. full_size: self size. full_size <= word size ifTrue: [^out]. word size = 0 ifTrue: [^self asList.]. [current <= full_size] whileTrue: [ self findSubstring: word StartingAt: current IfPresent: [| :pos. | out add: (self copyFrom: current UpTo: pos). current: pos + (word size). ] IfAbsent: [ (current = 0) ifTrue: [^ (list copy) add: self.]. out add: (self copyFrom: current UpTo: full_size). ^out. ]. ]. ^out). } | )
Yahoo Groups Links
I guess we're talking at cross purposes. I'd like documentation of things that are not machine-checkable, like overviews of what the most important objects are and what they're for.
On 23 Jul 2016, at 10:58, David Ungar ungar@me.com [self-interest] wrote:
Machine-checkable info is more reliable.
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me@xeny.net [self-interest]Â napsal(a):
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
Sure, no argument there. Someone had written about parameter type comments. Self objects and slots can have comments in their annotations. Easy enough to write some reflective code to compile it, search it, etc.
- David (from iPad, typos likely)
On Jul 22, 2016, at 6:01 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
I guess we're talking at cross purposes. I'd like documentation of things that are not machine-checkable, like overviews of what the most important objects are and what they're for.
On 23 Jul 2016, at 10:58, David Ungar ungar@me.com [self-interest] wrote:
Machine-checkable info is more reliable.
Dne 22.7.2016 v 06:43 'Jason Grossman' spam-me@xeny.net [self-interest]Â napsal(a):
IMO the worst thing that ever happened to object-oriented programming was the idea that if we write good code our environments will automatically be self-documenting.
Yes, excellent.
And then there's also stuff that's even more high level than that.
For example, when I look through the object systems of Pharo or even the relatively small Io, I find a mixture of things that are intended for widespread use and things that are intended for niche uses, for lots of reasons (e.g. they're experimental, or they're optimised for only certain cases, or they're badly optimised but get correct results in corner cases, or they can talk to other obsolete systems, or ...). This can be shown in the internal documentation of the objects and sometime is (not always - grrr), but that's not where it's most useful, is it? I want to know before I start exploring which objects I should consider first.
On 23 Jul 2016, at 14:01, David Ungar ungar@me.com [self-interest] wrote:
Sure, no argument there. Someone had written about parameter type comments. Self objects and slots can have comments in their annotations. Easy enough to write some reflective code to compile it, search it, etc.
I first used Squeak 1.x and the system browse was enough for me to discover the system. Modern Pharo scares me though. The tools haven't scaled. Russell
Sent from my phone
On 23 Jul 2016, at 2:06 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
Yes, excellent.
And then there's also stuff that's even more high level than that.
For example, when I look through the object systems of Pharo or even the relatively small Io, I find a mixture of things that are intended for widespread use and things that are intended for niche uses, for lots of reasons (e.g. they're experimental, or they're optimised for only certain cases, or they're badly optimised but get correct results in corner cases, or they can talk to other obsolete systems, or ...). This can be shown in the internal documentation of the objects and sometime is (not always - grrr), but that's not where it's most useful, is it? I want to know before I start exploring which objects I should consider first.
On 23 Jul 2016, at 14:01, David Ungar ungar@me.com [self-interest] wrote:
Sure, no argument there. Someone had written about parameter type comments. Self objects and slots can have comments in their annotations. Easy enough to write some reflective code to compile it, search it, etc.
For higher level comments than individual objects, how about comments on name space objects? For instance globals? If you want a comment on a category, you could use a separate parent object instead.
- David (from iPad, typos likely)
On Jul 22, 2016, at 10:28 PM, Russell Allen mail@russell-allen.com [self-interest] self-interest@yahoogroups.com wrote:
I first used Squeak 1.x and the system browse was enough for me to discover the system. Modern Pharo scares me though. The tools haven't scaled. Russell
Sent from my phone
On 23 Jul 2016, at 2:06 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
Yes, excellent.
And then there's also stuff that's even more high level than that.
For example, when I look through the object systems of Pharo or even the relatively small Io, I find a mixture of things that are intended for widespread use and things that are intended for niche uses, for lots of reasons (e.g. they're experimental, or they're optimised for only certain cases, or they're badly optimised but get correct results in corner cases, or they can talk to other obsolete systems, or ...). This can be shown in the internal documentation of the objects and sometime is (not always - grrr), but that's not where it's most useful, is it? I want to know before I start exploring which objects I should consider first.
On 23 Jul 2016, at 14:01, David Ungar ungar@me.com [self-interest] wrote:
Sure, no argument there. Someone had written about parameter type comments. Self objects and slots can have comments in their annotations. Easy enough to write some reflective code to compile it, search it, etc.
Dne 23.7.2016 v 02:58 David Ungar ungar@me.com [self-interest] napsal(a):
I have found that comments that document code tend to lie. Machine-checkable info is more reliable.
I've seen this approach, but never understood it. Lying comments are bugs, which should be fixed and updated mercilessly. For me, it is no different from the bug in the code.
In a live environment, such as Self, you can just try something out to see if you are passing in the right argument. It's a different way to work.
Yes, I've noticed. But this is really hard for beginners, because it forces you to try everything in various ways, before you can make assumptions what the method does and use it. Result is, that it takes me 2 hours of testing and putting together mental image of the API to write the 30 lines long method.
This is also partially because I have to search for things and browse a lot of outliners and the environment is not really effective* and sometimes I just wish that there would be fuzzy full text search ala google.
Also for non-native english speaker, it is sometimes really hard to get what the method does just from the name and what the "k" argument means. From my experience, short description would be really helpful.
Dynamically-typed languages without live, graphical IDEs are the worst of both worlds.
I work as a python programmer. I've worked with larger codebases (40k+ cloc) and only way how this is manageable is extensive documentation. Also linters can help a lot.
Truth is, that I am still at least 100 times more effective in python. I know, that Self offers more, but for me, it is really hard to master it. Not the language, but the environment and stdlib. It feels like a toy with rough edges not worn out by a lot of users. But I like what it offers.
---
* So far, I've been able to notice following annoyances in UI:
- Ridiculous amount of scrolling (with the mouse, only vertical scrolling works).
I think there is need for some kind of shortcut to jump half the page up/down/left/right. Maybe cmd+arrow. I know, that radar view may be used for jumping around, but I forget it somewhere all the time and also it is mouse oriented.
- Ridiculous amounts of clicking on triangles to expand categories and subcategories in outliners.
Maybe it would help to expand everything by default. I will have to try this.
- Editor. I know that there is some kind of basic emacs shortcuts support, but I think this will need to be updated and configurable. Mainly because no one who began using computer in the windows era knows the emacs shortcuts, if he is not already using the emacs. Also support for indentation, highlight and infinite undo/redo would be nice.
-
Note: I did write it here to discuss this, not because I expect that someone will fix this.
- David (from iPad, typos likely)
On Jul 23, 2016, at 5:33 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Dne 23.7.2016 v 02:58 David Ungar ungar@me.com [self-interest] napsal(a):
I have found that comments that document code tend to lie. Machine-checkable info is more reliable.
I've seen this approach, but never understood it. Lying comments are bugs, which should be fixed and updated mercilessly. For me, it is no different from the bug in the code.
In my experience such comments do not get fixed. Redundancy that is enforced manually is both ineffective and immoral. Ineffective because things do get out of sync. Immoral because it uses people's time for something that could be automated, decreasing the amount of time for creativity in the world. But all this is relative to my experience and value system. We could discuss which of us has more experience, but we are unlikely to change each other's values.
In a live environment, such as Self, you can just try something out to see if you are passing in the right argument. It's a different way to work.
Yes, I've noticed. But this is really hard for beginners, because it forces you to try everything in various ways, before you can make assumptions what the method does and use it. Result is, that it takes me 2 hours of testing and putting together mental image of the API to write the 30 lines long method.
That's not how I recall learning Smalltalk, but maybe you'll get faster as you keep at it. I don't think the Blue Book existed when I learned Smalltalk.
This is also partially because I have to search for things and browse a lot of outliners and the environment is not really effective* and sometimes I just wish that there would be fuzzy full text search ala google.
Yes that would be nice. You might be aware that findSlot implements limited regular expressions. Do you have any interest in writing such a search tool? All the reflective facilities are there.
Also for non-native english speaker, it is sometimes really hard to get what the method does just from the name and what the "k" argument means. From my experience, short description would be really helpful.
Why do you think it is harder for a non-native English speaker to understand "k" than a native one? Could you show us the method where the "k" argument was confusing? I find that the method itself usually furnishes a nice short description.
Dynamically-typed languages without live, graphical IDEs are the worst of both worlds.
I work as a python programmer. I've worked with larger codebases (40k+ cloc) and only way how this is manageable is extensive documentation. Also linters can help a lot.
IMO, Python is probably broken because it has neither static typing, nor a live environment. But I little experience in it. It doesn't surprise me that extensive, manually-maintained documentation would seem attractive given such a state of affairs. But there are far better ways.
Truth is, that I am still at least 100 times more effective in python.
How long have you worked with Python? How long with Self? The trouble you are feeling with Self may well be the result of learning new ways to think. I also suspect your factor of 100 is an exaggeration. Have you timed yourself with a stopwatch?
Have you read Hanenberg's work? He has measured the effects of various language tradeoffs on productivity, carefully. Confirmation bias makes us all poor evaluators of our informally-assessed experiences.
I know, that Self offers more, but for me, it is really hard to master it. Not the language, but the environment and stdlib. It feels like a toy with rough edges not worn out by a lot of users. But I like what it offers.
Thank you for the kind words. I am sorry you are frustrated. But it's different. You may find it easier to pick up Smalltalk first. The Self project developed much of what become ubiquitous later, including the use of cartoon animation techniques for interfaces, mirrors for reflection, and adaptive optimization and deoptimization. It also came up with a prototype-based object model that heavily influenced NewtonScript, and somewhat influenced JavaScript. All this in about seven years and with 6 people, on computers with 16Mb of RAM that ran much more slowly than today. Since 1993, it has been largely unfunded. If you find rough edges, I hope you fix them! It is amazing to me that Russell and others do as much as they do.
You might want to watch an experienced Self developer work sometime. One can really fly! No need to edit-and-compile. Write your code in the debugger. Move things around, arrange columns of yanked-out method outliners from here and there to keep all the things you need to look at in one place. Fix a bug and restart where the bug hit. Shortcuts for implementers, senders, findSlot.
I'll come back to my suggestion that you learn Smalltalk. Once you're comfortable there, try Self again.
BTW, have you find the double-click shortcut for the triangles?
And I can't resist this--thanks in advance for understanding-- "The fault, dear Brutus, is not in our stars, But in ourselves" -- Shakespeare
(You should have seen me learning a functional type system last year!)
- So far, I've been able to notice following annoyances in UI:
- Ridiculous amount of scrolling (with the mouse, only vertical
scrolling works).
I think there is need for some kind of shortcut to jump half the page up/down/left/right. Maybe cmd+arrow. I know, that radar view may be used for jumping around, but I forget it somewhere all the time and also it is mouse oriented.
- Ridiculous amounts of clicking on triangles to expand categories and
subcategories in outliners.
Maybe it would help to expand everything by default. I will have to try this.
- Editor. I know that there is some kind of basic emacs shortcuts
support, but I think this will need to be updated and configurable. Mainly because no one who began using computer in the windows era knows the emacs shortcuts, if he is not already using the emacs. Also support for indentation, highlight and infinite undo/redo would be nice.
Note: I did write it here to discuss this, not because I expect that someone will fix this.
Yahoo Groups Links
I ought to make one sometime. Of course, it’s not fair—I’ve had the the shortcuts in my fingers for 23 years.
On Jul 23, 2016, at 10:25 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
On 24 Jul 2016, at 15:22, David Ungar ungar@me.com mailto:ungar@me.com [self-interest] wrote:
You might want to watch an experienced Self developer work sometime.
Videos of this would be so great.
If it's fun for you to show off the shortcuts, and getting into that spirit gets the video made, that sounds like win-win to me.
On 24 Jul 2016, at 16:40, David Ungar ungar@me.com [self-interest] wrote:
I ought to make one sometime. Of course, it’s not fair—I’ve had the the shortcuts in my fingers for 23 years.
On Jul 23, 2016, at 10:25 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
On 24 Jul 2016, at 15:22, David Ungar ungar@me.com mailto:ungar@me.com [self-interest] wrote:
You might want to watch an experienced Self developer work sometime.
Videos of this would be so great.
I would love to see a video, too. There is an initial 'hump' to get over with learning Self that is greatly helped by having someone do a live demo. Unfortunately, most of us have not had that pleasure (and I am sure it is a pleasure and revelation) ... a video would be a good second-best. The classic video was just enough to make me salivate, but is grainy and hard to see, and all too brief!
David
On Jul 23, 2016 23:42, "'Jason Grossman' spam-me@xeny.net [self-interest]" < self-interest@yahoogroups.com> wrote:
If it's fun for you to show off the shortcuts, and getting into that spirit gets the video made, that sounds like win-win to me.
On 24 Jul 2016, at 16:40, David Ungar ungar@me.com [self-interest] wrote:
I ought to make one sometime. Of course, it’s not fair—I’ve had the the shortcuts in my fingers for 23 years.
On Jul 23, 2016, at 10:25 PM, 'Jason Grossman' spam-me@xeny.net [self-interest] self-interest@yahoogroups.com wrote:
On 24 Jul 2016, at 15:22, David Ungar ungar@me.com mailto:ungar@me.com [self-interest] wrote:
You might want to watch an experienced Self developer work sometime.
Videos of this would be so great.
Posted by: "Jason Grossman" spam-me@xeny.net
Yahoo Groups Links
Dne 24.7.2016 v 07:22 David Ungar ungar@me.com [self-interest] napsal(a):
Yes that would be nice. You might be aware that findSlot implements limited regular expressions. Do you have any interest in writing such a search tool? All the reflective facilities are there.
I may be, but can't say when I will get to do it. But I've put it to my TODO list.
Why do you think it is harder for a non-native English speaker to understand "k" than a native one?
I supposed that native speaker may do proper expansion of the abbreviation.
Could you show us the method where the "k" argument was confusing? I find that the method itself usually furnishes a nice short description.
trats string is full of one character long arguments, if I recall correctly.
How long have you worked with Python? How long with Self? The trouble you are feeling with Self may well be the result of learning new ways to think. I also suspect your factor of 100 is an exaggeration. Have you timed yourself with a stopwatch?
Almost 10 years now. I will have to try to do some benchmarks.
Thank you for the kind words. I am sorry you are frustrated. But it's different. You may find it easier to pick up Smalltalk first.
I did played with Pharo and did some small projects in it. I liked the environment, but I had strong feeling, that the class based model is wrong for image based systems.
The Self project developed much of what become ubiquitous later, including the use of cartoon animation techniques for interfaces, mirrors for reflection, and adaptive optimization and deoptimization. It also came up with a prototype-based object model that heavily influenced NewtonScript, and somewhat influenced JavaScript. All this in about seven years and with 6 people, on computers with 16Mb of RAM that ran much more slowly than today. Since 1993, it has been largely unfunded. If you find rough edges, I hope you fix them! It is amazing to me that Russell and others do as much as they do.
I've read about the development and I don't mean to criticize it. Self is amazing project. I just feel like there is still a space for improvement in the user experience compartment.
You might want to watch an experienced Self developer work sometime. One can really fly! No need to edit-and-compile. Write your code in the debugger. Move things around, arrange columns of yanked-out method outliners from here and there to keep all the things you need to look at in one place. Fix a bug and restart where the bug hit. Shortcuts for implementers, senders, findSlot.
I think that this could be really interesting. I've seen this is Smalltalk in several occasions and it was one of the motivations to learn it.
BTW, have you find the double-click shortcut for the triangles?
I did not. Thanks!
And I can't resist this--thanks in advance for understanding-- "The fault, dear Brutus, is not in our stars, But in ourselves" -- Shakespeare
(You should have seen me learning a functional type system last year!)
Oh, definitely. Sometimes I wish I was so plastic and open-minded to new things like when I was teenager.
Fun discussion! Would you like to name a particular method in traits string? I am curious about exactly what was confusing. I can think of possibilities, but am likely to just guess wrong.
Thanks,
- David
On Jul 24, 2016, at 5:55 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Dne 24.7.2016 v 07:22 David Ungar ungar@me.com [self-interest] napsal(a):
Yes that would be nice. You might be aware that findSlot implements limited regular expressions. Do you have any interest in writing such a search tool? All the reflective facilities are there.
I may be, but can't say when I will get to do it. But I've put it to my TODO list.
Why do you think it is harder for a non-native English speaker to understand "k" than a native one?
I supposed that native speaker may do proper expansion of the abbreviation.
Could you show us the method where the "k" argument was confusing? I find that the method itself usually furnishes a nice short description.
trats string is full of one character long arguments, if I recall correctly.
How long have you worked with Python? How long with Self? The trouble you are feeling with Self may well be the result of learning new ways to think. I also suspect your factor of 100 is an exaggeration. Have you timed yourself with a stopwatch?
Almost 10 years now. I will have to try to do some benchmarks.
Thank you for the kind words. I am sorry you are frustrated. But it's different. You may find it easier to pick up Smalltalk first.
I did played with Pharo and did some small projects in it. I liked the environment, but I had strong feeling, that the class based model is wrong for image based systems.
The Self project developed much of what become ubiquitous later, including the use of cartoon animation techniques for interfaces, mirrors for reflection, and adaptive optimization and deoptimization. It also came up with a prototype-based object model that heavily influenced NewtonScript, and somewhat influenced JavaScript. All this in about seven years and with 6 people, on computers with 16Mb of RAM that ran much more slowly than today. Since 1993, it has been largely unfunded. If you find rough edges, I hope you fix them! It is amazing to me that Russell and others do as much as they do.
I've read about the development and I don't mean to criticize it. Self is amazing project. I just feel like there is still a space for improvement in the user experience compartment.
You might want to watch an experienced Self developer work sometime. One can really fly! No need to edit-and-compile. Write your code in the debugger. Move things around, arrange columns of yanked-out method outliners from here and there to keep all the things you need to look at in one place. Fix a bug and restart where the bug hit. Shortcuts for implementers, senders, findSlot.
I think that this could be really interesting. I've seen this is Smalltalk in several occasions and it was one of the motivations to learn it.
BTW, have you find the double-click shortcut for the triangles?
I did not. Thanks!
And I can't resist this--thanks in advance for understanding-- "The fault, dear Brutus, is not in our stars, But in ourselves" -- Shakespeare
(You should have seen me learning a functional type system last year!)
Oh, definitely. Sometimes I wish I was so plastic and open-minded to new things like when I was teenager.
Yahoo Groups Links
addAll: c
- character? characters? copy? content?
mul: m Into: r
- r? I have no idea.
fillFrom: c fillWith: v interpolate: p From: v
- I really have no idea what the parameters is and what type.
printStringSize: s
- The s is for string, or size?
remove: x
- Is x the index or the character which should be removed? - Is it character or multicharacter string?
includes: v
- Again v is probably value, but it is character, or string? (Now I know that there is includesAll: c, but that is half the page down hidden in the category.)
Dne 24.7.2016 v 18:07 David Ungar ungar@me.com [self-interest] napsal(a):
Fun discussion! Would you like to name a particular method in traits string? I am curious about exactly what was confusing. I can think of possibilities, but am likely to just guess wrong.
Thanks,
- David
Great examples. But you omitted the source code.
Here are some:
in traits collection: addAll: c = ( c do: [ |:v. :k| add: v WithKey: k ]. self)
c is anything that responds to ‘do:', and the collection gets each element of c added to it. That’s what I would expect one could get from reading this code.
What responds to ‘do:’? Use implementors. You get lots of implementors, telling you that many things are possible for c, including: sets, dictionaries, collections, lists, etc.
What does ‘do:’ do? That’s where a knowledge of Smalltalk would be helpful. But you could run this:
'abc' do: [|:x| x printLine] and see what happens.
Perfect? Far from it. But there are techniques and ways of thinking that are different from what most people are used to.
3 do: [|:x| x printLine]
will work. More things tend to work with more things than in most other systems.
On Jul 24, 2016, at 12:13 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
addAll: c
- character? characters? copy? content?
mul: m Into: r
- r? I have no idea.
fillFrom: c fillWith: v interpolate: p From: v
- I really have no idea what the parameters is and what type.
printStringSize: s
- The s is for string, or size?
remove: x
- Is x the index or the character which should be removed?
- Is it character or multicharacter string?
includes: v
- Again v is probably value, but it is character, or string? (Now I know that there is includesAll: c, but that is half the page down hidden in the category.)
Dne 24.7.2016 v 18:07 David Ungar ungar@me.com [self-interest] napsal(a):
Fun discussion! Would you like to name a particular method in traits string? I am curious about exactly what was confusing. I can think of possibilities, but am likely to just guess wrong.
Thanks,
- David
Yahoo Groups Links
Ah. I've been able to find out on my own, there is no problem here. It is just that it would be more effective, if I could use methods just from the signature of their header. This kind of forces me to read the whole source code, which is time consuming.
Many times I know exactly what I want, I just don't know where it is in Self and what the name is.
Dne 24.7.2016 v 23:25 David Ungar ungar@me.com [self-interest] napsal(a):
Great examples. But you omitted the source code.
Here are some:
in traits collection: addAll: c = ( c do: [ |:v. :k| add: v WithKey: k ]. self)
c is anything that responds to ‘do:', and the collection gets each element of c added to it. That’s what I would expect one could get from reading this code.
What responds to ‘do:’? Use implementors. You get lots of implementors, telling you that many things are possible for c, including: sets, dictionaries, collections, lists, etc.
What does ‘do:’ do? That’s where a knowledge of Smalltalk would be helpful. But you could run this:
'abc' do: [|:x| x printLine] and see what happens.
Perfect? Far from it. But there are techniques and ways of thinking that are different from what most people are used to.
3 do: [|:x| x printLine]
will work. More things tend to work with more things than in most other systems.
I’m not sure you get it: there is no signature, no such concept in Self. That’s part of what I’m trying to say. It’s a different model of computation.
The concepts are more like natural language concepts. If a thing wants to pretend it’s like a collection, it will implement do:. It may only partially pretend and not implement all of collectionness. But that may be fine for a particular use case.
On Jul 24, 2016, at 2:30 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Ah. I've been able to find out on my own, there is no problem here. It is just that it would be more effective, if I could use methods just from the signature of their header. This kind of forces me to read the whole source code, which is time consuming.
Many times I know exactly what I want, I just don't know where it is in Self and what the name is.
Dne 24.7.2016 v 23:25 David Ungar ungar@me.com [self-interest] napsal(a):
Great examples. But you omitted the source code.
Here are some:
in traits collection: addAll: c = ( c do: [ |:v. :k| add: v WithKey: k ]. self)
c is anything that responds to ‘do:', and the collection gets each element of c added to it. That’s what I would expect one could get from reading this code.
What responds to ‘do:’? Use implementors. You get lots of implementors, telling you that many things are possible for c, including: sets, dictionaries, collections, lists, etc.
What does ‘do:’ do? That’s where a knowledge of Smalltalk would be helpful. But you could run this:
'abc' do: [|:x| x printLine] and see what happens.
Perfect? Far from it. But there are techniques and ways of thinking that are different from what most people are used to.
3 do: [|:x| x printLine]
will work. More things tend to work with more things than in most other systems.
Yahoo Groups Links
Alan Kay has at least one good explanation of this, and it might be worth including that in Self's documentation. I'm thinking of a bit of one of his videos - I could transcribe that if nobody knows anything better.
On 25 Jul 2016, at 7:45, David Ungar ungar@me.com [self-interest] wrote:
I’m not sure you get it: there is no signature, no such concept in Self. That’s part of what I’m trying to say. It’s a different model of computation.
The concepts are more like natural language concepts. If a thing wants to pretend it’s like a collection, it will implement do:. It may only partially pretend and not implement all of collectionness. But that may be fine for a particular use case.
On Jul 24, 2016, at 2:30 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Ah. I've been able to find out on my own, there is no problem here. It is just that it would be more effective, if I could use methods just from the signature of their header. This kind of forces me to read the whole source code, which is time consuming.
Many times I know exactly what I want, I just don't know where it is in Self and what the name is.
Dne 24.7.2016 v 23:25 David Ungar ungar@me.com [self-interest] napsal(a):
Great examples. But you omitted the source code.
Here are some:
in traits collection: addAll: c = ( c do: [ |:v. :k| add: v WithKey: k ]. self)
c is anything that responds to ‘do:', and the collection gets each element of c added to it. That’s what I would expect one could get from reading this code.
What responds to ‘do:’? Use implementors. You get lots of implementors, telling you that many things are possible for c, including: sets, dictionaries, collections, lists, etc.
What does ‘do:’ do? That’s where a knowledge of Smalltalk would be helpful. But you could run this:
'abc' do: [|:x| x printLine] and see what happens.
Perfect? Far from it. But there are techniques and ways of thinking that are different from what most people are used to.
3 do: [|:x| x printLine]
will work. More things tend to work with more things than in most other systems.
Yahoo Groups Links
Yahoo Groups Links
I mean message signature/header (sorry, I have no idea how to call it), eg `addAll: c`.
If it was written as `addAll: collection`, it would be much more clearer. It would be even better if the comment contained the information, that `collection` may be anything responding to `do:` message.
I know how the ducktyping works. My point was just that it is possible to put more informations into the API names and talk to the programmer, so he don't need to study whole source code.
Dne 24.7.2016 v 23:45 David Ungar ungar@me.com [self-interest] napsal(a):
I’m not sure you get it: there is no signature, no such concept in Self. That’s part of what I’m trying to say. It’s a different model of computation.
The concepts are more like natural language concepts. If a thing wants to pretend it’s like a collection, it will implement do:. It may only partially pretend and not implement all of collectionness. But that may be fine for a particular use case.
Yes, aCollection would help as compared to c. But what I think would be better is an explanation for do:. I think there might be one in one of the Self documents, come to think of it. The problem with ‘aCollection’ everywhere is that it’s a lot longer to type. The environment would ideally help with that.
On Jul 24, 2016, at 2:54 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
I mean message signature/header (sorry, I have no idea how to call it), eg `addAll: c`.
If it was written as `addAll: collection`, it would be much more clearer. It would be even better if the comment contained the information, that `collection` may be anything responding to `do:` message.
I know how the ducktyping works. My point was just that it is possible to put more informations into the API names and talk to the programmer, so he don't need to study whole source code.
Dne 24.7.2016 v 23:45 David Ungar ungar@me.com [self-interest] napsal(a):
I’m not sure you get it: there is no signature, no such concept in Self. That’s part of what I’m trying to say. It’s a different model of computation.
The concepts are more like natural language concepts. If a thing wants to pretend it’s like a collection, it will implement do:. It may only partially pretend and not implement all of collectionness. But that may be fine for a particular use case.
Yahoo Groups Links
I started out using aCollection or equivalent because that’s normal in Smalltalk, but I’ve really come to appreciate very short methods which are single liners without method slots - especially since they show up in outliners without expanding. And as I’ve become more familiar with the tools I find myself relying less on the names of method arguments for hints on how they work.
One place where the lack of explicit typing makes it harder is where method names are semantically overloaded - i.e. where the system has not just multiple implementations of someMethodName: but the multiple implementations mean different things. But maybe that scenario should be painful.
Russell
On 25 Jul 2016, at 7:57 AM, David Ungar ungar@me.com [self-interest] self-interest@yahoogroups.com wrote:
Yes, aCollection would help as compared to c. But what I think would be better is an explanation for do:. I think there might be one in one of the Self documents, come to think of it. The problem with ‘aCollection’ everywhere is that it’s a lot longer to type. The environment would ideally help with that.
On Jul 24, 2016, at 2:54 PM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
I mean message signature/header (sorry, I have no idea how to call it), eg `addAll: c`.
If it was written as `addAll: collection`, it would be much more clearer. It would be even better if the comment contained the information, that `collection` may be anything responding to `do:` message.
I know how the ducktyping works. My point was just that it is possible to put more informations into the API names and talk to the programmer, so he don't need to study whole source code.
Dne 24.7.2016 v 23:45 David Ungar ungar@me.com [self-interest] napsal(a):
I’m not sure you get it: there is no signature, no such concept in Self. That’s part of what I’m trying to say. It’s a different model of computation.
The concepts are more like natural language concepts. If a thing wants to pretend it’s like a collection, it will implement do:. It may only partially pretend and not implement all of collectionness. But that may be fine for a particular use case.
Yahoo Groups Links
Yahoo Groups Links
On 24 Jul 2016, at 10:33 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
- Ridiculous amount of scrolling (with the mouse, only vertical
scrolling works).
This counts as a bug I think because it works both ways on the Mac version.
I think there is need for some kind of shortcut to jump half the page up/down/left/right. Maybe cmd+arrow.
Actually this isn’t a bad idea. Let me see what I can do.
- Editor. I know that there is some kind of basic emacs shortcuts
support, but I think this will need to be updated and configurable. Mainly because no one who began using computer in the windows era knows the emacs shortcuts, if he is not already using the emacs. Also support for indentation, highlight and infinite undo/redo would be nice.
The inbuilt editor morphs are terrible :) we only get away with them because we mostly edit about six lines of monospaced text at a time…
Russell
This is for Bystroushaak :)
I’ve added functionality so if you hold down the control key and use the keyboard arrows (or the command key on Macs) then the desktop will scroll up/down/left/right by a third of the screen.
If you also hold down the shift key then you get turbocharged full screen jumps.
To check it out either build a snapshot from the latest sources or download one of:
files.selflanguage.org/development/self-20160725.zip http://files.selflanguage.org/development/self-20160725.zip or files.selflanguage.org/development/self-20160725.dmg http://files.selflanguage.org/development/self-20160725.dmg
Have fun, Russell
On 24 Jul 2016, at 10:33 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
- So far, I've been able to notice following annoyances in UI:
- Ridiculous amount of scrolling (with the mouse, only vertical
scrolling works).
I think there is need for some kind of shortcut to jump half the page up/down/left/right. Maybe cmd+arrow. I know, that radar view may be used for jumping around, but I forget it somewhere all the time and also it is mouse oriented.
Thanks, I love it.
Just one little detail: is it possible to change the shortcut to alt or win/cmd key? Ctrl+arrow is already used in the editor to jump around the words.
Dne 25.7.2016 v 04:46 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
This is for Bystroushaak :)
I’ve added functionality so if you hold down the control key and use the keyboard arrows (or the command key on Macs) then the desktop will scroll up/down/left/right by a third of the screen.
If you also hold down the shift key then you get turbocharged full screen jumps.
To check it out either build a snapshot from the latest sources or download one of:
files.selflanguage.org/development/self-20160725.zip http://files.selflanguage.org/development/self-20160725.zip or files.selflanguage.org/development/self-20160725.dmg http://files.selflanguage.org/development/self-20160725.dmg
Have fun, Russell
I’ve uploaded new builds of Self for OS X and Linux:
You can check it out by either building a snapshot from the latest sources or downloading one of:
http://files.selflanguage.org/development/self-20160807.zip http://files.selflanguage.org/development/self-20160807.dmg
Changes are:
commit a470b9f5637e1060b9593720ff08da9f2ecdbce8 Author: Russell Allen mail@russell-allen.com Date: Sun Aug 7 15:56:29 2016 +1000
Bug fix to outliner themes When debugging, no longer have strange green buttons in default theme
commit 67ad284f40909a0877cf8051a104c5952d6f810a Author: Russell Allen mail@russell-allen.com Date: Sun Aug 7 15:43:30 2016 +1000
Bug fix to main world menu Selecting useful objects will no longer open more than one outliner.
commit b1cd88a65126866ebf30f5d66c59a6030010d5c6 Author: Russell Allen mail@russell-allen.com Date: Sat Aug 6 17:32:39 2016 +1000
Adjust default colour for debuggers
commit e84d7b23af4089fc1f5e80d60ffcb2c6d444b884 Author: Russell Allen mail@russell-allen.com Date: Tue Aug 2 22:20:39 2016 +1000
Linux now uses meta for jumping in morphic
commit ebb7656b65767e05f621f492a5367b640493b296 Author: Russell Allen mail@russell-allen.com Date: Thu Jul 28 09:11:07 2016 +1000
Cleanup separation of core/morphic so core builds cleanly. Add helper menu item for all modules
I think I should declare a new version pretty soon so we have a base to work on more interesting things.
Cheers, Russell
On 26 Jul 2016, at 3:49 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Thanks, I love it.
Just one little detail: is it possible to change the shortcut to alt or win/cmd key? Ctrl+arrow is already used in the editor to jump around the words.
Dne 25.7.2016 v 04:46 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
This is for Bystroushaak :)
I’ve added functionality so if you hold down the control key and use the keyboard arrows (or the command key on Macs) then the desktop will scroll up/down/left/right by a third of the screen.
If you also hold down the shift key then you get turbocharged full screen jumps.
To check it out either build a snapshot from the latest sources or download one of:
files.selflanguage.org/development/self-20160725.zip http://files.selflanguage.org/development/self-20160725.zip or files.selflanguage.org/development/self-20160725.dmg http://files.selflanguage.org/development/self-20160725.dmg
Have fun, Russell
Yahoo Groups Links
Brilliant, thanks.
I think I should declare a new version pretty soon so we have a base
to work on more interesting things.
That would be nice.
Dne 7.8.2016 v 09:04 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
I’ve uploaded new builds of Self for OS X and Linux:
You can check it out by either building a snapshot from the latest sources or downloading one of:
http://files.selflanguage.org/development/self-20160807.zip http://files.selflanguage.org/development/self-20160807.dmg
Changes are:
commit a470b9f5637e1060b9593720ff08da9f2ecdbce8 Author: Russell Allen mail@russell-allen.com Date: Sun Aug 7 15:56:29 2016 +1000
Bug fix to outliner themes When debugging, no longer have strange green buttons in default theme
commit 67ad284f40909a0877cf8051a104c5952d6f810a Author: Russell Allen mail@russell-allen.com Date: Sun Aug 7 15:43:30 2016 +1000
Bug fix to main world menu Selecting useful objects will no longer open more than one outliner.
commit b1cd88a65126866ebf30f5d66c59a6030010d5c6 Author: Russell Allen mail@russell-allen.com Date: Sat Aug 6 17:32:39 2016 +1000
Adjust default colour for debuggers
commit e84d7b23af4089fc1f5e80d60ffcb2c6d444b884 Author: Russell Allen mail@russell-allen.com Date: Tue Aug 2 22:20:39 2016 +1000
Linux now uses meta for jumping in morphic
commit ebb7656b65767e05f621f492a5367b640493b296 Author: Russell Allen mail@russell-allen.com Date: Thu Jul 28 09:11:07 2016 +1000
Cleanup separation of core/morphic so core builds cleanly. Add helper menu item for all modules
I think I should declare a new version pretty soon so we have a base to work on more interesting things.
Cheers, Russell
On 26 Jul 2016, at 3:49 AM, Bystroushaak bystrousak@kitakitsune.org [self-interest] self-interest@yahoogroups.com wrote:
Thanks, I love it.
Just one little detail: is it possible to change the shortcut to alt or win/cmd key? Ctrl+arrow is already used in the editor to jump around the words.
Dne 25.7.2016 v 04:46 Russell Allen mail@russell-allen.com [self-interest] napsal(a):
This is for Bystroushaak :)
I’ve added functionality so if you hold down the control key and use the keyboard arrows (or the command key on Macs) then the desktop will scroll up/down/left/right by a third of the screen.
If you also hold down the shift key then you get turbocharged full screen jumps.
To check it out either build a snapshot from the latest sources or download one of:
files.selflanguage.org/development/self-20160725.zip http://files.selflanguage.org/development/self-20160725.zip or files.selflanguage.org/development/self-20160725.dmg http://files.selflanguage.org/development/self-20160725.dmg
Have fun, Russell
self-interest@lists.selflanguage.org