Up to Newsletter Index

May 2012 Newsletter


Quotable Quotes


Every man's life lies within the present; for the past is spent and done with, and the future is uncertain.  –Marcus Aurelius


Great minds have purposes, little minds have wishes.  –Washington Irving


Forgiveness means giving up all hope for a better past.  –Lily Tomlin


Simplicity is prerequisite for reliability…  How do we convince people that in programming simplicity and clarity—in short: what mathematicians call "elegance"—are not a dispensable luxury, but a crucial matter that decides between success and failure?   Edsger W. Dijkstra


The happiest people are those who do the most for others.  –Booker T. Washington


There are no winners in the 'all features on time' game.  –Jeff Patton


In my experience, the best creative work is never done when one is unhappy.  –Albert Einstein


Return to top


Software Development Process and Methodology

Article:  Become a Good Programmer in Six Really Hard Steps

One of the perennial questions in software development circles (perhaps in all career domains) is what it truly takes to become good at your craft.  Everyone wants to become a better coder and this article gives you a tried-and-true approach.  And remember that no one ever said it would be easy!



Article:  Iterative is Not Agile

When just starting out in adopting the agile methodology, a common trap that organizations fall into is simply focusing on the iterative aspect (e.g., two-week sprints).  This author provides a nice explanation of how agile is a philosophy that goes far beyond iteration.



Article:  10 hard truths developers must learn to accept

Programming is generally a good profession.  But, as with all domains, it has its difficulties that we must grin and bear.  Here's a list of 10 facts that we need to recognize and live with.



Article:  What Refactoring is, and what it isn’t

The author provides a good discussion about the reasonable boundaries for refactoring.  He notes that it is quite easy to go down a slippery slope in refactoring to fully redesigning or even rebuilding your application and we must avoid doing that.



Article:  The Downfall of Imperative Programming

In this essay, the author posits that using concurrency and parallelism will require developers to make a complete break from the imperative (procedural) programming style by adopting functional style and its inherent immutable variables.



Article:  100x better approach to software?

Sorry, but the author doesn't actually have a way to improve productivity 100 fold (yet).  However, he makes some insightful points from Alan Kay about how using brute force in development, often due to time pressure and/or bad design, results in complexity that then reduces productivity.



Article:  Storytelling in IT - Conversation matters

This article is chock full of great resources on user stories, but the most important aspect of the article is how it emphasizes the conversational style of interaction between IT and the business that is engendered by agile techniques.  It's very important to remember that this type of interaction isn't limited to agile, but can be used with any methodology, when there is management commitment.



Article:  But are they working hard?

In this article, the author addresses the concern that managers have with self-organizing teams:  Are the employees really working as hard as they can/should?  She observes that the traditional measures of individual performance are no longer valid and that management needs to change their thinking to looking the results of the team.  Furthermore, working "extra" isn't a sustainable long-term option either.



Article:  Thoughts on Infrastructructure, Technical Debt, and Automated Test Framework

Many teams end up having "technical debt" work pushed out of their iterations due to the volume of feature/functionality requests.  In this article, the author emphasizes that such work needs to be built into the overall process and accounted for just as any other work.



Return to top


Software Testing & Quality

Article:  Agile Testing: Key Points for Unlearning

Just like adopting agile techniques requires that developers "unlearn" certain things to be successful, we need to do the same thing with some of traditional ideas about testing.  This article provides an excellent list of the "conventional wisdom" that we need to re-consider when it comes to becoming agile testers.



Article:  Quality Assurance: The Most Undervalued Piece of Devops

This developer says that QA (which includes testing in his view) needs to change along with other aspects of development and take a more salient role in the process.  In particular, he notes that QA should be about managing and minimize risk around software problems.



Article:  Silver Bullets for Testing

As we all know, there are no silver bullets.  So, I would probably call this list the golden rules of testing.  In any case, the brief list is a good set of fundamental points to keep in mind when testing.



Article:  Low-tech Tools for the Thinking Tester

