Wednesday, March 25, 2009

Avoiding the GUI

FSF has started putting together a book on the linux command line - Introduction to the Command Line

I wish someone would write a book on avoiding the GUI. I wish even more that I could find fairly recent programs, even for linux, that don't depend on GUIs.

I dislike graphic interfaces, and though windowed programs are sometimes very useful, there is no necessary connection between windows and graphic interfaces. Unfortunately, they have become so conflated in people's, even programmers', minds that they are automatically considered together. One example is the X Window System for UNIX and Linux. You have to be running the graphic desktop to use programs written for X, and because of the libraries and reduced programming overhead, most programmers now write programs for X, rather than for linux. (I'm referring specifically to application programs, in case that wasn't obvious from the context.)

This is NOT an improvement, except in the rather narrow sense that replacing metal with plastic in kitchen appliances or tools is an improvement - it makes production cheaper.

Also, the use of graphics inside a program is not always using a graphic interface. I would prefer that command buttons in programs be replaced with a small command line text box - anyone who has lost information because they accidentally clicked the wrong button can probably understand why, even if the idea never occured to them. I have even opened the wrong program, which I then had to close and open the one I meant, by clicking the wrong icon on the desktop.

Another problem with GUIs is that they are what Mike Gancarz in The Unix Philosophy refers to as captive user interfaces - you have to sit there and keep clicking, you can't just tell the shell what to do and let it run. Including you can't pipe it together with other programs to do a more complex job. In fact X violates most of the UNIX Philosophy.

One of the reasons GUIs have become popular is that everyone seems to think that more users is better, so they are trying to make it easier to get started, apparently figuring that as they gain expertise the suckers (err..., "users") will stick with what they are used to rather than switch.

A better tool is harder to use at first, but as you learn it, it becomes more natural and quicker to use. Typing in a command is much faster than cascading menus and, for someone more than marginally literate, more natural. As far as keyboard shortcuts - most importantly, they should be easily personalized. There are too few reasonably memorizable shortcuts to cover everything, and each expert tends to work in a slightly different (or wildly different) area and will find different shortcuts valuable.

Neal Stephenson's In the Beginning Was the Command Line... gives an interesting perspective on this. It is only fair to add though that he has since changed his stance on some of the issues he raised in the book; though the note I saw didn't say in exactly what respects. I think it excellent as it reads.

Tuesday, March 24, 2009

Optimism - Dangers and Benefits

Optimism is not necessarily as beneficial as many proclaim.

The pessimist complains about the wind; the optimist thinks it will change; the realist adjusts the sails.
-- William Arthur Ward

Optimists may accomplish more than realists, realists certainly accomplish more than pessimists, but optimists do many times as much damage. For example, nearly all "revolutionaries" and criminals are optimists. Lenin, Hitler, Sadam Hussein, Bernie Madoff, and probably all con-men and burglars were extremely optimistic. The conviction that they will never be caught is nearly universal among criminals. Many, perhaps most, excessive risk takers are optimists.

An unsuccessful optimist never learns. He is one of those fools who is sure everything will work out all right, but who does nothing to make sure it will. A successful optimist will learn from his mistakes and keep working at his problem.

Some work almost requires optimism, because the work is so tedious, for example, Fred Brooks in The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) says:

All programmers are optimists. Perhaps this modern sorcery especially attracts those who believe in happy endings and fairy godmothers. Perhaps the hundreds of nitty frustrations drive away all but those who habitually focus on the end goal. Perhaps it is merely that computers are young, programmers are younger, and the young are always optimists. But however the selection process works, the result is indisputable: "This time it will surely run," or "I just found the last bug."

If you have a choice, you should plan for the worst and hope for the best, or as Lazarus Long put it "Pessimist by policy, optimist by temperament - it is possible to be both. How? By never taking an unnecessary chance and by minimizing risks you can't avoid. This permits you to play out the game happily, untroubled by the certainty of the outcome." (Robert A Heinlein, Time Enough for Love.) Take precautions then just enjoy yourself knowing you have done what you can to prepare.

