Up to Newsletter Index

December 2012 Newsletter


Quotable Quotes

It always seems impossible until it's done. –Nelson Mandela


Success depends upon previous preparation, and without such preparation there is sure to be failure.  –Confucius


Every model is the expression of one thing we hope to understand in terms of another thing we think we do understand.  –Gerald Weinberg


Plato is my friend, Aristotle is my friend, but my greatest friend is truth.  –Isaac Newton


A little learning is a dangerous thing; drink deep, or taste not the Pierian spring.  –Alexander Pope, An Essay on Criticism


The sense of wishing to be known only for what one really is is like putting on an old, easy, comfortable garment. You are no longer afraid of anybody or anything. You say to yourself, 'Here I am—just so ugly, dull, poor, beautiful, rich, interesting, amusing, ridiculous—take me or leave me.' And how absolutely beautiful it is to be doing only what lies within your own capabilities and is part of your own nature. It is like a great burden rolled off a man's back when he comes to want to appear nothing that he is not, to take out of life only what is truly his own.  –David Grayson


Return to top


Software Development Process and Methodology

Article:  How to win or fail when writing software: A car analogy

While no analogy is perfect when it comes to software development (or anything else for that matter), this article gives a good explanation that may be helpful when discussing the vagaries of programming with business customers or other non-technical stakeholders.



Article:  Message-Oriented Programming

The main point (to me, anyway!) of this article is not that "message-oriented programming" is necessarily a better way to develop, but rather that looking at development from a variety of angles (i.e., not just doing something a certain way because we’ve always done it that way!) can help make the solution to a problem more clear.



Article:  Stables and Volatiles

The inimitable development management expert, Michael Lopp, posits that development teams are typically made up of two types of people that he calls "stables" and "volatiles".  While managers may prefer one kind over the other, he says that healthy teams need both and that managers should encourage some conflict between the two camps.



Article:  Functional programming in object oriented languages

While most of us probably aren’t ready (or able) to dive into functional programming completely, that doesn’t mean that we can’t apply (and benefit from!) many of the FP principles.  This article gives advice on how to think functionally while programming in OOP environment.



Article:  Chronic Requirements Problems

Software measurement expert Capers Jones (no relation that I know of) reviews that software requirements continue to be the weak link in most development projects.  In particular, he sheds light on how requirements frequently grow during the implementation phase.



Article:  The Love Triangle of Programming Languages

While you may not agree with the author's conclusions, this developer gives a very good explanation about the impact of programming language choice on a project.  He uses the these three factors:  user, machine, and problem.



Article:  Your Objects, the Unix Way:  Applying the Unix Philosophy to Object-Oriented Design

This article recommends applying the Unix philosophy to OOP development to help ensure that your designs are SOLID.  In particular, the author emphasizes the concept of chaining various single-responsibility methods or objects together to accomplish complex tasks.



Article:  What Einstein Figured Out about Software Architecture

While perhaps not quite as fascinating as What Einstein Told His Barber, this article points out that the principle of locality, which is the key to Einstein's general theory of relativity, is also very relevant for software architecture.  Even though we often try to keep things sufficient decoupled, we often violate locality with code that relies heavily on external components.



Article:  MVC is dead, it's time to MOVE on.

This provocative article says that as we move into the web-based application area, the MVC architectural pattern has become passé.  The author suggests a new paradigm centered around events, which he calls MOVE:  Models, Operations, Views, and Events.  However, this perspective is certainly not without some significant detractors, many of which claim that MOVE is simply a recasting of MVC.



Article:  Simplicity in Software Architecture is Underrated

This article reminds us that one of the fundamental principles of application architecture should be simplicity.  One of the key items noted is that we need to carefully consider the assumptions that we make when building a system, because these often prevent certain solutions which might be simpler.



Article:  How I tell a story

In agile development, the quality of user stories tends to be the pivot point between success and failure.  This article gives some great advice about stories, including the importance of intent and context and how examples of behavior help clarify both.



Return to top


Software Testing & Quality

Article:  Why Software Quality Is Affecting Today’s Innovation

This interesting perspective considers whether or not and, if so, how the quality of the software that is a part of almost every product today (or, at least, the delivery channel) affects innovation and expectations of the consumers of our products.



Article:  7 mistakes of software testing

Most people involved with software development understand the importance of testing.  However, frequently, we get into some habits that cause us to make avoidable mistakes in the approach or implementation of testing.  This article notes some common errors and includes suggestions for fixing and preventing them.



Article:  Definitive Guide to Develop a Good Test Strategy Document with These 7 Simple Steps

