Up to Newsletter Index

November 2016 Newsletter

Quotable Quotes

Duty is for some a nebulous term; for many a requirement, for others a resentment, and for yet others an unknown. –Robert Skimin in the Foreword to James Webb’s “Heroes of the Vietnam Generation”

If the doors of perception were cleansed, everything would appear to man as it is, infinite. –William Blake

Future generations may be as shocked by our promiscuous use of social media as we are by past generations' smoking. –Paul Graham

One of the more embarrassing and self-indulgent challenges of our time is the task of relearning how to concentrate. The past decade has seen an unparalleled assault on our capacity to fix our minds steadily on anything. To sit still and think, without succumbing to an anxious reach for a machine, has become almost impossible. –Alain de Botton, “On Distraction” (2010)

Return to top

Software Development Process and Methodology

Article: An External Replication on the Effects of Test-driven Development Using a Multi-site Blind Analysis Approach

Here’s an item that’s sure to generate plenty of controversy. This research study found no significant difference in between TDD (test-driven development) and TLD (conventional test-last development) in terms of testing effort, code quality, and developers' productivity.


Article: All you ever wanted to know about all-hands (but were afraid to ask)

It seems fair to say that technical people aren’t the best at holding meetings, especially “all-hands” meetings. This author provides a good structure for such meetings, including the motivation and focus of each of the aspects. His formula is celebrating people and their achievements (15%), alignment around mission, strategy, and priorities (60%), and Q&A (25%). He says that Q&A is often sacrificed because management spends too much time on the first two parts. And most interestingly, his approach is for this discussion to be weekly.


Article: Swiss Train Deployments

I know you’re probably thinking, “What do trains have to do with development?” Actually, much more than you might think. This article suggests a development process based on the concept of reliable and frequent releases, similar to how Swiss trains run. He uses the model that the Swiss don’t run to catch the train, because they know that another will be by soon and that you are to pace yourself in your work.


Article: Better Estimations Using Techniques from Psychology

Despite significant advancements in software development in recent years, estimate remains one of the most intractable aspects of the process. This article emphasizes that peak brain fitness is necessary to be effective at estimation. Ensure that you take appropriate breaks and avoid distractions are just a couple of the suggested techniques.


Article: A Silent Cause of Bad Business Decisions

We’ve all suffered through the consequences of bad strategic decisions, either on projects or in the organization at large. But why do intelligent people make bad decisions in good faith? This author says it boils down to a cognitive bias where we mistake intuition for actual reasoning. While this might not prevent all boneheaded decisions, at least you now have an awareness and can hopefully head some of these off.


Article: Why does software development take so long?

We’ve all heard it at one time or another and perhaps phrased in different manners, but the gist the same: Our customer’s want things faster. This author makes and often overlooked point that it’s not always the typical problems of poor vision/scope, insufficient requirements, etc. that cause development that (inevitably?) take longer than expected. Development is inherently difficult and the levels of abstraction don’t always mean simplicity (or brevity) in implementation. https://blog.sesse.net/blog/tech/2016-10-26-09-29_why_does_software_development_take_so_long.html

Article: Applying the Linus Torvalds “Good Taste” Coding Requirement

Regardless of what you think of Linus Torvalds’ “style” in interacting with others, no doubt that he’s a brilliant programmer. This article explores his concept of “good taste” development and how each of us can use it to improve our skills and code.


Return to top

Software Testing & Quality

Article: Dramatically Reducing Software Vulnerabilities

This new report from NIST provides good summaries of the various techniques available for reducing security vulnerabilities and other defects from applications. It includes indications about which techniques are most applicable for various situations and application types.


Article: Developers and Testers: Nemeses or Soulmates

Conflict between testers and programmers seems to be an age-old phenomenon. But, as this article emphasizes, this doesn’t have to be the case. This author offers sound, practical advice for both developers and testers to ensure a healthy, productive working relationship. She even emphasizes some of the things to avoid.


Article: How to write an effective bug report that actually gets resolved (and why everyone should)

Sometimes as testers, we don’t consider how the quality of our defect reports affect the likelihood of a problem being found and corrected. This author explains how and why well-written bug reports ensure your problem gets addressed, as well as increases your value to your team.


Return to top


Tutorial: The Heart & Soul of Prototypal OO: Concatenative Inheritance

Using copious relevant examples, this author explains why understanding concatenative inheritance (that’s a mouthful!) is key to success in programming JavaScript, or any other prototypal inheritance-based language. In fact, the most popular JavaScript libraries, like jQuery and Underscore.JS, are all based on this principle.


