Hi,
It's really nice to have this conversation. Long time ago I talked about
Leo and computers as "cognitive devices" for (de)construction adn how it
makes for files what Smalltalk mades for objects. But at that time I
hadn't the proper language and examples for a better discourse. Putting
this into talk with the Bret Victor's ideas and the recent developments
on IPython/Jupyter notebook or my own prototype with Grafoscopio[1] and
the new energy /routes Leo is exploring seems to create a promising time
for this conversation. More comments below.
[1] http://mutabit.com/grafoscopio/index.en.html
On 16/05/16 07:24, Edward K. Ream wrote:
On Friday, May 13, 2016 at 10:17:12 AM UTC-5, Offray Vladimir Luna
Cárdenas wrote:
In my case, when I found Squeak almost 10 years ago I felt it
interesting and empowering for me and my students, but also it
imposing to much pre-existing structure on me, while Leo with its
emerging outlining structure was a liberating experience,
particularly because most of what I do is writing plus scripting.
Then I see the improvements on IPython notebook and thought some
ideas about integrating them [3], but there was a lot of
(accidental?) complexity on the technologies behind, so I took a
new approach not with the specific technologies (Leo + IPython),
but with the ideas (outlining + live coding / interactive writing
and visualization) in Pharo[4]. In this way I'm getting the core
of what these technologies bring to me and still I'm using them
for specific purposes (Leo for deconstructing others textual code
is unbeatable).
I've been thinking about these topics.
Two days ago I installed Pharo and played with it a bit. There are a
few pluses with Pharo, especially for students. But there are also
minuses, compared with Python and Leo. For starters, Python is a much
better language for beginners, imo of course.
I thought the same for long time and in fact I taught under that
conviction. But I was making the wrong comparison. Smalltalk/Pharo
should be compared to Operative Systems (Unix and its *philosophical*
descendants: Gnu/Linux, Mac and yes, Windows). It's is a full discourse
about how interact with computers and how they should work. A long
explanation why is in [1].
[1]
https://open.library.ubc.ca/cIRcle/collections/ubctheses/831/items/1.0055157
The fact is that you don't only teach/learn python syntax, but also how
to program (paradigms, problem solving), where to program (dev tools:
IDE, debugger, source code management) and why to program ("contexts for
programming", where interactive notebooks and tools for data narratives
and visualization become important). There is a lot of moving parts and
when you're a teacher/learner the responsibility/burden on their
integration is on your shoulders. Pharo + Grafoscopio gives me all that
in a single, easy to install, update & learn integrated package with:
IDE + Live Coding + Data Visualization + Interactive documentation. The
big concession you have to do at the start is objects all the way down,
without tricks, mixtures. No functional + imperative + declarative +
objects + etc. Which for me was too big at the beginning because I lack
of the emergent free from structure given by outlining. With Grafoscopio
I'm trying to solve that.
My path was something like this:
That being said, I would like to see live coding + Leo working. And that
why next your proposal seems so interesting to me:
Later in this thread you said, "I think that interaction between Leo
and IPython shouldn't be centered around file importers/exporters, but
on "services". The question would be how to make a node of Leo become
behaves/becomes like a cell talking with IPython (with code
completion, graphics, etc.)"
I replied that this would be a lot of work. On second thought, this
"lot of work" might be an excellent new direction for Leo.
And you also said, "If I could bring one feature of Smalltalk to Leo
it would be live coding (the idea of making some Leo nodes, IPython
cells)."
I'm not sure exactly what this means, but it might be easy to do. At
present, whenever you run a script (with Ctrl-B, execute-script), Leo
creates (on purpose) a new Python namespace. It would take just one
or two lines of extra code to use a common namespace for a new
command, say execute-script-in-common-namespace, or maybe,
execute-ipython-script.
This isn't exactly IPython cells, but it would retain "live" objects
(in the common namespace).
A shared namespace to all of what is computed in Leo would be a good
start. I envision something like this namespace being talking with a
IPython kernel via ZeroMQ (BTW thanks Ken for the reference to its
author @hintjens <https://twitter.com/hintjens>). I don't know the
details but in that scenario you can have the liveness of IPython plus
emergent structure and a self-referential programmable DOM of Leo.
On my walk yesterday I had what seems like an exciting idea. I wonder
if you would be interested. It might be possible to have Leo do
everything that can now be done in Pharo. And it might not take much
additional work:
- A common namespace for certain kinds of exploratory programming.
- A graphics canvas for (student) drawing projects, and a Qt turtle
graphics library. At present, Python's turtle graphics is based on
Tk, but there is Qt-based turtle-graphics app called pynguin
<https://bitbucket.org/leeharr/pynguin>.
- Some kind of "service-based" integration with IPython. Don't know
what this would entail, but Jupyter already has a client-server
architecture, which I used while developing Leo's .ipynb import/export
commands.
- Some kind of debugging environment. The simplest would just be
Python's pdb module with Leo running in a console window. It would be
good to be able to connect Leo to a console /after/ starting Leo, but
that's a frill. It may also be possible to use parts of spyder
<https://pythonhosted.org/spyder/>to improve Leo's debugging.
- A Python tutorial, integrated into Leo by opening, say,
PythonTutorial.leo from Leo's Help menu.
- An easy way to install everything. I think Anaconda
<https://www.continuum.io/downloads>should work.
These are just my /guesses/ about what you might want for your students.
If this kind of project interests you, please let me know. I think it
would be possible to do all this for the start of your autumn semester.
This project interests /me/ because it is a new way to make Leo
popular. If we could train a generation of students to use Leo,
Python and IPython, some of those students would continue to use Leo
and would tell the world about it.
What do you think?
Advancing Leo in that direction is interesting for me also, but the
problem is that now I'm making my PhD studies and hoping to submit my
final thesis writing at the end of this year or the beginning of next
one. So I'm not giving long semester courses anymore. Just
small/intensive workshops/seminars and I have made my bet for
Pharo/Grafoscopio for my research already. Anyway, when I present
grafoscopio to more techie public, they ask me if something like that is
available in the python world and is good to be able to answer that Leo
would be exploring that path. Crosspollination of these ideas is more
important and having implementations in several technologies helps to
spread them. I have a lot in Leo documents that I could use for testing
the live coding outlining environment and we can keep sharing ideas
about this two implementations of it in Pharo and Python.
Thanks, as always.
Offray
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to leo-editor+unsubscr...@googlegroups.com.
To post to this group, send email to leo-editor@googlegroups.com.
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.