Another view from David Weber and Eric Flint's novel, Crown of Slaves (Honor Harrington):

But if the expression "optimistic paranoiac" hadn't been a ridiculous oxymoron, it would have described Ruth fairly well. She seemed to take it for granted that half the human race was up to no good, even if the knowledge didn't particularly worry her much - because she was just as certain that she'd be able to deal with the sorry blighters if they tried to mess around with her.

From the unix fortune-cookie program:
pessimist: A man who spends all his time worrying about how he can keep the wolf from his door.
optimist: A man who refuses to see the wolf until it seizes the seat of his pants.
opportunist: A man who invites the wolf in and appears the next day in a fur coat.

Monday, March 23, 2009

Assorted Comments on Tools

Use tools appropriate to your skills and to the job you are trying to get done. Learning to use more powerful tools is one of the best ways to increase your effectiveness.

I am a good draftsman. I can complete architectural, or some engineering, drawings on paper faster and more accurately than with any of the less expensive CAD programs I have tried. I am not going to spend over a thousand dollars on AutoCAD and a like amount on a large printer or plotter without some evidence it would be worth it, especially when the less expensive CAD programs I have tried have been so crappy. And even more so when actually putting them on paper forces a person to think through the details, so I am more likely to catch any mistakes or inconsistencies.

Money is the most flexible tool. It can be used to buy physical or software tools, get information, or have someone apply expertise you lack.

Useful knowledge is a powerful tool; this was clearly recognized by the authors of the "Whole Earth Catalog", its sub-title was "Access to Tools".

If you are making tools for others you need to keep in mind the skills of your expected users, how easy it will be for them to begin using your tool and to master it, to what extent their current skills will transfer, what they will be using your tool to accomplish, how well fitted your tool is to those ends, and the
competition - what other tools the user could choose instead.

Two tools that accomplish the same ends may have totally different groups of users because of other considerations, such as, what is traditional (with training, accessories, and such already available) for the group, which tool is flexible enough to be used for other problems a particular group may have, and cost considerations (for example, most groups would not be willing to spend as much for a tool for an occasional or peripheral job as a tool for a more frequent or central job).

Plateaus in Learning

Plateaus in learning have 2 major causes: the first is a transition between different stages of study and depths of knowledge. Initial study for recognition level is quick and easy, memorizing for the second level is not - you seem to stop learning despite working harder. If you continue working, however, you will again begin to see progress. Then, when trying to be able to put together what you have memorized to explain it in your own words and your own way, you will again feel slowed to a crawl for a time. And yet again, when you start trying to do original work.

The second major cause of plateaus is more common - a simple waning of motivation. Sometimes, there is a good cause, like tiredness from working too hard on something. More often you tried working from enthusiasm alone or from someone else's prodding, and when your enthusiasm waned or the other person stopped prodding you, you had no firmer motivation to back it up.

A third cause of plateaus, for physical work and exercise, is overtraining. Overtraining can be a simple failure of motivation, but it can also result from not giving your body enough recovery time between significant bouts of intense exercise. When you have to do hard, physical labor every day, as I did when doing landscaping, you have to space out any physical training more than someone who is in a less physically demanding job. Fortunately, the periods of daily, hard labor were only a few weeks at a time, so I could work around them.

Saturday, March 21, 2009

Learning Journal and Record

Design your own education; no one else can know your needs and desires better than you. Your goals may, probably will, change over time, especially as you learn more, but you have to start somewhere. The best place to start is wherever you are. What's most worth learning for you right now?

A learning journal helps you to keep track of where you've been and to plan where you should study next. It also helps you to learn by making you pay enough attention to what you've been doing and to what you are thinking about doing in the future to record it accurately. Record your ideas, insights, reactions, reflections, problems, and doubts. Your journal is not about what you've learned so much as for what you have thought about it. Also for the future you need to develop your project plans and experiments starting with your hopes and dreams. Also review your journal, recall how you were and how you've changed.