Reference: You Might Not Need JavaScript

Modern web browsers can do many amazing things. Many of the features/functions that previously had to be done with JavaScript can now be handled with HTML and CSS along. This site provides examples of those things in both CSS and SCSS.


Tutorial: JavaScript Stack from Scratch

As we’ve mentioned before in this newsletter, the modern JavaScript stack is complex and getting more so with each passing day. This comprehensive tutorial gives you a step-by-step process for installing and configuring the popular JavaScript development tools, such as NodeJS/NPM, React/Redux, ES6, and more. More importantly, it shows how to integrate the various tools and shows how they work together and/or depend on each other. Overall, it gives you an excellent understanding of the pieces and how they fit together.


Tutorial: Why You Don't Get React

I’m not sure about you, but I have really struggled to learn React/Redux JavaScript frameworks. It wasn’t until reading this article that the light switched on about the concepts and paradigms of this platform, especially around asynchronous JavaScript, started to make sense.


Reference: The Open Guide to Amazon Web Services

Amazon Web Services (AWS) has become the de facto IaaS platform for organizations of all sizes, despite being notoriously difficult to learn and understand. This independent, collaboratively-developed guide covers almost all aspects of AWS divided up into basics, tips, and gotchas for each.


Return to top

Career Development/Miscellaneous

Article: How Writing To-Do Lists Helps Your Brain (Whether Or Not You Finish Them)

Do you keep a to-do list, either officially or informally? If not, this article may convince you of the value, since the simple act of writing something down, even if you don’t look back at it again, seems to help you to remember it and properly prioritize it. Moreover, it also seems that the low-tech method of handwriting instead of keeping it electronically helps, as well.


Article: Freelancers Now Make Up 35% Of U.S. Workforce

A new survey says that more than 1/3 of American workers (~55 million people!) are considered freelancers/independent contractors, with almost half of millennials (18-24 year olds) in this category. Most freelancers do it by choice and enjoy the flexibility that it provides.


Article: And it’s gone — The true cost of interruptions

How many times per day do you get interrupted? What do you think is the impact to your productivity and quality? This article explains that in many cases planned interruptions (we call them “meetings”!) often do as much damage as the ad hoc, asynchronous interruptions.


Article: Reflections of an “Old” Programmer

While I wouldn’t necessarily consider 40 “old”, this author gives some great insights into maintaining a technical career over the long run. He emphasizes that, while enhancing your technical skills is certainly a given to success, developing other skills is key to longevity in programming.


Return to top

Telecommunications/Networking Industry

Article: The death of transit?

This author suggests that the economics of IP networking may be in some trouble (or perhaps just going through a fundamental shift) in terms of how traffic moves from smaller providers to the core backbone providers.


Return to top

Useful Utilities

gdcp (Free – Cross-platform/Python – 18kB)

gdcp (Google Drive cp) is a simple command line tool that allows you to work with Google Drive via the shell on most any platform. You can upload or download files and even re-assign ownership to another Google account all from the command prompt.


yip (Free – Cross-platform/Python – 15kB)

Searching for packages in Python PyPI package index can be difficult and fraught with error. Yip provides a Pythonic, fluent interface for searching for packages that follows the paradigm of yaourt and pacman from ArchLinux.


WeGet (Free – Android – 3.8MB)

Even in the mobile browser view, using GitHub on a phone or tablet can be difficult (if not downright impossible). WeGet is a native Android application for interacting with GitHub in a smooth, efficient manner. It supports browsing repositories, searching within and across repositories, starring/following people, and more.


git-repo (Free – Cross-platform/Python – 202kB)

Managing your workflow when contributing updates to various source code repositories can be dizzying, especially with the proliferation of open-source hosting platforms, such as Github, Bitbucket, etc. git-repo helps with some of the “impedance mismatch” by providing common commands across the various platforms for checking out, forking, submitting pull requests, and the like.


gitp2 (Free – Cross-platform/Go – 828kB)

Pushing your code to multiple remote repositories can be a frustrating and error-prone process. With gitp2, a simple (just a single source file in Go) command-line utility, you can push to multiple remotes in parallel with a single command. And it supports ignoring specific remotes, if desired.


Return to top

Just For Fun

Git the Princess: How to Save the Princess in 8 Programming Languages

A humorous look at some of the pitfalls (real or imagined) of several programming languages. Probably not all that funny if you’re a PHP developer.


Return to top