The simple web

Jack links to a piece on Wired by Clive Thompson called "It's time to make code more tinker friendly." He's absolutely right.

The article argues in favour of maintaining "a simple on-ramp" for the web so that those with little experience can jump in and not be put off by overly complex languages and frameworks.

I was immediately reminded of "Resilient Web Design" by Jeremy Keith in which he discusses different types of language. He states that HTML and CSS are declarative languages in which the author "describes a desired outcome without providing step‐by‐step instructions." This is in contrast to imperative languages (like Perl or C++) where precise instructions must be given or nothing works.

But we can go further than that.

In an episode of The Run Loop podcast Laura Savino talks about the difference between human language versus computer languages:

"with natural languages you can get by with a lot of hand waving"

Even if you aren't fluent in a foreign human language you can get by knowing some words, even if your grammar is bad, because the person you are talking to is able to interpret sufficiently to grasp what you are saying.

Coding, however, is exacting in its requirements. If something isn't absolutely correct then you won't get a result.

While browsers can be pretty forgiving in the way they render HTML you still have to be quite clear in what you write. Tags must be correctly closed and nested and you can't forget angle brackets or whole sections of content can be mistaken for malformed attributes and not displayed.

I think about how kids are introduced to programming: getting basic robots to achieve goals by giving them very simple commands - turn left, go forward, if you hit something go the other way.

From here consider how functionality within certain apps works where you don't have to be precise, but work within a set of parameters. Rather than giving an exact date you can say "next Wednesday" or "the second Saturday of the month" and the app will interpret this.

Thompson talks about taking existing, well commented code and remixing it, tinkering, to get a grasp on how things work but, what if web development could be simpler?

What if we had engines and parsers (AI?) that could interpret imprecise commands and still return a pretty good approximation of what you intended without even having to write a single HTML tag?

What if we could remove the need to learn by tinkering because the AI took care of all that for us? There's no easier on ramp than your own natural language.