July 2006 Newsletter
Pleasure in the job puts perfection in the work. –Aristotle
How much easier it is to be critical than to be correct. –Benjamin Disraeli
A prudent question is one-half of wisdom. –Francis Bacon
You will find relief from vain fancies if you do every act in life as though it were your last. –Marcus Aurelius
You do ill if you praise, but worse if you censure, what you do not understand. –Leonardo da Vinci
A really great man is known by three signs: generosity in the design, humanity in the execution, moderation in success. –Otto von Bismarck
A good leader is a person who takes a little more than his share of the blame and a little less than his share of the credit. –John C. Maxwell
If you put tomfoolery into a computer, nothing comes out of it but tomfoolery. But this tomfoolery, having passed through a very expensive machine, is somehow enobled and no-one dares criticize it. –Pierre Gallois
If people are good only because they fear punishment, and hope for reward, then we are a sorry lot indeed. –Albert Einstein
Gartner is recommending that IT departments spending so much time preventing business users from downloading and installing applications and instead try to learn from what business needs are not being met that are compelling users to go "outside". Gartner says that a majority of new technologies adopted in business in 2007 – 2012 will have roots in consumer technology.
Aspect-oriented programming (AOP) has been the subject of much hype and misunderstanding. This article tries to address some of the myths and concerns that have been expressed about this new paradigm in development.
This comprehensive list includes a wide variety of client-based and client-server (or n-tier) project management tools. Most tools are oriented toward software development, but some are more general purpose.
With services-oriented architectures (SOAs) rising in prominence in the IT world, it is important to understand the concepts and problems and how to deal with them.
Grady Booch suggests that while all systems have some sort of architecture, most of those systems have an architecture that developed accidentally rather than intentionally. He says that this is not entirely bad, as long as the fundamental foundational principles are intentional and well thought out.
Functional programming (FP) is a relatively new method of programming the focuses on logical decomposition of tasks. This article introduces FP and provides it's background, including the basics of lambda calculus which FP is based on.
For all of the documentation and artifacts created in developing an application, many times nothing can take the place of a prototype that gives the customer a (more-or-less) tangible idea of what the application will look and behave like. This article gives some good tips and guidelines for developing prototypes that are effective and efficient.
In our March 2006 newsletter issue, we mentioned the Volere Requirements Specification Template. This article, by the template authors, provides a comprehensive explanation of the accompanying requirements-gathering process and methodology.
TTCN-3 is a
software testing tool and methodology that provides a consistent
language/syntax for writing detailed test specifications. The language was developed in
This author reviews the history of software development and some of the problems that have arisen in how software is developed that result in poor quality and reliability. He goes on to propose what he calls a "silver bullet" for fixing the problems.
This article provides a very detailed, but highly-readable explanation of how SQL injection attacks work. The examples give some good ideas about types of security tests you might want to apply to systems which use a database, as well as possible table and column name obfuscation.
This article looks at the complexity and cost involved with testing and provides some unique approaches to reducing both by intelligently combining factors to be tested.
An independent software vendor founder and entrepreneur discusses the technical and economic trade-offs and criteria for determining how much testing is sufficient and when you determine you application is "good enough".
Good reporting of testing progress and status is imperative to a successful test effort. This article discusses the key elements of good test reports and provides an example of appropriate content for a simple test report.
This author makes a good case against using SELECT * syntax in SQL queries used by production systems. The main concern raised is the potential to miss important changes to table structures during the evolution of the application.
The Eclipse environment is a powerful IDE and application platform. But for beginners, the breadth and depth of the tool can be daunting. This article supplies an excellent collection of guides and introductory articles to Eclipse with a focus on specific tasks.
This site provides answers to questions (from beginner to advanced) about writing queries in SQL and various SQL techniques. It also includes excellent examples of how to accomplish various tasks in SQL.
This comprehensive 13-part series discusses the concepts and actual use of test-driven development by working through a complete sample application and the various aspects of the methodology.
This site provides links to some of the most well-known and historic texts in the development of computer science and systems analysis, including Claude Shannon's paper on information theory, Ted Codd's paper on relational data management, and many more.
Ruby is a popular scripting language (often recommended as an alternative to Perl or Python) that is making great inroads in the Web 2.0 world with the Ruby on Rails platform/toolkit. This site provides an interactive browser-based Ruby interpreter and includes two basic Ruby tutorials to help you get started.
Many executives say that the true character of a person can be determined by watching how they treat wait staff and other service providers. The article references Bob Swanson's "unwritten rules", of which how people treat waiters is one of them.
If you don't have time to read Steven Covey's Seven Habits of Highly Effective People, or you just need a refresher on the principles, this site provides nice overviews.
These articles show the importance of "play" and apparently non-productive "work" that often result in major breakthroughs.
This author suggests that the decline of the quality of applications and the difficulty in finding qualified technical workers because the workers are treated as a commodity.
Most people are not very good at communicating work to be done. This list provides a good set of clarifying questions to ask you boss or client about a task, assignment, or project that has been provided to you to make sure that you meet their expectations.
Leaders of some of the most
Interesting "top 10" list of mistakes that managers make when trying to manage technical, knowledge workers from a manager who's mantra is: Happiness at work is the best and most efficient force in business.
Many workers frequently consider moving to another job. But how do you know if your current job is "worn out" or not? This article lists 12 questions to ask yourself to assess your current situation.
This site features some simple, practical techniques for improving your memory, such as mnemonics. It provides techniques for remember names, numbers, and much more.
This online tool uses Google Maps to show the physical location of a local phone exchange (actually the central office) by specifying area code (NPA) and exchange (NXX).
This site provides a comprehensive reference to the protocols and standards that are used in voice over IP (VoIP) systems and platforms.
JGraph is a Java Swing-based diagramming and visualization tool. It is well-suited for process diagrams, BPM/workflow, electronic schematics, UML diagrams, network topology, and more.
This tool combines Puppy Linux and QEMU together in a pre-packaged manner that allows you to install a full Linux system on 256MB (or larger) USB drive. For machines that allow booting from USB drives, you can boot directly into Puppy Linux. Otherwise, you can run Puppy Linux emulated from the USB drive under Windows.
This utility provides a bootable, Linux-based CD that automatically runs the GPartEd utility which is a free disk partition management tool. You can add, remove, resize, and even copy disk partitions and it includes support for most Linux and Windows partition types, including FAT16, FAT32, and NTFS.
This Microsoft Powertoy supplements the existing Alt-Tab functionality in Windows XP to display small thumbnail view of the currently selected minimized (or obscured) window in addition to the icon and description.
The VMware Player is an excellent tool for trying out new operating systems or applications in a "sandbox" environment. However, by its nature it is limited in that it can't create (or modify) virtual machines (VMs). The EasyVMX tool removes that constraint and allows you to create a new VMX configuration file. It provides generators for simple VMs or all configuration options.
Gaudi is Java-based graphical database design tool. Using JDBC and XML, you can directly edit the table structure and key relationships between tables of many popular commercial and free/open-source databases, including Oracle, DB2, SQL Server, and PostgreSQL.
SysTree++ is sort of a cross between Microsoft's Spy++ tool and Windows Task Manager. It shows all processes and windows on your system in tree hierarchy fashion. You can monitor and manage processes, terminate processes, change process priority, or even toggle window visibility. Very useful for troubleshooting misbehaving applications.
While you can change the background and foreground colors for all of your Command Prompts via the settings for the shortcut, sometimes you just want to change the colors for a particular session. This can be handled easily via the color command. Just type color followed by a two-digit value where the first digit is the hex code for the background color and the second digit is the code for the foreground color. Type color -help at the command prompt for a list of the valid values. Try color 1E for a highly-readable option.
Windows XP and the Pentium 4 processor support a technology called hyperthreading that can significantly improve system and application performance. For some computationally intensive tasks, the improvement can be as much as 30 - 35%. However, on most computers hyperthreading is not enabled. Here's how to enable it in Windows XP:
(1) Confirm that your PC has Pentium 4 CPU and that the BIOS supports hyperthreading. To check to see if your machine has a Pentium 4 CPU, right click on My Computer and select Properties. In the System Properties General tab, check the type of CPU in the Computer section. Check the PC manufacturer's documentation or web site to determine if the BIOS supports hyperthreading or if a BIOS upgrade is available to enable it.
(2) Obtain the hyperthreaded Windows XP kernel files: halmacpi.dll and ntkrnlmp.exe. These files are included with Windows XP SP2. However, it is not necessary to re-install SP2 to get the files. Instead, download SP2 and run the installer with the "/help" command line option. This will extract the files to temporary directory; the installer will inform you of the name of the temporary directory. Before dismissing the setup options message window, navigate to the temporary directory and copy halmacpi.dl_ and ntkrnlmp.ex_ to another directory. At a command prompt (Start | Run | cmd.exe), use the Windows expand utility to uncompress these files to halmacpi.dll and ntkrnlmp.exe, respectively. Copy halmacpi.dll and ntkrnlmp.exe to C:\Windows\System32 directory.
(3) Edit the boot.ini file to use the hyperthreading kernel files that you installed. (You must have local administrator privileges to do this.) At a command prompt go the root directory on the C: drive (C:\). Remove the restriction attributes on boot.ini by running attrib -r -s -h boot.ini. Open boot.ini in Notepad and change the Windows XP selection in the [operating systems] section to:
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Windows XP Professional (with Hyperthreading)" /fastdetect /kernel=ntkrnlmp.exe /hal=halmacpi.dll
(This command is all on a single line in boot.ini. The logical "path" on the left of the "=" may be different depending on your system.) Essentially, you simply need to add /kernel=ntkrnlmp.exe /hal=halmacpi.dll to the existing command line. Save the boot.ini file and re-enable the protections on it by running attrib +r +s +h boot.ini at the command prompt. (Alternately, you can use the Microsoft Knowledge Base method for editing boot.ini.)
(4) Restart the computer and go into the BIOS configuration. (Usually, you press <F2> immediately after the PC starts.) Find the option for hyperthreading and turn it on. This may be in a section labeled Performance or under the Advanced options. Consult the manufacturer's documentation or web site for details. Save the settings and exit BIOS configuration. (The PC will probably restart again.)
(5) Check to ensure that hyperthreading is enabled. Log into Windows XP as normal and right click on the Taskbar and select Task Manager. In Windows Task Manager, select the Performance tab. Under CPU Usage History, if see two graphs, then hyperthreading is working. If you don't see two graphs, select View | CPU History from the Task Manager main menu and ensure that One Graph Per CPU is selected.
That's it! If you have trouble booting your system, simple change the line in the boot.ini back to the original setting:
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=optin
See Sysinternals site for details on boot.ini options.
This list includes over 150 clichés, idioms, and everyday expressions that many of use that were first penned by Shakespeare.
This web site is the home of folks who simply love clouds. The site features some stunningly beautiful pictures, most suitable for computer desktop wallpaper, of clouds and skyscapes.
Create your own custom "For Dummies" book cover for any topic that you can dream up. Now you can create that title that you've always longed for.
Of course, you remember Mr. Potato Head. Well, here's an online version with a twist. You choose some face elements inspired by Picasso and drag them onto a canvas to make your own abstract masterpiece. Save your creation to the gallery to share with others.
Some science gurus, including Nobel laureates, heads of research institutes, and teachers, list their selection for the one science question that every high school graduate should know. The questions–and answers–may surprise you. (I got 9 out of 10 correct.)
Certainly, I have a special place
in my heart for
This tool uses images from the public galleries on flickr to spell any text, such as your name, using images. A very neat way to create a custom logo for your web site.