Thursday, 22 November, 2001 9:36:06 AM Sedona, Arizona: Today is Thankgiving Day. Margaret notes that Thanksgiving is celebrated in the U.S. and Canada, and that both countries enjoy boundless prosperity. She says this is not a coincidence. I give thanks for my health, wealth, and happiness. I give thanks that my needs of food, shelter, and clothing are met, not only adequately, but in comfortable style. I am thankful for my beautiful, intelligent, prosperity-conscious wife. I am thankful that she and I can grow together, that we communicate well, and that we support each other in our quests. I am thankful that we have found love, and that she surprises and delights me constantly. I am thankful that I don't just live in the Bay Area, but that the San Francisco Bay is my front yard. I am thankful that the hummingbirds are my friends, and that the druid circle of trees before my balcony hosts a flock of real, wild parrots. I am thankful for Unity San Francisco and Reverend Maureene Bass, who have given me the opportunity to resume my spiritual growth in ways that I can accept and understand. I am thankful that I could return to my spiritual home, San Francisco, that I have friends and community here, and that the world is beautiful, inspiring, and peaceful. I am thankful that I am free to admit my mistakes and to change my mind. I am thankful that I have had a second chance, that I can live any life I dream of and desire. I am grateful for geologic time, which reminds us that one lifetime is just a tiny increment of eternity, and that eternity exists. Anything we do can be undone, anything we decide can be renegotiated, anything we build can be modified. The Universe allows us to grow at all times, under all circumstances; we need only to choose to grow. I am grateful for my history, my growth path, my former friends and partners, as well as for those in my current life. Without this path, those friends and partners, and the experiences of my past, I would be someone different today. If I were someone different today, my life would be different. I am grateful that my life is the joyous experience it is, and I am grateful that it will grow into something more wonderful and joyous tomorrow.
Wednesday, November 21, 2001 11:33:55 PM Sedona, Arizona: "Who are you? What are you? What do you do?" I am called David. I am a child of the Universe, part and parcel of it, and I have power over it. I am a master of the physical and the spiritual worlds, and I know how to use them for my benefit and for the benefit of others. I am a seeker of truth, and a teacher. What I know is not for me alone, but for all who share truth with me. I learn, and I help others learn. What they learn is not necessarily what I have learned, and in sharing their discoveries with me, they also teach me. We are peers. I see no men, women, or children spiritually, as all are kindred souls. I enjoy our physical existence, and I know it comes from an existence that transcends the physical. There is more energy in the Universe than we can measure, and all phenomena that were rigidly prescribed in the 18th Century have become mutable. All mankind knows more than it ever has before, and all mankind knows there is more to know than is already known. Yet, Aristotle noted, we know everything already. When I was in engineering school I took many of my math courses twice. It took me longer than many engineering students to understand the principles my teachers presented with academic clockwork precision. There were those who struggled harder than I, and who eventually turned to other disciplines. There were those in neighboring disciplines who suffered the difficulty of learning the mathematical principles that I had come to understand. So in the hallways, in the student lounges, and in the study halls, I shared what I had learned. I taught electronics to my classmates, programming to the freshmen, and calculus to the physical chemistry students. This was done without visible material reward; the reward was that I understood the subjects more clearly myself. Lately I have been teaching explicitly, bringing the knowledge of computing at the nuts-and-bolts level to people who are interested in finding out how computers work, and who are interested in making them work in new and interesting ways. I have been teaching programming in three languages. To some students I may appear the Sage, the Authority, but I make it clear that I learn with them. Every day there is a new discovery, a new idea that I can share with others, a new way to teach a computer to do my job for me. My mission is to help the people become more comfortable with the technology they have created, and to help them create more comfortable technology. In fulfilling that mission I also make myself more comfortable with technology, and I discover new ways to make technology more comfortable. This is a cycle that creates wealth for everyone, not just for myself. All gain in the long run.
Monday, 19 November, 2001 9:21:01 AM When you teach, you learn. I have been going over other details of the article I wrote on 3 September. Recently, during a weekly quiz, I took a new look at the The POSIX.1 Standard: A Programmer's Guide, by Fred Zlotnick. In it, he notes that variables starting with one or two underscores are reserved for system library writers, and that application programmers should steer clear of them. There are a slew of other reserved naming forms, attempting to keep name space collision to a minimum. The net result is that one should check the POSIX standard before making up names for one's own convenience, such as for header guards. Another thing that I have seen lately, that I violated in my work last spring, was that one should avoid including other headers in a header file "at all costs." It appears that unexpected interactions can be kept to a minimum if the specific headers for each C or C++ source code file are included explicitly. Jesse Liberty alerted me to this issue in two of his books, Teach Yourself C++ in 24 Hours, and Teach Yourself C++ for Linux in 21 Days.
Sunday, 11 November, 2001 2:38:25 AM Live and learn. I wrote an article on 3 September that described header guards, and that proposed using them for selective extern declarations. After taking another look at the situation, it seems that this is not a great idea. Global variables are pretty undesirable, and not extensible. From a C++ point of view, any data members that were publicly accessible would be undesirable at the outset. So, while technically possible, my proposal would not lead to maintainable, extensible applications.