While “definitive” might be a stretch in describing this article, it is a very good discussion about not only how to prepare a test strategy document, but how to think about the “big picture” of testing.



Article:  The Four Horsemen of the Testing Apocalypse

Just in time for the end of the world on 12/21/2012 ;), testing expert James Whittaker roles out his list of four devastations in software testing that put applications at risk at a time when software is an integral part of almost everything that we use.



Article:  Inside Team Romney's whale of an IT meltdown

By now, most of us in the USA have had our fill of politics for a while.  Nevertheless, politics aside, the 2012 presidential campaign offers some lessons for technology workers everywhere, not the least of which is the spectacular "big data" failure of Romney's Orca platform (wonder if they ever considered the obvious #FailWhale implications?).  This statements essentially sums up the story with the warning about insufficient testing:  Develop in haste, repent at leisure.



Return to top



Tutorial:  Computing with Transistors

Of course, there's no guarantee that understanding how computers work will make you a better programmer, but it certainly doesn't hurt.  This series of blog posts describes how computers work from the ground up.





Tutorial:  Confused about Map/Reduce?

The map/reduce algorithm is basis for many search applications and NoSQL databases.  So it’s useful to have a basic understanding, even if it’s not something that you’ll use on a day-to-day basis.  But understanding map/reduce is also notoriously difficult at first.  This tutorial explains it using simple examples and shows how it looks in Java.



Reference:  CSS Architecture

Application architecture has been quite well defined for traditional development (client-server, native client, etc.) for some time.  However, best practices for web development are still evolving.  This comprehensive article provides some good guidelines for how to build a good CSS foundation for web applications.



Tutorial:  How To Run a 5 Whys (With Humans, Not Robots)

The “5 Whys” method of determining the underlying cause (and fix) for a problem is a powerful problem-solving technique.  But understanding how to get started can be difficult at times.  This presentation shows the importance of treating this exercise as looking for a broken machine instead of looking for who to blame.



Tutorial:  Understand memory leaks in JavaScript applications

As JavaScript becomes a more prevalent language, on both the client and server side, efficiency in write code becomes more important.  This tutorial explains how JavaScript can leak memory and how to detect and fix these problems.



Tutorial:  Sharding your database

Chances are that you’ve heard the term sharding with respect to databases.  However, unless you work in the “big data” arena, you may not know what it is or how to do it.  This author says that sharding is rarely necessary, but he gives a practical step-by-step process for doing it.



Return to top


Career Development/Miscellaneous

Video:  It's Not You, It's Them: Why Programming Languages Are Hard To Teach

Zed Shaw, well-known for his "Learn Python The Hard Way" programming tutorial, discusses what makes teaching certain languages harder than others.  His main conclusion is that the difficulty in teaching (or learning!) a language is proportional to the quality of the design of the language.



Article:  Programmers don’t need a union. We need a profession.

This essay makes a very good case that, to improve the standing of software development in both the view of the public and the corporate milieu, we must establish it as a formal and recognizable profession with a set of ethical standards, demonstration of skill and practice, and the like.



Article:  If tech is so important, why are IT wages flat?

Even though technology unemployment is well below the national average, IT salaries haven’t even kept up with inflation between 2000 and 2010, according to a report from the liberal Economic Policy Institute think tank.  Perhaps we need to do a better job of selling the value of our work.



Article:  The Insourcing Boom

After years of outsourcing technology and manufacturing jobs, US companies are starting to bring a significant number back to the US.  To wit, Apple CEO Tim Cook even announced that Mac manufacturing is returning in-house.



Article:  Teaching ourselves to communicate

This developer makes some excellent points about the value in taking time to improve communication skills, both verbal and written.  He suggest three specific actions to improve:  make more presentations, interdisciplinary work, and taking advantage of opportunities to write, such as blogging.  And don't forget that writing code is writing too.



Article:  Why Crowded Coffee Shops Fire Up Your Creativity

Most programmers prefer to work in quiet environments.  Nevertheless, according to a recent study, moderate ambient noise (70dB) actually improves creativity compared to quiet (50dB).  The reason is that the moderate noise creates enough distraction to increase concentration.



Article:  Innovation Crisis or Financial Crisis?

Harvard economist Ken Rogoff argues, using evidence from Peter Thiel and Garry Kasparov, that the “first world” economic slowdown is caused as much by stagnation in innovation and technology as by financial problems.



Article:  Businesses Still Reliant on Email as Social Media Use Grows

