Up to Newsletter Index

March 2011 Newsletter


Quotable Quotes


Computers are like Old Testament gods; lots of rules and no mercy.  –Joseph Campbell


Anxiety does not empty tomorrow of its sorrows, but only empties today of its strength.  –C. H. Spurgeon


In the beginner’s mind, there are many possibilities, but in the expert’s there are few.  Shunryu Suzuki


It is difficult to say what is impossible, for the dream of yesterday is the hope of today and the reality of tomorrow.  –Robert Goddard


Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.  –Donald Knuth


It’s a good thing to turn your mind upside down now and then, like an hour-glass, to let the particles run the other way.  –Christopher Morley


Return to top


Software Development Process and Methodology

Article:  Agile Chronicles

In this 12-part series of articles, the author explains his experiences with Scrum process and gives some excellent insights into how agile methodologies work in practice.  This series is a "must-read" for anyone involved with agile development.



Article:  Why Does Custom Software Cost So Much?

In the first of a series of articles, this author explains why, even in the age of agile and lean methodologies, corporate business sponsors are still reluctant to sponsor application development projects by internal IT organizations due to perceived risk and/or likelihood of failure.



Article:  The 7 deadly sins of software development

In this article, the author explores how the traditional cardinal sins express themselves on software projects and what you can do to avoid ending up in programming hell.



Article:  The Elephants in the Agile Room

On the occasion of the 10th anniversary of creation of the Agile Manifesto, RUP expert Philippe Krutchen takes a detailed look at some of the problems with agile methodologies that have arisen in the intervening decade.  He also some relevant suggestions on overcoming these impediments.



Article:  Telling the complete story

As you gain experience in any area, it's easy to forget about some of the fundamentals.  This article points out the importance of getting all of the parts of a user story ("As a ___, I want ___, so that ___.") to provide the appropriate context for the "I want" portion.



Article:  Programming is Easy, Software Development is Hard

In this essay, the author does a great job of highlighting a point that seems to often get lost in the IT-business alignment discussion:  It's not that programming (or any skill for that matter!) is intrinsically difficult, but rather that effectively integrating that skill into the overall process and organization is where complexity comes in.



Article:  Making Too Much of TDD

