Up to Newsletter Index

June 2009 Newsletter


Quotable Quotes


Choose your corner, pick away at it carefully, intensely, and to the best of your ability and that way you might change the world.  –Charles Eames


Don't fight forces; use them.  –Buckminster Fuller


A day of worry is more exhausting than a week of work.  –John Lubbock


To be prepared is half the victory.  –Miguel de Cervantes


Difficulties are meant to rouse, not discourage. The human spirit is to grow strong by conflict.  –William Ellery Channing


All of us tend to put off living. We are all dreaming of some magical rose garden over the horizon—instead of enjoying the roses that are blooming outside our windows today.  –Dale Carnegie


The 'silly question' is the first intimation of some totally new development.  –Alfred North Whitehead


Life is full of obstacle illusions.  –Grant Frazier


We need a renaissance of wonder. We need to renew, in our hearts and in our souls, the deathless dream, the eternal poetry, the perennial sense that life is miracle and magic.  –E. Merrill Root


Return to top


Software Development Process

Article:  10 ways to avoid stupid project estimates

In most organizations, project estimation is either a black art or an afterthought.  Here are some simple, practical tips for improving estimation.  It focuses on the principle of developing a feedback loop cycle for estimation rather than starting from scratch on every project.



Presentation:  Agile (as practiced today) is the new Waterfall

This excellent presentation shows how many organizations have co-opted the agile label, but they are simply sticking it on the traditional waterfall process.  The key recommendation that the author makes is that agile should be implemented organically (bottom up), should be adapted appropriately for the specific organization, and should not be done all at once.



Article:  The DCI Architecture: A New Vision of Object-Oriented Programming

Despite reports of the demise of object-oriented programming (OOP), this article, by well-known and respected computer scientists, Trygve Reenskaug, creator of the MVC pattern, and James O. Coplien, explores how OOP as implemented (i.e., in practice versus in academia) missed the boat in translating mental models of business users into objects with respect to system actions and interactions.  And they offer a fix called DCI:  an architecture based on the object Data, the Collaborations between objects, and the way that Use Cases scenarios comprise Interactions between role.  I predict that this paradigm will be revolutionary.  (Guy L. Steele made similar observations back in 2002.)



List:  Top 10 Programming Fonts

The choice of a comfortable monospaced font for your text editor or IDE is really a matter of personal preference.  So check out this list to see if you might find something a little better than Courier New for your needs.  And don’t forget to read the comments for other great recommendations!



Article:  Is collaboration destroying value at your company?

University of California professor Morten Hansen says that when collaboration becomes an end itself instead of a means to an end, it becomes detrimental to the organization.  Further, he says that managers, who by their nature tend to be optimistic, often unknowingly fall into this trap.



Article:  Why Software Estimation is Hard

In this article, the author makes it clear that development estimates are not (or should not be!) "point" estimates, but that instead they should be treated as a statistical distribution.  Although he doesn't specifically note this, it should be apparent that this means all estimating techniques should have a low, medium, and high component (3-point estimate) with a likelihood weighting for each.



Article:  REST - Good, Bad and Ugly

REST is one of the popular architectures for building web services and SOA applications.  (The other is SOAP.)  This article discusses some of the good things about REST and the dark underbelly as well.



Article:  Laws of Source Code and Software Development

This brief, succinct list is a great set of principles for programmers to follow.  Take this list and think about what other things you would add.



Article:  10 ways developers can meet user expectations and ease frustrations

Some people call them “non-functional requirements” and other use the term “supplemental specifications”, but whatever name you use, business customers always have some expectations about any application that are implied, but still very important.  This article explains ten such “fit and finish” needs that all developers should pay attention to.



Article:  Chuck Norris Syndrome and IT failure

Many organizations continue to fail in both their development projects and their efforts to improve the development process itself, because they have the "Chuck Norris mindset":  They expect change to happen simply because they want it to.  In other words, they don't invest in the work and effort to make it happen.



Article:  Software modeling finds new support on business side

In an interesting twist on the usual IT-business alignment divide, business users have become advocates of model-driven development tools and methodologies because they perceive that IT organizations are too slow in developing tools to meet the business needs.  By contrast, programmers have generally resisted these tools as raising the abstraction level for applications too high.



Return to top


Software Testing & Quality

Article:  Four Ideas for Improving Test Efficiency

In tight economic times, everyone is trying to get by on less.  This means that the focus is on efficiency.  Here are some tips on boosting the efficiency of your test efforts and the test organization itself.



Article:  Code Coverage Analysis

This article gives great introductory explanations about the various types of code coverage testing techniques, such as statement, branch, condition, etc.  Likewise, it includes some practical advice about what coverage techniques to apply first and why.



Article:  On code quality: a small quality fix with every bug fix

Many developers are tempted to do large-scale rewrites of code when they have to do bug fixing.  Of course, this is risky from the quality perspective as well as to the project schedule.  Refactoring is usually an acceptable alternative.  This developer suggests this principle:  Make a small “quality fix” for every bug you have to address.  He goes on to explain what these small fixes might be.



Article:  The Crucial Role of Application Testing in Software Development

