Up to Newsletter Index

July 2006 Newsletter


Quotable Quotes


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


Return to top


Software Development Process

Article:  Ignore consumer tech at your peril, CIOs warned

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.



Article:  AOP myths and realities

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.



List:  Free, Open Source Project Management Tools

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.



Article:  The SOA-wise enterprise

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.



Article:  The Accidental Architecture

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.



Article:  Functional Programming For The Rest of Us

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.



Article:  HTML Prototyping and Agile Development

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.



Article:  Mastering the Requirements Process

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.



Return to top


Software Testing & Quality

Tool:  Testing & Test Control Notation (TTCN-3)

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 Europe (it is an ETSI standard) originally for telecom and networking protocols, but is generally applicable.  There is an Eclipse plug-in called TRex that implements TTCN-3 for Java testing.  Also, a Google group on TTCN has been started.



Article:  Why Software Is Bad and What We Can Do to Fix It

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.



Article:  SQL Injection Attacks by Example

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.



Article:  Test Smarter, Not Harder

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.



Article:  Why we all sell code with bugs

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".



Article:  Dimensions of a Good Test Report

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.



Return to top



Article:  The Case Against SELECT *

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.



Reference:  Recommended Eclipse Reading List

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.



Reference:  SQL Recipes

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.



Tutorial:  Crafting Java with Test-Driven Development

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.



Reference:  Classic Texts in Computer Science

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.



Tutorial:  Try Ruby!

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.



Return to top


Career Development/Miscellaneous

Article:  CEOs say how you treat a waiter can predict a lot about character

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.



Article:  Seven Habits Condensed Summaries

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.



Articles:  The Power of Accidental Discoveries

These articles show the importance of "play" and apparently non-productive "work" that often result in major breakthroughs.




Article:  Tech careers are on the wrong track

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.



Article:  What Do You Want From Me?

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.



Article:  Computer Science Looks for a Remake

Leaders of some of the most prestigious US university computer science programs discuss the future of CS and how to restore some of the shine to the IT career.



Article:  How NOT to lead geeks

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.



Article:  Signs you have a great job... or not

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.



Site:  BuildYourMemory.com

This site features some simple, practical techniques for improving your memory, such as mnemonics.  It provides techniques for remember names, numbers, and much more.



Return to top


Telecommunications/Networking Industry

Tool:  Phone Number Geolocator

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).



Reference:  VoIP Protocols and Standards Reference Page

This site provides a comprehensive reference to the protocols and standards that are used in voice over IP (VoIP) systems and platforms.



Return to top

Useful Utilities

JGraph (Free – Platform-independent Java – 140kB)

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.



QEMU-Puppy (Free – Windows 2000/XP/2003 – 74MB)

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.



GPartEd Live CD (Free – Platform-independent – 30.8MB)

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.



Alt-Tab Replacement (Free – Windows XP – 534kB)

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.



EasyVMX (Free – Online tool – N/A)

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 (Free – Platform-independent Java – 1.9MB)

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++ (Free – Windows 2000/XP/2003 – 292 kB)

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.



Return to top


Productivity Tips

Change the background and foreground colors at the Command Prompt in Windows

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.


Enable hyperthreading in Windows XP for improved performance

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.


Return to top

Just For Fun

Everyday Expressions Originating from Shakespeare

This list includes over 150 clichés, idioms, and everyday expressions that many of use that were first penned by Shakespeare.



Cloud Appreciation Society

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.



"For Dummies" Book Cover Generator

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.



Mr. Picassohead

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.



Why is the sky blue?  Facts you should know

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.)



Beautiful Pictures of China

Certainly, I have a special place in my heart for China, since that is the place of origin of my daughter.  These stunning and breathtaking pictures of landscapes from China provide a completely different perspective and show the deep relationship between the Chinese people and the land.



Spell with flickr

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.



Return to top