No, I Don’t Know Everything

A reader was taken aback the other day when I uttered the words, “I don’t know.” Three little words (actually four, since one of them is a contraction) seemed to send this poor soul reeling. As an author, I often need to utter those words because it’s a fact that I truly don’t know everything. If I did, life would be boring because there would be no challenge. Looking at the situation logically, there isn’t any way for me to read the daily output of millions of computer scientists—it’s physically impossible. Comprehending and remembering all that output would be a gargantuan task inconceivable in its execution. Keeping up with a modicum of that output is still an immense undertaking, but one I do with joy and a desire to know more.

Unfortunately, there seems to be a societal enmity toward those words. For a professional to utter, “I don’t know” seems to diminish the professional’s stature both with peers and those the professional serves. We expect our professionals to have answers (the correct ones) at all times, which is clearly unattainable. Yet, uttering those words requires courage and someone uttering them should be admired for being truthful, at least.

Of course, uttering the words and doing something about the utterance are two different situations. Generally, after uttering the phrase, I feel obliged to do something about it, assuming that the question is within my purview of interests (which range widely). Most professionals, curiosity piqued, will delve into the abyss and come back with an answer after some period of study. However, by that time the questioner has often pursued other interests, leaving the professional to wonder whether the question really was important.

The answer is always important, if for no other reason than the professional has added new knowledge and opened new avenues of intellectual exploration. Even so, a little patience on the part of the questioner would have been nice. Any voyage of discovery takes time, no matter how mundane the trip might appear at first. In fact, many of my most memorable discoveries came as the result of a seemingly routine question on the part of a reader.

When I utter the words, “I don’t know” to you as a reader, it doesn’t mean I lack experience or knowledge—it simply means that I haven’t yet explored the area of information you desire. In many cases, I’ll take time at some point to explore the area and present you with my opinion on it, but you’ll have to be patient until I’m able to discover the answer for you. In the meantime, it’s my hope that you’ll continue to ask questions that cause me to utter, “I don’t know.”


Considering the Effects of Technology on Animals

It was an innocent act—incredibly funny, in fact that led me to think about the topic of today’s post. I had recently installed new UPSs for our computers. The addition allowed me to plug the speakers in for my wife’s system. She has a program named Catz installed on her machine. They’re virtual cats, of course, that you feed and pet just like the real thing. The cats will play on screen while you work away. Every once in a while, you can take a break to see them do some of the oddest things you’ve ever seen. Our real cat, Smucker, hadn’t ever heard Catz before. When he heard them for the first time, he was intrigued. At some point, I walked near my wife’s office and heard the most horrid banging. Naturally I stopped to investigate and there was Smucker, banging on those speakers for all he was worth, trying the get the cats out .

The technology you use can produce hilarious events with your animals because the animal has no clue that it’s technology, and not the real world. Over the years our cats and dogs have interacted with animals on TV, tried to make sense of plush toys that also purr, and wondered about our sanity in associating with the vacuum. For the most part, our dogs and cats have been curious, we’ve been entertained, and no one has gotten hurt.

I know that technology has had a beneficial affects on our animals in many cases. For example, research into new materials has garnered long lasting and easy-to-clean rubber buckets for our chickens (see Review of Weather Proof Rubber Pan). All of our animals have benefited from the research we perform online—something that wouldn’t have been possible even a few years ago. Technology helps us create better environments for our animals and to feed them better food. The vet that cares for our animals relies on modern technology for shots and general care. In short, our animals have a better life because of technology.

However, I also started to consider the negative aspects of technology. When a human plays music too loud, doesn’t it also affect our animal’s hearing? While we put the dogs up when working with yard equipment, the chickens and rabbits remain outside. Does the use of these items affect their hearing and potentially cause other problems? I’ve been spending considerable time thinking about these issues as of late because technology can be a two-edged sword in many ways. Because animals have no way of telling us how technology affects them, we often have to rely on our senses to detect changes in them. For example, the rabbits do get quite nervous when I drive right next to their cage with my garden tractor. I changed that behavior this year and started using the hand mower or my weed whacker—the rabbits do seem a bit less nervous.

