HACKER Q&A
📣 youssefabdelm

Has anyone fully attempted Bret Victor's vision?


I love how Bret Victor outlined the importance of programming transforming into a paradigm of direct data manipulation.

I'm much more curious about a programming paradigm that no longer uses text to communicate with computers but instead just directly manipulating data, receiving past, present, and future feedback of how it would change given your manipulations. Or to put it a different way "What if" feedback. "If you did this, the data would change in this way" is visualized across many different dimensions, allowing you to 'feel your way' through feedback where you wish to go.

In other words, you give your computer your input data, and you modify dimensions which allow you to specify what you want the program to do.

To be clear, I'm not searching for specialized interpretations of this "Oh someone did this with typography" or "Oh someone did this with a game" but rather some more generalizable form like "Someone tried to replace Python with an idea like this"

I suppose the nearest thing I can think of is manually modifying the parameters of a neural net but that's perhaps too cumbersome because there are so many. Perhaps if you can put an autoencoder on top of that, and reduce the parameters down to a smaller "meta" set of parameters that you can manipulate which manipulate the population of parameters in the larger neural net?

I'm just really curious if there have been instantiations along these lines (as opposed to code live-running with results on the sides).

I realize this is all quite difficult, may even seem 'impossible' to have some sort of generalizable system that does this for all sorts of programs. I've heard people say it can't be done, and code is the ideal format. I hold that in abeyance, I don't really know, but intrigued to discover those who have a counter perspective to that and have attempted to build something.

Also really curious if you know other similar people to Bret Victor I should check out!


  👤 pronlover723 Accepted Answer ✓
I don't think it will ever happen except for toy projects. If you're manipulating some small list of 10-20 objects and those object have some kind of useful visual representation then for some small use case you can possibly, maybe, design a system that could do what's shown in the demos. I'm skeptical that it scales to more complex problems with more complex data.

Bret Victor himself has made zero headway. And no, Dynamicland is not it. Dynamicland is still coded in text with no visual representation itself.

Other examples always show the simplest stuff. A flappy bird demo. A simple recursive tree. A few houses made of 2-3 rectangles and a triangle. Etc...

To be even more pessimistic, AFAICT, if you find a single example you'll find that even the creators of the example have abandoned it. They aren't using it in their own projects. They made it, made some simple demos, realized it didn't really fit anything except simple demos, and went back to coding in text.

I'm not trying to be dismissive. I'd love to be proven wrong. I too was inspired when I first read his articles. But, the more I thought about it the more futile it seemed. The stuff I work on has too many moving parts to display any kind of useful representation in a reasonable amount of time.

What I can imagine is better debuggers with plugins for visualizers and manipulators. C# shipped with its property control that you could point at a class and it would magically made it editable. You could then write a custom UI for any time and it would show up in the property control (for example a color editor). I'd like to see more of that in debuggers. Especially if one of the more popular languages made it a core feature of their most popular debugger so that it became common for library writers to include debug time visualizers

Even then though, it's not clear to me how often it would be useful.


👤 cloudmike
The most remarkable thing about "Bret Victor's vision" is how different people have interpreted what his vision even is. His ideas are multi-faceted, so they inspire in several important directions all at once, e.g.:

- "what if" feedback loops (crudely, "live programming")

- direct manipulation (an old idea but beautifully captured in his projects)

- making logic feel more geometric / concrete

- visualizing and manipulating data, especially over time

- humane interfaces (putting "computing" into the world around us, but without AR)

- etc.

Bret Victor is very much Alan Kay's protege and has unfortunately inherited the curse of people cherry-picking particular ideas and missing the bigger picture.

So as others have pointed out, the only person who may be fully attempting Bret Victor's vision is Bret Victor with Dynamicland. You may also be curious to check out Humane [1] which is a hardware startup founded by ex-Apple people. They're rumored to be shipping a projection-based wearable device this year. This device could potentially be a platform for people to experiment more in the direction of Bret Victor's vision.

[1] http://hu.ma.ne


👤 namuol
I really wish I kept a list of related stuff somewhere…

Edit: This comment is a goldmine: https://news.ycombinator.com/item?id=34485994

——-

There are lots of hobbyists, academics, and even companies inspired by Bret Victor’s talks alone.

I know of at least 2 open source experimental programs that were inspired by specific demos:

https://github.com/laszlokorte/reform-swift