Even though social media has supposedly made e-mail obsolete, a new international survey by Mimecast says that e-mail still dominates.  The report indicates that users spend 888 hours per year on average dealing with e-mail.



Article:  What Great Leaders Have That Good Leaders Don't

This former Navy SEAL says that the key trait of great leaders is loyalty.  Specifically, he says that it is loyalty to the team that matters most.



Return to top


Useful Utilities

Wish (Free – Windows XP/2003/Vista/2008/7 – 2.1MB)

Wish is a Windows command prompt (shell) replacement that describes itself as the "command prompt reimagined."  While it is still early in development, it has some great features borrowed from a variety of shells, including command history searching, recent directory searching, tabs/panes and more.



Wireframe.cc (Free – Online tool – N/A)

Wireframe.cc is a free online web site wireframing tool.  You can create basic web designs, save them, and share them with others via a unique URL, all without logging in.  In addition, it's great for simple online diagramming when more complex tools are overkill.



Transformy (Free – Online tool – N/A)

Transformy is a free online tool that allows you to open, edit, and save a variety of spreadsheet-style documents, including CSV, tab-delimited, Excel, and more.  For a detailed review/tutorial of Transformy, check here.



RDPMan (Free – Windows XP/2003/Vista/2008/7 – 790kB)

If you use Remote Desktop in Windows frequently or have many RDP connections, RDPMan is an excellent tool for managing your connections.  One of the best features is that you can have hierarchies of connections, so you only have to set common parameters, such as login credentials once, and all of the subordinate connections inherit those.  Check here for a step-by-step tutorial on setting up and using RDPMan.



NoteClip (Free – Windows XP/2003/Vista/2008/7/8 – 4.4MB)

While there are plenty of worthy notepad and clipboard applications available, NoteClip is handy because it combines both into one simple tool with a consistent interface.  Capture as many clipboard items as you like and paste them easily and you can even move your notes onto the clipboard.  It even lets you edit your clipboard items for even more efficiency.



SchizoCopy (Free – Windows XP/2003/Vista/2008/7/8 – 8.4MB)

One aspect of Windows that hasn't changed much since Windows 95 (wow!) is the file copy/move functionality.  SchizoCopy brings many great features to this important, but little-seen function, including improved speed, ability to pause/resume copies, low-priority background copying (called "silent") to reduce system impact, and more.  It integrates directly with Windows, so you don't have to go outside of your normal workflow to use it.



Return to top


Just For Fun

IBM PC Model 5150 Emulated in JavaScript

This excellent emulation is a replica of the original IBM PC in JavaScript.  It even allows you to "boot" into VisiCalc.



Video Games: 14 in the Collection, for Starters

The Museum of Modern Art in New York City has decided to include video games in their collection starting in 2013.  They view video games as a new type of visual art that represents the late 20th century.



They Cracked This 250-Year-Old Code, and Found a Secret Society Inside

Check out this fascinating story about how linguists (partially) cracked an 18th century code using a variety of techniques.



Oxford Dictionaries USA Word of the Year 2012

The folks that publish the venerable arbiter of all things lexicographical (love that word!), the Oxford English Dictionary, have chosen GIF (which they say is a verb, though I don't recall ever using it that way!) as their word of the year.  Interestingly, it seems that use of the GIF for graphics on the WWW is on the decline.  Personally, I prefer their choice for UK word of the year:  omnishamblesn. a situation that has been comprehensively mismanaged, characterized by a string of blunders and miscalculations.  And, at least, we can say that 'geek' and 'nerd' are now seen in a more positive light.



ᎭᎴᎾ ᏗᏓᏴᎳᏛᏍᎩ ᎬᏗ Gmail ᏣᎳᎩ (Get started with Gmail in Cherokee)

Not sure if this garners much interest beyond the Oklahoma local area, but Gmail now supports Cherokee language.  The folks at Google worked closely with linguists in the Cherokee nation to implement the functionality.



Earth at Night 2012

NASA’s Earth Observatory project has just released a new collection of awesome night photos of our home planet.  Some look familiar, but others are new and stunning.



Animated Factorization Diagrams

While all that this site does is increment the natural numbers and show their factorizations, it does so in a remarkably beautiful and minimalistic way.  You could easily waste a lot of time on this site.  Or learn more about it here.



100,000 Stars

This amazing visualization shows nearly 120,000 "nearby" stars in the Milky Way galaxy.  You can pan and zoom and then click on an individual star to learn more about it.  But make sure you heed this warning from the site:  Scientific accuracy is not guaranteed. Please do not use this visualization for interstellar navigation.



Return to top