Up to Newsletter Index

April 2009 Newsletter


Quotable Quotes


Knowledge and timber shouldn't be much used till they are seasoned.  –Oliver Wendell Holmes


If you don't risk anything you risk even more.  –Erica Jong


When you have a great and difficult task, something perhaps almost impossible, if you only work a little at a time, every day a little, suddenly the work will finish itself.  Isak Dinesen


Family. Religion. Friendship. These are the three demons you must slay if you wish to succeed in business.  Montgomery Burns  ;)


Failures are divided into two classes—those who thought and never did, and those who did and never thought.  –John Charles Salak


First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute.  –Harold Abelson and Gerald Sussman in preface to Structure and Interpretation of Computer Programs


The greatest danger for most of us is not that our aim is too high and we miss it, but that it is too low and we reach it.  –Michelangelo


Return to top


Software Development Process

Article:  Software Maintenance Fees: Time For This Model To Change?

Application maintenance contracts are one of the more frustrating parts of IT work.  Vendors typically charge 20% - 25% of the original license cost annually for support and upgrades.  But tough economic times and more online applications may change the balance.



Article:  10 steps to prevent IT myopia

A successful IT strategy and vision needs to strike a reasonable balance around business, organizational, and management issues.  Ultimately, IT needs to be supporting the business objectives.



Article:  How to deal with jerk programmers

Project management is at its core an exercise in psychology:  How to motivate others to accomplish your goal.  Project management expert Scott Berkun shares some tips on how to deal with not-so-nice developers on your project.



Article:  Understanding Software Project Estimates

Software development estimation, for both cost and effort/schedule, is still one of the areas of the overall process that is most like a black art.  This article discusses formal estimation techniques, accurate software estimation tools, the misinterpretation of estimation as target setting, and the accuracy of estimates.



Article:  Developers more 'satisfied' with PHP than other codes

Evans Data's latest survey of programmers shows that PHP has the highest satisfaction rating among "scripting" (a.k.a. "dynamic") languages, due in large part to the extensive and active community. 



Article:  Blurring of MVC lines: Programming the Web Browser

As the web browser moves from being a viewer to being a platform itself, the concept of the model-viewer-controller (MVC) architecture pattern is undergoing change, as well.  This article gives an insightful look at the paradigm shifts that web developers need to pay attention to.



Article:  20 cynical project management tips

Why do so many projects fail?  Maybe this explains it…



Article:  Software Craftsmanship Manifesto: A Call to Arms

The software development community is starting to coalesce around the principle that programming should demonstrate traits of craftsmanship and that developers should take pride in the code and other deliverables that they produce.



Survey:  The Object Oriented Concepts Survey

Two university researchers are doing a survey of developers, both professionals and "hackers", to see how object-oriented design principles are actually applied in practice.  They are hoping to get at least 2000 respondents.  Here's your chance to contribute to understand the gap between academia and the "real world".



Article:  Operating System Interface Design Between 1981-2009

This fantastic retrospective on GUI design in operating systems shows just how far we've come in 30 years.  And it demonstrates how a few core principles and paradigms define all of our human-system interactions.  How many of these platforms do you remember?  (I still recall being enamored with the Apple Lisa when it first came out!)



Article:  10 Papers Every Programmer Should Read (At Least Twice)

Software developers want (and deserve) to be treated as professionals.  As professionals, it is incumbent on us to read relevant literature in our field, and not just "how tos".  This excellent list will help you gain a broader perspective on both the practice and the philosophy of good development.



Article:  SOAP or REST?

The debate continues about whether SOAP or REST are the best ways to develop services-oriented architecture applications.  Apparently, we should expect to see a convergence or at least complementary use of the two approaches.



Return to top


Software Testing & Quality

Article:  How do we test a solution to the 2-3-5 problem?

This isn't your typical article on software testing, but it points out one of the key elements of testing:  How do you know that your test is valid?  And how do you know if you can (thoroughly) test something that is already an optimized solution to a particular problem?  Just some things to think about when planning your tests.



Article:  Bugs In Social Networking Software? You're Kidding, Right?

In a recent online "bug bash" for Facebook, MySpace, and Linked In social networking platform, testers found 718 confirmed problems in a single week.  This seems like an interesting way for online sites to get free "white hat" testing services.



