Up to Newsletter Index

September 2014 Newsletter


Quotable Quotes

A friend is one who sees through you and still enjoys the view. –Wilma Askinas


Rules without relationship leads to rebellion. –Andy Stanley


We shape our tools and then our tools shape us.  –John M. Culkin


We have these brief lives, and our only real choice is how we will fill them. Your attention is precious. Don’t squander it. Don’t throw it away. Don’t let companies and products steal it from you. Don’t let advertisers trick you into lusting after things you don’t need. Don’t let the media convince you to covet the lives of celebrities. Own your attention — it’s all you really have.  Jonathan Harris


Uncertainty is where things happen. It is where the opportunities—for success, for happiness, for really living—are waiting.  –Oliver Burkeman, The Antidote


There is little success where there is little laughter.  –Andrew Carnegie


The scientist does not study nature because it is useful to do so. He studies it because he takes pleasure in it, and he takes pleasure in it because it is beautiful. If nature were not beautiful it would not be worth knowing, and life would not be worth living.  –Henri Poincaré


OOP does model the real world! Things at the top of the hierarchy seemingly do nothing but tell those at the bottom what to do.  Michael Fogus


People will do almost anything before they will shift their paradigm.  –Eli Goldratt


We who cut mere stones must always be envisioning cathedrals.  –Stonecutter's creed


Return to top


Software Development Process and Methodology

Article:  How Microsoft dragged its development practices into the 21st century

If you think your organization has struggled with adopting agile development practices, then take a look at this excellent article about the long journey Microsoft took to get there.  Interestingly, it was the pressure from competitors that ultimately drove them to streamline their development processes.



Article:  How the Kanban Method Changes Software Engineering

Many organizations are looking beyond Scrum and the “traditional” agile methodologies for other techniques to improve software development.  This article provides an overview of how the Kanban methodology, originally used in manufacturing, can be applied to development.



Article:  Never Ask What They Want — 3 Better Questions to Ask in User Interviews

This article emphasizes the point that users don’t often know what they want and our job as analysts and developers is to tease out the underlying requirements.  The article uses a nice variation on the “5 Whys” approach for driving to the underlying customer need.



Article: Fashion-Driven Development

I refer to this paradigm as “magpie syndrome”:  Always getting distracted by the latest and greatest technology or tool to come along.  This article makes the key point that our main responsibility as developers is to deliver business value to our customers and the larger organization.  Moreover, the author says that we would do well to look closely at what has been successful in the past and learn from it.



Article:  On Software Development Metrics

This author says that using data-driven metrics to improve development is a valuable tool.  In particular, he claims that one of the most valuable uses of metrics is as an “early warning system” for emergent problems.  However, he cautions strongly against using metrics to evaluate developer performance. 



Article:  Evolving the JVM: Principles and Directions

In this presentation about the future of Java and the JVM, the top Oracle architects emphasize that the future is not really about the Java language itself, but more focused on how the JVM can be a platform to host other languages.  Upcoming optimizations are squarely aimed at reducing “impedance mismatch” between those languages and the JVM.



Article:  MVC: past, present and future

The model-view-controller (MVC) pattern is ubiquitous in software development and web design.  But, this article points out that MVC means many different things to different people and you must understand the context for any given project or framework to use it correctly.



Article:  What I tell all new programmers

Software development is as much a craft as anything else.  Most of us have had mentors (masters of the craft) who helped us along the way (thanks, Andy!).  So what advice would you give to those just starting out?  This is a pretty good list in my estimation, especially with respect to managing expectations as a person moves from learning programming (school) to practicing it (“real world”).



Return to top


Software Testing & Quality

Article:  What does TDD mean for me, the Tester?

Most articles about test-driven development (TDD) focus on how the practice applies to programmers.  This is an excellent article about how TDD is a complementary activity to software testing that helps testers concentrate on the “big picture” of application testing.



Article:  Enabling Agile Teams to Improve Software Quality