While technology has certainly changed software development in recent years, the impact has been even more pronounced for testing.  In this article, the author says that sometimes we need to step back from technology and use simple tools that get the job done.



Article:  Introduction to Google Software Testing

In this book excerpt, James Whittaker outlines the approach that Google uses for software testing, including the fact that testing is part of the "engineering productivity" organization and how testing and development are closely intertwined.



Article:  The Happiest Jobs in America

Ever wonder why testers frequently have a smile on their faces?  No, it's not because they are scheming about another way to break that application.  It's because, according to a new survey from CareerBliss, they are the happiest employees.



Return to top



Reference:  An Example Checklist for ScrumMasters

Are you a Scrum Master (or maybe you play one on TV? J) and are struggling with "What am I supposed to be doing?"  This brief, but comprehensive list covers the main duties in four areas:  product owner relationship, the Scrum team, process and technical practices, and how the team fits into the organization.



Reference:  Hacker Shelf

Hacker Shelf is a directory of completely free books on programming, math, networking, version control, and other topics.  The list aims to include only books that are clearly licensed as free.



Tutorial:  A Brief Beginner's Guide To Clojure

The future of Java is really the JVM.  Thus, we've seen a proliferation of languages targeted for the JVM.  Clojure is a mature Lisp implementation for the JVM.  This comprehensive tutorial will introduce you to Clojure, even if you have no background in Lisp.  After you learn the basics, check out the articles here and here to go further.



Tutorial:  MapReduce – The Fanfiction

MapReduce is one of the fundamental principles of the NoSQL database movement, but it's typically quite difficult to understand at first.  This humorous article gives a basic overview of the concepts as told by the cast of Star Trek.



Tutorial:  Differences Between jQuery .bind() vs .live() vs .delegate() vs .on()

Over the history of jQuery, much has changed concerning event delegation.  This article explains some of the subtle differences between the various methods.  Overall, starting with jQuery 1.7, .bind(), .live(), and .delegate() are all deprecated in favor of .on(), as noted by Jeff Way.



Reference/Tutorial:  LucidWorks for Solr Reference Guide

If you are using Apache Solr for searching and indexing, you absolutely must get this comprehensive reference guide.  Weighing in at nearly 400 pages, it is provided by the company that is involved in most of the enhancement/development of Solr.



Return to top


Career Development/Miscellaneous

Articles:  E-mail habits that waste time and cause problems

E-mail is the linchpin of most modern business communications.  So, it is vitally important to be effective and efficient in your e-mail activities.  These articles give some tips about avoiding some of the e-mail "gotchas".




Article:  The Critical 7 Rules To Understand People

Most articles about how to get along with others are too simplistic (common sense) or go off on some psychological tangent.  This one strikes a nice balance between those extremes.



Article:  The unforgivable heresy of Sheryl Sandberg

Recently, the COO of Facebook, Sheryl Sandberg, has raised a lot of eyebrows (and some ire!) by suggesting that everyone in IT/technology go home at a reasonable hour and have dinner and time with their families.



Video:  It's not what you read, it's what you ignore

In this video, .NET expert Scott Hanselman shares some of his developer productivity tips, including the obvious, but often forgotten, concept that to optimize your reading/research time you must develop discipline in knowing what to skip.



Article:  Software Engineers Will Work One Day for English Majors

Computer science professor Norman Matloff says (perhaps only PARTIALLY tongue-in-cheek) that perhaps programming is not the best career choice, since most programmers are out of the field by the time they are 40 (But where do they actually go?) and the number of management positions is decreasing.



Article:  How to nail the technical job interview

With the job market improving widely, more folks will be making the rounds of job interviews.  Here are some tips on handling the technical interview.  And don't forget to brush up on answering the ubiquitous question about your "greatest weakness".



Article:  Irresistible IT Skills

Here is a nice list of up and coming skills that IT pros will need to have to increase their marketability in the near future.



Article:  Deep Thinkers Need Not Apply: How To Get Ahead In the Modern Business World

This author suggests (and supports very logically) that effort and skill are not the most important characteristics for success in the modern (post-modern?) business world.  To him, at the end of the day, it comes down to relationships and connections.



