Up to Newsletter Index

November 2007 Newsletter


Quotable Quotes


Observe constantly that all things take place by change, and accustom thyself to consider that the nature of the Universe loves nothing so much as to change the things which are, and to make new things like them.  –Marcus Aurelius


The disease of jealously is so malignant that it converts all it takes into its own nourishment.  –Joseph Addsion


Truth has no special time of its own. Its hour is now—always.  –Albert Schweitzer


We are all inventors, each sailing out on a voyage of discovery, guided each by a private chart, of which there is no duplicate. The world is all gates, all opportunities.  –Ralph Waldo Emerson


The right time is any time that one is still so lucky as to have.  –Henry James


Real difficulties can be overcome; it is only the imaginary ones that are unconquerable.  –Theodore N. Vail


Nothing can stop the man with the right mental attitude from achieving his goal; nothing on earth can help the man with the wrong mental attitude.  –Thomas Jefferson


Your mind understands what you have been taught; your heart, what is true.  –Unknown


Return to top


Software Development Process

Article:  Evidence Based Scheduling

Developers typically detest schedules and do everything to avoid making them.  There are two common reasons:  schedule estimating is difficult and most people don't think that the schedule is realistic anyway.  This article suggests an iterative technique that uses historical data, such as from timesheets, to give a probability of meeting the planned implementation date.



Article:  The Mythical Business Layer

Most enterprise software development attempts to separate the "business logic" portion of the application from the persistence and "generic" functionality.  This author says that this paradigm completely misses the point, since any application is mostly about the specific business rules.  The extensive comment thread is enlightening, as well.



Article:  Baseline 500: Best U.S. Users of Technology

This years survey of the companies that make best use of IT shows that energy companies are wresting away the top spots from the perennial winners in the financial services sector.



Article:  The Cost of Complexity:  Is enterprise software just too complex to deliver on its promises?

A new report from MIT Sloan Management Review concludes that enterprise software applications, like ERP and CRM, are too complex to deliver on their promises.  While not offering any concrete solutions, the report also indicates that SOA and software-as-a-service models are not sufficiently scalable to offer a solution.  Instead, it recommends that IT and business executives work together to find answers.



Articles:  Avoiding the Icebergs: Top Ten Software Architecture Mistakes

Eoin Woods, an IASA Fellow, discusses ten key mistakes in software architecture.  He talks about how to avoid these pitfalls in your development efforts.




Article:  5 Questions on Agile Development with Steve McConnell

Steve McConnell offers his perspective and insights on using agile software development methods.  His key emphasis is that particular methodologies should not be the focus.  Each organization and project needs to do what is right for their situation.



Article:  OpenUP In a Nutshell

OpenUP is a combination of the rigor and "high ceremony" of RUP and agile techniques by trying to balance the advantages of each.  This article gives a good summary overview of the methodology, with a focus on the tools included with Eclipse platform.



Article:  What It’s All About

Poor requirements definition is the leading cause of project failure.  This article emphasizes the importance of capturing requirements in the style of "what" (e.g., use cases) instead of the "how" that developers are more comfortable with.



Article:  Enterprise Architecture: It's All About Relationships

Successful enterprise architecture is more closely related to anthropology than technology.  Enterprise architects need to build relationships with business people to help them discover the culture of the business and adapt technology to meet the business needs.



Article:  Can Your Team Pass The Elevator Test?

This article emphasizes that everyone involved in a software development project needs to understand the goal to be accomplished and that each piece of work (e.g., section of code written) needs to be confirmed to be in line with the goal.



Article:  The Discipline of Agile

Agile development expert Scott Ambler emphasizes that agile is not about "breaking all the rules", but rather requires some great discipline.   He outlines 5 particular areas:  regular delivery, quality, active stakeholder involvement, scalability, and teamwork.



Article:  Functional Specification Tutorial

This is an excellent tutorial on how to create a functional specification document for a web or application development effort.  It defines a great framework for the process and discusses the appropriate content and structure of the document.



Article:  Software Is Hard

Another cogent, balanced, and insightful look at the complexities and intricacies of software development as compared to traditional engineering disciplines.  The article uses the example of the development of the open-source Chandler application and the various trade-offs necessary in any large-scale development effort.



Article:  10 Things You Ought to Know About SOA

Service-oriented architecture (SOA) is often bandied about as the panacea for all enterprise development problems.  Here are ten high-level concepts that are key to understanding what SOA is and what it can really do.



Article:  Voyage in the Agile Memeplex