When you're considering a learning project ask yourself:

1. Does it advance my purpose?

2. Will it be enjoyable or will I come to dread working on it?

3. Is it economical in, that is an efficient use of, both money and time?

4. What is the opportunity cost? That is, what else could I be doing with that money and time?


Record anything you think you may find useful about your learning:

1. Maintain a record of what you are working on, what you have completed, how you felt about the projects you have done, what you have learned from them, how you could have done them better.

2. Maintain a complete portfolio of material produced. Write something significant to yourself each day. Write lots of short papers.

3. Describe the particular work done to produce the materials.

4. Keep a chronological record of how the work progressed. Note particularly which parts you think deserve more care, these can become future projects.

5. List employers, co-workers, or employees who can verify parts of the portfolio and your description of your abilities.


These records are primarily for your own benefit, to help your learning be more effective, but secondarily you can use them for potential employers should you decide to work in your field of study.

Depth of Knowledge

Depth of Knowledge refers to how thoroughly you know and understand what
you have been studying.

Recognizing information seen before but not memorized. Information is familiar and you can relate parts when both are presented separately. This is what is mostly tested by multiple-choice tests. Never mistake scoring well on most multiple-choice texts as real learning.

Remembering information, memorizing lists & facts - building up your internal data bank. Working from memory you can present key facts and relationships that you have studied. This is a necessary foundation for deeper learning. If you cannot remember details, then you cannot reason from them. Too often this step is skimped in modern schooling; rote memorization is often necessary for real learning to take place. The most important thing to remember here is that you must PAY ATTENTION to what you are trying to remember. Repeated exposure is necessary for memorization - but you also have to pay attention to the material. The better you pay attention, the less it will need to be repeated for real learning to take place. Having a theoretical framework for the material to fit will also help since we remember mostly by association, this helps recall that. Recall is best tested by fill-in-the-blank type tests and short essay-type questions.

Because memorization is so time and effort intensive, don't waste your time memorizing things that are not important. First, you must remember the basics - arithmetic, spelling, vocabulary, and grammar. Next, you must remember things that you may need without time or references available, when you need them, first aid and various other emergency skills. While learning, you need to memorize things that further learning will depend on, the basic facts and relationships in whatever field you are studying. Finally, when actually working in a field, you need to remember frequently used information that it would waste considerable time looking up repeatedly. These are also important to keep in mind, because to keep things memorized, you need to refresh the memory periodically. The first and last categories you will actually keep refreshed, if you are conscientious in their use by using them. The hardest to keep up on is the second category, emergency skills.

In the third level of knowledge, you understand the material and are able to explain things in your own words. You can draw new relationships between facts. You need to be able to remember details to explain things in your own words - for a long time I deluded myself that I could understand the material because I could follow along with the explanation easily enough as I read it. But you do not truly understand something until you can explain it in your own words from memory.

Finally, you can use information in papers and discussions to articulate and defend what you know. You know the subject well enough to do independent, original research. Here you are learning in your subject primarily by working in the field rather than from others.

Friday, March 20, 2009

Stages of Study

Stages of Study refers to how far into your current particular item of study, essay, article, textbook chapter, classroom lecture you have gotten or intend to get.


Initial Study



First stage of study - acquiring the information that you intend to make your own. At the completeion of initial study you will have acquired recognition depth of knowledge. The other three depths of knowledge are not coordinated with the stages of study.


There are two types of pre-reading: skimming and scanning. Skimming is for well organized material, such as textbooks; read section headings and the study questions for chapter and study vocabulary list before reading the text. Scanning is for less well organized material, such as essays, and is similar to speed reading, where you go through the material quickly looking for general structure and organization and for keywords, basically, you're trying to pick-out of the text the sort of things, section headings and vocabulary lists that are explicitly presented in textbooks.