Sometimes the technology meant for direct use with animals can be harmful too. For example, reading the list of ingredients for some animal food should tell you that the food isn’t truly beneficial. It may be an inexpensive way to feed your animal, but it’s not a good way to meet their dietary needs. We tend to try to feed our animals things they would naturally eat, even though technology says that we really need to use some specially formulated food instead. In fact, we’ve found that we can save money and still give our animals a better life by not following the technological route in this case. We provide our animals with kitchen scraps of all sorts, along with access to grass, insects, and all sorts of other natural foods—none of which costs us a penny, but is healthier for the animal.

A major problem for me is that there isn’t a lot of research available on the problems that technology can cause when it comes to animals. As a result, I spend a lot of time seeing how the animals react to the techniques we employ to make their lives better. How is your use of technology affecting your animals? Let me know your perspective at


Methods of Learning

More than a few readers write me about the best way to learn. Many of them are asking about the best way to learn how to become a programmer—a topic I discuss in my Becoming a Programmer post. However, more and more often, readers are asking me about learning in general. The fact is that I can point you to different techniques for learning, but I can’t determine what will work best for you. You’re the only person who can make that determination and you won’t know until you try a number of techniques. In a society ever more devoted to success at all costs, learning requires that you fail in order to make gains. When you fail, you learn what doesn’t work and possibly why it doesn’t work. So, trying various techniques is the only way to discover what works best for you and that process involves some level of failure.

I imagine that my answer frustrates a lot of people because they don’t want to fail at something, so they ask what works best for me. Mind you, what works for me probably won’t work for you. I personally learn best by working through examples written by other people. When it comes to programming, I rely on application examples written by other developers and scrutinize them intensely using the debugger so that I can see precisely how they work. Then I create applications of my own that use those techniques to ensure I actually do understand how things work. Likewise, I use examples from other woodworkers, gardeners, or other professionals as a basis for my own hands on learning experiences. In addition to these hands on techniques, I also read a large number of books and articles every year. Often, all I really need to learn a new technique, is a good explanation of it. I read books and magazines in every area that interests me—everything from application development and computer hardware to new gardening techniques and animal husbandry. In some cases, I also attend lectures and seminars to augment my learning, but given that lectures and seminars tend to be expensive, I focus on my primary means of learning new things whenever possible.

Don’t limit yourself to what I use though. There are many other ways of learning that are just as viable and just as important. The only requirements of learning is comprehension (the ability to understand what you’ve learned) and retention (the ability to remember what you have learned). How you achieve your goal is up to you. Here are a few other methods you might consider trying in addition to those that I commonly use.


  • Instructor Led Training: There is a good reason that children go to school. An instructor (teacher) can answer questions about a particular skill immediately and fully. The interactive communication that occurs helps the student learn faster and with fewer problems.
  • Tutorials: A tutorial is essentially a set of precisely written procedures meant to guide the student along a particular learning path. It’s a combination of reading and doing that helps someone develop a skill quickly.
  • Interactive Media: This is a newer form of the tutorial that relies on sight and sound to convey meaning. Interactive media includes animations and graphics that help a viewer visualize the content better. Hands on exercises included with the interactive media help the student know when a particular training goal is achieved.
  • Observation: The subtle art of observation isn’t mentioned very often anymore—probably because people are too busy or impatient to use it. I know that I’ve learned more than one new task though simply by watching someone else do it. Observing someone means watching and thinking about what they’re doing. You don’t necessarily ask any questions (and may annoy the person you’re observing when you do).
  • Experimentation: Of all of the methods used to learn, this method provides the highest gains when successful, but also incurs the greatest amount of failure. It’s a matter of asking a question, deciding on how best to answer that question, and then creating an environment in which to determine the answer. In order to ensure that the question is answered correctly, you often have to repeat the experiment a number of times in various environments. Experimenters often discover new knowledge or rediscover lost knowledge, but at the cost of failing a lot.
  • Cooperation: A cooperative learning environment is one in which two peers have part of an answer and choose to share their part with someone who has another part of the answer. The exchange benefits both parties because both now have two parts of the answer. Of course, a cooperative learning environment requires trust on the part of both people.
  • Dissection: When I was younger, I couldn’t be bothered to keep anything in one piece. I dissected everything in an attempt to discover how it worked. Often, that meant not putting the item back together because the dissection process is destructive. Even so, you’d be amazed at how many things you can learn by dissecting an object to see how it’s put together.