This well-reasoned article explains why the type of temperament ("scientist" or "engineer" in the author's terminology) matters significantly in the success (or lack thereof) of test-driven development.  He points out that like all methodologies and techniques, the results are what matters, not that the technique itself.



Article:  TDD Is About Design, Not Testing

The premise of this article may be obvious to most of us, but the primary value of test-driven development (TDD) is that the programmer think about the design of the code before writing the code, which is where the definition (and implementation!) of tests before other coding comes in.



Article:  Development Process: Estimation is futile

This article bemoans the fact that estimation in software development projects is essentially useless.  While the article itself doesn't offer much in the way of improving the situation, the comments have some interesting perspectives on fixing some of these problems.



Article:  A CEO’s Tip for IT Pros: Stop Swaying in the Wind

Long-time CEO and author Neil Giarratana says that IT folks need to stay focused on track with projects and commitments.  He also says that IT needs to do a better job of managing conflicting signals from various parts of the business.



Article:  A Working Definition of Business Logic, with Implications for CRUD Code

In n-tier architectures (even though some say they are going away), many developers struggle with separating business logic from the data access and presentation layers.  This article gives some good perspective on this topic and suggests that "processes" and "calculations" are a good definition for business logic.



Article:  Prevent feature-creep by focusing on users' goals

Feature creep (a.k.a., scope creep) is arguably the greatest danger to on-time delivery on a development project.  This article presents the concept that having a clear understanding of users' goals (and limiting those goals to a small number!) and then focusing singularly on those goals with all decisions in the process is the best defense against feature creep.



Article:  Your Code Sucks

Developers have a tendency to be very critical of other people's code.  This developer says that criticizing other's code without understanding the big picture is a sign of immaturity.  She suggests that you use these as opportunities to learn.



Return to top


Software Testing & Quality

Article:  Photographic Testing: Lessons learned from Belgium Testing Days 2011

In this article, the author uses photography as a fantastic metaphor for software testing.  He uses the key principles of taking great pictures as a way to explain how testers can improve their effectiveness.



Article:  Tradable Quality Hypothesis

Martin Fowler argues, in his own inimitable way, that internal quality (those aspects of an application that are hidden from the user) are not negotiable and that the development organization must not use them as tokens to be traded for new features, etc.



Article:  Unit Testing 101: Are You Testing Your JavaScript?

JavaScript has become mainstream in web applications and, therefore, testers need to develop skills in testing with JavaScript.  This comprehensive article gives great examples and methods to do white (or, at least, grey) box test JavaScript.



Article:  When is Testing Done?

One of the most difficult things to do in testing an application is determining when testing is done and what criteria should be used to make this decision.  In this article, the author discusses the questions that you should be asking to make the decision.



Site:  Test Axioms

This excellent site covers many of the core principles of software testing.  The author divides axioms presented into categories like delivery, test design, and stakeholders.



Return to top



Tutorial:  Unit testing fundamentals

Sometimes it's easy to get caught up in all of the technical details of something when what you really need is to take a step back and consider the underlying philosophy.  That's what this article does concerning unit testing with a slight leaning toward using it in Java development.



Tutorial:  How to use Dropbox as a git server

Here's a cool tip on how to use Dropbox as your git SCM repository.  Basically, it just involves a few simple commands and you can even make your repository public by sharing it with other Dropbox users.



Tutorial:  State Machines

This author gives an excellent, detailed explanation of finite state machines and how they apply to both "regular" programming (like what you probably do) and pure computer science.



Tutorial:  Theory and Practice of Cryptography Mini-Course

Cryptography is an interesting and ever more important topic for application developers.  This comprehensive video course developed by Google will give you the basic understanding of this subject and how to apply it.



Reference:  JavaScript Garden

JavaScript is a powerful, but sometimes quirky language.  As the de facto scripting language for web applications, it's very useful to know about these idiosyncrasies.  JavaScript Garden is an on-going effort to collect and document these peculiar behaviors in one place.



Tutorial:  Five Text Processing Tools You Should Know

At one time or another during your career, you will probably need to do some Unix/Linux shell scripting that involves some sort of text processing.  This article gives you an introduction to 5 of your new best friends in this endeavor:  grep, awk, sort, uniq, and head.  And for a real boost in productivity at the command line, check out ack.



Return to top


Career Development/Miscellaneous

Article:  Top 10 Mistakes in Behavior Change

Perhaps one of your resolutions for the new year (Remember those?!) was to improve yourself by changing one of your behaviors (a.k.a., get rid of a bad habit).  Here are some excellent tips to help you trudge through those times when you feel like giving up.



Article:  As cloud grows, IT hiring flatlines

If anyone (still) doubts the importance of gaining skills in cloud computing (or whatever you like to call it), this article will probably put those doubts to rest.  Many consultancies are seeing increased spending on cloud services but almost no growth in IT hiring.



Article:  10 tips for dealing with difficult people

Inevitably, in your work and personal life, you'll run across people who are just difficult to work with.  These are some great suggestions for maintaining your cool and making the most of interactions with these folks.



Article:  How to Beat Procrastination

Speaking of resolutions, every year (or so it seems!) I resolve to stop procrastinating, but it seems that I always put it off until the next year.  J  In any case, this author provides some great and practical advice on how to break the procrastination habit.  And it's helpful in knowing that procrastination seems to be a universal human trait.



Article:  The secret life of punctuation:  The Pilcrow

This article will probably be of limited interest to this audience, but I encourage you to read it.  It is a history of the paragraph symbol (), called the pilcrow (who knew?!).  I found this story fascinating about how grammar adapts and evolves through use.



Infographic:  A Comprehensive History of Computers

This very cool graphic shows the history of the computer from the 1940s to today, including some information about the popular GUI operation system versions.



Article:  Take Back Your Attention

After procrastination, probably the biggest killer of productivity is distraction and context-switching (see multitasking!).  In this brief article, the author gives six practical steps for how to improve your attention span and reduce distractibility.  My favorite is you need to develop your attention like a muscle, steadily a little bit at a time.



Article:  New Interview Questions for Senior Software Engineers

Looking for a new job?  Or maybe you will be interviewing some candidates soon?  Here's a list of good technical interview questions (slightly shaded toward .NET) that cover a broad spectrum of knowledge that experienced developers should have.  Even if you're not looking for a job, these would be some good things to brush up on, if you find yourself a bit shaky on how to answer them.



Article:  The Untold Story of How My Dad Helped Invent the First Mac

If you enjoy technology history, this story by Aza Raskin about how Jef Raskin helped design the original Macintosh will surely inspire you.  He uses some of Jef's original memos to tell the tale.



Article:  Hold Conversations, Not Meetings

This organizational culture change expert says that in order to make interactions productive managers should use conversational style discussions instead of the staid formal meetings that so often dominate our work day.  He provides some practical tips on how to start using this technique.



Article:  How to Write Without Writing

I go back and forth about whether I like or dislike Jeff Atwood, but this article of his is certainly a gem.  He says that success as a programmer is largely dependent on communication skills and goes on to recommend that to improve your communication skills (and, therefore, your development skills, as well) you need to blog or participate in forums or other areas where clear, concise written communication is required.




Return to top


Telecommunications/Networking Industry

Article:  A Broadband Boom in the Boondocks

Most readers of this newsletter probably take broadband Internet access for granted.  So, sometimes, we don't remember that broadband is a luxury in many places in the US.  Here's a story about how this may be changing, though.



Article:  AT&T Accelerates Delivery of Cloud Capabilities to Help Companies Reduce Information Technology Costs

While the technical specifications of this service aren't especially ground-breaking, the interesting part of this announcement is that traditional telecom carriers are getting back into the application hosting and data center business.



Return to top


Useful Utilities

SilverSHieldD SSH/SFTP Server (Free – Windows 2000/XP/2003/Vista/2008/7 – 5.4MB)

SilverSHieldD is lightweight SSH/SFTP server tool for Windows.  It allows secure connections via SSH/SSH2 and SFTP with standard authentication methods (keyboard interactive, password, and public key).  Its greatest feature is simplicity of installation and configuration.



Dok (Free – Cross-platform/Adobe AIR – 1.1MB)

Dok is a free stand-alone GUI for Actionscript 3.0 and Flex 4.0 API documentation.  It allows you to conveniently search and display the documentation in a much more user-friendly manner than the standard browser-based documentation.



GeeMail (Free – Cross-platform/Adobe AIR  1.2MB)

GeeMail is a desktop client for Gmail which allows you to use Gmail outside of your browser, just like any stand-alone e-mail client. It even has offline support, so you can compose your e-mail and it will be sent the next time you connect.  Plus, since it uses the familiar Gmail interface, you can enable any of the GoogleLabs Gmail features that you like.



TextLightning (Free – Windows 2000/XP/2003/Vista/2008/7 and MS Outlook 2003/2007/2010 – 2.9MB)

TextLightning is a handy add-on for MS Outlook that includes some great features like one-click insertion of boilerplate text that includes context sensitivity such as recipient name, e-mail subject, and more; checks for proper addressing of recipient in e-mail body and missing attachments; and easy copying/moving of messages to popular folders.



Return to top


Just For Fun

Russian Peasant Multiplication

Maybe this belongs in the tutorial section above, but in any case, this is an excellent example of how binary arithmetic can be put to practical use.  And becomes even more handy when you combine it with casting out nines.  (I know that this mental arithmetic stuff shows my age!)



When You Write Your Essays in Programming Languages

What if you wrote your papers back in school in a programming language?  Well, hilarity ensues!  (Warning:  Some of the other cartoons on this site are definitely NSFW!)



The Legend of Zelda Turns 25

While I've never been much of a video game player (too impatient, I suppose), The Legend of Zelda is one that I have found interesting and enjoyable over a long period of time.  But, honestly, I didn't know that it's been around for a quarter-century.



Geekiest marriage proposals of all time

While I'm certainly no romantic (as my wife will surely attest!), these marriage proposals go way beyond normal.  My personal favorite has to be the LOLcats one.



Random Startup Generator

Ready to strike out on your own and grab a fistful of that VC cash?  Stop by this site first to get plenty of great startup ideas.  Hee hee



Return to top