Saturday, August 15, 2015

connections

Mr. Sanghi, My wife and I have gotten into the habit of attending the annual shareholder meeting. We live in Tempe, so it's easy, and it's fun. We make a day of it. We've now been to three of them. I'm a great enthusiast for investing, but my wife is the genius who picked Microchip. I'm more of a stumbler and bumbler. Still, I've been reading my Benjamin Graham, and I felt new excitement at today's meeting, perhaps because I understand the numbers a bit better. It appears you have paid a dividend for twenty years running, which is something I've been looking for in a company. Really, what an accomplishment.

Well, I aspire to be in business, and I'm focused on software, which is not exactly your line, but, obviously, is related to it. And then there's the simple fact that you very much are in business, and understand that. As for myself, I really am "just a dreamer," though one person called me a thinker, which I really appreciated, and, for what it's worth, I do write ... and also read. I'm an oddball, and even even a nut, but I'm actually a serious person. Still, I've discussed some of my ideas with a few people who are in business, or who teach it, and they have all come down on the "nut" side, or sad sack, that kind of thing. Well, and the fact is, I'm not much of a programmer, although I have worked through some problems in programming, but the thing is, even the great programmers, Mark Zuckerberg, I'm thinking of, haven't done it all themselves. Or Steve Wozniak. These people made it with help and guidance from business people.

I have, well, really, a passionate respect for business, as, what, an art, a craft, a method of operation? For the building of companies, by which I mean products, infrastructure, work forces, customer bases, and then, as my friend, who called me a thinker, puts it (with a measure of skepticism), "stocks and shares". That's to try to sell you on my mind set. Indeed I would like to be an executive. True, I probably need to take a more responsible attitude. I've been reading about personality types, and the author speaks of a person with his head in the clouds. I suppose that's me.

But, I persist in thinking and writing. I'd like to interest you in one of my ideas.

Already this evening I wrote a poetic but, actually, I think, not unuseful essay, and one that is not as much a rant as what I sometimes come out with, though it is a bit of a rant. It is also not extremely specific, which I think might be a useful quality. That is the previous post on this blog. By the way, we lingered a little, and were among the last to leave, and as we made our way out, someone said "have a great weekend", so I was already a little aglow, and then there you were, greeting us. Thank you. I always go to these meeting thinking about how to have a conversation, though it's out of the question, given, well, myself, but, at any rate, we got to say hello. At any rate, I couldn't sleep, and thoughts about how to say more about my plan, or my idea, were going through my head, so I'm up, blogging.

In the garden, in the middle of the night.

My premise is that CAD, as it's currently constituted, doesn't cut it, and I'm trying to explain why I feel that way. Obviously, it's a kind of miracle, CAD, as it's currently constituted. I say the same thing about computing, generally. Actually, you know, I'm a mad chartist - I don't especially recommend it, but I'm still, let's face it, a believer - and what I see in this whole phenomenon is a giant wave, a huge breakout. By "this phenomenon" I mean computing, computers, languages, software, and now the Internet, and the Web. Well, I suspect the general perception is that this wave has largely run its course, or, at any rate, already reached its apex, but what I think is it's just the beginning. I see it as a signal, a buy signal, the base of the wave. And this, which is just what I see in the shape of the wave, as it were, would, or could, or might, confirm what I'm thinking about the Web, generally - the Web being, in a sense, the surface, that part of the wave with which the most people interact most actively - is that, as fantastic as it is, it's in a muddle. It's also in a subtle correction. It's regrouping. It's trying to figure out what to do next. If I'm right, I might be able to make a contribution to that.

What is the nature of this muddle? That's what I'm trying to articulate. It's a disconnect. I keep encountering this thought. It's a disconnect between what the Web fundamentally is, and, maybe, implementation. It's a disconnect between what computing fundamentally is and implementation.

So, then, what do I say computing fundamentally is? It's a medium. It's something akin to, say, pen and ink and paper. That trinity clearly is a powerful thing. Why? It's just three kinds of muck. We have to understand that they are suited to a purpose, to understand them. And that purpose can be expressed in a single word: representation.

