Up to Newsletter Index

May 2010 Newsletter


Quotable Quotes


Pedantry and mastery are opposite attitudes toward rules. To apply a rule to the letter, rigidly, unquestioningly, in cases where it fits and in cases where it does not fit, is pedantry... To apply a rule with natural ease, with judgment, noticing the cases where it fits, and without ever letting the words of the rule obscure the purpose of the action or the opportunities of the situation, is mastery.  –George Polya


The person who says it cannot be done should not interrupt the person doing it.  –Chinese proverb


Courage is not simply one of the virtues, but the form of every virtue at the testing point.  –C. S. Lewis


The end of wisdom is to dream high enough not to lose the dream in the seeking of it.  –William Faulkner


Conformity is the jailer of freedom, and the enemy of growth.  –John F. Kennedy


Many live in dread of what is coming. Why should we? The unknown puts adventure into life...  The unexpected around the corner gives a sense of anticipation and surprise. Thank God for the unknown future.  –E. Stanley Jones


There’s no sense in being precise when you don’t even know what you’re talking about.  –John von Neumann


Technology is nothing.  What’s important is that you have a faith in people, that they’re basically good and smart, and if you give them tools, they’ll do wonderful things with them.  It’s not the tools that you have faith in—tools are just tools.  –Steve Jobs


Return to top


Software Development Process and Methodology

Article:  Type Theory Comes of Age

Dynamic versus static typing (a.k.a. “type theory”) used to be more of a theoretical or philosophical matter, but now it’s moving into the practical realm of security and networking.  Find out what all of the interest is about.



Article:  Programming Paradigms for Dummies: What Every Programmer Should Know

This decidedly academic paper discusses the common paradigms (which the author delineates from “concepts”) of programming that all developers need to understand regardless of what language is used.  (Or you can just take a look at the chart of these patterns.)



Article:  As IT Shrinks, Business Analysts Take on More Integration Work

Last month, we noted that project manager and analyst roles are converging.  In this discussion, the CTO of a data-integration company explains how business analysts are becoming more critical to all types of integration projects.



Article:  Where does the programming effort go?

When developing an application, very little of the actually coding effort goes to the logic of implementing the basic purpose of the system, but it’s important to recognize that the other work is just as important.



Article:  The Future of Software Development

Mark Twain once said (or didn’t!), “The art of prophecy is difficult, especially with regard to the future.”  So even though we don’t know with certainty what programming will be like, pundit Michael Nygard gives some insightful commentary about what he sees changing in the near and distant future.



Article:  Writing Testable Code

Whether you use test-driven development (TDD) or not, writing unit tests is a good practice.  This article, using examples from Java, gives some good tips about how testable code is often simpler and more robust.



Article:  Five things I hate about corporate IT

IT is not alone in having a sometimes poisoned organizational culture.  This pundit lists some of the problems that tend to be endemic in enterprise IT shops.  What would you put on the list?



Article:  Software Programming Research Promises Faster Applications

Recently published research demonstrates that moving memory management to its own thread in parallel applications improves performance by up to 20% and reduces the overhead of security checks.



Article:  C is number one!

Based on monthly surveys of developers, the TIOBE programming language index shows that decline in use of Java and steady numbers of C users has put the venerable C language back on the top of the list, after over four years.  With the rise of the IPhone, Objective-C made significant gains, as did Google’s Go language due to simple syntax and speedy performance, along with PHP.



Article:  The biggest waste in software development

What do you think is the most significant waste on development projects?  In this case, it’s a bit of a loaded question.  This author says that its implementing features/functions that no one wants.  That’s a very keen observation and one that every project team member needs to think about all the time.



Article:  12 Problems with Software Estimation

Development effort and duration estimation are probably the most difficult tasks of the planning portion of any application project.  Although this author doesn’t offer many solutions to this difficulty, he does succinctly explain the underlying causes and emphasizes the difference between estimates and commitments.



Article:  14 Ways to Be the World’s Worst Web Project Manager

Even though the title of this article contains “web”, the principles described apply to almost any sort of project management endeavor.  The author uses anti-patterns and humor to drive home some good points about how project managers can be effective in running projects.



Article:  Should managers know how to code?