Puzzles:  Black Box Test Machines

This site features some online (and downloadable) puzzles that help you learn about test coverage and proper test design for black box testing.  Quite an innovative and fun way to evaluate and hone your skills.



Article:  What Makes a Good Test?

In this excerpt from his book Perfect Software, Jerry Weinberg explains in clear and relevant language the qualities of a good test.  This should be required reading for all testers and developers and these principles should be followed when developing tests that are most likely to uncover errors and problems.



Article:  Top Five (Wrong) Reasons You Don’t Have Testers

Joel Spolsky debunks some of the myths that development managers try to hide behind for not having an independent test function.



Article:  Causes of Software Errors

This academic research paper reports that almost half of software errors result from attempts to correct other errors and that one of the main causes is making bad assumptions about program behavior in the process of debugging and fixing errors.



Return to top



Tutorial:  A guide to GNU Screen

If you do any amount of work in the Unix/Linux (or even Cygwin) command prompt shell, you soon learn the value of having multiple shells open at the same time.  However, using multiple terminal windows or tabbed terminals is often inconvenient, even in GUI environments.  The GNU screen utility is a really great alternative and can boost productivity, but often it's difficult to learn the concepts.  This great tutorial gives you the basics in easy to understand and follow detail.



Tutorial:  Introduction to Multithreading

This three-part series, while focused specifically on C++ development, is really a good conceptual introduction to multithreading and how it can be used for most any developer.  The author uses a good analogy to explain the concepts in a language-agnostic manner.





Tutorial:  A Simple Introduction To Computer Networking

The guys over at Better Explained, who are famous for their lucid explanations of complex math topics, have done it again!  This time they take on explaining basic networking, by showing the "conversation" between two machines using HTTP.



Tutorial/Reference:  Things You Need To Know To Become An Apt Guru

If you've taken the plunge in transitioning from Windows to Linux (or use Linux under Windows via virtualization) and are using a Debian-based distribution, such as Ubuntu, one of the tools you need to master to get the most out of the thousands of pre-built packages is the apt tool.  This excellent tutorial (and reference!) helps you quickly and effectively use the apt command-line tools, as well as explain how to use some of the various wrappers around them, such as aptitude.  And even if you are still in Windows, this tutorial can help you with the Cygwin clone of apt called apt-cyg.



Tutorial:  Objective-C for C++ Programmers

Objective-C is a C language extension that allows structs to be made into classes (objects) in the manner of traditional OOP languages.  This 3-part tutorial covers the basics of writing Objective-C programs from the perspective of someone who already is comfortable with C++.  Some of the nice features about Objective-C are that is supported by the gcc compiler toolkit and it adds messaging support to C programs.





Return to top


Career Development/Miscellaneous

Article:  InfoWorld Test Center's guide to browser security

Hardly a week goes by without hearing about some security vulnerability in one or more web browsers.  So how do you decide which browser is best?  Infoworld puts the five most popular/common browsers, Internet Explorer, Firefox, Google Chrome, Opera, and Safari, to the test.



Article:  How the city hurts your brain… .And what you can do about it

New research finds that the continuous stimuli of urban life are taking its toll on people, such as by reducing memory performance and attention span by more than 20%.  This article explores how we can get respite from this.



Article:  How to Become an Expert. The Effective Way.

It has been demonstrated that expertise is developed through effort, not by chance or special talents.  Here's a regimen to help you build expertise in whatever area you have a passion for.



Article:  How to Keep Innovating

Innovation is the lifeblood of any organization.  But how to keep the innovation fire burning hot?  Microsoft Research's Bill Buxton gives some of his ideas.



Article:  Why Can't We Figure Out How to Select Leaders?

This online discussion looks at the (apparently) intractable problem of choosing people for leadership positions.  Personally, I think that the underlying problem is that past success in solving problems at a particular level of the organization is not a good predictor of success at a higher level, because the problems are different and require a different way of thinking.  The author references Malcolm Gladwell's recent article Most Likely to Succeed.



Article:  8 rules to discourage your employees

In the grand tradition of anti-patterns, here are some ways that managers can lower productivity and morale of employees, especially knowledge workers.



Article:  Why Good Leaders Make Bad Decisions

Researchers report in a recent issue of Harvard Business Review that flawed decision-making often results from three factors:  bad memories (specifically, bad pattern recognition), "emotional tagging", and poor distinction between correlation and causality.