Here, then, is how the disconnect comes into existence. The fundamental nature of what these things are, muck, with a purpose, is so simple, so prosaic, that it's easy to think it's inconsequential. We get caught up in all the variations on it, all the applications of it, and we start to think they are what's fundamental. Then we loose our way.

CAD. That's Computer Aided Something. Design, is what you mostly hear, but sometimes we encounter a variation. I'm saying it's Computer Aided Depiction. I'm saying that's what computing is. I'm saying that's what the Web is. I'm saying that's what these things fundamentally are.


I just was transported a little back in my own history. I am currently very focused on CAD. That's not entirely a new thing for me, or even new at all for me. For years I've been talking about building a new CAD. But I did regard it as a bit of a crazy dream, and for a number of years I've focused more on the Web. What's the distinction? It's almost embarrassingly simple. CAD is three dimensional. The Web is two dimensional. Really, there is no distinction. I don't think that's as prosaic a thought as it might seem to be. But I don't think it would benefit me to elaborate. I'll just present it as a proposition: CAD and the Web are the same thing. If we separate them, if we argue that they are not the same thing, we create a disconnect. We separate what is fundamental into assorted things that are not fundamental. If we do that, we start to create a muddle.


This is what I was thinking about, that was preventing me from sleeping. I was seeing some sort of core, with the qualities of a realm, all sorts of complexity and wonder in it, and around it were a complex of lance like rays, crystalline, a realm in themselves, pointing in towards it. Those rays were tools that we use to manipulate the core. But the tools, as presently constituted, are problematic, because they are not completely connected to the core. They are imperfectly connected to what the core is.

I was thinking rather grandiose thoughts about how this is not to belittle the developers of CAD, or of the Web, about how I would not even be thinking about these things if it weren't for them, and for what they have produced, and about how it's just luck that I am this crazy brain seeing, at this moment, how these things do connect ... how to connect them ... how they got disconnected. If I actually am so lucky, maybe I can connect them up. And about how my preference would be to build a company out of that, but that, if that doesn't happen, maybe by writing about it, I'll get them connected anyway, that I'll make a contribution to that. But that I'd rather accomplish the former thing.

And my previous post describes, or, in a sense, mentions - because it's that kind of essay - how I want to approach that. It hints, poetically, at what I think CAD should be, which is something everyone, absolutely everyone, uses. And uses in the fullest sense. What I hinted at is that I want to build - you could almost say this is first and foremost - a free CAD. That's on the model of Google's products. (One of which, by the way, not incidentally, I'm using to compose these essays.) This is not the Free Software Movement Model. I respect that model - I won't go into that - but I also regard it as a grand farce. I'm supposed to be liberated by those people's efforts, but, here's the thing: I can't understand the first thing about their code. So what good does it do me? On the other hand, Google's stuff is beautiful, and I can use it; that's "even me", a complete incompetent. Nor is this the Professional Products model, products which I can neither understand, nor afford. This is the Ad Supported Model. And I just LOVE advertising. I love seeing it. I feel like it's a gift. I feel like it's a gracious invitation. I feel like I barely deserve it, so I feel like it's hugely generous. And I feel like it's so clever, because I actually do spend money, and even on advertised products, here and there. Even me. Oh, how I love advertising. Yes! I want to be in advertising. 'Nuf said.

Well, but this is something fundamental, too. It points to one of the disconnects. CAD is not, as it is often thought of, mainly for professionals. Well, that's according to my analysis, but I say it's the core of what computing is, and it's for everybody, and I say that is the core of what computing is, and an aspect of it: it's for everybody.

But now, I am going to go off in a strange direction, and talk about mathematics. How is that for everybody? How on Earth is that for everybody. Well, hopefully I can explain. Actually, I think my previous essay, which is much more brief, though a bit more of a rant, manages to make that point, quite effectively. But I'll try to belabor it more here.

What is CAD at its core? What is computing, at its core? You have, to begin with, your computer. That's your processors, and your memory. With these tools, you are going to undertake the core purpose, representation.