This article looks at various perspectives on how agile practices, especially “sustainable pace”, inherently allow teams to improve the quality of their software.  The bottom line is individuals (and, therefore, the teams that they are part of) perform better when they are well rested and fresh and, accordingly, make fewer mistakes.



Article:  Why I Test

Most developers understand the principles behind test-driven development (TDD).  Nevertheless, with the pressures of project schedules and administrative tasks, it’s easy to give unit tests the heave-ho.  This author outlines some personal and pragmatic reasons to make TDD a priority.



Article: Leading a Culture of Effective Testing

Organizational change is difficult (and sometimes downright painful).  One of the most difficult areas to change is attitudes about testing, both developer testing (unit testing, etc.) and independent testing.  This article presents ideas about how to sell your organization on the value of automated testing.



Return to top



Tutorial:  SOLID Design Principles

In this tutorial series, the author discusses each of the concepts in the SOLID pattern for object-oriented development.  Each segment includes a comprehensive example in C# (which should be understandable to those with experience in another OOP language) by working from a naive design toward a good design that uses the principle under consideration.



Tutorial:  The Debugging Toolbox

Regardless of how good of a programming you are, debugging code is one of the most important skills you can have.  This comprehensive, language-independent tutorial gives an excellent heuristic for investigating and solving a problem in code, including some practical tips about how to narrow down the scope of the problem.



Tutorial:  7 strategies to quickly become productive in an unfamiliar codebase

In most development situations, when you start on a project, you’ll have some sort of code base already in place.  This excellent tutorial gives some practical ideas for how you can rapidly familiarize yourself with that code.



Reference:  The 6 built-in JDK tools the average developer should learn to use more

The Java JDK has a treasure trove of tools that can help you debug and fix various problems with your program, such as OutOfMemory errors.  However, most Java developers haven’t even heard of these.  This author gives a basic overview of a half-dozen of the most useful ones.



Tutorial: Java 8 Stream Tutorial

Java 8 offers many enhancements, especially for functional programming paradigms.  While the lambda expressions functionality has garnered the most attention, the new Stream API is just as important.  If you don’t have a strong background in functional programming, the utility of the Stream functionality can seem confusing.  This tutorial gives a gentle introduction with many relevant examples.



Return to top


Career Development/Miscellaneous

Article:  So You Think You Want to Manage?

At some point in your career, you will likely come to a cross-roads where you must choose to continue as a technical employee or to move into the management track.  But how do you decide whether the management road is right for you?  While certainly this one article won’t answer all of your questions, it provides some good suggestions on criteria for deciding and factors to consider.



Article:  You can't wear the manager and developer hats at the same time

Before you take that leap from programmer to manager, you should read this sage advice about how you must make a clean break from the development work and focus on your management responsibilities.  Moreover, it’s vitally important that IT and business management understand that your role is strictly management, too.



Article:  Why vacation at tech companies should be mandatory: better code, happier people

Technology professionals are notorious for not taking vacation (or for working during vacations).  This author makes the important point that one of the larger benefits of requiring vacation is that it forces organizations to ensure maintainability of code and to have other people who understand the code.



Article:  How to Be a Highly Competitive Mobile Developer

Perhaps not surprisingly to most developers, mobile application development is the hottest market today, especially for Android platform.  Here are some tips to improve your chances of getting that job if you are looking to move to mobile development.



Article: Email Is Still the Best Thing on the Internet

New electronic communication technologies come and go (remember Google Wave?) and we often hear about how this or that tool is on the wane.  But how long has it been since someone (other than those who are introducing the next “e-mail killer” application!) claimed that e-mail’s demise was imminent.  This story explains how e-mail’s de-centralization keeps it as the key application in most people’s day-to-day workflow.  And there’s an active community of developers, such as Rainloop, Unroll.me, looking to streamline e-mail, so certainly they believe that it will continue to be an important tool.



Article: You suck at technical interviews

One of the recent hot topics in the software development blogosphere is whether coding in interviews is useful.  Of course, there are those on both sides of the issue.  Nevertheless, this author makes a very good case for why they are a waste of time for both the interviewers and the job candidate.