This list is incredibly short. Over the years I’ve seen people learn an amazing array of knowledge using all sorts of techniques that boggle the mind. In every case, the successful learner has experimented with various techniques until he or she finds the techniques that work best. These techniques won’t work best for someone else, but they work best for you. I encourage you to fail in order to learn. Don’t be afraid of trying something and then discovering it doesn’t work because that’s the only real way to learn anything. Let me know about your favorite learning technique at


Determining When Technology Hurts

I’ve been talking with a friend recently about a disturbing trend that I’m witnessing. Technology has started hurting people, more than helping people, in a number of ways. Actually, it’s not the technology that’s at fault, but the misuse and abuse of that technology. One of my goals as an author is to expose people to various technologies in a way that helps them. This goal is one my major reasons for writing books like Accessibility for Everybody: Understanding the Section 508 Accessibility Requirements. It’s also the reason I’m constantly looking at how our society interacts with technology.

I’m sure that there is going to be some sort of course correction, but currently, our society has become addicted to technology in a way that harms everyone. You could be addicted to technology if you’ve ever experienced one of these symptoms:


  • You’re with friends, family, or acquaintances, but your attention is so focused on whatever technology you’re using at the moment that you lose all track of the conversation. It’s as if these other people aren’t even there.
  • You find yourself making excuses to spend just one more minute with your technology, rather than spend time with your family or friends.
  • In some cases, you forgo food, sleep, or some other necessity in order to spend more time with your technology.
  • Suddenly you have more electronic friends than physical friends.
  • You can’t remember the last time you turned all of your technology off, forgot about it, and spent the day doing anything else without worrying about it.
  • You’ve had some sort of accident or mishap because your technology got in the way.
  • Attempting even small tasks without your technology has suddenly become impossible.

Technology is meant to serve mankind, not the other way around. For example, I was quite excited to learn about the new exoskeleton technologies that I wrote about in my Exoskeletons Become Reality post. The idea that I’m able communicate with people across the world continues to amaze me. Seeing Mars through the eyes of the rovers is nothing short of spectacular. Knowing that someone is able to live by themselves, rather than in an institution, because of their computer sends shivers up my spine. These are all good uses of technology.

However, these good uses have become offset by some of the news I’ve been reading. For example, it has been several years now since scientists and doctors have begun raising concerns about texting being worse than drunk driving. What these various groups haven’t considered is that anything that distracts you while driving is bad. For example, radios now have so many gadgets that you can get quite engrossed trying to get what you want out of them. Except for turning the radio on or off, or perhaps changing the station, I now leave my hands off the radio unless I’m parked. The fact that I daily see cars weaving to and fro in front of me as the driver obviously plays with something in the front seat or on the dash board tells me that other people aren’t quite as able to turn off the urge to fiddle.

I know of more than a few people who are absolutely never disconnected from their technology. They actually exhibit addictive behavior when faced with even a short time away from their technology. It’s not just games, but every aspect of computer use. Some people who work in IT can’t turn off from their computer use even when on vacation—they take a computer with them. I’ve talked about this issue in my Learning to Unplug post.

I look for the situation to become far worse before it become better. This past Sunday I was listening to a show on the radio that talked about how banks would like to get rid of any use of physical money. You’d carry an electronic wallet in your smartphone and that wallet would provide access to all of your money. In short, even if you’d like to unplug, you can’t because now you depend on that smartphone for the basics in life. At some point, everyone will have to have smartphone simply to survive if the banks have their way.

