Up to Newsletter Index

June 2010 Newsletter


Quotable Quotes


Great necessities call out great virtues.  –Abigail Adams


I choose to be a student of the experience and not a victim of the circumstance.  Mark McIntosh


Software Engineering: n. The art of getting something that sort of looks like useful work out of someone who is not fundamentally a programmer.  Tommy McGuire


Forget injuries, never forget kindnesses.  –Confucius


Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.  Alan Kay


The intuitive mind is a sacred gift and the rational mind is a faithful servant. We have created a society that honors the servant and has forgotten the gift.  –Albert Einstein


It's not foresight or hindsight we need. We need sight, plain and simple. We need to see what is right in front of us.  –Gordon Atkinson, RealLivePreacher.com


We all should know that diversity makes for a rich tapestry, and we must understand that all the threads of the tapestry are equal in value no matter what their color.  –Maya Angelou


Watch what people are cynical about, and one can often discover what they lack.  –George Patton


Return to top


Software Development Process and Methodology

Article:  3 Reasons Why I Would Not Do Agile Project Management

This author, who is a committed proponent of agile development, says that there are three particular circumstances where agile methodology is not appropriate:  an organization needed complete understanding solution before starting, business stakeholders couldn’t or wouldn’t commit to active involvement throughout the project, and team couldn’t deal with ambiguity or properly communicate with business or customers.



Article:  Why Normalization Failed to Become the Ultimate Guide for Database Designers?

One of the first things that developers learn in database design classes is normalization.  However, in practice, normalization is often treated quite differently.  This article looks at how theory and practice diverge and how the NoSQL concept is changing ideas about normalization.



Article:  “Less thinking. More testing.”

Most developers agree that test-driven development (TDD) is a valuable practice for improving development productivity and code quality.  But it’s often difficult to get a feel from TDD is all about when getting started.  This excellent essay explains the premise behind TDD and shows you how to create relevant tests up front before you write your code.



Article:  Is the Custom Application Dead?

With the recent spate of high-profile packaged application implementation debacles, many technology executives are showing a renewed interest in in-house application development and agile methodologies are helping smooth the path.



Article:  5 low-risk, high-reward experiments for IT

Rather than spending a lot of time and energy trying to figure out how to align IT and the business, this author suggests these 5 ways that IT can take the lead in helping their business customers understand the potential of some of the new technologies that they may have heard about.



Article:  A Discussion with Josh Bloch on the Future of Java

Josh Bloch, contributor to Java Collection class and author of Effective Java, gives his views on where he sees Java going under Oracle.  Interestingly, he thinks that the lack of innovation in Java recently is the fault of Sun.



Article:  REST isn't what you think it is, and that's OK

The REST principle is one of the foundations of services-oriented architecture (SOA).  However, since fundamentally all web applications are RESTful, this author points out that practical implementations of REST APIs actually violate the principle that the service be “self-describing”, but that this is ultimately an advantage.  Moreover, this emphasizes that all architectures evolve when put into practice.



Article:  Nine Things Developers Want More Than Money

Technical professionals are sometimes counterintuitive and are often motivated more by intrinsic rewards, such as technical challenges, than money.  Here are some of the factors that savvy managers need to take into account.



Article:  The one essential Agile ingredient

This author claims that the one key element for successful implementation of agile development methodologies is that the management ranks (most all levels) actually “get” agile and develop an agile mindset.



Article:  8 Things Business Hates About IT

Excerpted from Susan Cramm’s soon-to-be-released book of the same name, this slideshow lists eight (only eight?!) places where IT and business often disconnect.  I just wish it would give us some hints about what to do to fix these gaps!



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:  A Glitch in Time Saves Nine

In this article from a forthcoming book about the consequences of software failure, the author recommends using a balanced approach to IT governance to reduce risks associated with software problems by doing a little work now to prevent them instead of a lot of effort later dealing with the fallout.



Article:  Testing Man-Hours

A frequent topic of discussion among test professionals is what is the appropriate ratio of testers to developers and/or of test effort to development effort.  This article emphasizes that the only accurate answer is “it depends” and goes on to provide some criteria to use in determining this for your project.



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.



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:  New Programming Jargon

One of my college professors said that you were a real engineer once you understood the jargon in your area.  Here’re some humorous new terms to describe the practice of programming.  Interestingly, many of the terms are about errors and bugs, which just shows that we are still a long way from error-free development.



Tutorial:  The Semantic Web: What It Is and Why It Matters

The Internet is full of chatter about the semantic web (sometimes called Web 3.0), but very little of it gives you an explanation or context for what it is.  This short (~15 minutes) video gives a very good overview of the concepts and the ways that it will transform the web.



Tutorial:  Ten Articles to Learn More on Test-Driven Development (TDD)

Test-Driven Development (TDD) is an excellent tool for improving your code and accelerating agility in your development work.  But it’s difficult to start with TDD from scratch.  This article links to 10 excellent articles on what TDD is all about and how to actually do it.



Return to top


Career Development/Miscellaneous

Article:  The distraction society

A new book chronicles how so-called “Internet addiction” is really just another form of the human trait of distraction wherein people crave the next “hit”.  The author suggests trying to find real-world analogues to online activities to develop focus.  And here are some tips for reducing technology-induced distraction.



Article:  How (and Why) to Stop Multitasking

Most of us have heard the research results that say that multitasking is actually counterproductive.  This author tells you how to stop multitasking and shows the benefits both personal and professional.



Article:  The Strategic Imperative Not to Hire Anybody

Most of us have heard about the so-called “jobless recovery”.  This article explains the corporate strategy perspective that backs up this idea.  Essentially, most organizations believe that the increase in productivity during the downturn is sufficient to maintain momentum.



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:  Workers Feel Need to Stay Constantly Connected, Survey Finds

One of the results of the prolonged recession and improvements in technology is that almost 1/3 of workers feel obligated to stay connected to work 24/7, even during weekends, vacations, or holidays.  At the same time, almost 3/4 say that technology has helped them do more with less, according to a survey from Intercall.



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.



Return to top


Telecommunications/Networking Industry

Article:  Communications Law to be Reviewed

The U.S. Congress appears poised to revise the 1996 Telecommunications Act due to the recent discussions about net neutrality and the federal appeals court ruling that the FCC overstepped its bounds in its ruling against Comcast concerning traffic shaping.



Return to top


Useful Utilities

AquaSnap (Free – Windows 2000/XP/2003/Vista/7 – 1.3MB)

AquaSnap makes arranging Windows on your desktop more efficient by turning each of the edges and corners into dockable locations.  Just drag your window to the appropriate docking hotspot and it will automatically snap to that location.  In addition, it allows you resize your window into half or a quarter of the screen, so that you can arrange multiple windows for simultaneous display.



Auslogics Disk Defrag Screen Saver (Free – Windows 2000/XP/2003/Vista/7 – 1.78MB)

Who has time to remember to run their disk defragmenter?  With Auslogics Disk Defrag Screen Saver you don’t have to!  It runs defragmentation as a screen saver and even displays the fragmentation status and defragment process.



Rex (Free – Windows 2000/XP/2003/Vista/7 + .NET Framework – 98kB)

Rex is the toy dinosaur from Toy Story…  Oops…  Sorry!  Anyway, this Rex is a regular expression development tool, with a twist.  Instead of validating that a particular string matches the given regular expression, it creates a finite state machine from the given regex and then returns a specified number of strings that match.  This is a great way to help understand an unknown regex.



Zen Coding (Free – Cross-platform plug-in – <100kB)

Zen Coding is a small plug-in for many IDEs, including Eclipse, IntelliJ IDEA, NetBeans, and even a variety of text editors, such as Notepad++, Akelpad, and UltraEdit, that makes coding HTML and CSS easier.  Essentially, Zen Coding provides a shorthand that expands the simple input into the actual HTML and CSS code.  For example, div#content>p*3 expands to:

<div id="content"> 







ERMaster (Free – Cross-platform Eclipse plug-in – 2.8MB)

ERMaster is a full-featured data modeling tool in an Eclipse plug-in.  You can model tables and relationships and it will export the model to DDL for a variety of database platforms including MySQL, Oracle, and PostgreSQL.  Models are stored as XML for simple management.



Return to top


Just For Fun

Name the programming language based on its “Hello, World” syntax

Think that you know a lot of programming languages?  Put your skills to the test with the timed quiz of 20 “Hello, World” examples.



Hero Programmer Quest

In this online Flash game, you must fix (actually, just find!) bugs in NVidia driver source code to save the world!  If you can’t find the error fast enough, then the world ends in a mushroom cloud.



Long Bets

Sub-titled “The Arena for Accountable Predictions”, Long Bets is a philanthropic site where people (usually well-known ones) can make predictions about finance, technology, and more and have them challenged with the proceeds from the bet going a charity selected by the winner.  It also serves as a forum for discussion about predictions.



The Scale of the Universe

This simple Flash animation helps you comprehend the size of our universe from the Planck length up to estimated size of the universe itself.  Very fascinating!



A Brief, Incomplete, and Mostly Wrong History of Programming Languages

Here’s all that stuff that your professors failed to tell you in school about how we got all of these programming languages that we know a love.  :)



Apollo 11 Saturn V Launch (HD) Camera E-8

Doubtless, this video of the first 30 seconds of the Apollo 11 launch, shot at 500 frames/second (20 times the usual speed!), is the most amazing you’ll ever see in the history of space flight.  It includes full narration of the scene.  I still remember standing on a street with my dad watching this on a TV screen in a department store window.



Return to top