Sometimes the sub-culture of agile development seems like a bunch of disjoint concepts.  This article explores the agile environment and tries to draw some common boundaries around it.



Article:  Debating the morality behind software development

In this interview, UML creator Grady Booch talks about the moral dimensions of software development.  How do you answer the question of:  "I can do this, but should I?"



Article:  Avoiding Development Disasters

This retrospective of the FBI's failed Virtual Case File project highlights some of the common factors that contribute to failure of a development project.  The upshot of the project is that development groups need to be amenable and adaptable to change.



Article:  Five Diagrams Beat a 'Victorian Novel' Text Specification

This author suggests and alternative approach to UML and "heavy text" methods of documenting application requirements.  His approach focuses on five diagrams:  process flow diagram, logical data  model, screen map/screen layouts, system architecture diagram, and software object model.  Each of these can be adapted to an iterative approach in keeping with agile principles.



Articles:  A Practical Guide to Seven Agile Methodologies

These articles give a good overview of some of the various agile development methodologies.  It includes a nice tabular comparison of the strengths and weakness of the methods to help you choose the one that best fits your environment and organization culture.




Return to top


Software Testing & Quality

Site:  Tester's Apple Tree

Pick an apple from the tree to see answers to common questions in software testing.  Categories include testing basics, testing tools, how-tos on various testing types, and more.



Site:  MSDN Tester Center

James Whittaker, now at Microsoft, has launched a software testing portal on the MSDN site.  It provides Q&A and interaction with skilled testers from Microsoft, forums and discussions, and blogs from some of the preeminent names in testing.



Article:  We don't write tests. There just isn't time for luxuries.

This developer debunks the myth that preparing unit tests takes away valuable time from a project.  He makes a good argument for how test-driven development saves time in the long run.



Humor:  A Tester's Translation Table

Some tongue-in-cheek definitions of common terms in the vernacular of software testing.  Reminds me of the time that a project manager asked me if I was "smoking crack" in the resolution to one of my tickets.



Article:  Efficient Test Planning and Tracking

Planning and keeping track of test execution is one of the cornerstones of successful software testing.  This articles gives some pointers about how to accomplish this.



Return to top



Reference:  What Every Computer Scientist Should Know About Floating-Point Arithmetic

This classic article gives some good background information on how FP arithmetic works, why it is important to application developers, and some of the pitfalls to watch out for.



Reference:  Glossary of Database Terms

This mini-glossary of database terms will help those who are just getting started with databases to understand some of the esoterica.



Tutorial:  A Visual Explanation of SQL Joins

In a supplement to an article (featured in the ??? 2007 newsletter), this tutorial extends the SQL join explanations beyond the Venn diagram representations to simple, relevant examples using actual SQL syntax.



Tutorial:  Understanding Inheritance in Java

Inheritance is one of the grand triumvirate of principles (along with polymorphism and encapsulation/information-hiding) in object-oriented programming.  However, inheritance is implemented different in each language.  This article explores the inheritance model and details in Java.



Reference/Tutorial:  C++ In Action:  Industrial Strength Programming

Even in this day and age of Java and dynamic languages, there is still a lot of use for "classical" languages like C++.  This free, downloadable book is intended for complete beginners in C++, but not strictly in an academic setting.  It focuses on practical examples of how C++ can be used to solve real-world problems.



Reference/Tutorial:  The Wireless Networking Starter Kit

From this site you can download the entire second edition (from 2004) of this excellent book about wireless networking for Windows and Macintosh.  While it doesn't include information about recent wireless advances like WPA or 802.11n, it is still quite relevant.



Reference/Tutorial:  OODesign.com

This site provides tutorials and explanations concerning object-oriented design methodology, with an emphasis on design patterns.  It includes good overviews of standard patterns in three categories:  creational, behavioral, and structural.



Tutorial:  Ruby Study Notes

This site presents the collected notes that a programmer created in the process of learning Ruby himself.  They are comprehensive and will really help you get started in understanding Ruby.



Reference:  Confusing Words

Ever get mixed up about whether to use affect or effect?  Or maybe their, there, or they're?  Confusing Words comes to the rescue.  It gives you key information to help remember the use and context for these daunting words.



Tutorial:  A Visual Guide to Version Control

Rather than focusing on one particular version control system, this article provides a logical motivation for using version control and then explains the generic concepts a good version control approach.



Tutorial:  Ramble around the UNIX file system