Of course, why bother with a smartphone when you can embed the computer right into the human body? The science exists to do this now. All that has to happen is that people lose their wariness of embedded computer technology—just as they have with every other form of technology to come along. Part of the method for selling this technology will undoubtedly be the ability to control your computer with your mind.

Technology is currently embedded in humans to meet special needs. For example, if you have a pacemaker, it’s likely that the doctor can check up on its functionality using a wireless connection. However, even here, humans have found a way to abuse technology as explained in my An Update On Special Needs Device Hacking post. What has changed since then is that the entertainment industry has picked up on this sick idea. It’s my understanding that NCIS recently aired a show with someone dying of this very attack. Viewers probably thought is was the stuff of science fiction, but it’s actually science fact. You really can die when someone hacks into your pacemaker.

The implications of what these various groups are working are quite disturbing. As technology becomes more and more embodied within humans, the ability to be alone, ever, will be gone. Any thought you have will also be heard by someone else. There won’t be any privacy; any time to yourself. You’ll be trapped. It’s happening right now and everyone seems to be quite willing to rush toward it at breakneck speed.

The day could come when your ability to think for yourself will be challenged by the brainwaves injected by some implanted device. Theoretically, if the science goes far enough, the ability to even control your own body will be gone. Someone is probably thinking that I sound delusional or perhaps paranoid—I truly hope that none of the future technologies I’ve read about ever come into wide use.

In the meantime, the reality is that you probably could use a break from your technology. Take time to go outside and smell the flowers. Spend an afternoon with a physical friend discussing nothing more than the beautiful day or the last book you read. Go to a theater and watch a play or a movie with your technology left at home. Eat a meal in peace. Leave your smartphone at home whenever you can. Better yet, turn it off for a day or two. Unplug from the technology that has taken over your life and take time to live. You really do owe it to yourself.


Developing the Reader Profile

A lot of people have written to ask me about writing books—about the techniques I use to develop a useful book. So far, all of my books are technical in nature. Not all of them are computer-related, but the majority are. The sorts of books that I write is changing and you’ll likely see me write books in other areas in the future. Whether I ever write fiction remains to be seen, but I do plan to branch out into other areas. No matter what I end up writing, I expect that I’ll use many of the same techniques when writing future books as I use to write my current books. Mainly, I need to find a way to communicate the ideas that I understand in a form that the reader can understand. It doesn’t matter what those ideas are—they exist in my head and I need to get them out of my head and into the reader’s head.

When I’m putting an outline together, I try to put myself in my reader’s shoes. Sometimes that means actually doing a little play acting and trying out things to see how I’d feel if I were the reader. Yes, conveying technology, or any other topic for that matter, means understanding the reader and how the reader feels. It means respecting the reader as a person and understanding that the reader has specific needs, as well as specific skills. Sometimes I’ll talk to the beta readers who are reading my books about issues or bounce ideas off the technical editor for my book. I’ll review materials online and see what people are discussing online. In short, I develop a profile of my reader and roll it around in my head until I can start to see a technology from the viewpoint of my reader. It’s not an easy thing to do, but it’s a necessary skill to develop.

In a way, I’m creating a relationship with what I think my reader will be. Beta readers do offer the opportunity to interact with actual readers, but my reading audience is relatively large, so it really does come down to creating a rapport with an idealized reader—one who encompasses everything I expect that my reader will be. The relationship takes form in a profile that I write down and review relatively often as I write the book. As I come across additional insights during the writing process, I develop the profile of my reader more fully. I keep constantly asking myself how I would talk about the subject at hand if I were sitting in a coffee shop (or some other relaxing environment) with the reader.

To a certain extent, I need to consider the reader’s need for self help. I can’t provide any reader with a specific answer for most problems the reader will encounter. To do so, I’d need to write immense books that no one would want to read because they’d be too bulky. I can provide the reader with knowledge and insights, but I can’t provide the reader with a precise response to any given problem because at the time I write my book, the problem is undefined. So the communication takes the form of ideas, rather than a specific procedure, in most cases.