You are going to manage these tools using a set of peripherals, some of which are input devices, and some of which are output devices. Some of them combine the two general functions, but the two functions still apply. At any rate, primary among these are the keyboard and the screen. Now you have, in your memory, a file, which is, in its initial state, empty. It's just a location in memory, and a realm of memory which extends from that location, and which is available for inclusion in the file. Using your keyboard, you send information to the processor, and the processor includes that information in the file. And then the processor represents the file for you, on the screen, so you can monitor what you've done. And the file is becoming a string of Bits. And the processor could represent those bits for you, on the screen: 100100110. But that wouldn't mean much to you. However, the processor can represent those bits for you as composite symbols: <object name="earth" type="planet" radius="3959miles;source:google;timerequiredtogetnumber:.1seconds"><city name="paris" location="48.8567° N, 2.3508° E" size="40.7 mi²" represent_as="greenyellow disk"></city></planet>.

So, the processor implements algorithms, which are stored in program files, or in tokens in memory, I guess, to convert your keystrokes into bits, in the file for your model, and then to interpret that file into that string of characters, on the screen, for you to inspect. We're working towards something more. Admittedly it gets more complicated, but there's a point I'm trying to make about that which is that complicated and incomprehensible are not the same thing. Somehow, in that file, we're going to describe the orbit of the Moon around the earth. It's my understanding the Moon doesn't spin on an axis. Apparently there's a point on the moon's surface that always faces the Earth. Once we've defined the Moon and its orbit, relative to the Earth, we'll put a camera into the model. <camera><receptor shape="square" size="500pixels" left="100pixels" top="100pixels" /><location>the point on the Earth's Moon's surface that faces the Earth</location><focal_lenght>500 pixels</focal_length><pointed_at>the center of the Earth</pointed_at></camera>.

Now we will see, on screen, an image of the Earth, maybe a white sphere, floating in black space, and maybe we'll see a greenyellow disk on the surface representing Paris. That depends on the time, because our rendering algorithm will figure out where the Moon is relative to longitude and latitude on Earth at that moment ...

So, I asked, in my other essay, "Is this really a better CAD interface?" And here's where I can talk about the idea of disconnects in a more specific way. Because the way everybody is thinking about CAD, the file, where the objects in the model are described, is something quite incidental. It happens to be necessary, but it's kind of a nuisance, and we want to insulate the user from it as much as possible. I don't think that's the right approach. Listen, the image of the model produced on the screen by the rendering algorithm is a manifestation of the model, but the actual model is the file, and the esoteric code in it. We can pretend we're trying to let the user directly manipulate the rendering, but it's just a pretense. Any change needs to be applied to the code in the file. Then the code in the file gets re-rendered to change the rendering. I wrote in the other essay about how we get fooled by what looks obvious. The rendering looks like a model, so we think it's the model. The code in the file doesn't look like a model, so we think it isn't the model. But the code is the model, and the rendering isn't. If we get those things confused, we get in a muddle. We end up with all sorts of limitations and problems. And those problems look insoluble. We think "well, if people aren't smart enough to use the software, that's their problem." We think the problem is how smart the user is, or isn't. And we figure the user isn't smart, or rather that the non-user isn't smart, and thus that that person can't read the code in the file ... which actually isn't true at all. I mean, here's another thing: it's true that only the grittiest coder can find the particular line in a huge mass of code that does a particular thing, but that's actually not because most people are dumb, it's because the software that allows you to read the code is an afterthought. And, sure, there's software for that purpose, but it's technical, and intimidating. I don't think that's because the problem is fundamentally technical and intimidating, I think it's because we, the providers, think it is, or even that it should be. We've made a decision, deliberately or not, to present it that way.

The camera, by the way, is part of the model. It's a construct of points and point relationships, a surface, onto which the pixels it represents are mapped. Lines through their centers intersect other surfaces in the model, and the pixels derive their colors from the nature of those surfaces, and the nature of those intersections.

There are many such issues to discuss. It clearly makes no sense to wade in further, here, but perhaps I have illustrated my point, the one about disconnection, and reconnection. I wonder.