New converts to Unix and Linux are often baffled by the structure of the file system.  And it is difficult to know where files of various types do and should go.  This article explains in a very comprehensive, but concise way the history of the file system structure and the purposes of the various standard directories.



Tutorial:  A guide to GNU Screen

Want to bring the benefits of tabbed web browsing to your Unix/Linux command prompt?  Then the GNU screen utility is just what you need.  This excellent, comprehensive tutorial helps you learn the basics as well as some of the key power features.



Return to top


Career Development/Miscellaneous

Article:  Ten Tips for a (Slightly) Less Awful Resume

Software development pundit Steve Yegge offers his personal tips on creating a better resume for technical professionals.  Most of the ideas are simple, but can have a significant impact on the effectiveness of your resume.



Article:  Latin Words and Expressions: All You Need to Know

Want to spice up (pun intented!) your writing a little bit?  This great article gives you some Latin words that have been fully adopted into English, along with the literal meanings for many commonly used Latin phrases.



Article:  Q&A: Step Away From the Keyboard (and Other Productivity Tips)

Productivity expert Tony Schwartz says that working longer hours is not the solution to improving results.  He offers some practical suggestions to increasing your productivity.



Article:  7 Rules for Communicating Clearly and Concisely in Email

E-mail is probably the most common method of communication in the modern world.  Here are some tips on how to use it effectively.



Article:  You Can't Predict Who Will Change The World

This author praises the trial-and-error process for making new discoveries.  He emphasizes that great breakthroughs are rarely made by academics, but rather by down-in-the-trenches tinkerers.



Article:  Getting to Now: How to Beat the Procrastination Habit