Authors are hindered by a number of factors. The most important of these issues is the inability to communicate with the reader in real time. It’s the reason that I try to make myself so accessible through e-mail and by writing this blog. Even with these additional levels of communication, however, there are still barriers to communication. For example, I can’t easily read your body language to determine whether my response is actually helpful—I must make my best guess. When writing a book, I have to anticipate your needs and hope that my guesses are good ones because they are, in fact, guesses.

The reader profile doesn’t have to take a specific form, but it does need to provide you with a complete picture of the reader. Even if you define a few reader aspects incorrectly, having a reader profile will help you remain focused throughout the writing process on a particular reader. Here are the sorts of questions I ask myself when creating a reader profile:


  • What is the reader’s education level?
  • Will this reader understand these specific concepts?
  • When will the reader be reading my book?
  • How will the reader react to certain types of information?
  • Are there social biases I need to consider when communicating with this reader?
  • How does the reader view the subject at hand?
  • Is the reader likely to have language issues or special needs?
  • Will the reader be alone or part of a team?
  • How does the reader view me?

Most of my books require that I ask other questions, but this a good sampling of the sorts of questions that I ask myself. You’d think that with all of this effort spent considering my reader that I’d communicate quite well. However, there have been books where I ended up missing the reader completely with my profile. I directed the book at one audience, but another audience actually found the book more helpful and purchased more copies of it. When that happens, I get a lot of e-mail from a lot of disgruntled readers (and the online reviews are also less favorable). These failures require that I go back and review the premises on which I based my book and make corrections. I maintain statistics for the book, and if I get the chance to write an update, I tweak the reader profile accordingly to better meet the needs of the audience that purchased my book.

Anyone writing anything can benefit by creating a reader profile. If you currently write documentation, but don’t create a reader profile, I encourage you to do so because you’ll end up with a far better document as a result. As the years have passed, my profiles have gotten better, but I’m under no delusions that I’ll ever write the perfect profile. Even so, I’d never consider writing a book now without creating a reader profile first. Let me know your thoughts about using reader profiles at


Profession Versus Job

I often find inspiration for posts in places that you wouldn’t think to look. Today’s post comes courtesy of Bill Bridges from his Green Market Press blog. The post in question is the Taipei Journal entry for today—there are many of these journal entries, all entertaining and educational about the human condition. Bill is a professional journalist and a good friend who has often inspired me to excel with his seemingly simple posts. The reason that today’s post struck a chord with me is that it answers part of the question of how to become a programmer. My initial post discussed the mechanics, the precursors that someone might pursue to become a programmer, but that post didn’t answer the question of how to make programming a profession.

Today’s journal entry answers the question of profession versus job rather succinctly. Susan writes an article that constantly mentions “the French system of government” without ever explaining what the term means. Bill asks her about it and her response is, “I did sort of wonder about that.” Susan has a job, Bill has a profession. Education, no matter how complete, is only a precursor to a profession. In order to turn a job into a profession, one must also become involved, learn to think for oneself, and have a desire to excel. An aspiring programmer must have integrity as well and be willing to devote long hours toward the goal of delivering the best possible code. Mind you, the code a particular individual delivers is unlikely to be perfect and it’s always possibly that someone else will write better codeI’m talking here about excellence within the individual’s ability to deliver it.

Anyone can perform a job. Only a few people have a profession. However, I’m not talking about a particular sort of profession. When Rebecca and I lived in San Diego, we’d go to a particular restaurant (the name escapes me at the moment, but the restaurant is no longer there anyway). There was a man named Kevin there who waited tablesit was his profession. You could see it in the way he performed the tasks of his tradewith enthusiasm, vigor, and more than a little subtle humor. You felt honored to be served by him and the lines were often long with people who specifically asked for him. Application development is a trade that requires no small amount of education, but I’ve seen more than a few people obtain the required skills by simply reading a book. The difference between a job and a profession remains the samethe professional takes responsibility for successful completion of the task and delights in seeing the task well-done.

