3 ms·
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
by honkycat 7y ago
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.
- jcranmer 7y agoIt'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.
- scroot 7y ago> 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.
- Lorkki 7y agoThe 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.
- Firadeoclus 7y ago> 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.
- robterrell 7y agoIt 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.
- cr0sh 7y ago> It would be cool to get this out of the lab and into the hands of hackers and makers. https://paperprograms.org/ https://paperprograms.org/
- Impossible 7y agoWhile 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. [1] http://tablaviva.org http://tablaviva.org [2] https://paperprograms.org https://paperprograms.org [3] https://github.com/harc/nl-datalog https://github.com/harc/nl-datalog
- amitp 7y agoI'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."