Thanks for your interest. I love Tcl/Tk and have done several interesting projects in it.
My involvement with the language has gone through phases: late 1990's, break, mid-to-late 2000's, break, and now back for a third time. Fortunately, the language has stayed pretty simple and mostly the same over the years so the returns were not as hectic as it could have been with other languages.
My first involvement was for solving Traveling Salesman Problem ( TSP ). My idea was to start with a convex hull and iteratively solve the remainder of the points on the map. This was a novel approach at the time (based on the survey I did then). There seems to be more researchers doing similar things these days. I first programmed it in C, got some promising results. In one instance, I even got a solution that was better than the one published by the above website as the optimal path. However, it was difficult to see where the algorithm was going astray. Enter Tcl/TK: After seeing a fellow student with Prof O's book, I quickly rewrote the app in Tcl. I could see the map visually, and watch the algorithm doing its thing step by step. Awesome! Unfortunately I had to leave it as oher things came up.
In my second return, I developed a data flow language for non-technical users so they could get their jobs done without needing IT too much, or almost none at all as it came to be :-) . This app had its success in its own limited way. There were boxes that each performed some function, and by connecting these boxes together, one could accomplish certain tasks. This was quite easy to use and powerful at the same time.
Currently, I am back and in the final stages of a more modern, more complete and more capable version of that data flow app. It is designed to be a data engineering platform for anyone who deals with data in one way or another. It has some quite advanced features: in its core functionality, as an app in its configuration and maintenance, and in its extra features. I can write about those later.
Some technical info:
The data flow application above is an implementation of a directed acyclic graph or a DAG (DAG ). Basically, there are nodes and edges, represented as boxes and arrows. respectively. The edges are directional, meaning that an edge goes from one node to another, and it does not automatically imply that an edge with the reverse direction is also present. The graph is acyclic meaning that there are no cycles regardless of what sequence of edges you take to traverse through the graph.
An edge or arrow connects a node to another via its ports. A port is a construct that allows data to be transferred along the edges. As such, from a node's point of view, there are input ports where data comes in, and output ports where data leaves the node. In between the two ports, the node performs its action, whatever that may be.
A node implements a unit of functionality. By connecting them together in a network via various arrows one implements a higher-level business objective or a goal, or more familiarly a program. DAG implementations are usually domain specific.
While this is a mathematical concept in essence, this abstraction is quite useful in Computer Science and it has a number of applications.
The implementation above is driven purely by data, stored in a database. I originally developed it to process data in an Oracle database. It has of course grown to support other databases, including SQLite.
To be continued...
A small fun project: