I feel like this kind of work is extremely important.
I always say that if someone figured out how to write better software faster, they would be a billionaire.
I see project after project turn to mush and go south, people writing the same stuff over and over again. I see brilliant people botch projects and struggle to do the work of a programmer. I see weekly data breaches exposing my personal information to whoever wants it.
To me, there is only one conclusion: Software is too hard to write. It is too hard to write robust large-scale systems. It is too hard to write secure software. There is DEFINETELY a ton of progress to be made in this area of research.
...in the mean time, I'll keep on cashing my paychecks.
I've been to Dynamicland a few times, and from what I saw, it is not designed to build "robust large-scale systems". It's exploring a different side of computing.
Things that get in the way of robustness: state is based on the physical world. You knock something over, the state has changed. To change the state, you need to move a physical object, which typically means you need a human to do it; the programs can't change state officially. They get around this by storing state anyway, which leads to some weird behavior at times. They've experimented with using magnets to have the system be able to change the physical state, but it's a hard limitation to get around. Also, you want to make a backup of the data? No can do, because we don't have a way to clone physical objects.
Things that get in the way of scaling: all programs are running in a global shared space. Every program can write anywhere to the display or generate audio etc. It's pretty cool! You can run a program that overwrites all output with rainbows. Even more, every program has access to every other program. There's no security. For example you can put a program down on the table and point it at another program to change the second program's code. Cool stuff!
All of this goes against the things we are taught about modularity and scaling and security.
There's a lot of magical stuff going on at Dynamicland but I think it's not a way to create "software" as we think of it. It's a type of computing that isn't easy to do now. It's kind of like comparing a smartphone to a crystal radio kit. The smartphone does a lot of amazing things, and it does it at scale, but the crystal radio kit lets you and your friends tinker and make new things. Apples and oranges.
Dynamicland makes me think of Morpheus's line, "Unfortunately, no one can be told what The Matrix is. You have to see it for yourself."
It's a testament to the improvements in software engineering that we can even write large-scale systems at all in the first place. Structured programming and object-oriented programming [1] have proven to be revolutionary in the language front. Similarly, you can point to the development of the modern DAG-based VCS and continuous integration on the infrastructure front. Or modern IDEs with integrated debuggers and refactoring tools for development; automated regression suites; fuzzers and sanitizers--we've come a long way.
But I think a lot of people keep falling into the same trap when it comes to imagining what the next set of major improvements should be. Graphical programming is a popular example: the author pooh-poohs the terminal, for example. But text is the densest way we can precisely convey information; if we're trying to scale to the next system size, cutting information density by ½ (or more!) is not a good first step.
[1] I'm referring here specifically to the principle that state should be contained with objects that are protected by interfaces and passed around to people who need access to them, instead of everything just being functions that manipulate global variables. This is closer to what Alan Kay's original definition than the current interpretation.
> Graphical programming is a popular example: the author pooh-poohs the terminal, for example. But text is the densest way we can precisely convey information; if we're trying to scale to the next system size, cutting information density by ½ (or more!) is not a good first step.
You don't necessarily need a terminal for a text-based interface (looking at you, Oberon). Our terminals are teletype emulators. TTY is hard-baked deep into the most prevalent operating systems and it affects what we consider "programming" and limits our collective horizon.
The parent's point wasn't about CLI vs. GUI so much as different ways to present and design programs. Most people these days write software in an editing environment that's much richer than the TTY.
> But text is the densest way we can precisely convey information
I take issue with that claim. For one, it is possible to enhance text (which I take to mean a sequential glyph representation here) with useful graphical elements which take up little space (e.g. making use of the often considerable amount of whitespace around text). And there are many types of information that are poorly suited to textual representation.
Of course, people may assign different meanings to the word text. To take an example from the article, you can say that a spreadsheet interface uses text in its cell values and formulas. But it is arguably not a text interface in the way CLIs and text/code editors are commonly understood.
It would be cool to get this out of the lab and into the hands of hackers and makers. You could combine a pocket DLP projector + a Raspberry Pi + camera module to make a cheap, portable Dynamicland platform.
Standardizing bar codes and color dot meanings could open the world to hacking -- i.e. stick a bar code on a building, and anyone can scan it and run the attached program.
While Realtalk OS is not open source there are open source projects that allow you to build mini subsets of Dynamicland. La Tabla[1], Paper Programs[2] and nl-datalog[3] are either prototypes of systems the eventually came together to build Dynamicland or in the case of Paper Programs an implementation loosely inspired by Dynamicland.
> By May 2016, Kay was able to charm Y Combinator’s president and A-type startup whisperer Sam Altman. They created Human Advancement Research Community (HARC) inside of YC Research and absorbed the CDG researchers there. Altman generously agreed to fund HARC out of pocket while they waited for other promised funding to come through.
> That arrangement lasted a little over a year. In July 2017, just a few months after HARC moved into a beautifully renovated building in old Oakland, Altman abruptly defunded the lab.
> It’s unclear why he pulled the plug. In his Y Combinator annual letter in February 2017, he said that the work coming out of Victor’s lab “remain one of the new technologies I think most about.” But a person close to Altman told me that by July his excitement had shifted from HARC to OpenAI, another YC Research project where he is now CEO. Amidst the ashes, a burned-out Kay left for London, and the research groups disbanded.
I was so excited when HARC was first announced. It's great that they were funded for an extra year, but it's really too bad YC couldn't keep funding Bret Victor's lab :(
I was lucky enough to visit Dynamicland at one point. The computing environment they had set up there was interesting. Programs are stored on a central server, but are executed by putting a printout of the code (with colored dots around the edges serving as a barcode) on a tabletop that has a camera and a projector above it. I/O between programs happens by putting cards next to each other. The programs also affect what the projector displays on the board, but the only persistent state is the presence and position of cards on the table.
>Programs are stored on a central server, but are executed by putting a printout of the code on a tabletop that has a camera and a projector above it
So...timesharing and punchcards?
Ha! I'm amazed at how often computer history repeats (rhymes?) itself. Not to discredit Dynamicland's work, if anything I love that they took something that seems so ancient and turned it into something excited again. Sounds like such a cool place to work at.
Punchcards have their virtues! My family's business used them for inventory management in the 70s. You could print out a deck of cards for the inventory database, and walk around the warehouse pulling out cards for anything broken or missing, then scan those cards back in to change their category.
Now you could do it all on an iPad, but the bandwidth of shuffling cards by hand can be significantly higher than scrolling through a list.
Writing a scholarly paper now that points this issue out in DynamicLand. DynamicLand is amazing but making the "old" paradigm the centre point of the new is a contradiction. I wonder if Bret Victor has thought about this bottleneck.
I love the motivations behind the idea, but not the idea itself. I think there's a better way. Dynamicland undoes half the progress we've made in the last few decades, particularly when it comes to inclusivity. The amazing thing about computers is their ability to convert information between representations at will, and to transmit them anywhere, instantly. This is crucial for accessibility. Not being tied to a single representation means you can access and manipulate information with any method you want. It might be a touchscreen, a keyboard and a program that reads information aloud for the blind, or a voice recognition / eye tracking system for those who can't use their hands. With Dynamicland, you need to manipulate physical objects directly. If, for some reason, you're unable to do so, you're completely locked out. Contrary to what the article says, I think Dynamicland could strengthen the young white male living in California programmer culture even more. The beautiful thing about computers of today is the ability to learn and hack on programs, for anyone, anywhere. Open source even allows anyone to contribute, and being an OSS contributor gives you an advantage when trying to find work. Remote work is also becoming more and more pervasive, enabling people from poorer countries to work in tech without physically moving somewhere else. Dynamicland makes all of that significantly harder.
A better idea which might solve some problems it aims to solve, without sacrificing inclusivity, might be going back to the Unix tools philosophy. Tools should do one thing, do it well and do it only. They should also work well with other tools. The design of smartphone operating systems forces apps to do the exact opposite. They're sandboxed and prevented from accessing most features of the OS, as well as from communicating with other apps effectively. That forces developers to put more and more features into their apps. It also gives many opportunities for corporate lock-in and user-hostile tactics. The Unix philosophy would alow anyone to contribute something, no matter how small or insignificant. There should be some verification, of course, probably similar to what Apple does. Forcing all the tools to be open source wouldn't even be such a bad idea after all. They wouldn't be big apps, just small things scratching small itches, so there would be no big investment needed to develop such a tool. I think such an approach would let us create a much more vibrant and user friendly ecosystem.
I've followed Dynamicland for a bit. I'm completely enamored with the project, and yet I agree with you, the implementation is...not right. The goal is admirable but the approach feels like a step away from it, not towards it. Still, that's likely a side effect of simply trying to break the mold of computing we've all grown familiar with (even as it morphs away from the PC and into mobile and IoT).
The primary indication I see that the project is at least somewhat flawed is this: I don't think you could build Dynamicland's systems in Dynamicland (the same way you might write a new C compiler in C). I don't think that's their target, but I don't believe you can accomplish their mission without that characteristic.
>If we want a future where everyone can program as easily as drawing a map on a napkin, where the full power of computing is available to more than just professional programmers, we may need to reimagine programming itself.
Seems like they're trying to achieve two incredibly difficult, dubious and complex goals at the same time, which doesn't usually work out in the end
I tried to visit last time I was in San Francisco and it turns out this thing is closed to the public. The guy who answered the door says he's not sure when the next open house will be, no one is answering the "contact" page and I'm not getting any email announcements on it either.
Is there ever going to be any "open house" when any joe schmoe is able to visit?
I went to their open house twice. Since it the article says Bret is on sabbatical, maybe we should wait a year for the next one. It's not easy catering to waves of new people.
Would be cool if their website was programmable by using a similar scheme to the real building -- drawing on some kind of whiteboard-esque interface to change settings on the app
“Our mission is to incubate a humane dynamic medium
whose full power is accessible to all people.” Kind of ironic when they don’t even release the source code. I guess by all people they mean people who stop by Oakland for a couple hours.
This is pretty cool, but, like, what’s the point? What problem is this trying to solve? How does printing hello world out of a printer with dots on it help us at all? Why would we want to align pieces of paper in order to do IO? How is this supposed to change the world like PARC or Bell Labs?
Don’t get me wrong I would love to play around with stuff. But that’s what it is, playing. Do you think any of the people who work there when working on a personal side project are like: “I can solve the problem of <foo> by printing out sheets of paper and organizing them on a table!” I would hesitate to call this project masturbation, but it comes close. Or just call it art, that would be fine too (just don’t pretend it’s going to matter all that much).
Bret Victors talks and essays are well worth consuming. He speaks to the limits of computing within the confines of a small rectangular screen on how people actually think and work. As an architect of iOS UX circa 2006, he's uniquely qualified to discuss UX's impact on behavior. The Humane Representation of Thought is a great place to start: https://vimeo.com/115154289
Dynamicland is the first iteration of what he envisions with "seeing spaces" - interactive, full body computing that allows for humans to create and communicate more effectively whilst using technology that fades into the background.
I agree that computing confined to a rectangle is limiting and stifling. The long-term solution in my mind is everyone having an AR headset. I would love to be able to project code and objects all over the room and be able to code any place anywhere. The technology clearly isn’t there yet though, so I understand dynamicland’s paper and projector model.
My very very long-term dream about computing is something like nexus in the Nexus Trilogy[1]. Written by an ex-Microsoft dev, it’s a really great hard sci-fi cyberpunk take on the future of computing. Highly recommended!
Although if somebody got a decent web page design tool out of it, it might be worth it. The HTML/CSS/Javascript crowd has managed to turn a visual problem into a really ugly programming problem.
I always say that if someone figured out how to write better software faster, they would be a billionaire.
I see project after project turn to mush and go south, people writing the same stuff over and over again. I see brilliant people botch projects and struggle to do the work of a programmer. I see weekly data breaches exposing my personal information to whoever wants it.
To me, there is only one conclusion: Software is too hard to write. It is too hard to write robust large-scale systems. It is too hard to write secure software. There is DEFINETELY a ton of progress to be made in this area of research.
...in the mean time, I'll keep on cashing my paychecks.