Up to Newsletter Index

February 2012 Newsletter


Quotable Quotes


A computer is a computer. If something new comes up, it's cute, but no more than that, because it's something the computer has always been able to do; you just didn't discover it before. It's like finding a penny under the couch—it's always been there, but it's cute to discover.  Bob Whitehead


Good advice is always certain to be ignored, but that's no reason not to give it.  –Agatha Christie


Ideas don't make you rich.  The correct execution of ideas does.  Felix Dennis


All good ideas arrive by chance.  –Max Ernst


Chance favors the prepared mind.  –Louis Pasteur


The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.  –Alan Perlis


It’s difficult to be rigorous about whether a machine really ‘knows’, ‘thinks’, etc., because we’re hard put to define these things. We understand human mental processes only slightly better than a fish understands swimming.  –John McCarthy


Return to top


Software Development Process and Methodology

Article:  The future of programming

Many folks make predictions about what will happen in next few years in programming.  This comprehensive, detailed article makes some very good observations about some ideas, particularly in the realm of the rise of functional programming (Haskell, Scala, etc.).



Article:  HTML5 Will Replace Native Apps--But It Will Take Longer Than You Think

Now that it looks like HTML5 has won the RIA wars (particular since Adobe has thrown their hat in the HTML5 ring), what does the future for HTML5 hold?  These analysts project that HTML5 will supplant desktop applications, but that it will take at least 3-5 years for the majority of application development to move to HTML5.



Article:  Unit Tests Are FIRST

TDD experts Tim Ottinger and Jeff Langr recommend the FIRST mnemonic to describe the fundamental characteristics of unit tests:  Fast, Isolated, Repeatable, Self-Verifying, and Timely.  The explain each principle and use salient examples (mostly in Java) to demonstrate the concepts.



Article:  Ten Ways to Eliminate Drama from Projects

Drawn from the new book No-Drama Project Management, this article gives some great suggestions for things PMs can do to help reduce the chances of major dust-ups on a project, such as addressing issues directly when they come up and avoiding "wish lists".



Article:  The Future Of Better-Designed Enterprise Software Starts Now

The widespread adoption of social media platforms by consumers has made improved design of business applications an imperative for IT organizations.  Simplicity (which is not just the absence of complexity, but also intuitive behavior and the like) and feature reduction are orders of the day.



Article:  Small teams are dramatically more efficient than large teams

Atomic Object, which is well-known for their use of evidence-based management, notes that small teams (5 or fewer people) are significantly more efficient than larger (20+ people), because of the reduced communication and coordination overhead.



Article:  Real IT Project Success in 2011

This article gives a summary overview of Scott Ambler's annual survey on project success.  Overall, regardless of methodology, over half of the projects in the survey were considered successful, with agile and iterative methods leading the pack with ~2/3 of projects successful and under 1/4 challenged.



Article:  Management Myth #1: The Myth of 100% Utilization

Many organizations, often when adopting agile methodologies, get obsessed with making sure each resource (I mean "developer" J) has maximum utilization.  This author emphasizes that this is a recipe for disaster, especially because it leaves no time for innovation, creative thinking, and the like and may even lead to mental paralysis.



Article:  Agile slaves

As agile development methodologies enter the mainstream (and go through some growing pains), organizations need to guard against following the practices and not actually being agile.  This author says that the key is for people to continue to challenge assumptions and the way that things are done in the name of agile or otherwise.



Article:  Welcome to the Jungle

C++ expert Herb Sutter presents the idea that the single-core processor era (governed mostly by Moore's Law; although we probably shouldn't bury it just yet) is over and that multi-core is the future.  He elaborates on a variety of multi-core "architectures" and says that "heterogeneous distributed parallelism" is the next significant challenge confronting developers.



Article:  Prototypes and The Law of Conservation of Quality

This author recommends that prototypes of your application are an indispensible (and yet costly!) way to learn from customers what they most need and value from your system.  He goes on to discuss how quality of the system can only be improved by introducing additional quality (value) in his software development corollary to the law of conservation of energy.



Article:  Less Process, More Discipline

