[HN Gopher] Ronin - A Lisp-based image processing tool
       ___________________________________________________________________
        
       Ronin - A Lisp-based image processing tool
        
       Author : Gormisdomai
       Score  : 242 points
       Date   : 2020-05-17 11:33 UTC (11 hours ago)
        
 (HTM) web link (100r.co)
 (TXT) w3m dump (100r.co)
        
       | [deleted]
        
       | jierenchen wrote:
       | 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
       | 
       | These ideas are all in their infancy, but really excited to see
       | people starting to make moves in this field.
       | 
       | Thanks again!
        
         | GuiA wrote:
         | They complement each other. There are certain things that I'd
         | love to pull up a command line for (e.g. quickly aligning
         | dozens of objects using a non trivial heuristic); but on the
         | other hand there are plenty of things where the act of visually
         | working through it, placing multiple options side by side on
         | the canvas, rearranging things by hand etc., helps in solving
         | the problem itself.
         | 
         | What would be really nice is if we had a solid set of standards
         | for inter operation, such that I could work on the same video
         | editing project in After Effects, through the command line,
         | through some open source tools someone else wrote... etc.
         | 
         | I have a project right now where I have assets generated in
         | Sketch, some other assets generated by Python scripts, all
         | feeding into an AE project, the output of which gets fed back
         | into some of the Python scripts... I can do great things, but
         | it's super kludgy/buggy to work with, and as a software
         | engineer see so many trivial ways in which it could all be so
         | much faster and more pleasant to work with (e.g. After Effects
         | natively only supports very limited JS like scripting, so I
         | have to have duplicated Python + AE code... and if the AE
         | motion tracker could serialize tracking data for Python...).
         | 
         | I'm not holding my breath because this kind of computing, while
         | more aligned in philosophy with the early composable UNIX
         | roots, is IMO most entirely incompatible with the state of the
         | (creative) software industry/economy (Adobe, like everyone
         | else, would like to do as much as they can so that you do not
         | give any of your time or money to creative software other than
         | Adobe's).
        
           | jierenchen wrote:
           | > They complement each other. There are certain things that
           | I'd love to pull up a command line for (e.g. quickly aligning
           | dozens of objects using a non trivial heuristic); but on the
           | other hand there are plenty of things where the act of
           | visually working through it, placing multiple options side by
           | side on the canvas, rearranging things by hand etc., helps in
           | solving the problem itself. > What would be really nice is if
           | we had a solid set of standards for inter operation, such
           | that I could work on the same video editing project in After
           | Effects, through the command line, through some open source
           | tools someone else wrote... etc.
           | 
           | The big challenge I see here is a two-way mapping between
           | code/representation and GUI. Ronin here has code >> graphics,
           | but question is how to have a clean mapping from graphics >>
           | code?
           | 
           | > I'm not holding my breath because this kind of computing,
           | while more aligned in philosophy with the early composable
           | UNIX roots, is IMO most entirely incompatible with the state
           | of the (creative) software industry/economy (Adobe, like
           | everyone else, would like to do as much as they can so that
           | you do not give any of your time or money to creative
           | software other than Adobe's).
           | 
           | I do wonder if this is going to be a space that gets
           | disrupted. We're already seeing this with smaller players
           | like Sketch and Figma going into the image space. Still GUI
           | tools, but proves that the barrier to entry isn't quite as
           | high.
           | 
           | Is the technical moat for audio and video THAT
           | insurmountable? I get that people won't be making the next
           | hot music video on open source software right now, but I
           | personally could use something dead simple to compose
           | together a bunch of screen recordings into a demo video.
           | 
           | > I have a project right now where I have assets generated in
           | Sketch, some other assets generated by Python scripts, all
           | feeding into an AE project, the output of which gets fed back
           | into some of the Python scripts... I can do great things, but
           | it's super kludgy/buggy to work with, and as a software
           | engineer see so many trivial ways in which it could all be so
           | much faster and more pleasant to work with (e.g. After
           | Effects natively only supports very limited JS like
           | scripting, so I have to have duplicated Python + AE code...
           | and if the AE motion tracker could serialize tracking data
           | for Python...).
           | 
           | Whatcha making in AE?
        
             | disconcision wrote:
             | re: two-way mapping: see sketch-n-sketch
             | (https://ravichugh.github.io/sketch-n-sketch/) for another
             | effort in this vein
        
       | snidane wrote:
       | 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
       | 
       | #45 - Orca: Devine Lu Linvega
       | https://futureofcoding.org/episodes/045
        
         | gtsnexp wrote:
         | Excellent interviews.
        
       | pavlov wrote:
       | 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
       | 
       | 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/
        
         | nikofeyn wrote:
         | ----
        
           | Jtsummers wrote:
           | The date is below the title next to the author: February 5,
           | 1985.
        
             | nikofeyn wrote:
             | ----
        
               | dqv wrote:
               | I think the GP means contemporary as "at the time".
        
               | pavlov wrote:
               | Right, I meant the memo was contemporary with the
               | decision.
        
           | dqv wrote:
           | It looks like the fourth edition was released in February
           | 1994. And the product release history's latest dates don't go
           | later than 1994.
        
       | angleofrepose wrote:
       | 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
       | 
       | Old version tutorial/demo 4:09 :
       | https://www.youtube.com/watch?v=gifzjhyBwOc
        
         | lisper wrote:
         | It sounds very cool, but I hit a brick wall almost immediately
         | when I tried to use it: how do I run a script? The tutorial
         | video says you type cmd-R but that just reloads the page when
         | you're running it in Firefox.
        
           | angleofrepose wrote:
           | It's probably fair to say this software isn't the most user
           | friends as a result of its continuous change. In chrome and
           | firefox Control-Enter runs the web app version I find here:
           | https://hundredrabbits.github.io/Ronin/
        
             | maxerickson wrote:
             | It seems the keyboard shortcuts are shown in the menu.
        
         | GuiA wrote:
         | 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 wrote:
           | 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
           | "A Tour of the Acme Editor" by Russ Cox
        
             | taeric wrote:
             | Sounds a lot like some of the macro tools in Emacs, all
             | told. https://www.gnu.org/software/emacs/manual/html_node/e
             | macs/Ed... has the general vision of showing so keyboard
             | interactions. I don't know why this couldn't include mouse
             | events.
        
               | angleofrepose wrote:
               | 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 wrote:
               | 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.
        
         | throwaway-alpha wrote:
         | The author is a reasonable person. The community is as
         | poisonous as hell. Two people in the slack group made many to
         | leave. Nothing has been done yet. A few years ago, they removed
         | a friend of mine. Because the two men turned their eyes on them
         | like the malicious Sauron.
         | 
         | The output is interesting. Remove yourself as far as possible
         | from the community.
        
       | amelius wrote:
       | Isn't this just SVG but with different syntax?
        
       ___________________________________________________________________
       (page generated 2020-05-17 23:00 UTC)