Article: You can’t hide from yourself

While more oriented toward startups, this article is a good reminder to everyone that improving organizational culture isn’t only the job of senior management, but of all members of the organization.  The author boils it down to:  To build a better culture, become a better person.



Article:  8 Habits of Effective Critical Thinkers

Critical thinking is one of the most important skills for any knowledge worker, such as developers and testers.  This article discusses some of the habits that anyone can adopt to improve their ability to think critically.



Article:  Good Engineer/Bad Engineer

Winston Churchill said, “Attitude is a little thing that makes a big difference.”  In that same vein, this author discusses the characteristics that differentiate good developers from the bad.  Most of the concepts simply come down to the attitude of the individual toward their work and those they work with.



Article:  The Imposter Syndrome in Software Development

If you spend much time thinking about the superstars of the development world (John Resig, Notch, et. al.), it’s easy to get down about your own skills and to even think that maybe you just don’t have what it takes.  Of course, not everyone struggles with this!  This article gives you some good perspective on the fact that even the greatest developers are usually leveraging the work of those who came before.



Return to top


Telecommunications/Networking Industry

Article:  The Relative Cost of Bandwidth Around the World

This article is an interesting analysis of bandwidth costs for carriers and other “large” consumers of telecommunications, which takes into account peering costs.  Interestingly, their conclusion is that bandwidth is cheapest in Europe with North America a close second.



Return to top


Useful Utilities

NuHelp (Free – Windows XP/2003/Vista/2008/7/8.x and MS Word – 4.8MB)

NuHelp is a Windows HTML Help authoring tool that works directly in MS Word (also requires free HTML Help Workshop).  You simply use your existing Word document’s headers to define help topic levels in the generated file.  It has support for internal and external hyperlinks, index topics (by surrounding with curly brackets) and meta tags for internationalization.  A simple way to create help files using the tools that you already use on a day-to-day basis.



XML2CSV (Free – Cross-platform – 1.6MB)

In additional to fixing/converting CSV files (see above), sometimes you’ll have XML data that you want to convert into a spreadsheet for ease of viewing/editing.  XML2CSV is a comprehensive tool to convert XML-formatted data of almost any complexity and DTD into flat spreadsheet.  The author provides excellent documentation of the tool, as well as the API, if you want to integrate it for your own customer application, and samples to help understand how it works.



CronChecker (Free – Cross-platform/Online tool – N/A)

Cron jobs are a fact of life in the development world.  But, if you don’t use cron on a regular basis, it can be difficult to remember the syntax.  Or you might come across a crontab file and want to know what schedule the scripts reference run on.  CronChecker is a simple online “decoder” for cron syntax that explains the schedule in plain English.



Sysmon (Free – Windows XP/2003/Vista/2008/7/8.x – 465kB)

Sysmon is the newest member of the fantastic Sysinternals family of Windows utilities.  Sysmon provides comprehensive functionality for logging system events, such process creation (application startup), network connections, and file changes into the standard Windows Event Log.  All events are logged to a specific event log to avoid cluttering the standard Windows event log.



GitIgnore.io (Free – Cross-platform/Online tool – N/A)

One thing that you want to avoid, especially if you use public code repositories like Github or BitBucket, is including sensitive files that are part of your source code, such as configuration files with user IDs and passwords.  GitIgnore.io has nearly 200 different platform configurations for which it can generate a boilerplate .gitignore file to keep those files as local only.



Return to top


Just For Fun


If you do any kind of text editing (and who doesn’t these days?!), you won’t want to miss this conference.  Some of the exciting sessions you’ll get to attend include “Ten Ways Exiting Notepad is Better Than Exiting Vim” and “Advanced Pasting Techniques”.  Probably a great conference for programmers on the ZISC platform.



Fifteen catty programmers

No, not “catty” in the sense of being subtly insulting (passive-aggressive)…  This gallery shows what several of your programming coworker types would look like if they were cats.



Return to top