Article:  Three questions you should ask an interviewer

Interviewing for a job is a two-way street:  The potential employer wants to learn about you, but, just as importantly, you want to find out a little about the employer.  Here are three questions that you can ask the interview to get a feel for what the place is like.



Article:  Is That Your Final Answer? Study Suggests Method For Improving Individual Decisions

Most people are familiar with the "wisdom of the masses" (also called "crowdsourcing") which tends to cancel out errors in judgment by factoring input from many individuals.  But what if you are on your own in making a decision?  Two researchers report that a similar technique can be applied by individuals using a process called "dialectical bootstrapping".



Return to top


Telecommunications/Networking Industry

Article:  Cell-Only Households Growing At The Expense Of Landlines

A new CDC study says that, as of 2007, almost 15% of American households were cell phone only.  Interesting, Oklahoma leads the pack with over 1/4 of homes without a landline.



Article:  Ethernet — a networking protocol name for the ages

Bob Metcalfe looks back at the creation of the Ethernet protocol in the early 1970s and discusses his current activities.  One interesting tidbit from the article:  Harvard failed him on his Ph.D. thesis on packet communication.



Return to top


Useful Utilities

OpenWith (Free – Windows 9x/NT/2000/XP/2003/Vista – 897kB)

Got a file with an extension that you have no idea what application it was created by or which it can be used with?  OpenWith will automatically check its online database of free and open-source applications and suggest alternatives that you can use.  Then it will help you download one of them, if you don't already have something installed to do the job.  You can even help by providing suggestions for alternative applications.



PushMonitOff (Free – Windows 9x/NT/2000/XP/2003/Vista – 205kB)

It seems like screen savers have become passé.  Instead of watching a starfield on your monitor, PushMonitOff uses a simple hotkey combination (the default is <Shift>+<F1>) to immediately power off your monitor, which will save a bit of energy and maybe a few pennies.  And, in my experience, it works faster than any of the screen blanker applications that I've tried.



ThinkUI Data Generator (Free – Cross-platform/Java – 5.5MB)

Generating test data (for both valid and invalid scenarios) is one of the important but very time-consuming tasks for unit testing and independent software testing.  ThinkUI Data Generator is an Apache Ant-based tool to simplify test data creation.  It can output data into various file formats or even load directly into your database (via JDBC).  It has support for custom data formats based on your rules, as well as many built-in types, like dates, credit card numbers, etc.



MoWeS Portable (Free – Windows 9x/NT/2000/XP/2003/Vista – Varies, but typically less than 30MB)

If you do any sort of development on the LAMP/WAMP/MAMP platform, then MoWeS can't be beat for development on the go.  MoWeS stands for Modular Webserver System and it is a WAMP system that requires no installation and can run from a flash drive.  However, the best feature is that you can highly customize the installation package before downloading and get exactly the applications that you need.  In addition to PHP4, PHP5, Apache 2, and MySQL 5 (standard and minimal packages of each), it includes over 20 up-to-date add-on packages, including most of the popular ones like Joomla, MediaWiki, PHPMyAdmin, Drupal, phpBB3, osCommerce, and many more.  Plus, if you already have a MoWeS installation, you can just download the updates or additional packages.



Return to top


Just For Fun

Giant Midwest Mecca of Nerditude in Oklahoma

Who knew that Oklahoma (Pauls Valley to be precise) was home to the one and only (I hope!) Toy & Action Figure Museum?  For you pop culture enthusiasts, this might be the perfect weekend road trip!



Greg Pattillo:  The Beat Boxing Flautist

I'm quite sure that you have never seen anything like this.  This guy beat-boxes and plays the flute at the same time.  Check out this video of him playing the Sesame Street theme and Rimsky-Korsakov's Flight of the Bumblebee.



World Golf Tour

Spring is here!  Time to get out the clubs and head to the course (mostly to avoid mowing the lawn!).  If you need to get in a little practice before paying those greens fees, check out this excellent free online golf simulation.  You can even play a virtual round with friends and family simultaneously.



The world's 23 toughest math questions

Got a little extra time on your hands?  Well, maybe you'd like to help DARPA solve some of these math problems.  Who knows?  You might be the person to crack the Reimann hypothesis.



Return to top