Sort of like the question of how many testers per developer and the programming language wars, this is one of those questions that just seems to keep coming up.  The author’s conclusion is that managers of programmers should know how to code, but that they should spend very little time actually coding and most of their time removing roadblocks that prevent the developers from getting their work done.  The main premise of having a manager who knows how to code is for them to have credibility and to be able to promote the team and resolve technical conflicts.



Article:  It is less expensive to do it inefficiently!

This article explores some empirical evidence which supports the idea that the first release (or perhaps multiple early releases) of an application need to be developed without full-scale architecture in mind to confirm that it’s what the business wants.  This aligns with Fred Brooks’ axiom “Build one to throw away; you will anyway.” in The Mythical Man-Month.



Article:  Agile and lean: Better apart or better together?

To many people, agile and lean development tend to be synonymous.  But it’s instructive to understand the subtle differences between the two and how they can complement—and sometimes conflict with—each other.  According to the experts the difference is that agile is a methodology framework, while lean is more of a philosophical mindset around doing the simplest possible things.



Article:  I Can't Wait for NoSQL to Die

The RDBMS versus NoSQL debate continues…  In this article, the author suggests that it will take a long time, if ever, for large organizations to abandon the RDBMS platform.  He emphasizes that the database is only one aspect of application performance and that the other elements can’t be ignored.



Return to top


Software Testing & Quality

Article:  How to implement UI testing without shooting yourself in the foot

Automated GUI testing is often (always?) sold to IT management as the panacea for all of their testing problems.  But as most testers know (all too well in a lot of cases!), test automation is an arduous task and test automation efforts need to be managed as a “development project within a development project”, including analyzing their value.  This article gives some excellent advice on how to do test automation effectively.



Article:  Sapient Testing: The "Professionalism" meme.

Uncle Bob Martin eloquently explains why testers are often the people on a software development project who best understand the application, because of the need, for them to be effective, “to divine the system that the customer imagined; and then to illuminate those parts of the system that are not consistent with that imagination.”



Article:  Microsoft runs fuzzing botnet, finds 1,800 Office bugs

By using spare CPU cycles on PCs inside Microsoft, developers found and fixed 1800 bugs, including some security vulnerabilities on Office 2010 before shipping.  Looks like a pretty good paradigm for security testing in large organizations.



Article:  Mind your boomerangs

This article presents an interesting paradigm for measuring the value of acceptance testing by tracking “boomerangs”, which are anything that comes back into your process from one iteration to another.



Return to top



Tutorial:  Designing Efficient SQL: A Visual Approach

Frequently, the SQL used to read and write data to/from your database has the most profound impact on application performance of any aspect.  This excellent, comprehensive tutorial gives you some hands-on concepts using diagrams to better understand and improve your queries.



Reference:  User interface design principles

Whether you are developing desktop or web applications, most programmers don’t have a lot of experience with user interface design.  This simple, yet elegant, checklist contains some excellent tips to keep in mind.  While they are all important and valuable, the most important to me is #3:  Optimize the design for the most frequent or important tasks.



Reference:  List of Tips Extracted From The Pragmatic Programmer

Any developer that wants to improve his or her productivity and non-language-specific skills would do well to read (and re-read!) The Pragmatic Programmer.  This concise list includes all of the tips presented in the book.



Tutorial:  TDD Problems

Interested in learning test-driven development techniques, but don’t know how to get started?  Head over to this site which presents a set of problems, from easy to hard, that you can use to learn or practice.  And they have a mailing list to ask questions or get advice on your approach.



Return to top


Career Development/Miscellaneous

Article:  Career Perceptions Show Workers Expect Little Growth, Crave Stability

While most IT workers were satisfied with their jobs in 2009, even though they felt underpaid, a new Towers Watson study, over half indicate that they see little chance for career growth.  At the same time, most respondents said that security and stability is the most important characteristic of their job.



Article:  13 small things to simplify your workday

Simplicity has an amazing calming effect.  Most of these tips won’t be new to you, but taken together (i.e., synergy) they take on a whole new meaning.  My favorite tip on the list is put all of your distractions (including your structured procrastination activities) together at a single time.  Although I should probably heed the suggestion to write shorter e-mails more diligently.



Article:  Do we have to meet this way?