While my previous post described a job, this one describes a profession. Many people have questioned why America has been losing it’s place in many different technology areas. First of all, I submit that statistics lie and often tell the story that they’re designed to tell. Don’t believe the lies that you readthink for yourself. Americans still have what it takes to create some of the most amazing technologies ever and I’ve discussed more than a few of these technologies in previous posts. If America has truly lost its edge, then where do these technologies come from? Second, far too many Americans are focused on getting a job, rather than a profession. When you view America of the past, you discover that we have had an array of professionals that delivered new technology is all sorts of waysmany never thought about before.

The bottom line is that you need to consider what sort of programmer you’re going to be as part of your journey. Education isn’t enough. If you really want to become a good programmer, then you must be willing to do what it takes to become a professional. As a professional, you’ll have a higher quality of life, discover the benefits of job satisfaction, and contribute to society in ways that you can scarcely imagine. So what do you havea job or a profession? Let me know your thoughts at


Getting the Most from Your Technical Reading Experience

There are many ways to work with books. However, in all cases, there is some work involved. No book, no matter how well researched and written, will simply spit out answers without any effort on the reader’s part. It’s true that the author can employ techniques to make the reading experience more pleasurable, productive, or efficient, but in the end, it’s the reader who decides just how much information a book conveys with regard to a specific need.

Of course, the first step is to ensure you get the right book. I’ve already discussed this issue in the Techniques for Choosing a Technical Book post. So, let’s assume that you have possession of a book that’s the best possible match to your needs. It may not be a perfect match, but it offers more than any other book you’ve checked.

Now you have to decide on how to interact with the book. That may seem simple, but many readers fail to discover what they need from a book, even when the book contains the required information in several places. Let’s face it, books are relatively large and it’s easy to lose track of a required bit of information. Without some guideline, the mind wanders and tends not to work very hard.

To obtain the most from a book you need a goal. The goal determines how you approach the book. Someone who is trying to learn a new skill will probably begin at the front of the book and work toward the end. Skipping chapters is akin to skipping classes in collegeyou can’t expect good results if you don’t obtain all of the information. As a contrast, someone who is trying to fix a specific problem under the watchful eye of a boss, probably doesn’t want to waste any more time than necessary finding the required information. This sort of reader will want to locate the section of the book containing the answer quickly. There are some readers though, who really don’t know what they want to dothey lack a goal and are thwarted when the author can’t guess what the reader wants. So, ask yourself why you’re reading the book and create a goal for that particular session. In some cases, you may very well want to wander through the book randomly looking for something interesting, but few people have the time or need to perform this sort of reading with a technical book.

Depending on your goal, you’ll want to determine where to start. Someone who is learning a skill will start in the Introductionnot in Chapter 1. If you don’t read the Introduction, you’ll discover that your educational experience is going to be less helpful. The Introduction is where the author conveys book goals, knowledge requirements, and required training aids. For example, you might not be able to use the educational version of the product you have to learn a new skill with this particular bookit may be necessary to get the released version of the product instead. Researchers and those who simply need the book for reference would do well to check both the Table of Contents and the Index. A book intended solely for reference may include tables in an appendix that provide additional ways to locate information, so you’ll want to find these tables as well.

You’ve likely heard all of the advice for creating a good study environment before, such as turning off the radio. A good study environment also requires focus on your part and the availability of the required equipment. Simply reading about how to perform a task isn’t nearly as good as actually performing the task. Reinforcing the information by putting it into your own words is helpful as well. Everyone learns differently, so it’s important that you take time to discover how you learn. Whatever it takes for you to create a good study environment, you won’t get much out of a book until you create it.

Everyone seems to be in a hurry today, but being in a hurry won’t help with technical information. Hurrying only creates errors. Take time to actually read and understand the materialread it several times if necessary. Work through the material before you act. Yes, I realize that the boss is ready to pound little knots all over your head, but he’s simply going to have to wait. A good solid answer that produces results often requires a little more time up front to create. The book probably has the information you need, but you have to take time to find it.

