
Ronin – A Lisp-based image processing tool - Gormisdomai
https://100r.co/site/ronin.html
======
angleofrepose
I've been following Ronin and the author for a few years now from a distance.
As I have said in other threads on hn about this work, the theme and ethos are
so consistent and thorough they just slap you in the face. You know exactly
what is going on with Ronin, Oscean, Orca and it is a pleasure to see such
clear manifestation of intent.

Ronin in particular is the most fascinating piece of this network to me. I was
hooked by the (broken) version 1.0 when I first found it a couple years ago
and played around a bit with fixing it. It played well with a few other key
influences in my life and I've been playing around with similar--albeit
prototype--systems ever since.

To name one stand out feature. I have been playing around with generative
design/creative coding/coding art for a while now and I seem to be on an edge
of the domain. My work lately has been increasingly taking a set of starter
points, so to speak. I have shapes or layouts in my head that I want to run
through the generative process, but I am distinctly starting with these hard
coded values.

Ronin provides direct manipulation on the canvas with `$` prefixes in the
code. If you type `$point`, then click on the canvas, "$point" is replaced
with code representing that point. The simplicity of this interface for
writing code that heavily involves numbers in context (ie on their domain) is
an inspiration. There are probably a couple of names for this connectivity,
but one might be bi-directional evaluation. Manipulations in code yield the
canvas, and manipulations on the canvas yield code.

There's a lot going on here, xxiivv.com

And some fun to be learned by poking through git commits. If you know Orca,
(was popular here a while back) it didn't start as a music generation system.

Edit:

Ronin tutorial video, 5:22. First 30s tease the original version I saw.
[https://www.youtube.com/watch?v=SgAWGh1s9zg](https://www.youtube.com/watch?v=SgAWGh1s9zg)

Old version tutorial/demo 4:09 :
[https://www.youtube.com/watch?v=gifzjhyBwOc](https://www.youtube.com/watch?v=gifzjhyBwOc)

~~~
GuiA
Check out acme/plan9. Lots of similar cursor/content/programming synergies.

There are entire parallel end user computing universes out there that we have
barely scratched the surface of.

~~~
angleofrepose
There is a plan9 and acme demo on YouTube which is eye opening. One idea that
has captured me is the idea that end users ought to be able to create custom
UIs. This appears to be a foundational principle of plan9, the way all text is
able to be executed. Another avenue for this idea are ZUIs as originally
envisioned. Individual clipboard state can be reified as buttons in the UI,
any formatting or pens or fonts can also be manifested in the interface and
selected with something along the lines of the "eyedropper" tool present in
many applications.

edit: video here
[https://www.youtube.com/watch?v=dP1xVpMPn8M](https://www.youtube.com/watch?v=dP1xVpMPn8M)
"A Tour of the Acme Editor" by Russ Cox

~~~
taeric
Sounds a lot like some of the macro tools in Emacs, all told.
[https://www.gnu.org/software/emacs/manual/html_node/emacs/Ed...](https://www.gnu.org/software/emacs/manual/html_node/emacs/Edit-
Keyboard-Macro.html) has the general vision of showing so keyboard
interactions. I don't know why this couldn't include mouse events.

~~~
angleofrepose
I agree, thanks for pointing me to that info page. I would bet that keys
representing functions probably evolved simultaneously with the first computer
typewriters, they've been around forever and are "obvious" to some degree.
Making functions apparent in menus is also probably synonymous with the first
non text-based GUIs. I don't know enough about the history of toolkits, but as
far as I can tell that area of development is nowhere near mainstream today.

I have been reading Sutherland's Sketchpad thesis, and it struck me that no
aspect of the system was unavailable to the user. By itself, this isn't
entirely unusual, I think the same could be argued for emacs or linux in
various ways or even of software when code is available etc. The unique aspect
of this universal control with regard to sketchpad is that it was a graphical
system. Controls for the graphics and viewport were essential, and reflected
by the development of the first oop principles of master/instance and
recursive expansion of arbitrary material in the workspace. Of multiple
viewport movement controls (physical dials too!) and focus-selection zooming.

It is easy to imagine extensions of sketchpad with graphical macros. Of
savable viewport state, of non-euclidean jumps between locations on the
digital "paper".

It's funny to me that most clever things I enjoy about vim seem like they
could fit right into a graphical system like sketchpad. `mkview`, marks,
folds, repeat operations, contextual movement or selection like accessed via
combinations of `[{(`.

Infinite canvas artboards are fantastic workspaces, but lack even the basic
"focus shifting ability" of a few stacks of paper on a desk, taped on a wall,
or strewn across the floor.

~~~
taeric
The thing I like about the best parts of vim and emacs is how much it feels
like a conversation with the computer. Such that it natural lends itself to
interacting with completed things. Indeed, "ciw" only works if you have a
completed "word" to change.

Notebooks are usually tons and tons of fragments. Such that a precise dialog
with them feels very difficult. I agree it would be awesome, but I have yet to
see something that doesn't just harken to the ultimate failures of graphical
programming languages. Neat for performance style programming. But needing a
ton of rehearsal to get a performance.

------
snidane
The author was recently featured in a brilliant Future of Coding pocast,
providing some highly inspiring ideas.

#44 - Making Your Own Tools: Devine Lu Linvega
[https://futureofcoding.org/episodes/044](https://futureofcoding.org/episodes/044)

#45 - Orca: Devine Lu Linvega
[https://futureofcoding.org/episodes/045](https://futureofcoding.org/episodes/045)

~~~
gtsnexp
Excellent interviews.

------
jierenchen
This is exceptionally cool. Thanks for sharing and building!

When I'm using Sketch or Movie Maker or Logic or some other GUI-based >>x<<
editing tool, the thing that keeps going through my head is: "Dammit I wish I
had the abstraction tools that I have as a programmer. It would literally make
this task 100x faster."

To me Ronin is some strong validation that all these editing tools would be
much improved by a human-readable and programmable intermediate representation
of what you're doing with the GUI. The GUI is just an editor for modifying
this representation.

John Carmack did some work when he was at Oculus on something like this for
VR: \-
[https://www.youtube.com/watch?v=ydyztGZnbNs](https://www.youtube.com/watch?v=ydyztGZnbNs)

These ideas are all in their infancy, but really excited to see people
starting to make moves in this field.

Thanks again!

~~~
sitkack
FWIW, Autocad, being written in Lisp, had a repl that was fed via the UI, so
that you could basically see what the UI was generating and write your own
scripts based off that.

I haven't used Autocad in 25 years, so I don't know how much of this is still
true.

~~~
galfarragem
Autocad still allows all of that, and, in my opinion, a lot of its success is
derived from that. Even Autocad clones have a Lisp repl.

------
pavlov
Lisp has a long history in computer graphics. It was particularly popular in
the 1980s.

There was Symbolics, a manufacturer of Lisp workstations (sometimes also
remembered as the first company to register a .com domain).

Symbolics had a Lisp-programmable 3D graphics suite that seems to have been
fairly successful at the end of the decade. Here’s a video from 1989:
[https://youtu.be/gV5obrYaogU](https://youtu.be/gV5obrYaogU)

The video doesn’t seem to show any Lisp though.

On the 2D side, the immensely popular AutoCAD adopted Lisp as its expansion
language in 1985.

Autodesk founder John Walker explains the decision in this contemporary memo
“Why Lisp”:
[https://www.fourmilab.ch/autofile/e5/](https://www.fourmilab.ch/autofile/e5/)

~~~
nikofeyn
\----

~~~
Jtsummers
The date is below the title next to the author: February 5, 1985.

~~~
nikofeyn
\----

~~~
dqv
I think the GP means contemporary as "at the time".

~~~
pavlov
Right, I meant the memo was contemporary with the decision.

------
dmix
Reminds me of Symbolics S-PACKAGES from the 1980s... (also LISP)

[https://www.youtube.com/watch?v=gV5obrYaogU](https://www.youtube.com/watch?v=gV5obrYaogU)

Edit: looks like someone beat me to it below

------
lucioperca
Can some plz hack Emacs support for this. Lisp without paredit-mode or lispy-
mode is really not my cup of tea anymore.

~~~
jdormit
Why not take a shot at it yourself? Both Emacs and Ronin are open source.

------
amelius
Isn't this just SVG but with different syntax?

~~~
jazzyjackson
is SVG more than a markup language? Ronin has trig operators, lamda functions,
conditionals etc

~~~
kazinator
And dynamic behavior: handlers for mouse clicks and animation events that are
written in the parenthetical language.