Texas A&M University (my alma mater by the way!) researchers have shown empirical evidence of what most of know intuitively:  meetings are not a valuable way to generate new ideas.  Their results indicate that ideas offered in brainstorming sessions ultimately result in less creativity on the part of the entire group.



Article:  Making a mistake does not make you an idiot

Many people worry so much about making mistakes in their work that it holds them back from doing their best.  Messing up is not something to be feared as long as you take responsibility for your error and use it as an opportunity to learn something.



Article:  8 Things Everybody Ought to Know About Concentrating

Distraction and procrastination are the silent killers of productivity.  This article will help you understand both the science and psychology behind maintaining focus and how concentration is becoming a lost art.



Article:  Please do not change your password

After all of those frustrating years of having to frequently change your passwords on various systems, new research says that changing passwords does not make good economic sense.



Article:  Is purpose really an effective motivator?

A recent study indicates that understanding the value and importance of task (i.e., it’s “purpose”) is an extremely good motivator to excel.  Maybe there is some value in answering your kids with something other than “Because I said so!” when they ask “Why?”



Article:  Einstein’s Secret to Amazing Problem Solving (and 10 Specific Ways You Can Use It)

You’d be hard pressed to find a deeper, and yet incredibly productive, thinker than Albert Einstein.  Here are some ways that he approached problem solving that you can use too.



Article:  How to Prioritize, Military-Style

Whether you need to prioritize your work tasks or just your “honey-dos” around the house, this article offers a nice technique to assign an appropriate weighting to each of your items.



Article:  $1 Million Doesn't Cut It for Retirement

Although you might question their motivation, almost 3/4 of investment advisers say that for the generations following the Baby Boomers, most families will need $2 - $3 million in retirement savings to maintain their standard of living.



Article:  Doing Battle With Procrastination? Here's How to Win – For Good

While, generally, I’m a pretty organized and productive person, one of my “dirty little secrets” is the tendency to procrastinate, especially when I feel overwhelmed (seems counterintuitive, huh?!).  This motivating article gives four suggestions to stop procrastination and keep it away permanently.



Article:  Yes, Everyone Really Does Hate Performance Reviews

In this book excerpt, which grew out of a popular op-ed piece in WSJ, the author gets right to the heart of why the ubiquitous performance review is so maligned by workers at all levels of the organization:  It is typically a bogus, fraudulent evaluation of the employee’s work.  He says it needs to be replaced by good day-to-day management with discussions about problems as they come up.



Article:  How to Give Your Boss Feedback

One of the most disconcerting and daunting activities for many employees is to provide feedback to the boss.  Here are some excellent tips for how to effectively provide both positive and negative input to your manager.



Article:  The Secret Origin of Windows

Microsoft Windows is ubiquitous now, but that hasn’t always been the case.  (Even I remember when Windows didn’t exist!)  This is the story of Tandy Trower, who was the product manager who actually delivered Windows 1.0 after many failed attempts.



Article:  Quick resume tip: List accomplishments not duties

Traditionally, resumes list the duties and responsibilities you have.  But potential employers what to know what you have actually accomplished, not what you were supposed to do.



Return to top


Telecommunications/Networking Industry

Article:  The State of the Internet Operating System

Some of you (if you’re old enough!) may remember that Sun Microsystems’ (remember them?!) slogan for a while was “The Network Is The Computer”.  Tim O’Reilly says that cloud computing is really just the next logical step toward that reality.



Article:  100-Year-Old Trick Squeezes Fiber-Optic Speeds from Copper Wires

With FTTH penetration at less than 20% and the FCC’s national broadband plan getting so much attention, Alcatel-Lucent researchers are using “phantom channels” to get speeds of up to 300Mbps over 2/3 of a mile spans.  And they expect this technology to be widely available by 2015.



Return to top


Useful Utilities

Wikitup (Free – Windows XP/2003/Vista/7 – 5.1MB)

Wikitup is a desktop dictionary and translation tool.  One of its most unique features is that instead of just giving you a text definition or translation, it includes other resources, such as pictures from Flickr and Picasa, multimedia files from YouTube, Vimeo, and others, and even related quotations from Wikiquote.  And they are adding more resources all the time.  Just hold down <Ctrl> key and click on a word in any application to get all of this.