One of the most important things to remember is that the author isn’t clairvoyant. You won’t find a precise answer to any given question in any book. It’s possible to find an answer that’s close, but in most cases you’ll have to create a solution based on the information the book providesquick answers are rare.

I wish it were possible to create some form of instant mental transfer of precise data. Perhaps someday it will become the norm to do so, but I hope I’m not around. Part of the joy of technical reading is obtaining the author’s point of view and then creating your own permutations of that information. Working through problems creatively is a challengeone that I hope people working in technical areas continue to enjoy. If you have any pointers to getting more from a technical reading experience, let me know at


Becoming a Programmer

I’ve had more than a few readers write and ask how someone becomes a programmer. Of course, that’s a loaded question. The first thing that you must decide is what a programmer does, who they are as a member of society, and what they contribute to society. There are many fields that could be construed as programming. Anyone who writes a set of instructions that somehow directs that actions of a computer is a programmer. This definition encompasses everyone from the administrator or power user who writes macros to the designer who creates engineers huge projects to the low level developer who creates operating system code. Theoretically, the ingenious person who actually succeeds at programming their video recorder to start and stop at certain times to capture a favorite television show is a kind of programmer. Today I’ll focus on the computer scientist, because that’s what I am.

Aptitude is part of becoming a good computer scientist and you need to decide whether you have the required talents, skills, and desires. A love of the abstract is a requirement. Despite the best efforts of companies such as Oracle and Microsoft (and a huge number of others) to create an environment that mirrors the concrete world, creating good code is the domain of those who embrace the abstract. It isn’t simply a matter of knowing how to work with numbers. A computer scientist is an expert in many arenas of abstract thought and can actually feel the numbers in a way that few others can. Developing great computer applications is an art and many of the best computer scientists have an artistic bentthey play music, craft words into books, paint, or otherwise put into physical existence the abstract concepts of the mind.

Most computer scientists are naturally curious. It isn’t sufficient to know that the device workshow the device works is far more interesting. Taking things apart to see how they work and putting them back together again to ensure a true understanding of the underlying principles exists is a joy for the computer scientist. Nothing is too complex and in everything there is wonder. Where others see the mundane, the computer scientist sees the amazing.

Of course, there is the practical to consider as well. My first exposure to computers and programming was punch cards (yes, I’m dating myself here). I was in a typing class and part of that class was to work on a keypunch machine. The fact that holes in a card could control a huge machine was amazing to me. In those early years I also studied computer hardware in depth (right down to the chemical reactions that occur within a transistor) and discovered things like paper tape machines and light panels. This sort of education isn’t available to aspiring computer scientists today, but it’s where I began. Those early days were critical to my development as a computer scientist. Your early days are equally important.

So, where would someone begin today? There is a fear that everyone seems to exhibit about destroying their computer. Get an older machine that you don’t have to care too deeply about, but still works. Take it apart, learn how it works, and put it back together. A computer scientist understands that every line of code does something to the hardware. We’ve lost touch with that connection todaya real loss. Obviously, you don’t need to know absolutely everything about the functioning of the hardware, but you should at least know the basic parts of your computer.

Start small. If nothing else, install an old version of Office on your machine and use it to write macros. For that matter, try working at the command line for a while and write some batch files for it. You could also try working with JavaScriptit’s free and there are some excellent tutorials for it online. Experience the small things and you’ll gain understanding that you can’t get any other way. Most importantly, keep in mind that you’re trying to affect the world around you by writing commands.

Eventually, you’ll want to start working with a programming language. My first true programming language was BASIC. I learned it at a time when DOS was kingbefore Windows was even a twinkle in Microsoft’s eye. Visual Basic or C# are great languages to start with. You can write some extremely useful applications without a very large investment in either time or money. If you prefer, learning Java can be a good experience, but I’ve found it requires a little more time to learn than some other languages.

Discover a low level language. For me it was assembler. Actually, I learned to work with assembler on a number of systems. Today you’ll want to learn C++ because few people use assembler anymore. Even embedded system programming (the last frontier of truly custom systems) relies on C or C++ for the most part now.