This article explains the motivation for independent testing from the developer's perspective and addresses the value proposition for testing.



Tool:  GenerateData.com

One of the banes of a software tester's existence is generating test data, especially when you are doing automated testing and you need a large quantity of data.  GenerateData.com can help.  It is both an online tool and a free (GPL) script that you can run on your own server to generate data.  It can create a variety of test data types including names, email addresses, address data, alphanumeric strings, and MUCH more.  It can output the data set results in many formats including XML, Excel, HTML, CSV, and SQL.



Return to top



Tutorial/Reference:  Data Structures in Java, for the Principled Programmer

This free, online textbook teaches data structures using Java.  Many of the data structures presented have interfaces similar to those in Sun's JDK.



Tutorial:  Thanks for the memory: Understanding how the JVM uses native memory on Windows and Linux

In Java programming, one of the most frustrating errors is the java.lang.OutOfMemoryError.  This can be caused not only be running out of heap memory, but also by native memory.  This article explores the causes of these errors and how you can avoid them in your Java (or other JVM-based) applications.



Site:  Lord of the REPLs

Need to test a small snippet of code?  This cool little site allows you enter your BeanShell, Clojure, Groovy, Javascript, Python, Ruby, Scala, or Scheme code and execute it interactively.  The source code is even available, if you want to see how they do it.



Tutorial:  SuperFetch: How it Works & Myths

It would be rare that a person would say that Windows is fast at booting and launching applications.  SuperFetch is an update to the Windows pre-fetch technology introduced in Windows Vista, which aims to predictively load libraries in parallel for enhanced performance.  This article looks under the covers of SuperFetch and dispels some of the legends about it.



Tutorial:  An Introduction to Concurrent Java Programming

Does the thought of concurrent or multi-threaded programming make you nervous?  This tutorial gives a gentle introduction to using the java.util.concurrent package.



Tutorial:  Anatomy of Linux process management:  Creation, management, scheduling, and destruction

Most of us probably aren’t (and won’t be!) involved in writing operating systems.  Nevertheless, application developers can benefit from understanding how the operating system creates and manages processes, especially as it relates to application performance.



Return to top


Career Development/Miscellaneous

Article:  You’ve Got Voice Mail, but Do You Care?

A new survey shows that people under 30 tend to ignore voice mail and are more likely to respond to e-mail and text messages.  Understanding communication styles is very important to successfully interact, especially between generations.



Article:  10 skills developers will need in the next five years

Keeping your skills current is the key to long-term success in any career.  Here are one pundits suggestion about what programmers will need to be able to have in their basket in the next few years.  No big surprises, but a good "check list" to have for your career planning.



Video:  The Psychology of Incompetence

Most programmers (and people, in general, of course!) tend to view themselves as competent.  In this humorous video, Ron Burk discusses the Dunning-Kruger effect and how it applies to programming.  In particular, he emphasizes that overconfidence in our abilities is most often demonstrated in insufficient unit testing.



Article:  The 2009 IT Salary Guide

A new survey by Robert Half shows that IT professionals are on track for 3.7% increase in starting salaries over 2008, which in the current economy is good.  This is compared to the 5.3% increase from 2007 to 2008.  Likewise, IT unemployment remains comparatively low. 



Article:  Ear Plugs to Lasers: The Science of Concentration

Most technology workers are painfully aware that (human) multitasking on complex tasks simply doesn't work.  This article discusses the recent cognitive science developments about the Age of Distraction.



Slideshow:  50 Years of IBM Mainframe Milestones

Despite numerous predictions of its imminent demise, IBM has been selling mainframe computers for 50 years.  And they expect this to continue indefinitely.  Here are some of the milestones along the way.



Article:  Old-school programming techniques you probably don't miss

As much as those of us in the IT career might complain about how slowly things seem to improve, here's a reminder of 11 techniques that used to be the foundation of programming that thankfully we don't have to worry about any more.



Article:  10+ ways to learn more efficiently

Learning isn’t (or shouldn’t be!) something that stops when you finish school.  To have a successful career (and life) you need to continue learning.  Here are some tips for gathering and retaining new knowledge.



Article:  50 Scientifically Proven Ways to Be Persuasive

While mostly oriented toward the psychology behind marketing and sales, this article summarizes 50 ways that we are persuaded about something.  Many of these are applicable to designing good software applications and user interfaces.



Article:  Layoffs Also Difficult for Those Who Stay

Those who survive a layoff (and often multiple rounds of them) are certainly happy to still have a job, but it still takes a toll on them, often in terms of health, morale, and productivity.



Article:  Negotiating Your Salary: How to Make $1,000 a Minute

Most people simply accept the salary offered by a potential employer.  Here are some tips, including very informative videos, about how to politely and successfully negotiate a higher salary or some additional benefits.



Article:  10 handy Firefox about:config hacks

Love the Firefox web browser, but find it a little bit slow or hogging too much memory?  Here are some hacks to improve performance and flexibility by getting into the guts of the application.



Essay:  Ten Things I Have Learned

Graphic designer Milton Glaser, the creator of the "I Love New York" logo, explains the things that have made the greatest impact on his life and how to work with others.  These points are very insightful and inspirational.