Outlining provides brief record of information gained by skimming. A good outline condenses the material, organizes it for learning, helps you to separate what you already know with what still requires work, and helps you to avoid the mistake of thinking you know something to the recall or understanding level when you are actually at the recognition level. The most common error when outlining is to write down too much.


Read through the text noticing arguments and supporting information for the points you made note of in the pre-reading and outlining. Mark after you read, not while reading. Mark only the important points - never whole sentences. Use the same mark or symbol for the same purpose throughout the text. Try to use consistent marking throughout all of your studying, it will make reviewing your studies in the future easier.


Notetaking: where possible take notes in text as a complement to underlining. If you can't take notes in the book, you need to copy or summarize enough of the context that your notes will make sense when you come back to them. Summarizing the context is important - there is little that is more irritating than coming back to your notes a year or more later only to discover you can't remember what, specifically, they are refering to.


Attending Class is an essential step in reception involving classes. Always do the required reading; in class look for added insights and information. It's a waste to take class notes on what's in the text. For new material you need to take detailed class notes, for example, if the class isn't using a text, the instructor is developing a new approach, or there is a lot of new material expanding on or updating the text. Rework your class notes as soon as possible after class to fix the information in your mind.


Organizing Information


Putting the material you gathered in Initial Study into shape for learning it in Internalization. The most important factor in internalization is repeated exposure to and paying attention to the material. Many forget the "paying attention" part. When organizing the material for study, you need to keep it in mind, and build the organization of the materials to be reviewed so that it will help hold your interest.

Vocabulary building is extremely important. You need to notice new words, organize them for study, and learn them. Almost all fields have distinct vocabularies, including words that look like common words but have distinctive meanings within that field.


Diagramming visually organizes facts, helping you to fit them into a framework for remembering and understanding them:

a) Hierarchal or Family trees

b) Time or Life Line - historical or functional (for example, biographical or laying out an experiment)

c) Concentric Circles - diagrams of software and operating systems commonly use concentric circles

d) Geometric Shapes - triangles, squares, cubes, etc - phase diagrams in chemistry and thermodynamics are an example using triangles.

e) Symbolic Representations - maps, graphs, figures, et cetera


Lists of facts can be treated similarly to vocabulary when individual items are more important or as one-dimensional diagrams when the relationship between items in list is more important.


Internalizing Information or Acquiring Knowledge



Internalization is the step of making the information yours. Converting information from books and lectures into your knowledge.

Methods of internalizing information depend on the depth of knowledge you want to acquire. Recognizing is a lot easier than remembering; which is easier than explaining or using.

The most important factor in internalization is repeated exposure to and paying attention to the material. As in organization many forget the "paying attention" part. The deeper the knowledge you need of your subject, the more important "PAYING ATTENTION" becomes. I have a good memory and can usually reach basic recognition level simply by reading through the material once. Being able to use information, to make it my knowledge takes a LOT more work. For a long time I deluded myself that I could understand the material because I could follow along with the explanation easily enough as I read it. But you do not truly understand something until you can explain it in your own words from memory.

Summarizing the material in your own words or by diagramming the material or discussing it with others who have also been studying, or have studied, it also helps you to make it yours.

Trying to come up with questions about the material is probably the best way of internalizing the information.

Aphorisms are useful and important, not as a "substitute for thinking" which is what many disdain them as (and some people actually do use them as), but as reminders and prods. For getting things done, aphorisms are even more useful than most of the other techniques people have developed, because they are more likely to be recalled when you are ready to flake than more complicated systems and formulas. You can also come up with mnemonics, acronyms, or visualizations to help internalize your studies.


Demonstrating Knowledge


Demonstrating your knowledge by transmitting it (teaching or writing) to others or by using it to construct a working device. Taking tests works when nothing else is available. Sometimes even when you can use other means of demonstrating your knowledge testing is useful, for example, standard tests more easily let employers compare you to other applicants.