Don’t confine yourself to a single platform or language though. Before I even entered college, I had been exposed to three different computer languages. During college I learned three more. Today I learn whatever seems to be the best language to accomplish a particular task. It wasn’t long ago that I learned IronPython. I’ve worked with PERL, LISP, F#, Java, PHP, and many other languagesthey’re all ways to express something that I need to do with the computerthey’re all beautiful languages for a particular task.

The important thing is not to make writing applications a chore or workkeep it fun. If you’re thinking about a career as a computer scientist, I think you have some amazing things to look forward to because computers are become ever more capable of interacting with the outside world. Let me know your thoughts about computer science at


Dealing with Digital Addiction

It may sound odd coming from a guy who has written 87 computer books and over 300 articles, but I think the world has a severe technology addiction that’s going to cause us significant woe at some point (assuming it hasn’t already). Obesity, people who think cable television is a basic necessity, the need to have a cell phone constantly attached to one’s ear, and all of the other negatives commonly associated with a digital addiction today are only the beginningthings will get worse. Don’t get me wrong, technology definitely has positive aspects and it has a role to fulfill in the modern world, but I think we’ve gone way too far (and I’m sure we’ll go further).

One of the best ways in which technology can help is to level the playing field for those with special needs. In fact, anyone who knows me knows that I have a very special place in my heart for those who have special needs and can be helped by technology used in a positive way. However, it’s often the technology developed for people with special needs that seems to hurt us the worst (think of the television remoteit mainly started as an accessibility aid).

I read a PC Magazine commentary by Lance Ulanoff this morning about digital addiction and a book that will help you with it. Most people don’t need a bookthey need a reason and a plan. You can’t combat anything that you’re not convinced you need to combat. Some people are incredibly happy being addicted to technologyI feel sad for them because they’re missing out. If you make your entire world revolve around technology, you’re likely missing out on real friends and relationships with family. You’re also missing out on a vast range of experiences that have nothing to do with technology. However, unless you see that you’re missing out on these things, nothing that I or anyone else says will convince you of anything. So, you need a reason to deal with a digital addition.

If you finally do come up with a good reason, you need a plan. When I gave up smoking years ago, I had to find a way to fill the vacuum. My way of dealing with the addiction is probably uniqueI bought some running clothes and a new pair of shoes. Every time I wanted a cigarette, I went for a run instead. For about a month, I actually ended up sleeping on the couch in my running clothes because it was easier than having to get dressed to address an urge in the middle of the night. After about six months I found I had lost 20 pounds and that I felt extremely good. So, something positive came out of getting rid of those cigarettes.

My own technology addiction came sometime after I left the Navy. It seemed as if my wife couldn’t pry me out of my office under any circumstance and that I couldn’t enjoy any activity that didn’t somehow involve my computer. I was constantly worried about missing somethingthat some event would happen and I wouldn’t be available to deal with it. (If this sounds at all familiar, you likely have a digital addiction too.) I’m not quite sure when it snuck up on me, but it did. As with my cigarette addiction, once I realized I had a problem (my weight skyrocketed and I felt terrible), I came up with a plan to deal with it. I started including daily walks in my regimen, spent time with my wife playing board games, going to shows instead of watching television, went on picnics, started working with wood, and took time to enjoy events at the park. My mother-in-law helped by getting us an annual pass to the zoo. All of these things are part of the plan that fills the void so technology doesn’t rule my life.

The battle to contribute in a positive way to the world and yet not let technology rule my life is ongoing. You’ve seen my posts on self-sufficiencythat’s part of the plan. I don’t carry a cell phone, don’t worry about the messages in my inbox or on my answering machine, and think about things other than writing. Twice a year I shut everything offthe computer doesn’t exist for that time intervalmy wife and I get reacquainted. As a result, I’m happier and healthier than I have been in many years. If you find that you can’t leave the technology at home, unplug, and not feel any remorse about doing it, then you have a digital addiction and I encourage you to find both a reason and a plan for dealing with it. Let me know your thoughts about digital addiction at