## Feature Terrains, Networks of Frequencies

I’m reviewing mathematics. Actually, I hardly have time to review, because I’m finding so many new to me insights in my general reading of mathematics. This reading has me parked at bookstores and the public library. Some of these books go fast, some slow, some so thick with mud that I’d rather be doing something else. When I’m in that no more math frame of mind, I’ll do anything else, but typically end up looking for another book.

At the public library non-fiction juvenile books are filed in with the adult books, so there are a lot of fun titles that turn out to be really quick reads. Elsie C. Ellison’s “Fun with Lines and Curves,” is one of those. I looked at it quickly one day, boring. On another day, I looked at it and though, hey neat. And, here I am blogging about it, because it answered one of those nagging, persistent questions I had about how I’d get from a user interface to the long tail. But, combine that with some of Norman Wildberger’s linear algebra YouTubes and I had an avalanche of ideas. Norman’s videos finally got the eigenvalue concept on firm ground, and introduced the bivector. I still remember the tweet about brand being an eigenvector. Yes.

I’m not going to go over all that today. I’ll show you Ellison’s visualization, hook it to a user interface, add some use frequencies to it, and abstract it out to the long tail.

Ellison is a teacher who wanted to make mathematics fun. Draw two lines that intersect. They need not be perpendicular. Then mark off some positions on those lines. They need not be unit measures, nor do both lines (axes) have to use the same unit measure. The number of positions do need to be the same on each of the axes. Then, on one axis, number your positions from the intersection to infinity in normal order, and the other axis in reverse order. Once the axes are ready, draw a line from a numbered position on one axis to the position on the other axis having the same number.

So for those of you who haven’t taken out a piece of paper and a pencil, here’s the figure.

Our Example

Notice how the straight lines laid out a curve.

The nice thing about this diagram is that it represents a network (Metcalf’s Law). If we use a table, we know that we throw away half the entries above of below the (1,1), (2,2), …, (n,n) (x=y) line. The surprise is that in this figure, you can’t network with yourself, and you can’t network with people you already networked with. No just talking to co-workers from your functional unit. Eventually, you’ll meet the CEO. And, yeah, you PMs only get to talk to the key customer once, rather than over and over in a attempt to like not meet the rest of your customers, the ones not so keen on your prioritization schemes.

I drew the above figure last. Here is the first one I drew. I was a little stiff.

Network Representation

Stiff as in a little to Cartesian.

So we have a network, and everyone can reach everyone else. It reminded me of hypertext theory with it’s links (associations) and nodes, and graph theory where links can be node and nodes can be links, much like vectors being arrow to some and points to others. Don’t worry, hypertext theory is still theory, and a link just displays another page, runs some javascript, or whatever, but never yet reaches the places that hypertext theory would take it, and us with it. We’ve stalled out a bit. Just pull up on the noise of the aircraft to maintain its forward airspeed into that barn ahead.

The red circles at the intersections, the nodes. The black lines are the links.

Using fractional notation in this diagram was just plain wrong! The numbers are just addresses, so use some other syntax. Do not treat them as fractions. Why the warning? I spent too much time doing that and not getting anywhere. One half showed up all over the place, so I didn’t end up with a number line. Why would I do that? Well, math is like that. Why worry about the 16Bth hexadecimal digit of pi? Or, why was it that I did so much type conversion back in the day. Things matter when you climb into them that would never matter if you just walked around the exterior. I was trying to linearize the eventual probabilities I’ll associate with each intersection (node) later.

When we talk about features, or minimal marketable features we are talking about networks of such features. Rarely will a feature stand by itself. A feature like a dialog or a web page will need to be opened or displayed, used, and then closed or exited from. Using features can also mean engaging in a feedback loop. So lets look at one such network. We will open a file in MS Paint. I didn’t go into detail selecting the file that we’ll open.I am opening the file from within Paint. The file could be opened from the file browser in Windows, but that would be framework functionality, which appears at the hits end of the long tail.

Opening a File in MS Paint

Now, I’ll take this network and place it in Ellison’s network graph.

UI Components in a Task Network

Here each line is associated with a particular UI component. Line 1 is associated with the main window; line 10, the Paint menu control, which opens the Paint menu associated with line 2. The options on the Paint menu are associated with lines 5-9. The Open command is associated with line 6. Not all the menu commands have been included in this figure. The recent files list was likewise omitted. The file menu is represented by line 3. The open file shortcut keys are associated with line 4.

The open dialog is only represented by a single line. All by itself, it would involve a huge graph.

As for the main window, I originally showed it empty and again with the file opened in it. I would have to extend line 1 to show both. The past would end up in the background. This was more straightforward. It’s fit for a particular use, and not for some other use.

Next, I add the frequency of use histograms for each node in the task. Coming up with the frequency numbers might involve looking at your server logs, or capturing the use data by some other means. It doesn’t require a lab with video cameras. You also have to decide on scope. Will you count the frequencies for all whole product contributors, or only those that originate in your own code? I’ll leave that up to you. Let’s just go with the idea that the histograms here are illustrative.

UI Components in Our Task Network With Use Frequencies

Once you have your use frequencies, you can order the histograms by height which sequences them into a distribution. That distribution will be a long tail, or a thick tail distribution, which we discussed last week in Search Scarcity.

Long Tail

The long tail for this minimal marketable function is shown as a discrete and a continuous distribution. When additional minimal marketable functions are added, the histograms will separate down the long tail. Some features like the keyboard shortcuts might never be used. That histogram will be far down the long tail. Hopefully, you won’t have features that are never used.

APIs have similar use frequencies associated with its function calls.

Looking back at the task network, the red lines represent a single use case. Live data would constitute a use scenario. A user story might be built from a network or tool task like the open task. Nobody, except the police, buys an application to open a file. Well, maybe a geek. I’m sick of downloading files from professors and ending up with .ps files or others that I can’t open. But, the my point stands. Nobody uses independent disk pools, a feature provided by the IBM i-series operating system. They do geo-mirroring, which in turn forces them to use independent disk pools. Tool tasks are the task we do, because we are using a computer. Most web apps have sublimated file system tasks. Users are happy.

Going back to hypertext/graph theory, the red lines hooking the features together represent a task. We could say that the red lines sequence some symbols, the features, and the whole thing represents a grammar going back to compiler class. We could go further and layer another network on top of the one in our figure, so that the task, a tool task, is a node in that network. Then we could link those tool tasks into a user task.

We could go further and create more layers each working further an further from the interface, from the features. This visualization would give us a better view of the value that our features support and that our customers realize.

Yes, a kids book was full of surprises. It had some great features, and was put to use well beyond its design, but mathematics is good for that.

I even had to reconsider bivectors, but now it has blown me away and given me some new ways to see the issue of cost and policy structure. That down the road a bit. Next, constraints, something that came up in early January. I’m so far behind.

Anyway, go down to your public library and peruse the math section on the kids shelves if they are separate. Pick a few books out, and yes, you know that stuff, but you’re in it for the serendipity, the epiphany, the shock of the boring, the surprise, the leverage, the fun, the point of view of a kid. You see a number is a measure. Life is thick. Numbers are thin. Kids see different, aka paradigmatic culture right there at our knees. You didn’t know they had a kids book on growing up to be a product manager did you?