Graphical programming languages are like red sports cars. They have lots of curb appeal, but they are rarely safe and reliable.
I long worked for a company whose product featured a very rich graphic programming. It allowed an extremely effective sales process. The salesman would visit the customer who would sketch a picture of his problem on the whiteboard, and the salesman would enquire about how bad things would get if the problem didn’t get solved.
Meanwhile in the corner the sales engineer would copy the drawing into his notebook. That night he would create an app in our product who’s front page looked as much like that drawing as possible. It didn’t really matter if it did anything, but it usually did a little simulation and some icons would animate and some charts’ would scroll. The customers would be very excited by these little demos.
I consider those last two paragraphs a delightful bit of sardonic humor. But such products do sell well. Customers like how pretty they look. Sales likes them. Engineering gets to have mixed feelings. The maintenance contracts can be lucrative. Thathelps with buisness model volatility. So yeah, there is plenty of value in graphical programming.
So one of the lightning talks at ILC 2014 caught my attention. The speaker, Paul Tarvydas, mentioned in passing that he had a little hack based on a free drawing application called yEd. That evening I wrote a similar little hack.
Using yEd you can make an illustrations, like this one showing the software release process for most startups.
My few lines of code will extract the topology from the drawing, at which point you can build whatever strikes your fancy: code, ontologies, data structures. (Have I mentioned how much fun it is to use Optima to digest into a glob of XML? Why yes I have.)
I was also provoked by Fare Rideaus‘ talk. Fare is evangelizing the idea that we ought to start using Lisp for scripting. He has a package, cl-launch, intended to support this. Here’s an example script. Let’s dump the edges in that drawing:
bash-3.2$ ./topology.sh abc.graphml
Alpha -> Beta
Beta -> Cancel
Beta -> Beta
Beta -> Beta
bash-3.2$
I’ve noticed, dear Reader, that you are very observant. It’s one of the things I admire about you. So you wondering: “Yeah Ben, you found too many edges!” Well, I warned you that these sports cars are rarely safe. Didn’t I?