As with most any development methodology, as agile methods have matured and entered the mainstream, they have fallen victim to one of the more insidious maladies:  focus on the process instead of the principles.  (Anyone remember the first point of the Agile Manifesto?)  This article argues that instead of focusing on process, teams need to develop discipline in following the important practices agreed on by the team to ensure success.



Article:  There's no shame in code that is simply "good enough"

This developer makes an eloquent argument for why we should not obsess over all of the little details when building systems and should instead ensure that our architectures and designs meet the needs of the user and are flexible enough to be enhanced, because nearly every system will need updates at some point.



Return to top


Software Testing & Quality

Article:  Devising a test automation strategy: Getting started

Test automation has plenty on folks who are cheerleaders for it and probably just as many detractors.  Lisa Crispin offers a very balanced approach to how to develop a test automation strategy that fits your organization.  A couple of key points worth repeating include you must clearly define your strategy and goals before choosing a tool and the fact that automated tests are code just like application code.



Article:  On testers and testing

While I don't necessarily agree with all of this author's points, he does make a strong over-arching point about the importance of good and close relationships between testers (those doing the testing, regardless of their title) and the developers.



Article:  Bugs, features, and risk

This article gives many important concepts related to software testing, especially around how to plan and effectively use limited resources in testing.  The author notes that usage patterns of an application can change over time, which is why some defects stay latent for such a long time.



Article:  Trends and innovations in software testing

Matt Heusser reviews James Bach's keynote address at this year's CAST conference, where Bach discusses the future trends that he sees.  Bach sees such concepts as session-based test management (SBTM) increasing in popularity and a more distributed approach to testing gaining favor.



Article:  Testing Has a Point of Diminishing Returns

One of the software testing teams that I worked on had an (unofficial) slogan of "Good Enuf".  Even though this was certainly tongue-in-cheek, it did have a legitimate aspect and that is that at some point you must stop testing and deliver the application.  This article makes essentially the same argument that you need to find the appropriate "inflection point" where significant additional effort is likely to be necessary to find only a small number of defects, most of which are likely low severity.



Return to top



Tutorial:  How Well do you Know HTML5?

Even though it hasn't been approved officially as a standard, the future is now for HTML5 with current versions of most major browsers supporting it.  As a web developer, you need to know some of the basics.  Take this short quiz to see how much you know and learn a few tricks along the way.



Tutorial/Reference:  HTML5 Crash Course

This site includes the full text of the HTML5 Crash Course book.  It gives a comprehensive overview of HTML basics (no experience necessary) and goes on to discuss the new features introduced in HTML5, such as canvas, advanced features for forms, local storage, and embedded multimedia.



Tutorial:  Solving Java OutOfMemoryError - JDK Tools

Memory leaks are notoriously intractable problems to solve in any programming language.  This tutorial shows you how to hunt them down in Java using only the tools included in the standard JDK, such as jps, jmap, and jhat.



Tutorial/Reference:  The Little Redis Book

From the same author of the excellent Little MongoDB Book comes a brief, yet comprehensive, introduction to Redis NoSQL key-value store.



Tutorial:  A brief intro to algorithmic time complexity

This excellent tutorial about the underlying concepts of time complexity of algorithms also uses some good examples of the common "big O" complexity for well-known algorithms.



Return to top


Career Development/Miscellaneous

Article:  Want to motivate your team? Here are 20 things to start doing now

Many technology managers are great technical employees who were promoted and they don't always know the ins and outs of management.  Likewise, employee disengagement continues to rise.  This article has some great tips what to do (and not do!) to keep your team motivated.



Article:  U.S. report sees perils to America's tech future

A report by the U.S. Department of Commerce reviews competitive threats from outside the country as well as internal weaknesses.  One example cited is that fact that U.S. had a trade surplus in "advanced technology products" (biotechnology products, computers, semiconductors and robotics) until 2002, but had an $81 billion trade deficit in this area in 2010.



Article:  The Joy of Quiet

Writer Pico Iyer opines about how our increasingly connected world is driving us away from personal relationships and what are losing in the process.  He gives some ideas for creating "thinking time" and time disconnected from the Internet.



Article:  Why Programmers don’t have a High Social Status