http://recursivedrawing.com/

I know there are more too but I can’t find them right now. You could probably find a lot of good stuff just searching GitHub for “Bret Victor”.

There are lots of people in academia experimenting with programming languages and environments. Try searching for papers that cite Bret Victor as well and I’m sure you’ll find plenty.

For a quick glimpse at the academic world without spending hours looking for papers worth reading, I recommend perusing the Strange Loop Conference YouTube channel. There are some interesting experimental programming languages and IDEs out there.



👤 cmontella
I helped with the Eve language, which was a VC funded attempt down this path (https://witheve.com). This was cut short when the money ran out, so it wasn’t a full attempt.

After that project ended I started working on my own attempt called Mech which specifically handles the time-travel and what-if features you mentioned (https://GitHub.com/mech-lang/mech you can play with an early alpha version here: http://docs.mech-lang.org/#/examples/bouncing-balls.mec). I’ve made sure money running out won’t kill this project, so hopefully it’s a fuller attempt.

Someone else posted a link to futureofcoding.org, which is a community that works on these types of projects. You can find a lot more there.


👤 yesenadam
For the people asking who is Bret Victor: When "What are your favourite tech talks of all time?" is asked on HN, he gets more mentions than anyone else, usually.

Some of his talks:

Inventing on Principle https://www.youtube.com/watch?v=PUv66718DII

The Future of Programming https://www.youtube.com/watch?v=8pTEmbeENF4

The Humane Representation of Thought https://www.youtube.com/watch?v=agOdP2Bmieg

Media for Thinking the Unthinkable https://www.youtube.com/watch?v=oUaOucZRlmE

Seeing Spaces https://www.youtube.com/watch?v=klTjiXjqHrQ

Drawing Dynamic Visualizations https://www.youtube.com/watch?v=ef2jpjTEB5U

http://worrydream.com/


👤 cjbprime
I mean, the fact that Bret Victor has himself been working on the problem for ten years (without popular success, yet) should count as an attempt at reifying his vision. I would guess that lack of attempts isn't the problem.

Reactivity has certainly become more popular, and is a standard part of web development now. And ipywidgets are an example of creating manipulatable abstractions in data science.


👤 cobertos
> I'm much more curious about a programming paradigm that no longer uses text to communicate with computers but instead just directly manipulating data

I don't think there's any way to get away from this abstraction. At it's lowest level, everything is encoded in binary. All abstractions on top of binary are just interpretations of the underlying stream, text being a relatively simple encoding (ASCII table or UTF8's multi-byte structure). Structure data is similar, just multiple pieces packed into one contiguous space. You will always have to build on top of this fundamental, there is no simpler

That being said, I quite like:

* Datasette - https://datasette.io/ - I have a feeling ou could connect a lot of these instances and truly make something interesting there

* Lightable IDE - https://www.youtube.com/watch?app=desktop&v=H58-n7uldoU

* I have at least 2 more but I can't find them in my favorites

I'm trying to make my own as well. Hardest thing is giving myself enough time to do it, but I'm currently starting to structure my life around it.


👤 jimmySixDOF
This is the latest thing I know of from him and was recorded at the 2022 Foresight Designing Molecular Machines Workshop talk called "Nanoscale Instruments for Visualizing Small Proteins" & Bret Victor comes in about 14:14 [1]

It shows just how far the Dynamicland concept can be pushed into a hyperspecific feature set customized to fit a single domain -- because they can deconstruct the user experience to that level of detail.

Extending a Tangible UI out to the actual OS itself has been the thing at Dynamicland from the get go but here we see it finally as physical 3d objects participating with realtime digital feedback in the built environment !!

[1] https://youtu.be/_gXiVOmaVSo


👤 a_c
In my opinion the idea is more than direct data manipulation. It is about how we get feedback. In drawing, the medium to draw is the same medium to read. In programming, there is often a mismatch - coding on a text file, running on somewhere else, e.g. terminal, browser, remote server. If you count surrounding activities for programming, like versioning, debugging, metering and profiling, even more system is involved. We are not even touching the myriad of SaaS offering each tackling carve out a little pie out of the programming life cycle.

Back to your question, from my naive understanding, smalltalk seems to be an all in one environment. The Glamorous Toolkit [1] seems to be that environment on steroid. I have no useful experience to share though.

https://gtoolkit.com/


👤 gabrielsroka
Have you seen his Dynamicland? https://dynamicland.org

👤 jasonjmcghee
One of the first things I do when working on a new stack is to tighten the feedback loop as much as possible.

Usually a combination of hot reloading, good intellisense / autocomplete / quick docs, debugging.

I did a talk and built the animations with Manim (mathematical animation library) and at the time you had to render the clip and play it each time you wanted to preview it, causing a significant delay (10-15s) between each change and what it looked like rendered.

It was unbearable (but finished the project). Afterwards, I put together an environment using p5.js that allowed instant feedback, even at a specific point in time. I also threw in an in-browser editor so I could keep working on an animation on my phone as I was doing a lot of walking around that time (usable, but barely).

This was the result of that project:

https://github.com/jasonjmcghee/viz-studio

https://viz.intelligence.rocks/


👤 sinker
I was a really interested in BV's work for a while, but some of the major roadblocks you quickly run into once you start thinking about how to implement his ideas are that:

1. Whenever you zoom out of the code-level, you lose granularity and thus flexibility and power.

2. In order to gain expressiveness, you can constrain the domain, but again you lose flexibility to implement what you want and how you want.

3. It's difficult to avoid losing the ability to express things in general ways whenever you switch to visual or physical representation of code.

4. A lot of the ideas you might have end up being more simply represented by code, and more easily manipulated by way of text and keyboard.

5. A lot of things end up just being superficial wrappers over code. Superficial in the sense that they only hide surface-level complexity (e.g., reducing the visual volume of large code blocks).

6. Catering interfaces to novices often hampers experts.

There seem to be a lot of trade-offs. I don't know if these are laws per se, but they seem difficult to break.

What interests me particularly are new ways to create general purpose programs using methods that more efficient and more intuitive, but it seems like a really difficult task bound by near-inescapable trade-offs.


👤 tlarkworthy
I think https://observablehq.com notebooks are a step towards it. Once you get into it it has the fastest feedback loop I have ever experienced. The concept of reactively changing code with partial recomputation of the dependency graph is amazing.

👤 samsquire
Hi

I want a lot of things that Bret Victor wants from computers.

I journal my ideas on GitHub in the open, see my profile for links.

I want a GUI that is self referential that tells you how it is built and allows the backend to be visualised. This is similar to React Component browser extensions that let you see the live tree of elements.

Observability of software is verry difficult. I want to see train tracks animations of software running.


👤 tluyben2
Trying to follow the right people on this topic:

https://twitter.com/i/lists/1617421345121353733

Many people are doing really great and innovative work in the space. They are just mostly researchers and hard to find.

Hope to find more from threads like this.

Edit: downvotes?


👤 ews
I don't know how close this is to his ultimate vision, but there is a lot of that in the clojure and clojurescript world, this (old) video of figwheel live coding flappy bird is definitely influenced in his work: https://rigsomelight.com/2014/05/01/interactive-programming-...

👤 mjdowney
I think if we divorce the idea of direct data manipulation from exclusively non-textual representation, we are slowly making progress in this direction through traditional notebooks (e.g. Jupyter) and notebook successors like Clerk (see Moldable Live Programming With Clerk[1]).

These are not the sweeping, fundamental changes that Bret Victor envisioned, but we are collectively moving toward more interactive programming. Imagine modern web development without hot reloading.

Clojure is the language where I see this happening most, and which is seeing the most expansion toward "visualization and interactivity as part of a the backend dev experience".

[1]: https://www.youtube.com/watch?v=3bs3QX92kYA


👤 etherlord
I think it's still pretty rough, but seems to be actively worked on and close to what you're talking about. It doesnt completely abandon text, but it has a neat dual representation. I didn't see it mentioned yet so I'll drop it here - https://enso.org/

👤 jimmcslim
Does Dan Ingalls' Lively Web count?

https://lively-web.org


👤 andriesm
For me the most practical way to realize such interactive programing, in ways that solve real world problems for me, with visual interfaces, is to use jupyter notebooks.

You just have to bind sliders to variables, and tie your outputs to graphical plots and there you go.

The big challenge is to come up with a large library of pre-built canonical graphical representations for different programming abstractions and being able to wire them seamlessly together.


👤 ladyattis
I think it's a great presenter of the general idea of visualization in computing but I've not seen many practical applications for it. The biggest thing I wish we could as programmers do is get behind the one idea of actually having computer programs actually negotiate how to communicate with each other in a more hands off approach where APIs like he mentions in the Future of Programming presentation would be possible. Basically, the programs would structure their negotiation in a way that allows each one to 'know' what the other has in terms of functionality which then the calling program would figure out which facilities best fit its request based on some complex set of rules to then fulfill that request (ex. converting a raw image file into a defined format like PNG or JPEG).

Essentially, I want programs to be less dependent on low level constructs much like today we don't depend on pointers or registers (assembly) to do our work these days. The idea that we can't have larger abstractions handled by compilers or runtimes seems silly to me.


👤 peteforde
Those ChatGPT posts where someone gets it to pretend it's a bash shell come to mind, but you are right: this is an incredibly difficult problem domain and you start hitting roadblocks very quickly as soon as you move from cool demo to tool intended for real people to use.

I was one of the backers of https://www.kickstarter.com/projects/ibdknox/light-table/des... and have wanted to see progress in this domain for a long time.

One thing I would add to the conversation is that one of the most potent ways to move this discussion forward is to create technical demonstrations of how this sort of interface could work, presented as video. It's completely unimportant if the functionality is actually working, so long as you disclose this up front.

The goal is to give people with less imagination and hopefully more technical acumen an opportunity to roll up their sleeves and maybe work on making it real.


👤 stared
Friends of mine are developing Enso (https://enso.org/), an interactive programming language with dual visual and textual representations.

Even well before Bret Victor's time, there were tools for visual programming. I have been using LabView to maintain data processing in an optical laboratory.


👤 jamie_sensei
Data Rabbit was inspired by Bret Victor's Inventing on Principle talk. One of the strengths of Clojure is the interactive coding experience you get using the REPL. Data Rabbit adds visual controls and data visualisations.

https://www.datarabbit.com/


👤 EdiX
A lot of people did. To what others have said, I'm going to add this: https://www.youtube.com/watch?v=5V1ynVyud4M Which is an interesting talk about how these approaches fail in practice.

👤 latorf
Bret Victor's vision was a major inspiration for my PhD research and thesis, mainly "Inventing on Principle" and "Ladder of Abstractions". The final concept and implementation that emerged is a sort-of "Interactive What-If-Machine" for 3D simulations -- however I'm afraid it's just another small step into the hopefully right direction:

"Interactive Analysis and Optimization of Digital Twins": https://doi.org/10.18154/RWTH-2022-07066

Direct link to PDF: https://publications.rwth-aachen.de/record/849852/files/8498... (94 MB) Unfortunately it's in German, but there are many many illustrations and pictures, as well as some english quotes.

I am still amazed how some of Victor's very basic principles (e.e. "Show the data, show comparisons!", immediate feedback loops, ...) are always so essential/fruitful in generating amazing solutions to certain problems...

Aside from my work, I think Processing's "Tweak Mode" is another very good "real-life" example you might want to check out: See e.g. http://galsasson.com/tweakmode/


👤 swyx
webflow is probably the most well known startup directly inspired by bret victor. vlad has mentioned it multiple times in every origin story interview.

whats funny is Bret’s message wasnt actually “you should go make direct manipulation ui’s”. it was “you should have design principles” and direct manipulation happened to be his baby (to the point where he went off to do dynamicland). i have heard he feels most people misunderstand his talk for the superficial wow moments.


👤 syntheweave
ML systems approximate solutions to Bret's vision. They don't solve the particular things he demoed, rather, they actually go further in that rather than enmeshing users in a specific interface to implement a specification, they jump from an incomplete specification to a probable solution.

Your program doesn't need time travelling debugging if it already works.


👤 jeffreyrogers
I'm doubtful it will ever work (but I'm glad someone like Bret is working on it). If I think about the technical things I've learned the hard part is usually learning how to think about them, not telling a computer what to do. Even in a low-level language like C++ it is generally not too hard to express what you want once you know what that is.

Now, it might appear that the tools Bret is working on help you to think about your problem better, and I think that's true at the margin. But they don't seem to help that much since mostly people are lazy and don't want to think hard (myself included a lot of the time). So these tools slightly lower the activation energy and probably somewhat increase the number of people who are able to learn certain concepts, but they don't lower it that much and a motivated person can generally find a good explanation of anything that's not at the research frontier.


👤 felipeccastro
This VS Code might be relevant to what you’re asking: https://dev.to/ko1/rstfilter-vscode-extension-for-your-new-r...

It prints the results of executing your code line by line, next to your source code.


👤 vaughan
I think this is the future of programming.

When we ask ourselves: "how should we structure our code?", the primary goal should be: so that it's easily visualizable and debuggable. Our guiding principles at the moment are all over the place. For a long time it was: make code testable. Then we had things like: eliminate side-effects, immutability, one-way data flow, static type-checkable, etc.

The problem is that by ignoring visualizability, when you do come to visualize it (which everyone inevitably needs to when reading code and building a mental model), it's this huge tangled mess. People forget that the purpose of structuring code is to make it easy for HUMANS to understand. The computer only understands assembly at the end of the day. So anything beyond that is suppose to be for our benefit.


👤 andrewstuart
I used to read Bret Victors magazine articles on CPUs in the early 1990s. Very inspiring.

👤 pshc
Unison has potential to underpin a paradigm like that: https://www.unison-lang.org/learn/the-big-idea/

👤 numair
HyperCard and Macromedia Director remain the gold standard for this sort of visual-interactive design. It was all so early and new and ubiquitous that we never realized how special it was.

https://m.youtube.com/watch?v=TqISbaJ7qug

Iterating on this in a modern way remains TODO. As John Henry and his counterpart note in that video, the beauty of those tools was that people who didn’t care about code were able to create interactive experiences.

The whole “everyone learn to code or you’ll be poor” thing of the past 10 years has been a huge and unnecessary distraction.


👤 jb1991
Check out what the Clojure and Elm languages came up with nearly a decade ago, inspired by his ideas. Time travel debugging, declarative paradigm, many of his ideas have been successfully realized a long time ago.

👤 idk1
The most commercial thing I can think of that feels like a step towards Swift Playgrouds, the iPad app that's an intro to Swift. A lot of us here would just look right over it and jump to learning Swift from somewhere else, however that app feels like it's got a bit of his influence in it, the way you can toy around with things while writing code.

Bret's long term goal was to reform society and strech goal to fall in love. I'm pleased to say I've achieved one of those.


👤 jazzyjackson
Can I get back to you in a couple years?

👤 aantix
I created Call Stacking - you can easily see what methods call which, in a nice nested visual timeline.

The analysis is all done passively, as the methods are being called, no breakpoints needed. E.g. a new, onboarding engineer could easily see the most important methods for a given API endpoint.

It's not directly manipulable, but it does give the feeling of "ohhhh, THIS is what my program is doing."

I think Bret would be proud.

https://callstacking.com/


👤 spython
To me, the the most interesting part of Bret Victors ideas lie in the re-embodiment of disembodied interactions. The computers choreograph us anyhow, but often in a very poor and limited way – only our fingertips and our eyes move a bit. Why not make the choreography of interaction richer? Why not create a computer-aided full-body choreography of interaction?

In a way, the interactions can be broken up in subject, verb and object. I edit text. I crop a photograph. The subject is the user, and all the representations that extend the user. The mouse pointer in that sense is part of the user. The verb is the action. To select text on screen, I put pressure on a touchpad, move my fingers and release. This is a learned interaction, there are no inherent affordances to a medium (only, at best, inherent affordances to a tool that extends you). The object is a representation. With computer interfaces, you hardly ever interact with something in an immediate way. I want a comment to appear on this site but instead I am writing this text in a white box and not where the comment would appear. All the computer interactions are mediated by these in-between steps. (An example for unmediated interaction would be cooking. What you chop is what you get.)

To get a rich feedback loop in such a mediated environment you need to try and make it as unmediated as possible. To make the subject less mediated, the whole body of the user, the quality of the movements could be integrated into integrations. Here I have hopes for AI supported movement recognition. In addition, the representations of the user (e.g. the mouse pointer in existing systems) could become less binary in their state (I don't have a good example for it, but a hammer can be used with a whole range of intensity while a mouse pointer either performs a click or not).

To make the object less mediated, its representation should ideally be as transparent as possible. AR in this regard is much more promising than VR, since in VR the representation takes place within another representation.

To make the action less mediated, the action should be able to be embodied by the (technologically extended) user, as well as being inherent to the medium which represents the subject. Here we are building a bridge between the human body and a way to represent things that physically do not exist. It's never going to be ideal, but it could be better than what we have now.

So for such a task you'd need to be a UX person, a choreographer, a programmer, a AR/AI person, and ideally have some insights into media theory. It's just not an easy task.


👤 pjmlp
We already did, it was called Lisp Machines and Smalltalk, and we are yet to fully replicate them.

👤 fragmede
Pretend Bret Victor's ideal IDE had been created. How much would you pay for that IDE? How much do you pay for JetBrains? Or Github Copilot? It's not that it's impossible, it's that there doesn't seem to be any money in it.

👤 pyrolistical
I think things like unity are getting close. It’s not the same but it’s almost there

👤 didip
ChatGPT will realize Bret's dream beyond his wildest imagination.

👤 narag
If you want to see how far this idea can go in an artistic set up, take a look at Golan Levin's work.

As a side effect, you'll find about people working in similar instalations.



👤 jerf
Many people have tried.

It is very exciting to post the vision. It gets many views and spreads far and wide.

It is much less exciting to hear about the issues the vision encountered. And they do encounter visions.

Humans can only hold so many ideas in their head at the same time, commonly expressed as somewhere around 7 or so. Our programming systems are intrinsically and deeply bent around this, trying to limit the necessary context for any given bit of code to fit within this constraint. We don't even see this because it is the water we swim in.

So when we imagine coding, we can't hardly help but imagine manipulating like 7 things. And 7 things fits on the screen great, and 7 things fits in our minds great, and it makes a great demo. What is much harder is realizing just how often we work with things that are much larger than that, and, intrinsically so.

A good solid example that is larger than that, but still in the realm of things we can understand, is an HTTP request. A few dozen elements, each of which may have a few "things" in it, amounting to one or two hundred things. You've probably seen visual representations of such, with the header names on the left and the values on the right. Already any attempt at making this visual and live is straining, but it can be done.

And then you have a database table with, let's say, 150 columns and several million rows, and the visual metaphor is dead.

We have too many things like the latter. We encounter them all the time. The reason for this is not sloppiness in programming or a failure of vision, but the fact that our 7 +/- 2 values we can hold in our mind is really really small and simply inadequate to address the universe. We encounter things all the time that are very challenging to fit into that box. Any programming metaphor that requires that everything fit into that sized box is a non-starter. A total non-starter.

This is ultimately why "visual programming" in general has failed and will always fail.

If we could as easily hold, say, 50 things in our mind, we would have so many more options. We burn so many of our 7 +/- 2 values just holding references to the place we need to go to go get more values if we need them, e.g., dedicating a slot just to the fact we have a database connection. Further slots needed to handle what we're querying from that database, etc. If we had more registers we could spend a lot less time just managing the registers, even if we would still ultimately hit limits. But this stuff slams into a complexity wall with us humans so, soooooo quickly after the first pretty demos.

This is why you see a steady stream of such demos, which look awesome, and then they go nowhere, because you can't hook it up to a web server, or a non-trivial database, or just about any code you can imagine, really. Games are already an "easy mode" for this demo, most things are not games or graphical displays, and they fall over quickly too because again as soon as it's non-trivial in the game world it doesn't work anymore.

And this makes me sad. But it also makes me sad to see people jousting with the same windmill over and over. So my usual followup here is, if you are interested in trying yourself, I strongly suggest looking at the historical efforts, and at least coming up with a theory as to why whatever it is you are thinking about will do better and will solve the problems I lay out here. Maybe there is a solution. I can't guarantee there isn't. And precisely because I know it is hard, if you succeed, I will be that much more impressed. But I do want you to know it is a hard problem. The common characterization of it as being easy and obvious and my god how could everyone else be so stupid as to miss this is frankly offensive. We are not collectively stupid. We are not collectively idiots. We do what we do for good reasons. If you do not start from that understanding, if you don't understand the good reasons why the current textual paradigm is dominant, you're doomed from the beginning.


👤 yellowflash
I think observable notebooks like Pluto.jl is something like his vision though not exactly. It's just more general and useful ?

👤 eternityforest
Never heard of him before, and I can't tell if he's a crackpot or going to invent the next big thing or both.

It seems like his whole thing is allowing people to access new thoughts that they couldn't before.

I'm not really familiar with that kind of almost psychonautic inspired approach to programming, so I don't really have a good understanding of his vision. But it seems like a few tools have parts of his vision.

FORTH is famous for small programs that almost redefine the language itself and can say a lot in less than a page. Seems very relevant, but I don't know anything about it besides the basic outline and history.

LISP seems to have some of the same characteristics. Maybe a live code environment for FORTH would be of interest?

I'd argue Excel and co are probably the biggest success in live general purpose data manipulation, and probably the only ones out there I actually have any interest in.

Spreadsheets are also an amazing example of something uniquely digital, that's not quite just a paper emulator, and isn't just some crazy impractical experiment.

Spreadsheets are pretty amazing when you think about it.

Really the big thing that makes them special is the idea that you can put an =expression wherever you could put a value, embedded in a normal, consumery app that otherwise works similar to other software.

The other thing that makes it special is that it's highly constrained. You get a 2D grid of cells. Creativity loves constraint and they seem to have the perfect amount.

It seems average users are perfectly capable of cramming their use case into a set of high level primitives. That's different from almost every other "Code for everyone" system that just tries to make low level primitives accessible.

It's easier to use the wrong framework to do something than build the right thing with raw materials.

From that people who are not programmers at all run half the financial system. And it works. The world has not exploded.

It might be almost never the ideal choice, but then again, I don't think any DIY programming is likely the ideal choice when off the shelf special purpose apps exist, I'd never suggest anyone but a megacorp do their own booking and billing app or something.

I can't think of a single other tool that lets people who would never program, and hate programming... write programs. All the other tools are just things an average person could learn. But they won't, because they'll wonder why. And they'll be right, because they probably don't want to spend enough time with it to be able to do anything they couldn't do in a Google Sheet.

Not only that, it's a live environment that's truly practical, it's not just a tool for thinking, it's a tool for a subset of the same stuff Python might do.

It's something I use on occasion, and frequently use =expressions in other contexts.

It might not be truly general purpose, but it sure is impressive.


👤 evancox100
Another vote for LabView, it is inherently visual and data oriented.

👤 dylanhassinger
sounds like a combination of reactivity / instrumentation / declarative programming

reminds me of Bush's memex "pathways"


👤 pharmakom
Some related projects:

- Jupiter notebooks

- Dev Cards

- Storybook

- Dark Lang

- Excel!


👤 TheOtherHobbes
I'm not sure what "directly manipulating data" means. And - with respect to Bret Victor - I suspect no one does.

Before you can manipulate anything you have to define a set of affordances. If you have no affordances you have... nothing.

A lot of programming is really about manually creating affordances that can be applied to specific domains. The traditional medium for this is text, with dataflow diagrams a distant second.

People often forget that this is still symbolic programming. You could replace all the keywords in a language with emojis, different photos of Seattle, or hex colour codes, but we use text because it's mnemonic in a way that more abstract representations aren't.

Dataflow diagrams are good as far as they go, but it doesn't take much for a visual representation to become too complex to understand. With text you can at least take it in small chunks, and abstraction/encapsulation make it relatively easy to move between different chunk levels.

At the meta level you can imagine a magical affordance factory that somehow pre-digests data, intuits a comprehensible set of affordances, and then presents them to you. But how would that work without a model of what kinds of affordances humans find comprehensible and useful?

ML etc are the opposite of this. They pre-digest data and provide very crude access through text prompts, but they're like wearing power-gloves that can pick up cars but not small objects. You can't tell ML that a specific detail is wrong without retraining it. The affordances for that just aren't there.

And of course many domains require specialised expert skills. So a workable solution would require a form of AGI clever enough to understand the specific skills of an individual user, so that affordances could be tailored to their level of expertise.

I can't see generalised intuitive domain manipulation being possible until those problems are solved.


👤 astrange
The people who think everything would be great if only we had visual dataflow programming remind me of people who get into crypto. They have mystic beliefs about computers rather than being able to figure out how something will actually work.

👤 hypertele-Xii
Computer programs are Turing-complete. How would you ever "modify dimensions [...] to specify what you want the program to do"? The space of possible programs grows like exponentially as you linearily increase the length of the program.

It's trivial to explore visually the space of all possible outputs for a program of length 1 instruction. But how about a million? The output is just gonna be useless noise 99.99999%.

What even is a dimension of a computer program? How many divisions it performs? How many gotos there are?


👤 adastra22
Who is Bret Victor?