Online Book:  Happy Hour is 9 to 5

I frequently read (and link to in this newsletter!) the Positive Sharing blog.  Now, the author of this blog has created a book about happiness at work and how it increases productivity and profitability.  You can read the entire book online for free at this site.  It has some great insights into technical worker motivation.



Article:  Privacy Isn't Dead, or At Least It Shouldn't Be: A Q&A with Latanya Sweeney

Computer science professor Latanya Sweeney says that privacy is a natural imperative and that computer scientists and engineers need to do a better job of considering the social implications of their work.



Article:  A Small-Project Playbook

Small projects (those of just a couple of hundred hours or less) are often ignored when it comes to applying project management discipline.  This article gives some tips for managing them without too much process.



Return to top


Useful Utilities

Show My Code (Free – Cross-platform/Online tool – N/A)

Show My Code is a free online decompiler for Zend-encoded PHP files, Java class files, Flash SWFs, .NET (C#, VB.NET, and C++.NET) DLLs and executables, and QR codes.  Just upload your file or point to a valid URL and Show My Code will return the decompiled version.



PDF4Eclipse (Free – Cross-platform/Java/Eclipse – 4.4MB)

PDF4Eclipse is an open-source PDF viewer plugin for Eclipse.  It includes two different PDF renders to support the widest range of PDF files.  It allows you to display PDF files, such as documentation, side by side with your source code.



Win+X Menu for Windows XP, Vista and Windows 7 (Free – Windows XP/2003/Vista/2008/7 – 1.3MB)

One of the highly touted new UI features in Windows 8 is the Win+X Menu of shortcuts to various system utilities.  Users of Windows XP, Vista and Windows 7 don't have to be left out with this small add-on that gives you the same functionality, plus the ability to customize the menu to your own liking.



Android Personal Server (Free – Android 2.2+ – 31kB)

Android Personal Server is a free and simple HTTP server for Android devices that allows you to share files via WiFi on your LAN.  You can quickly toggle the server on and off and allows multiple clients to connect simultaneously.



Mosh (Free – Linux/Mac OS X/Cygwin – 258kB)

Mosh (contraction of "modern ssh") is an ssh replacement with lots of great features for 21st century computing.  Among some of the great improvements are automatic re-connection, even if you change connections/IP addresses, fixes variations in terminals (xterm, Gnome Terminal, screen, tmux, etc.) by using only UTF-8 character set, and better interactivity, by not waiting for remote server response to display what you typed.  (To use in Cygwin, you must build from source with the Protocol Buffers and Boost libraries.)



Acebug (Free – Cross-platform/Firefox and Firebug – N/A)

Acebug is a plug-in for Firebug web development utility for Firefox that adds syntax highlighting (and many other features) to the Firebug command prompt.  In addition to syntax highlighting, it includes dynamic Javascript validation, such as brace matching, etc., saving and loading scripts to/from files, and Vi and Emacs keybindings.



Return to top


Just For Fun


MapsTD is a mash-up of the popular Tower Defense (or "Defence", if you prefer!) game genre and Google Maps.  Play the game in any location on the globe or choose from one of the historic sites recommended when you launch the game.



GNU/Linux Running On An 8-Bit Processor

Most of us know that 'retro' is all the rage in technology.  Well, this example is WAY retro.  This guy got Ubuntu Linux 9.04 to boot (albeit it takes 2 hours!) on a homebrew 8-bit microcontroller with clock at 24MHz.



The Small World of Professor Strange

This is a classic-style text adventure (also called interactive fiction) game that supports multiple display modes.  One of the modes makes the screen look like the Eclipse editor, so that your coworkers don't know what you're doing.




Oh, hai!  Who in their right mind would not want to be fluent in LOLCODE?  Your (YR) next job might require it!  Well, this is the place to learn it through various online tutorials and exercises.



Wind Map

This awesome animated site shows the current prevailing wind patterns, including velocity, across the entire U.S.  This site is an excellent example of what might be called "code as art".



Return to top