Many people (and I'm one of the worst!) are chronic procrastinators.  Here are some helpful tips for how to break out of the procrastination funk.



Article:  Five workplace practices that should be over. Now.

Business pundit Penelope Trunk recommends dispensing with these work-related things:  the "Reply All" button, vending machines, fundraising solicitations, office parties, and, my favorite, voice mail.



Article:  Businesses spend 20% of IT budgets on security, survey shows

Businesses now spend 20% of IT budge on security functions.  This is up from 12% in 2004 and 15% in 2005.  And the proportion of spending on security is expected to continue to increase.



Article:  5 Steps to Better Job Security

Want to improve your job security, both current and future.  This article outlines five key areas:  Stop blowing it on the small stuff, Lose without losing control, Outsource-proof yourself, Be a technology asset, and Be the whole package.



Article:  Master the art of procrastination

In the proud tradition of anti-patterns, this excellent post gives some practical tips for reducing procrastination and improving productivity.



Article:  So You Want to Be a Manager

At some point in their careers, most technical professionals are faced with the question of whether they should move into management.  Pundit Paul Glen discusses the reasons why and why not.



Article:  Meet Your Future Employee

Young people entering the workforce today have grown up with and take for granted technology.  But fewer of them are interested in IT and other technology careers.



Article:  E-Mail Is Easy to Write (and to Misread)

As e-mail becomes entirely ubiquitous, it becomes easier to fire off a missive than to talk directly to others.  This article warns against the lack of non-word context in e-mail communication and recommends always using some verbal or (preferably) face-to-face follow up.



Article:  Abused Workers Fight Back by Slacking Off

Need another reason to be a great boss?  New research shows that abusive bosses result in slacking off and poorer work quality by their subordinates.



Article:  100 Resources to Attract, Retain and Use Rock Star Programmers

While primarily intended for hiring organizations, this list is also great for job seekers themselves, as it gives some insight into the hiring process and suggestions for how to make the most of your search.



Article:  Your job search is tax deductible

Typical expenses for looking for a new job, such as employment agency fees, postage, toll telephone calls, and many more, are usually tax deductible.  Don't forget these important deductions!



Article: How To Be Optimistic

No one likes being around sourpusses all the time.  Here are some practical and achievable tips for how to become an optimistic person.  These are very relevant in light of new research showing that middle-class people are happier than the wealthy and discoveries of the portions of the brain responsible for optimism.



Article:  Get a life: 10 tips for achieving a better work/life balance

60-hour work weeks are common, if not typical, in the IT world.  But there are ways to bring your work and family life back into balance.



Article:  10 signs that you aren’t cut out to be a project manager

One of the common transitions from a technical to a managerial role is to move into project management.  But how do you know if you cut out for project management?  Here are some traits that indicate that this role might not be for you.



Article:  The Character of Leadership

Leadership guru Warren Bennis says that the single most important trait of leaders is character.  He defines character as the core values and principles that define a person in all situations.



Article:  The Seven Secrets of Inspiring Leaders

Americans believe that business leaders are uninspired.  Only 10% of workers look forward to going to work.  This article discusses the characteristics of great leaders.  The key components revolve around outlook:  enthusiasm, optimism, and encouragement.



Return to top


Telecommunications/Networking Industry

Articles:  Its Creators Call Internet Outdated, Offer Remedies

Internet pioneers Larry Roberts and Len Bosack continue their crusade to bolster the underpinnings of the Internet and avoid it's failure due the load from VOIP and streaming media.




Article:  The Myth of Infinite Bandwidth

Telecom pundit asks the question about how individual and company online behavior would change if unlimited bandwidth were a reality.



Article:  The Role of Competition in a National Broadband Policy

This detailed report looks at how government regulation and competition are affecting the availability of broadband Internet service in the United States.



Article:  This Man Wants To Control the Internet

John Doyle is working to apply control theory robustness principles to large networks including the Internet to squeeze more from the existing infrastructure and to extend it efficiently.



Article:  For Google, Advertising and Phones Go Together

Google's anticipated foray into mobile phone service is intended to loosen the carriers' control over their mobile phone networks in an effort to bring the dynamics of the PC-oriented Internet to the mobile Internet hoping that it can beat competitors in an open environment.  Instead of trying to compete directly with Apple's iPhone, the gPhone will focus more delivering existing Google services in an untethered manner.



Return to top


Useful Utilities

GanttPV (Free – Cross-platform – Varies)

GanttPV is an excellent project management application alternative to MS Project.  It uses the simple task grid metaphor with a Gantt chart view of task list, including dependencies, if any.  One of GanttPV's greatest feature is that all commands are scripts (sort of like "macros"), so you can write your own automation of the tool, if you want.  The scripts are written in the standard Python language.



AeroFoil (Free – Windows Vista – 8kB)

AeroFoil is a simple background utility for Vista that enables the Aero GUI effects (Vista's shiny new translucent effects) when your laptop is running on AC power and then turns Aero off to save power when your laptop is running on battery.



SQuirreL SQL (Free – Cross-platform/Java – 18.7MB)

SQuirreL SQL is a free, cross-platform, Java-based universal SQL client.  It works with any database which provides JDBC drivers (most database systems do!) and even includes an ODBC-to-JDBC conversion interface to use existing Windows ODBC connections directly.  It features most any function that you can think of for database browsing and editing, including browsing/examining database objects, such as table structures, indexes, etc., ad hoc SQL query development with command and name completion, and much more.



EDraw Mind Map (Free – Windows 2000/XP/2003/Vista – 7.6MB)

This is a free mind map drawing tool.  In addition to basic mind maps, it includes shapes for simple flow charts and brainstorming diagrams.  Mind maps can be printed or exported as image files.



Quick Highlighter (Free – Online Tool – N/A)

If you write blog posts or other online articles that include sections of codes, it can be difficult to format your code sections.  Quick Highlighter solves this problem.  Simply paste in your code, select the appropriate programming language, and let it generate HTML for you.  Many languages are supported, including C, C++, C#, PHP, Perl, Python, PL/SQL, Java, and many more.



RightLoad (Free – Windows 2000/XP/2003/Vista – 1.07MB)

RightLoad allows you to upload files to your web site, blog, or other online storage area simply by right-clicking on the files.  You can even specify the target directory on the host.  After uploading the files, RightLoad generates a list of links to the uploaded files that you can paste into your blog post or site HTML file.



Text Mining Tool (Free – Windows 2000/XP/2003/Vista and .NET 2.0 Platform – 8.6MB)

Text Mining Tool will extract the textual portions of documents in PDF, MS Word DOC, RTF, CHM (MS HTML Help), and standard HTML files without needing the native application.  It comes both GUI and command line (console) versions to allow batch extraction.



Jarminator (Free – Cross-platform/Java – 53kB)

Jarminator is a tool for enumerating and examining classes in Java Jar files.  It can combine classes from multiple Jars and includes ability to filter for only particular classes.  It will also show duplicate class names from multiple Jars to help resolve conflicts.



Cream for Vim (Free – Cross-platform – 1MB)

Cream is a front-end for the excellent Vim text editor (which itself is a GUI version of the classic vi editor).  Cream adds some handy functions to Vim that make it an excellent all-purpose editor with standard GUI features, including standard menus, tabbed window interface for editing multiple documents, unlimited undo/redo, printing only selected lines, block indent/unindent, and much more.



SharpKeys (Free – Windows 2000/XP/2003/Vista and .NET Framework – 24kB)

SharpKeys is a handy utility to apply a registry hack to remap keys on your keyboard.  You can even remap a key to nothing, which essentially disables it.  It works with multimedia keyboards that have the extra keys, as well as standard keyboards.



Return to top


Productivity Tips

Improve Windows NT/2000/XP/2003/Vista performance by disabling Last Access time stamp

By default, the NTFS file system updates the Last Access time stamp whenever a file is accessed.  In most cases, users don't care when a file was last accessed, so you can (slightly) improve performance by disabling the update of this value.  To do so, launch the Registry Editor (Start | Run à regedit).  Navigate to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem key and add a new DWORD value named NtfsDisableLastAccessUpdate.  Set this new value to 1 and restart your system for the change to take affect.


Reclaim memory in Windows without restarting

Many programs will leave portions of their code in memory after terminating so that they can be re-used without re-loading if needed by future applications.  Of course, this puts a burden on the system and makes less memory available to other applications.  You can create a desktop shortcut to force Windows to unload these unused applications.  Right-click on the desktop and select New à Shortcut.  In the Create Shortcut window, enter %windir%\system32\rundll32.exe advapi32.dll,ProcessIdleTasks and press Next.  In the Select a Title for the Program window, enter a descriptive name like Clear Memory and press Finish.  Right-click on the new desktop shortcut and choose Properties.  In the Properties window, select the Shortcut key field and enter the desired shortcut key combination, such as <Ctrl>+<Shift>+M and press OK.  Now just double-click the shortcut or use the shortcut key combination to free memory when necessary or desired.


Create a shortcut to compose a new e-mail in MS Outlook

If you want to quickly compose a new e-mail message, but don't want to lift your hands from the keyboard to bring MS Outlook to the foreground, you can create a shortcut that will open a new message window and then assign a shortcut key combination to it.  First, just create a new desktop shortcut:  Right-click on the desktop and select New à Shortcut.  In the Create Shortcut window, browse for the Outlook application executable (OUTLOOK.EXE) and then append /c ipm.note to the command line and press Next.  In the Select a Title for the Program window, enter a descriptive name like Create New E-mail Message and press Finish.  Right-click on the new desktop shortcut and choose Properties.  In the Properties window, select the Shortcut key field and enter the desired shortcut key combination, such as <Ctrl>+<Shift>+N and press OK.  Now, when you want create a new e-mail message, just press the shortcut key combination.  You can adapt this technique to create other Outlook items by replacing ipm.note on the command line with one of the following:

"Sticky Note" - ipm.stickynote

Task - ipm.task

Contact - ipm.contact

Appointment - ipm.appointment

See this article in MS Knowledge Base for a complete list of Outlook command line parameters and options.


Return to top

Just For Fun

Mathematical Imagery

This site explores the ages old relationship between math and art.  It features galleries of mathematically inspired artwork and more.



Bureau of Workplace Interruptions

Getting too much work done?  Not enough distractions or intrusions during your day?  Well, the Bureau of Workplace Interruptions can help.  Just fill in your e-mail address, phone number, and/or location and they'll schedule an ad hoc interruption!  Of course, it's all just for fun!



Maze Generator

Ever design mazes on a sheet of paper as a kid?  This online tool will create them for you.  You can control the dimensions (number of cells) and cell size as well as the complexity (what they call "anfractuosity" - never heard of that word!).  In addition, you can have the tool solve the maze and watch as it traverses the path looking for the solution.  One of the neatest things is that the mazes are rendered entirely in HTML and CSS (no image files).



Free Rice

Free Rice is a vocabulary game by which international aid agencies donate 10 grains of rice to hungry people for each correct answer that you submit.  Play as little or as much as you want and help others while you learn.  What a great idea!  And don't forget to visit The Hunger Site everyday, too!



Phobia Guide

Afraid of something, but just not sure what the official name is?  Phobia Guide to the rescue!  My favorite is nephophobia:  fear of clouds.  Not that I've got that, mind you!




Ever visited a place that you always wished you could go back to?  Well, this won't get you there, but maybe it's the next best thing.  This site is a directory of webcams from around the world.  Check out your favorites from one place or look for new and interesting places to "virtually visit".



Juggling Is A Snap

I've always been fascinated by juggling, even though I'm not sure that I have the coordination to do it.  This site provides free juggling lessons via animations and video.  To see an introductory lesson without signing up, check here.



Return to top