I remember being pretty blown away by the constraint-based drawing tools in AutoCAD the first time I used them, and I’ve been try for a long time to make some space to work on this sort of thing for myself (I got started a while ago, but stalled through lack of time).
Of course, there really is nothing new under the sun. Constraint-based drawing started in the 1960s, using hardware built in the 1950s (built using individual transistors: no integrated circuits back then!). Ivan Sutherland’s Sketchpad was where it all started. I was reminded of this by a short article about Sutherland I only got around to reading this morning. The article is only so-so, but there are links to some videos taken from a TV programme made in the 1960s about the MIT Lincoln lab where Sutherland worked. They knew how to make science TV in those days. The steady hum of the air conditioning in the machine room, the formal “Well, here’s how it works, John” presentation, the suits and ties. Ah, I can almost smell the Bakelite and ozone. It’s great. Go and watch them and wallow in the techno-nostalgia.
So, this TV programme was recorded in 1963. And they had: GUI display with light pen interaction; 2-D constraint-based drawing; zooming user interfaces; 3-D graphics with hidden line removal; 3-D constraint-based drawing; object linking and embedding. 1963! How the hell did they do all that? Most of those ideas didn’t make it into commercial software until the 1990s, and a lot of people still don’t really know about the constraint-based stuff.
There’s a great quote on the Wikipedia page about Sutherland:
When asked, “How could you possibly have done the first interactive graphics program, the first non-procedural programming language, the first object oriented software system, all in one year?” Ivan replied: “Well, I didn’t know it was hard.”
That’s the attitude you need: forge ahead in ignorance of what received wisdom says is possible. That’s a credo I could like by. If it doesn’t contradict the laws of physics, it’s not impossible, so get on and try it!