kevinbwood@koalacomputers.com

[ Welcome | What's New | About Kevin Wood | Woody's interests | Articles ]


Technical

Need a batch file or some T-SQL, write it with T-SQL
Hippos, OCD, Monsters, and IT
Plan Ahead
What do you want to know tommorrow?

Tales of the young Woodhead - or Historically Accurate (Not necesarily in historical order)

Kevin and Althea travel to Arizona
Tales of the Young Woodhead - or How I almost did not become the old Woodhead
Tales of the Young Woodhead - or Cadet Basic Training (CBT)
Tales of the Young Woodhead - or Where is my book?

Non technical

Fun with Windows
Tips for providing Technical Support
List your DLLs
An attempt at Sci Fy - Kamikaze Nerd

In case you get hungry - recipies

Recipies

Go to top

Plan ahead


If you fail to plan, you plan to fail!

   I wish I knew who said that originally. Unfortunately I did not, and too many people do not know of the statement. What I would like to talk about though is the following logic examples:
  1. P1P2P3 <>P5P6P7 is True
  2. ! P1P2P3 = P5P6P7 is True
   In essence it is the formula for the statement Proper Prior Planning Prevents Pretty Poor Performance. Even though the statement is given here as a formula (This publication IS computer related after all.) Even non-programmers can learn from this statement.
   Most people (myself included) are action oriented. Once they decide on a course of action, they want to get out and do it. I see this daily in the networks I support, in the software I see being developed, and in major projects. Most clients and managers equate activity with getting something accomplished. The planning phase is neither glamorous, nor does it look productive.
   Planning a course of action in advance, however, saves time and effort later.
   With software development, working with the end user can save hours of re-design and re-coding. Many times the supervisor or manager at the client site will tell you what they want in the software. They will tell you that this is the way the system is currently used, and the functionality needs to be put into the new software. Talk to the end user. This is the person who will use the software on a daily (or on the most frequent basis.) They usually know how the system is really used. Also, if they do not like the new design, they will find a way to break it or avoid using it. Many programmers I have dealt with do not like dealing with end users, so they will not seek the input from the very person who will make or break their program.
   With network design or system analysis, or system integration, planning is critical. Putting in bleeding edge technology, because it is new and fancy (and a way to increase your knowledge on the client's dime) is usually a bad idea. You may be putting in technology that is incompatible with some other aspect of the system. The technology may be unsupported in the future, creating a support nightmare for both the clients and you (even if you are not the one supporting it.) Trust me, poorly designed systems WILL come back to haunt you. Both the clients and I do not think highly of the firms that installed some of the systems I support and have supported. Guess how many recommendations those firms have gotten from either of us? (If you guessed 0 you guessed to high!)
   In any case - three concepts apply to both systems and software design:
  1. Over engineer the system. Design the network to handle more traffic, more clients than originally called for. With software, put in more error trapping, more fail safes, more redundancy than you think even the lowest end user could ever want. Design it for more data then anticipated (and then double it again.) On every project I have worked, even before the hardware came in, or even before the prototype was complete on the software, the client was expanding the requirements. Plan for that. Your estimate may be higher initially, but many clients cannot see a cause and effect relationship between increasing requirements and increased costs. If you can turn to the client and say, "No problem." And not have to increase the cost, you will be a hero.
  2. Over estimate the time the project will take. Again, trust me on this. Usually project timelines are developed assuming everything will go smoothly. With proper planning (of which one aspect is time line planning), your project has a better chance of going smoothly. But, how many of us have been on a project where everything went as planned? Building in 'slack capacity' gives you time to react to the inevitable changes (and there WILL be changes.) Plus, if you do your planning well, when the client wants it done sooner, you can shave off some of the additional time you have allocated. The client is happy, (he thinks he is getting the project completed sooner that your estimates.) Your programmers are happy because when changes come up (they are having a harder time than they thought on one module), you can tell them, "Don't worry, take a couple more days - no problem." You won't be the ogre telling them, "You need to work more hours, we need this ASAP!" And best of all you will be happy because you won't see the deadline being missed.
  3. Do not cut corners! With name brands you are paying for more than the name, you are paying for the reliability. Generally when I develop quotes, I get the pricing for the name brand equipment. Could I purchase no-name equipment and piece it together myself? Yes. Would it be cheaper? When you figure in the cost of my time to find and assemble and test the components, maybe not. When a name brand piece of equipment fails, many times the manufacturer says, "Send it in" (or they'll send you a part immediately.) With third party items, when the equipment fails the manufacturers either will not replace the equipment, make you look all over for drivers, claim it is the equipment you attached it to that is at fault, etc. The long term cost of supporting the equipment will more than compensate for the short term savings on 'cheap' equipment or tools. (Look at it this way - The client is paying you lots of money for the quality of YOUR work. In return you are going to plant low quality equipment in his system?)
   If you plan a project properly, the rewards will be immense. Your clients and your subordinates will think you are the greatest person on earth. Your client will think this because your projects are always on time and at or under budget. Your subordinates will love you because you are not breathing down their necks with deadlines they cannot meet. You will be happier, because word of mouth will sing your praises, you will have fewer revisions to software you produce and fewer support hassles for the systems you design.
   If you have read everything I have rattled on about till now, you will receive the 'pearl' in the oyster. While all the points above were related to Systems design and Software Development, the fact that prior planning pays off works…in any aspect of life! Work, recreation (ever get to the beach to find you forgot your swimsuit or something equally important?), even (for you computer types like me) getting a life. Because the less time you spend re-doing something, the more time you have to do other things.

Go to top


What do you want to know tommorrow?


   Technology is changing at an ever-increasing pace. The first personal computer I owned was a commodore 64. I wrote all my papers for my graduate degree on this little marvel. Now, years later, 3+ GHz computers with multi-gigabyte hard drives and 4+ gigabytes of RAM are commonplace in homes. I now have a network set up at home. With all of these advances, what technology should we be looking for? What technologies should we purchase or invest in? If we trace the recent developments of computer technology, we can determine a pattern.

   When personal computers hit the office and eventually the homes, they were essentially stand alone machines. In many cases they were upgraded versions of the calculator or typewriter. Each person used his own machine, or had his or her own files on diskette. Information when it was shared was shared via diskette or printed on paper.

   The next step was the simple network. People in one office or location could share data or programs over the network. More savvy users could get to their information on the network from any networked computer. Some home users shared information via modems by logging into a Bulletin Board System (BBS) – a kind of telephonic network.

   On college campuses the Internet exploded. People shared information over the Internet. Homes started getting into the act when browsers became popular. Those with full time Internet access could get information quickly from anywhere in the world. You could conduct searches for the information you wanted. From home, the speed of access to the information was limited to the speed of the modem. Sharing information between home and the office was still pretty much limited to carrying the information on diskette.

   With the advent of the Internet, TCP/IP became very popular as a network protocol (some will claim it was always popular.) Virtual Private Networks permit individuals to connect to the office network from home over the Internet. While still limited to the speed of the modem, as modems became faster (analog, cable modems and ISDN) connections to the data at the office became faster. Now, home users can get DSL or cable modems for even faster links. Handheld, palmtop devices are becoming more popular, and laptops became affordable. However, getting information onto these devices is still somewhat cumbersome. You have to run proprietary software to translate the information from the Desktop (or network) computer onto the palmtop. Laptops must either work off-line, or sacrifice the mobility of a laptop by plugging into a network or modem cable. While working off-line, the data is not real-time data. While wireless IS catching up, it still has a way to go.

   OK – so much for history. The trend that is developing is: Faster access to YOUR data no matter where you are.

   The major choke point for data access seems to be accessing data while 'disconnected from the world network'. So, the technology that supports faster access to data will be the technology to support and watch. Technology that supports faster (and real-time) access to data will be the technology of the future. However, as you watch for developing technologies, beware of those using proprietary interfaces or formats. (Does anyone remember MCA – Micro Channel Architecture?). The most open technologies will be the ones that survive (or the ones with the clout to force their standard on others.)

   Before too long, anyone will be able to access data from either their office or the Internet from anywhere in the world. That access will be fast and secure. The technology to get to that data will be a common as pagers are today. Any technology that can deliver (not just promise) that data access will be the technology to watch.

   Of course to benefit from this technology, you do have to learn to use the technology 8-)

Kevin Wood


Go to top

Fun with Windows

I am sure the folks at Microsoft are already aware of this little trick (I'd hate to think I'm the only one this twisted.)
  1. On a machine running Windows, minimize all windows, so only the desktop and its icons are showing.
  2. Press the Print Screen Key.
  3. Open Paint, and under Edit, select Paste. You have pasted a photo of the desktop to the program.
  4. Now select File, save. Give the file a name with a .BMP extension.
  5. Now, under file, select "Set as Wallpaper (Centered)" You just created a wall paper that looks like the user's normal desktop.
  6. Move the normal icons under the Start menu bar (Auto arrange must be turned off to be able to do this). Sit back and watch the fun!
The unaware will click what appear to be the icons, and nothing will happen. They will think something is wrong with the computer!

Other twists on this



Go to top

List your DLLs

Ever wonder how many DLLs applications put on your hard drive? Have a hard time locating duplicate files? Which one is the latest version?

at the command prompt (ensure you are at the root of the drive), type:
dir(space) C:\*.dll(space) /s|sort(space) >C:\dll_list.txt

This will create a file named dll_list.txt in the root of the C drive. Any word processor, notepad, or even DOS EDIT can open this file. It is an ASCII listing of all your DLLs sorted by name.

dir(space) C:\*.dll(space) /s(space) >c:\dll2list.txt
will create a listing of all DLLs listed by directory.

NOTES:

  1. In the lines shown above, do not type (space), press the space bar instead.
  2. These commands can be used in a DOS session started within WINDOWS or Windows 95
  3. Substitute different extensions to check for other types of files, i.e. *.db* to search for Database files, or *.exe to search for program files

Go to top

Tips for providing Technical Support:

1. Do no Harm! - Like the Hippocratic oath, your goal is to repair the system. The system consists of the hardware, the software, the information contained therein, and THE USER. Replace the hardware if that is needed. Reinstall the software if that is called for, Repair the data if you can. Train, don't humiliate or embarrass the user.
2. Attitude - You can solve this problem. You must believe this. If you go in with the attitude that you may not be able to solve the problem, you won't solve the problem. It may take time and effort, but, you will succeed.
3. Things can always go from bad to worse. Ensure you can get back to bad . - Always take precautions. Back up the old files. Scan for viruses. Change one thing at a time. These steps will ensure you proceed cautiously. Furthermore, you will be able to recover if anything goes wrong.
4. Never underestimate the power of Human Stupidity(including your own). - Just because you wouldn't fold or staple a floppy disk, do not think your clients would not. Error messages that are important to you, are not necessarily important to them. You may not know how they normally do things. Your knowledge base is not their knowledge base. Their knowledgebase is not yours. Don't project. Assume they will.
5. 95% of all errors are due to the nut behind the keyboard - Check. Did the user do something differently? You are asking to find out what is wrong with the system - not to assign blame! Did he (she) install new software? Did he (she) change some settings (even in other software)? Did he (she) change normal procedures in any way? Did he (she) try a new procedure or try to load a new file? What is new or different?
6. Recreate the problem. Can you recreate the problem? Is it confined to this workstation? This Software? This file? This server? This user? Ask the user to recreate the problem. Watch the user, remember #4.
7. Keep a sense of Humor! Providing technical support is a no win situation. People are always calling you with problems. The job will make you either laugh or cry. Laugh! Crying tends to upset the client.
8. Even a blind chipmonk occasionally finds an acorn If you keep trying things, eventually something will work.
9. TANSTAAFL There Ain't No Such Thing As A Free Lunch. If something seems to good to be true, it is!
10. Clean up after yourself. Put files back where you found them. Undo any changes to system settings if they are not part of the solution. The changes you do not undo will become the next trouble call.
11. Write it down! The next time you see this problem or face this issue again may be months from now. You will remember having solved this, but you won’t remember how. Write down the conditions of the situation and the resolution. If you have time and energy, add the thought process behind the resolution. On all documents, put the path and the file name. I guarantee, you’ll need to find that document, and you won’t know where to find it!
12. PPPPPPP (Proper Prior Planning Prevents Pretty Poor Performance) - Plan ahead. If you look to the future and PLAN, you may be able to anticipate potential problems and account for the problem and prevent it. Plan for the worst and hope for the best. If you plan for the worst, you will be able to easily handle anything up to and including the worst. If you only hope for and plan for the best, you are doomed to many frustrating experiences.
13. The error message you receive may not be related to the problem you are attempting to solve!Just because the error message states you cannot sent to user XYZ does not always mean YOU cannot send to user xyz. The software has a limited number of predefined error messages. You may be doing something the programmers did not anticipate, so the software is giving the only message it knows.
Check other resources to isolate the problems from the symptoms. Check error logs. Try to do the same thing from another computer or program.

Credits: These tips are borrowed from or modified from the following sources:

1. Borrowed and adapted from the Hippocratic Oath
2. Mark Minasi
3. Mark Minasi
4. Lazarus Long. (a character created by Robert Heinlien)
5. Mark Minasi
9. Lazarus Long.

Go to top
All products mentioned are registered trademarks or trademarks of their respective companies.
Questions or problems regarding this web site should be directed to kwood@koalacomputers.com.
All rights reserved.