Japplis Toolbox (Free – Cross-platform Java – N/A)

If you need to do almost any kind of text manipulation or formatting, then Japplis Toolbox is probably just the tool for you.  It does all kinds of operations, such as encoding/decoding, sorting, separating/combining lines, XML validation, date and time-value conversions, displaying all characters with particular font and character set, and much, much more.  Likewise, you can run it as a standalone application, launch it online, or even use it as a plug-in in Netbeans IDE.



Every Time Zone (Free – Online tool – N/A)

Get confused about what time it is on the other side of the world?  Can’t figure out if a time will be convenient for others on your team?  Every Time Zone is a cool online tool for visualizing the time in some common locations around the world.  Just move the slider bar to compare the time of your current time zone with those locations.



Quick Sequence Diagram Editor (Free – Cross-platform Java – 1.9MB)

Recently, we featured an online UML sequence diagram editor.  If you need something a little more full-featured, but that still offers simple text entry, then Quick Sequence Diagram Editor is worth a look.  It features graphical export of the diagrams in a variety of formats, including PDF, SVG, SWF, and JPEG.



taskpaper+ (Free – Cross-platform – 4.2MB)

Most people don’t need a full PIM or planning tool; they just need a simple way to keep track of the tasks they need to do.  Taskpaper+ is unique in that is an entirely standalone web-based application, which comes with its own (Windows) web server.  Or you can use a web server that you already have running on your machine.  All that is required is PHP 5.x.



ToFroWin (Free – Windows 2000/XP/2003/Vista/7 – 44kB)

If you frequently work with Unix files in your Windows environment, it can be frustrating to open them in a text editor and not have them wrap correctly due to the different newline character.  This small shell extension allows you to convert between DOS/Windows format (CRLF/’\r\n’) and Unix format (CR/’\n’).



Return to top


Productivity Tips

Avoid having to enter password when running sudo in Linux

If you use Linux and need to run a command with elevated privileges, such as to install an application, then typically the sudo command is used for this.  However, one of the annoying aspects of sudo is that you must specify the user account password.  If you are not concerned about security of your system, you can configure your system to not require password for sudo.  To do this, edit the /etc/sudoers file (as the root user, of course!) and add the following line to the end of the file:


where username is your user ID in Linux.  The change takes effect immediately.  (You will need to make /etc/sudoers file writeable before editing it [chmod +w /etc/sudoers].  However, you must change it back to read-only before executing sudo.)


Find all of the configuration files on your Linux/Unix system that contain PATH

One thing that can be (almost) intractably frustrating in Linux/Unix is updating all of the places where you PATH gets set when you install a new application.  Well, with a magic one-line command, you can find all of the files that you need to update:

sudo find /etc -type f | xargs sudo grep 'PATH=' | grep -v /opt/my-appl

Usually, these files will reside somewhere in the /etc branch of the file system, but you can replace /etc with any file system branch you want (or just / to look everywhere!).  Likewise, just replace /opt/my-appl with the name of the directory that you want to add to your path; this part of the command ignores files that already have the new entry in the PATH.


Return to top


Just For Fun

A Turing Machine In The Classic Style

This web site demonstrates a home-built Turing machine along the lines of that describe by Turing in his 1936 paperOn computable numbers”.  The device is truly beautiful to look at and watch.



Explanations of common Java exceptions

When you’re debugging and you get one of those cryptic Java exception messages, just refer to this table to help make sense of it.



Albert Einstein's Theory of Relativity—In Words of Four Letters or Less

In this amazingly lucid explanation of the special theory of relativity, the author does with only words with four letters or less.



The Geocities-izer

Tired of clean, modern web designs?  Pining away for the days of Geocities?  Then let Geocities-izer “Make Any Webpage Look Like It Was Made By A 13 Year-Old In 1996.”


The True Face of Mario

Believe it or not, Mario the plumber of Donkey Kong fame was actually inspired by a real person:  the landlord of Nintendo’s original Seattle warehouse.  Read this story about how he came to be a cultural icon.



Nature by Numbers

This short and breathtaking film explores how the Fibonacci sequence and golden ratio appear in nature and the math behind them.



Return to top