Thoughts/notes collected from various Bret Victor writings:

These representations weren't mere scientific "discoveries". Each of them essentially enabled all subsequent scientific breakthroughs thereafter. A powerful new form of representation affects everything, forever.

  • so the idea is to use dynamic medium to reinvent representations of thought (imagining, creating, explaining, ...) with dynamic representations
  • humans can interact with things on multiple levels:
    • symbolic (math equations, etc.)
    • visual (data visualization, etc.)
    • tangible (touching stuff)
    • spatial (moving in a space)
    • relevant to this is what Alan Kay said in "Doing With Images Makes Symbols" - Einstein used to "feel" math in his hands, and would move around the room when thinking (spatially) - most of mathematicians and physicist do this - use tangible/spatial "modes" for thinking, and symbolic representation for communicating
  • programming is currently "blindly manipulating symbols"

    the author sees and manipulates indirect symbolic representations, and must imagine how they give rise to dynamic behavior

    • this could be improved by:
      • seeing the dynamic behaviour that is being created (simulator)
      • seeing multiple representations of that behaviour (ladder of abstraction)
      • directly manipulating representations and data - instead of manipulating symbols
      • these ideas are relevant to future of coding research
  • Bret's idea is that the representations we use to communicate with others, are the same we use internally
    • improving the ones used to communicate with others, will improve our thinking
    • there is tension between this and ideas about workshop vs library where the "internal language" is different to the "external" one
  • Bret seems to be all about representations as tools for thinking, not about programming

    using representations to think powerfully about systems

    • programming is a specific case of a broader problem, and it probably won't matter in a hundred years
    • we switched from analog to digital circuits, and then to programmable circuits, but they are all about the same thing

    a software system is an instance of a more general class of systems, so it's possible to write about "programming" using ideas that aren't actually specific to programming

  • thoughts prompted by Alan Kay and Bret Victor (notation)

it is only when people have a particular interest in something, such as knitting or baseball, or producing budgets or designing printers, or simulating the behavior of clown fish or honeybees, that they readily learn the formal languages and notations that describe the elements and relations of the system of interest

A Small Matter of Programming - Bonnie Nardi

If an app doesn't implement the Pencil SDK it is nothing more than a precise mechanical finger. I'd love to be able to use the Pencil also in apps which don't support it. Allow me to annotate everything, everywhere and give the OS a sort of memory layer of all doodles I place everywhere. I'm currently typing this in Ulysess, my favourite writing app which doesn't make use of the Pencil. I'd love to highlight certain sentences, cross out certain things and make small doodles in the sideline.

Let me doodle OS-wide; on top of app icons, photos. I don't want to wait on the app developers for support of the Pencil. Adding an annotation layer to iOS itself would turn this iPad into a true "bicycle for the mind".

If I mark up a physical book then later flip through to see my margin notes, I'll always see them in the context of the surrounding text. By contrast, digital annotation listings usually display only the text I highlighted, removed from context.

  • this seems to tie often into inventing notation and/or visualizations to solve things - but instead of using these visualisations as one-offs for explaining a concept, they could be used as tools for thought in a sense of being an interface for mathematics and other concepts
  • [@@bs...] are Bucklescript annotations for FFI

Notice the vecT annotation, this allows compiler to be sure that returned value is { x: float, y: float }.

  • Types I usually prefer non-typed languages, but Haskell's type system is really interesting, and type annotations are very helpful in trying to understand what functions do; I'm still fuzzy on some details, and plan on doing a bit more reading on type classes

I was also keeping separate folder of notes, initially using Notational Velocity, which then changed to just a folder of markdown files. Some of the notes were related to projects, some of them not. I never knew if a given piece of information should go in my TaskPaper comments, or my other notes. And then, there were notes for thinking about things, which sometimes spawned new projects. This was a disaster in slow-motion.

Szymon Kaliski © 2021