> An inverse parser treats each command as a sequence of words obeying a grammar -- in other words, a sentence. The sentence is composed by the user by adding words in sequence until the sentence is complete. This has an important benefit: it uses a metaphor (the sentence) that the player already grasps, thereby collapsing the menu navigation problem into a construct that the player is comfortable with.
This essentially describes how the UI of Doug Engelbart's NLS system worked. Each command was describe in a DSL called the command meta language. These grammars where then compiled into a tree over which the command interpreter followed as the user entered in commands. At each step the UI would display feedback to the user about what input they had already entered.
I implemented such an interface in my first prototype of the system that I built in anyone wants to play around with such an interface.[1] I am currently working on a cleaner and more accessible version, but it is still in the design phase and not
usable yet.
I have been building the next version of my hobby project in newspeak and have really been enjoying it.
There is no funding, so the platform itself is also a hobby project for everyone involved. But there are a lot of really interesting ideas here.
The goal is to be able to create a modular, secure, distributed platform as a better alternative to the web browser while keeping many of the qualities that made smalltalk great, such as being extremely dynamic and interactive.
In addition the goal is to be more integrated with the outside world, so it supports things like using standard source code controls tools and has a native gui interface for windows.
I would highly recommend looking at the
doug engelbart institute website[1]. There are a lot of very interesting ideas both about technology and about human behavior.
I started a project[2] to try and understand these ideas and it has been a very enlightening journey.
Also a better formatted version of Augmenting Human Intellect can be found here[3]
The reason polymer is slow on firefox and not on chrome is because firefox does not support html imports yet, so polymer uses a polyfill that relies on asynchronously loading the html which causes a delay in the initial load. Support for html imports is not implemented in safari either.[1]
The legal issues with this technology have now been resolved and the first units are being sold in the open market[1].
A 10-20x cheaper energy storage solution than current battery technologies and it is available right now, and not years away from being implemented like other technologies.
The most complete example of a structured editing system I know off is Doug Engelbart's NLS system from the mother of all demos (from 1968!) [0]. In the system text, drawings and code are all structured hyperdocument data. It is quite different from most software we use today. As seen from the demo, structured editing works well not just on code but on also on text.
I have been experimenting with implementing some of these ideas in the browser[1]. I primarily use the system to take text notes with and write down my ideas. You can't program in it yet, but part of the program is driven by datastructures that are created, edited and manipulated in the system itself. Instead of looking and manipulating the raw data, however, you can render the data to look like a pseudo dsl.
I write a lot and have a lot of text files scattered all over my desktop with ideas, plans and notes. Everytime I start a programming project I also end up with a lot of text files with requirements, design decisions and implementation details. I kept all these ideas in plain text files because, none of the existing tools really fit what I wanted. I ended up creating a program to help with this based on the ideas of Doug Engelbart.[1] The program is still experimental and just deals with text at the moment but I still find it useful.
In terms of research papers, you may want to look at the ideas of Doug Engelbart. The process which you speak of, of collecting information and learning from it, Engelbart termed the CODIAK process. There is a section describing what CODIAK is in this paper[2]. (click on the CODIAK Process link in the table of contents). Engelbart speaks of this process in terms of groups and organizations, but the ideas apply to individuals as well. Engelbart's goal was to create an integrated "knowledge workshop", where all the different programs for organization everything would be integrated together and act as an extension of the human mind to augment people's abilities to collect and digest an ever increasing amount of information and knowledge. There is a lot of work left to be done in this area, but it is an important problem to solve.
For those of you that don't know Doug Engelbart was one of the pioneers behind modern day computing. He invented, among other things, most of the technologies behind the web and collaborative software among other things. If you go to youtube and search for the mother of all demos you can see a demonstration of some of the technologies he invented, it is amazing considering it was done in 1968. Even more impressive than his technological inventions was his vision and the problem he set out to solve.
Engelbart realized early on that the technology related to computing would increase in an exponential fashion and would bring about with it massive changes to society as we know it at every level. The problem is that human beings are not naturally adapted to live in an exponential world where everything is constantly changing, so how to we as a society adapt fast enough to keep up with these changes? Engelbart set out to attempt to solve this problem through his research.
"Augmenting Human Intellect" describes in detail the strategy Engelbart developed that people would need to follow in order to keep up with these changes. Engelbart used this strategy himself in his research. Before reading this paper, I would suggest starting with this paper here[1] which provides a refined summary of these ideas and a few additional ideas and then go back and read this paper. The more I learn about Engelbart's vision, the more I am amazed about how accurate his predictions of the future were.
For those who are interested in trying out a system with a similar interface to the NLS, I have built an experimental system similar to Doug Engelbart's NLS system here[2]. Scroll down to the getting started section.
There has been a lot of discussion around the announcement of Angular 2.0. Basically, everything that you have learned about Angular 1.x and all of your programs are obsolete. Meanwhile I am in the middle of rewritting my own application to Angular 1.3, from an older even more obsolete framework. This is not just an Angular problem.
This question brings up the question of can we find a more sane way to evolve the web rather than completely rewritting everything every couple of years and relearning yet another set of complicated concepts. Staying still and having backwards compatiblity forever is not a good option either.
The newspeak programming language is an attempt to replace the browser development environment with a more sane way to do things when it comes to developing web like applications. More importantly a more sane way to evolve the entire system including the libraries and frameworks we work with. It is currently not finished and I am not recommending anybody use in production anytime soon, I am just suggesting that people download that last stable release and go through the hello world tutorial, which walks you through building a simple file browsering application. Maybe figure out how to build some simple applications.
The Newspeak language is based on smalltalk, so the syntax is very different and there is a learning curve. But how much time did you spend learning the concepts around Angular only to have it become obsolete and learn a new framework again. What about the next version of Angular? How long until that becomes obsolete? Many of the concepts where actually cleaner and easier to understand in newspeak than angular and actually helped me learn angular easier.
Newspeak is experimental and I would not use it on any real projects but it is worthwhile taking a look at an alternative way of doing things. The rate of change of technology only increases as does the sophistication of the programs that we will build on the web, this problem of constantly rewritting everything will only get worse.
This essentially describes how the UI of Doug Engelbart's NLS system worked. Each command was describe in a DSL called the command meta language. These grammars where then compiled into a tree over which the command interpreter followed as the user entered in commands. At each step the UI would display feedback to the user about what input they had already entered.
I implemented such an interface in my first prototype of the system that I built in anyone wants to play around with such an interface.[1] I am currently working on a cleaner and more accessible version, but it is still in the design phase and not usable yet.
[1] https://github.com/smarks159/hyperdocument-system-wiki