On Writing: 2
I want to write a book.
I don't necessarily want to write the Great American Novel. I don't want to write a brilliant book, I just want to write a book. A real book.
I've written essays, but those are things you write in a single sitting. And they're stream of thought, just like talking things over with a friend.
I've written a thesis. But that's something so specialized that no one else may ever read it. Though you can buy a copy if you'd like.
I've always told myself that I wouldn't read a book that I could have written myself. And I guess by that I've always meant I don't like reading books when I know more about what the author is writing about than he does.
And I wonder if that idea has always kept me from writing a book myself. That the things I write seem obvious to me and I end up worried that people will see right through me.
Maybe that's why I can write essays. I can get up the nerve to write some crazy thing, like an angry letter you write and then tear up. But getting into the flow of writing about one thing and keeping at it for a couple of months or more is a whole other task entirely.
Of course wanting to write in some vague undefinable way is not enough. And even wanting to write for some clear or even tangible reason may not be enough either. You really need to have something to say, or a story to tell.
I hope I have something to say or something to teach, because I don't have much of a story to tell.
That's not to say my life story is not interesting, because it is, but it's not much of a story to tell. And that's because I didn't keep notes as I went on living, or lost the notes as I grew up. And because I didn't live such a crazy life that I can reveal the interesting parts without affecting the lives of the people around me (by revealing their lives).
But I'm a relatively smart guy who has spent a lot of time in school and I figure I can get my head around some subject and write about it. Hopefully well enough to be of some use or interest to others.
Though to be honest the most important things I learned, and more importantly the things I learned the best, I didn't learn directly from my education. I might have learned them while at school, but I learned them almost in spite of being there.
I think that's the way it has to be. You need to have a passionate interest in things to succeed. You need to want it, to need it. It can't simply be your day job. You have to it on your mind all the time. You need to go home after a long day in class, or at work, and sneak in a couple of hours of something you really care about.
Maybe when you're a big success you can do what you love for a living, but at the beginning you're lucky if you can even work in the same field.
I also think that you have to teach yourself as you go along. As I've hinted at, once you know something like the back of your hand, it's too late to write about it. There's so much of it you take for granted. You'll start talking about it to someone and have them interrupt you after five minutes and ask you what the second word you said meant.
I mean you can write about the new things you're working on, but I think if you want to write a textbook on the basics, you have to write it as you learn. At least that seems to be what happens in a lot of cases. Though I suppose in a lot of cases people also write these books as they teach (but I'm not a teacher or professor, at least not yet).
So that makes me think that the book I want to write is going to about computers. Not because that's what I know the most about (which it is), but because that's still what I'm most eager to learn about.
Specifically I want to write a book that covers the topic from top to bottom or from bottom to top. I don't want to cover the whole subject, but I want to cover all the layers.
I don't want to explain things at a fundamental level, but I want to give some understanding and teach some skills at all levels. To spoil all the magic.
For practical purposes I'll want to start in the middle. Because that's where the real fun lies. You're close enough to the metal that you still understand everything that's going on, but not so close that you can't get anything interesting done.
The field of computers is possibly unique in that it is possible to work at all the levels. Of course the blessing of being able to do something, is often really the curse of having to in disguise.
Though on second thought maybe I'll start closer to the bottom as that is where I have the most to learn, and where I can get my hands dirty and my thoughts collected.
So I will start with an instruction set for a real or hypothetical machine. I'll design an implementation of it. I'll write an assembler or compiler for it, and some other basic software.
And then I'll probably dump it altogether. It was a learning tool, and once the learning is done we can go back to the real world with a better understanding of why things are the way they are.
The next step is to take some Free operating system base like the Linux kernel and poke around and make some changes. In this the specifics will become obsolete with time (even possibly by the time the book is complete), but my main goal is to write such that the "astute" reader will be able to go ahead and do likewise with whatever exists in the future.
Then we'll look at a compiler like gcc and do some hacking there. And from there we'll go to perl, python and ruby and hack the heck out of those.
Again the goal is to eliminate all the magic. To gaze deep into the bottomless void without getting lost for all eternity.
I suspect most programmers realize that there are myriad layers below the one they are working at. And that there are myriad people working at each of those layers whose jobs are as thankless as their own. And that the same applies to layers above as below. And yet the divison of labour is such that it prevents this periodic realization from arousing curiosity in the larger world.
Or maybe it's just me. But it's seems that I can be "interested", without showing any real interest, there being so many annoying barriers to moving about.
The point of this book is to provide enough entry points and rough maps to different levels that one can go off and explore the entire world in relative comfort and security.
But I don't want to solve toy problems. Small problems are fine. Non-interesting or unecessary problems are fine, but I don't want to solve problems that could never have been meaningful: non-problems cooked up to fill a book.
and also. The all-powerful ed has also contributed!.