Have you ever come into a middle of a conversation, started listening, then 10 minutes later give up because you just can't figure out what the speakers are talking about? How about this one: you are sitting in a conference room in the middle of a design meeting where most of the participants are throwing out code-names like there was no tomorrow. 30 minutes later and you are more confused than had you never heard what was thrown on the table. For all intensive purposes, they could just be speaking in Greek rather than English. If you've had the opportunity to listen intensely to conversations in another language for a long period of time, you will understand how brain-crippling the experience can be. These are just some examples of content without context. Without context, words are meaningless.
Let me just reitterate that: Without context, words are meaningless.
(If you have ever done a lot of C++ or Object Oriented programming, you would know what I'm talking about. If you are a procedure-oriented thinker who has only been doing C or Assembly, well... this concept is probably new to you.) In order for true communication to occur (that means to have comprehension on the receiving end), the content must have the proper context provided. When you are performing an "action" (as in a function call), it is necessary to know who is performing it. As an example "something is flying"... it makes a difference whether the something is a bird, an airplane, or a UFO.... no? When speaking without context, the speaker repeatedly mentions : "it flies" or "XYZ flies" for about an hour. After the hour, the listener still doesn't know what "it" or "XYZ" is. By the way, this happens a lot in life.
Musicians and song artists understand this concept extremely well. Many of the good ones write their songs purposely vague enough in order to prevent context from being placed in their songs. As music lovers, we listen intensely to the lyrics and in our love of the music, apply our own context into the lyric contents. (Maybe it is human nature, but we always try to place our own context into any content that we come across) This way, the same song may seem to have meaning to the greatest amount of the populace. It may sound devious, but this is just an example of the social engineering being applied by craftsmen who understand human nature.
If you use the SciTe editor, here are some tips I find useful:
Unix goes crazy over CR LF which is Windows' default for EOL. There is a global option that tells SciTe to default to LF that makes it copacetic with Unix text files. Just set eol.mode=LF You can now edit Unix files without turning it into junk.
Here is how you can enable editting with Tabs:
Who would ever thought that I would find remnants of Cisco in Florida. Well, apparently there is a lab located in Bradenton. I am now working with them in the Catalyst 6500 firmware group. Life for me remains in Tampa but I am doing the long commute to Bradenton. It is a mixed Solaris and Windows 2000 development environment here in the lab. However, I am finding that much more time is spent in the Unix environment as all of the compilation, source code control, etc... is in Unix. It is comforting to see that the Unix toolset haven't changed much in the past 15 years. (One really can't say the same of Windows)
Bradenton is pretty near the water and the Cisco lab is located just right off downtown. Many of the folks here speak fondly of the Cisco cafeteria in San Jose as well as their beautiful campus in Massachussets. The building in Bradenton greatly pales by comparison, but at least we get to be in Florida and doing work we like.
This is not something new. In fact, it has been available for ages in the form of Wizards within the Visual Studio IDE. If you've been doing some MFC programming for a while, you know what I mean. You invoke a wizard, fill-in some required parameters, and voila.... the tool generates a sequence of code to perform what you need. The output is usually something obscure and involves API calls with transformed parameters that you have given via the dialog box. The concept is to generate something relatively obscure (yet required) provided that some simple questions are answered.
The notion is not new. When you graduate to programming in C from assembly language, the same thing occurs. C abstracts the sequence required to set up a procedure call (pushing parameters on the stack, saving current processor context, then making the JMP). The reverse happens on a RETURN from a subroutine.
Another incarnation of this concept is within some database RAD (Rapid Application Development) tools. Working with databases can be quite tedious, not because that it is hard, but because setting up for database calls is mundane. Most database manipulation occurs as you 1. set up the datastructure to receive your result, 2. set up your SQL query/statement, 3. execute the statement, 4. do something with the result. There are some tools emerging today that attempts to take the tedium out of all that. Some of these are: CodeCharge Studio, ASPMaker, as well as other code-generation tools.
These are just some examples of using the machine to take the tedium out of your chores. With tools and proper use of concepts, we are one step closer to "bicentenial man" (having the robot do our lawn).
For some time now I have been wanting to use a simple editor to write emails and articles. The tool doesn't have to be complex but the main point is that it should allow me to organize my thoughts while composing. Ideally, the outline feature that Microsoft Word provides is what was needed. However, Word (like the other applications in the Office Suite) is very bulky when compared to the other extreme (notepad). On a moderate machine, Word can take upwards of 20 seconds to load. This takes a toll on a person's patience and the usability factor is greatly diminished. So, for some time after not finding a usable tool, I dismissed that desire.
For the past year, I have become quite enamoured with a programmer's editor feature: code-folding. In many sense, it fits in well with the Object Oriented way of thinking. What I mean is that the object should hide the details and only expose enough information to allow the designer to work at a higher abstraction level. This is absolutely the exact concept of an outliner. The new editors have the feature to hide code with are "between the curly braces". This is great, and for coding, it can't be beat. However, outlining ideas "between the curly braces" is something a writer would not willingly embrace.
Enter Python. Python uses white spaces instead of the C/C++ favorite "curly braces". A writer can just use the editor and separate sub-topics with a blank space. Additionally SciTe (a popular free code editor) already has Python recognition built-in. SciTe is small, fast, and simple to use. Voila, an outline editor within code-folding.
It would seem that the Internet's greatest asset for people is their ability to use email. Compared to many other activities: WWW browsing, file-transfer, performing purchases, instant-messaging, as well as many other.... Email seem to dominate our usage of the web. Email is highly personal and provides the instant gratification that we all crave. I refer to the example: "You've Got Mail". Those three words cause our hearts to tinge with excitement no matter how often we hear it.
Even with its obvious importance, I find that software to deal with Email remain extremely rudimentary. For most software, the basic functions are to receive and read as well as to send to a specific email address. Rich client programs like Eudora or Outlook (the types that run directly on your computer) provide for pretty good management of your received mail. You can do Search and hand-organization of your mails into specific folders. If you use the web interface emails (like Yahoo or Hotmail), the management functions are quite limitted. However, that's basically where all the software functionalities stop. There just seem that we could do so much more with the most important of our resources (mail conversations).
** here is another tidbit written earlier about email.
Ideas are cheap and words are even cheaper. These are simple things to remember if you have that entrepreneurial spirit. If you have an idea, it's not really the idea that is of greatest value. Don't be afraid of letting it out into the world. The more the idea is allowed to test itself by living in different minds, the more capable it is in surviving. It is the proper execution and making that idea live in the world that truly counts.
The corollary to this is "words are even cheaper". When someone uses words to denounce another person's hard-earned work, it is very insulting. In a split second, you can judge a person's life as meaningless. Words, by themselves, can be uplifting or damaging depending on how you use them. Unfortunately most people use them for the later. For the entrepreneur, programmer, engineer, having their "baby" being judged harshly can be detrimental. These people have spent months or even years of their lives making the ideas grow. Within seconds, a complete stranger who has no understanding completely chides the idea and product. For the cost of a few words, they completely cheapen the effort. Have heart. Reality will prove them wrong. If you have the proper execution, the idea is living in the world and no mere words can stamp that out.