Rails 3 is waayy faster and better then. Rails in general is great. Its really got the abstraction thing and taking into consideration crazy things like developments in software engineering practices and programming languages.

Having said that, I don't really know much about Rails. This comment is not about Rails. I just have to tell people because I keep thinking about something and almost no one seems to get it and realistically I am probably never going to follow through with it so if I can't communicate this idea it might not go anywhere. And with all of the positive progressive things Rails developers are doing, maybe, just maybe someone reading this will get what I am talking about.

Basically, I keep thinking, especially just now when I was looking at that Rails code in his slides, the way everything is so well abstracted and so _structured_, and how he keeps going to the model with the circles connecting, and how we keep repeating keywords all over the place, and how no one ever wants to look at unsyntaxhighlighted code anymore, I have to say _again_, one-dimensional non-interactive (or two dimensional if you insist on calling it that) textual representations of software are outdated and unnecessary now.

Sure, we do still have to type a lot of text in, and I am not trying to throw out my keyboard, or stop thinking or something. But there just really isn't any reason we have to be limited to text on a daily basis anymore. People just have a cognitive bias towards the status quo which is preventing them from taking the step to add a layer of two-dimensional widgets or something over the code. I am talking about code generating widgets, or intentional software, or a generic interactive graphical representation for function calls, control flow, model development. Things like that.

Because basically a lot of code, even the things that involve a lot of abstractions with embedded textual mini-languages in them, are mostly mapping from one thing to another. Doing transformations on structures. Code-completion is a start, but what we really want are more useful iteractions with the models and algorithms. The way forward is things like code generation, projectional editing, live coding, dynamic evaluation and representation (widgets) etc. Anything that provides more interactivity to the software development process is where we should be going.

And the next big step is to get out of the limitation of using textual code as the default editing level. Often times we are basically configuring/connecting functions/components, editing models, or using text to generate two dimensional features like tables/grids, UI forms, sometimes mathematical functions, or dynamic systems that we really need to interact with at runtime with dynamic graphical editors to manipulate and comprehend properly. So we should start on the two-dimensional, graphical level. Also, downloading open source projects whose claim to fame is completeness and ease of integration and then reading documentation which amounts to what commands to enter on the command line and then cutting and pasting and editing configuration text files in terminal windows is not cutting it anymore. There are these things called (graphical?) components. We can accomplish this with things like projectional editors, or even more simply by interacting with widgets that generate code. And yes, I know what LabView is, and no, that tool and other attempts at visual programming systems haven't proven anything. Its just hard to get these types of tools to be as generic as text-only systems, especially fully integrating keyboard and text use, AND, the number one hindrance, I believe, is status quo bias like loss aversion.