While some say that this is a great time to be a programmer and there's even evidence of increased political clout for developers, this blogger opines about how programmers don’t seem to enjoy the same social status afforded to others.  What do you think about where developers fit in the pecking order?



Article:  Train Your Brain to Focus

These authors say that, while most of us are proud of our ability to multitask, our frenzied pace is causing changes to our brains that are similar to those of ADHD patients.  They lay out three strategies for improving focus and concentration.  And here are more tips specifically for programmers.



Article:  IBM Gives Birth to Amazing E-mail-less Man

At one time or another, most of have probably dreamt about giving up on e-mail (or perhaps declaring e-mail bankruptcy) because it takes so much time, but it's one of the essentials of 21st century life.  Nevertheless, here's one guy who has successfully replaced almost all e-mail with communication via social media, which serves to demonstrate how important business-oriented social media is to IBM.



Article:  2011 Salary Survey

One of many salary surveys, the Janco survey is generally well-respected in the industry.  Some of the highlights from the latest report are that salaries are up about 1% over a year ago, which puts them back at the pre-financial meltdown levels, and more organizations are bringing IT operations, including data center management, back in-house.



Article:  Stop Programming

This author recommends that each of us take time to do things away from programming, especially as it relates to how it feels to be a beginner again.  The overall concept seems to be that we need to rekindle the art of developing expertise.



Article:  Don't write on the whiteboard

This programmer gives 11 excellent tips for how to handle technical job interviews.  The article title comes from his first tip which is basically don't do things that you aren't comfortable with in the interview; if you don't like writing on a whiteboard, tell the interviewer you'd rather write on paper.



Article:  The Rise of the New Groupthink

Recently, we featured an essay about solitude.  In a similar vein, Susan Cain, the author of the new book Quiet: The Power of Introverts in a World That Can’t Stop Talking, discusses how introverts often demonstrate amazing creativity when allowed time alone and informal interactions.



Article:  How to be Relentlessly Resourceful [a practical guide]

One of the topics making the rounds on the Interwebs recently is Paul Graham's observation that the most successful entrepreneurs are those who demonstrate exceptional resourcefulness, especially when it comes to finding information.  Certainly, knowing how to find the necessary and appropriate information is also a hallmark of good developers.  Here are some ideas for improving your resourcefulness.



Article:  What Corporate Jargon Would You Like to Eliminate Altogether?

Based on a survey of 5300 workers, here's the list of corporate doublespeak that is most annoying.  Strangely (to me, at least), "paradigm shift" didn't even make the list.



Article:  Flow is the Opiate of the Mediocre: Advice on Getting Better from an Accomplished Piano Player

This article is a good reminder that when trying to improve your skills, you need to avoid flow and instead concentrate on doing the difficult things.  You should reserve flow for the mundane tasks.



Article:  How To Be More Interesting (In 10 Simple Steps)

Maybe this belongs in the "Just For Fun" section below…  Anyway, Jessica Hagy of Indexed fame (one of my favorite sites!) gives you some tips for how to improve yourself in her own quirky, inimitable style.



Article:  10 skills for developers to focus on in 2012

There are plenty of lists out there about what you as a developer should do to improve in the upcoming year, but this list seems to be quite balanced and emphasizes skills that will pay off this year as well as prepare you for the next 3-5 years.



Return to top


Telecommunications/Networking Industry

Article:  So Much Fun. So Irrelevant.

Tom Friedman, most well known for his book The World Is Flat about globalization, revisits the topic noting that fast Internet service is one of the key drivers of successful local economies, along with a university, an educated populace, and a dynamic business community.



Article:  Report: Global telecom industry revenue to grow at 5.3% annually

According to a new report, global telecom growth for the next 5 years is expected to exceed 5% annually reaching $2.7 trillion by 2017 with Asia-Pacific and Latin America regions leading the way.



Return to top


Useful Utilities

Swiss File Knife (Free – Windows XP/2003/Vista/2008/7 – 1.1MB)

Swiss File Knife, typically known as sfk, is an incredible multifunction command prompt enhancement tool for Windows.  Just a few of the built-in features are find and extract text in binary files, run an instant HTTP or FTP server, create or verify MD5 hashes for files, run Windows command line utilities on multiple files, and many more.  For a quick tutorial on some of the awesome things you can do with sfk, check this page.



