Me

What do I do? My father majored in math, he's in computers. My sister majored in math, she's in computers. I wanted to become a mathematician, so I majored in computers. But it didn't work. Judging from computer science departments, you need a Ph.D. in computer science before you can become a mathematician.

So...what do I do...It's the first question people ask. I never noticed until I didn't have a good answer. Well, in a fit of wild optimism, I quit my job and set off to write the Great American Software Product. What is it? I've been working hard for a very long time, and you'd think I'd know - but I don't. Right now it is just a lot of code, not a product. A product solves somebody's problem. What I have is a nice framework for building diagram editors. I need to decide soon. I also do consulting.

I have build a couple of interesting pieces of software:

My Product

He had bought a large map representing the sea, Without the least vestage of land:
And the crew were much pleased when they found it to be A map they could all understand.

(Hunting of the Snark, by Lewis Carroll)

Ever since I quit my job, I've been working on a diagram editor (like Visio). It does three things:

Creating Modes

Diagrams have many, many applications: more applications than I can build modes for. So my tool must support users creating their own modes. I want users to create powerful modes. For example, a mode a user creates for data-flow diagrams should be at least as good as a custom tool just for data-flow diagrams. I also want the modes to be created by users, not programmers. Therefore:

Editing Diagrams

Of course, a diagram editor needs to edit diagrams: add nodes, add edges between nodes, add text, move elements, size elements, etc. Let me talk about what makes my tool different:

Understanding Diagrams

Creating diagrams is important, but more often, people are given diagrams to read. My tool helps people understand diagrams. It does this by selectively hiding and showing elements in a diagram. Reducing the clutter by hiding things the user is not currently interested in makes diagrams much easier to understand. For example, you may want to focus on one node, so in two mouse clicks you may hide everything except that node and the nodes that are directly connected to the node. Or you may want to see ancestors of a node, or children of a node, or hide the external elements.

The other way the tool makes diagrams easier to understand is using abstract views. A node may be in one of three abstract views: minimized, maximized, and normal. Let's consider an example. A node in a class diagram has fields for the class name, the data members, and the functions of the class. The minimized view would hide the functions and data members and just show the class name. The normal view would show the class name, and use a scrollable list to show the data members and functions. A maximum view would resize the node so all the functions and data members are visible without scrolling.

Status

Yea, right. I will release it when it is finished. But this isn't vaporware. I am close to a feature freeze to the framework.
determan@world.std.com 

Back To Playful Thoughts

Back To Varatek