Presentation:  Teamwork Is An Individual Skill: How to Build Any Team Any Time

Since most software development work is done as part of a team, learning how to work together is a key skill for personal and organizational success.  The author of the acclaimed book Teamwork Is An Individual Skill discusses the importance of personal responsibility when working on a team.



Return to top


Telecommunications/Networking Industry

Article:  Is it time to cut the Ethernet access cable?

A new survey shows that as wireless LANs become more pervasive, in many organizations 50% - 90% of wired Ethernet ports are unused.  Furthermore, they predict that by 2011, 70% of new Ethernet ports will be wireless.



Article:  Telecom underestimating need for IP training

As the telecom industry moves toward an all-IP core, there are concerns that there aren't enough engineers with IP skills and that telecom providers are not doing enough re-training of current employees.



Article:  Rural telcos: Bigger and better?

The recent spate of divestures by large carriers of land access lines to "smaller" providers focused on rural and small market customers is actually creating a new series of big providers.  What does this mean for the telecom business overall?



Return to top


Useful Utilities

Risingware Exp+ (Free – Windows 2000/XP/2003/Vista – 7.18MB)

Risingware Exp+ is an integrated dual-pane file manager and web browser that includes a variety of utilities, as well.  The file manager includes built-in compression tool that handles ZIP and RAR archives among others and a file content previewer.  In addition, you can define directories as "favorites" just like in a web browser.  Some of the utilities include "Fast Start Genie" for launching frequently used applications and ability to set Window transparency.



yUML.me (Free – Cross-platform online tool – N/A)

This handy tool allows you to create UML diagrams online and even to edit them from within your blog posts or other online editing tools like Google Docs.  Currently, use case and class diagrams, including hierarchy, association, composition, inheritance, cardinality, etc., are supported, but other diagrams are coming soon.  Furthermore, you can share your creations with others via a simple URL link.



Nimrod Programming Language (Free – Cross-platform – 8.2MB [Windows])

Nimrod is a new programming language that "combines Lisp's power with Python's readability and C's performance."  It is a statically typed, imperative language that supports most of the common programming styles (procedural, OOP, functional, etc.) and has compilers for Windows, Linux, and Mac OS X.  Likewise, it provides bindings to a variety of toolkits, including GTK2, PRCE, MySQL, and many more.



Google Fx for Greasemonkey (Free – Firefox* and Greasemonkey – N/A)

If you use the wonderful Greasemonkey user-scripting engine (*see here for information about running Greasemonkey scripts in WebKit/Safari, Internet Explorer, and Opera) and use Google for search, this excellent style sheet will really improve your search experience.  It includes display of screen shots of returned results, integration of data from your iGoogle page, support for Google Translate, ability to run your seach on other engines, and much more.



IETester (Free – Windows XP/2003/Vista/7 – 24.2MB)

IETester is an integrated web browser package that allows you to display pages with the rendering and Javascript engines of IE 5.5, 6, 7, and 8 on both Windows XP and Vista.  Each browser window is displayed as a tab inside of IETester and you can arrange them for side-by-side comparisons.



Portable Python (Free – Windows 2000/XP/2003/Vista – Varies)

Portable Python is a complete Python development environment that can be installed and run from portable devices like USB thumb drives.  It has recently been updated to provide packages for versions 2.5, 2.6, and 3.0 and all of the packages can be run side-by-side on the same system, which is great for porting applications to a new version.  Each of the packages includes many popular add-ons, including Django web framework, Stani's Python Editor (SPE), wxPython, and a variety of common libraries.



Return to top


Just For Fun

Jarrad Farbs quit his job by creating a playable Super Mario Bros resignation letter

If you are game developer and you are leaving your job, how do you notify your coworkers?  You write a game, of course!  You can even play the Flash game yourself!



The evolution of the PC

The UK-based National Museum of Computing recently opened a new exhibit on "vintage" PCs.  Take a look at this gallery of some of the original boxes from the PC era.



25 Best Programmer Comics

Technical people seem to have a warped strange different sense of humor.  Here are 25 comic strips that show the lighter side of the development world.



The most successful game ever: a history of Minesweeper

While you're wasting your time (hopefully, not!) reading this newsletter, why not spend a few minutes reading about the greatest time-waster in history:  Minesweeper.  It's hard to believe that Minesweeper is almost 20 years old already!



My Life Is Average

This site just cracks me up.  In small micro-blog (think Twitter) posts, they author makes observations about his normal life.  And if this isn't enough, you can always read the entire text of Moby Dick from a series of 12,849 (wow!) "tweets".



Hackers Can Sidejack Cookies

Who woulda thunk it?!  A poem in the New Yorker that is “a collage-homage to Guy L. Steele and Eric S. Raymond. “  It’s sort of the Jargon File in verse.



DeepLeap: The Fast-Paced Time-Wasting Word Game!

If you enjoy word games like Scrabble, Spellathon, or Text Twist, you'll simply love DeepLeap.  Game play is simple, but addicting.  The game drops letter tiles one at a time and you try to make words from the available tiles.  You get bonuses for using all of the available tiles and for the length and complexity of the word formed.



Return to top