Note&Do for Microsoft Office (Free – Windows XP/2003/Vista/2008/7 and Microsoft Office 2003, 2007, or 2010 – 10.2MB)

Note&Do is an add-in for Microsoft Office that includes notepad (scratchpad) and a simple to-do list.  In the notepad, you can drag-and-drop text to and from documents and spreadsheets and even pin notes to any or all Microsoft Office applications.  The to-do list provides basic task management features and you can even color-code your tasks (and notes).



Koomato (Free – Windows XP/2003/Vista/2008/7 and Microsoft Outlook – 316kB)

Koomato is a Microsoft Outlook add-in for using the Pomodoro technique.  Just set the work and break periods and Koomato will alert you when each is finished.



Terminal IDE (Free – Android – 31.5MB)

Got an Android smartphone or tablet?  Then you can get a fully-functional Java development environment that runs right on your phone.  The features are too many to mention here, but some of the highlights include Vim text editor, telnet and SSH daemons to allow remote logins (use your desktop keyboard and the phone's screen), Git version control, and a terminal emulator with ASCII keyboard.  And it all runs as a regular application, so you don't have to root your phone.



Green Cloud Printer (Free – Windows XP/2003/Vista/2008/7 – 18.4MB)

Green Cloud Printer driver is a Windows enhancements that allows you reduce printing costs.  It becomes the "default" printer and will work with any of your existing printers.  It shows you a preview of your print job and allows you eliminate blank pages, print 1-up, 2-up, or 4-up from any application, print file to a PDF file (using built-in PDF driver), save the generated PDF to your Dropbox, Google Docs, or Minus.com account, and much more.



Elyse (Free – Windows XP/2003/Vista/2008/7 – 9.0MB)

Elyse is a simple, unobtrusive file system enhancement for Windows (and Mac OS X) that allows you apply tags to groups of files, regardless of where the files are actually stored.  Any file can have any number of tags and your tags can be arranged into hierarchies.



Return to top


Productivity Tips

Replace Windows Task Manager with Process Explorer

Windows Task Manager has gotten a bit long in the tooth over the years.  The SysInternals Process Explorer is an excellent tool for monitoring applications and processes.  And it even has a built-in feature to override Task Manager.  From within Process Explorer, simply choose Options | Replace Task Manager from the menus.


Return to top


Just For Fun

Gilbert U-238 Atomic Energy Lab (1950-1951)

Just think of all of the fun you could have as a kid if your parents got you one of these?  And maybe Mahmoud Ahmadinejad should just try to pick up a few of these on Ebay instead of trying to build his own enrichment facilities.


Pac-Man Proved NP-Hard By Computational Complexity Theory

Well, somebody had to do it.  Now, we all know the answer to that burning question about whether or not Pac-Man is NP-hard.




As programmers, it is our prerogative to make fun of programming languages.  Gary Bernhardt takes some very humorous swipes at Ruby and JavaScript in this under-5-minute screencast.  (Read this for some background on "wat" this all about.)



Command and Conquer

This is a brilliant re-creation of the original Command and Conquer strategy game entirely in HTML5 and Javascript.  Read the author's description of creating the game on his blog.



Amazing Pi Learning Machine

So how well do you think you know the digits of π?  This simple web-based game lets you test your skill.  Just type in the digits in order until you make a mistake.  It even tracks your best round.  And no fair consulting Wolfram Alpha for help!



Microsoft keeps it old-school with a pricey text adventure game

Who actually expected Microsoft to get into the niche interactive fiction game market?  But surprise of all surprises, it is revealed that Visual Studio is (literally!) a highly-complex text adventure game, complete with arcane spell-casting and interactive puzzle modes!



Transparent Aluminum

Those of us old enough to remember will recall that the most memorable scene in the Star Trek IV movie was Scotty showing an engineer from the 20th century how to make "transparent aluminum".  Turns out that well before the 24th century, it's real!  Kinda sorta



How Software Is Made – From the perspective of an 8-year-old

If you work in development, you'll get a big kick out of this comic.  Of course, it's a good example of how art imitates life.



Return to top