Up to Newsletter Index

July 2018 Newsletter


Quotable Quotes

The future belongs to the integrators. –Ernest Boyer, quoted in “People Who Have “Too Many Interests” Are More Likely To Be Successful According To Research


Believe me, every man has his secret sorrows, which the world knows not; and oftentimes we call a man cold, when he is only sad. –Henry Wadsworth Longfellow, Hyperion


An approximate answer to the right question is worth a great deal more than a precise answer to the wrong question. –John Tukey


It is not possible to be good in the strict sense without practical wisdom, nor practically wise without moral virtue. –Aristotle, Nicomachean Ethics, Book VI


It is far better to improve the effectiveness of testing first than to improve the efficiency of poor testing. Automating chaos just gives faster chaos. –Mark Fewster


The only real valuable thing is intuition. –Albert Einstein


Delighted with myself and with the birds,

I set them down and give them leave to be.

It is by words and the defeat of words,

Down sudden vistas of the vain attempt,

That for a flying moment one may see

By what cross-purposes the world is dreamt.

–Richard Wilbur, “An Event”


When I was ten, I read fairy tales in secret and would have been ashamed if I had been found doing so. Now that I am fifty, I read them openly. When I became a man I put away childish things, including the fear of childishness and the desire to be very grown up. –C.S. Lewis

Return to top


Software Development Process and Methodology


Article: Why inheritance never made any sense

Certainly, you remember the three pillars of object-oriented programming (OOP): (data) encapsulation, polymorphism, and inheritance. This author argues that inheritance itself is a flawed concept as typically practiced. He goes on to explain that problems arise when we try to overload inheritance in ways that are not intended.

https://www.sicpers.info/2018/03/why-inheritance-never-made-any-sense/


Article: What I’m Telling Business People About Why Relational Databases Are So Bad

While I admit that I have a personal bias toward relational/SQL databases (versus NoSQL/NewSQL), this article demonstrates some of the problems, many of them long-standing, with traditional databases that organizations need to address and mitigate.

https://codeburst.io/what-im-telling-business-people-about-why-relational-databases-are-so-bad-6f38d3d6c995


Article: The Problem You Solve Is More Important Than The Code You Write

Many developers, especially those new to the profession, lose sight of the purpose of application development: to solve a business problem or need. This article eloquently explores this idea with an emphasis on the economics of development and how not every feature or defect requires a “code” solution.

https://medium.com/@fagnerbrack/the-problem-you-solve-is-more-important-than-the-code-you-write-d0e5493132c6


Article: How Scrum disempowers developers (and destroyed Agile)

Agile development practices and, specifically, the Scrum flavor are de rigueur in most organizations. But many sources now question the effectiveness and sustainability of them, as practiced. In this article, the author explains that the application and process have advocates (the product owner and Scrum master, respectively), but the technical team often gets the short end of the stick.

https://www.lambdacambridge.com/blog/how-scrum-disempowers-developers-and-destroys-agile


Article: Estimation, planning, teams and money: Some data

This analysis, based on outcomes from 10 years of a typical software development estimation training exercise, exposes a quite counterintuitive result that teams often spend more time estimating and planning tasks, than the tasks themselves take. The author’s upshot is that we need to be more selective about sizing/estimating tasks and how to plan them instead of the common “one-size-fits-all” approach.

https://www.allankellyassociates.co.uk/archives/2238/estimation-planning-teams-and-money-some-data/


Article: The "Boring Software" manifesto

Most developers know the Agile Manifesto and those principles are generally good. This author suggests a back-to-basics revision which focuses on a reliable processes that provides predictable incremental business value.

https://tqdev.com/2018-the-boring-software-manifesto

Return to top


Software Testing & Quality


Article: Mock? What, When, How?

Mocking in unit testing tends to raise hackles in some circles. Nevertheless, if you want to build tests early, it can be a robust and quick method to use. This article discusses both the philosophy behind mocking as well as best practices for implementing it, using examples in Java.

https://blog.codecentric.de/en/2018/03/mock-what-when-how/


Article: Operant Conditioning by Software Bugs

While the psychological principle explained in this article is generally helpful to end users, testers need to remain vigilant (not vigilantes!) to avoid becoming blind to certain application behaviors that are defects (or, at least, sub-optimal).

https://blog.regehr.org/archives/861


Article: The Goal of Software Testing

As testers, we can get lulled into believing that our objective is to find and report defects in the application or system. However, this article explains that the real goal is to identify and, thereby, reduce risk and to improve the economic value for the customer. We must keep this in mind, especially when planning tests to focus on those with the greatest chance of finding problems quickly.

https://cacm.acm.org/blogs/blog-cacm/228226-the-goal-of-software-testing/fulltext


Article: 450,000 Women Missed Breast Cancer Screenings Due to “Algorithm Failure”

Programming is still a human activity and, therefore, subject to human error. It is important that we fairly and transparently acknowledge the limitations of technology so that non-technical people understand what technology can and cannot do. When life and health are at risk, we must insist on proper testing and process rigor.

https://spectrum.ieee.org/riskfactor/computing/it/450000-woman-missed-breast-cancer-screening-exams-in-uk-due-to-algorithm-failure


Article: Bad Software Is Our Fault

It’s easy to fall into the trap that software problems are just an inherent part of development. However, this author makes an eloquent argument for how our own sloppiness causes many of the (often avoidable) deficiencies. This article should drive you to think about how you can improve things in your organization.

https://techblog.bozho.net/bad-software-is-our-fault/

Return to top


Tutorials/References


Tutorial: Prototype. The big bro behind ES6 class.

The ES6 release of JavaScript brought true class support to the language. However, if you come from a Java or C++ background, JavaScript’s prototypal inheritance model can give you fits. This tutorial helps you understand exactly how classes work.

https://wanago.io/2018/03/19/prototype-the-big-bro-behind-es6-class/


Tutorial: Debugging Like A Boss

One of the interesting dichotomies of programming is that we are inundated with information about how to develop, but find very little about debugging, even though in many cases more of our actual “coding” time is spent on debugging. This article gives a sound language-independent philosophical and practical introduction to debugging for developers of any experience level.

https://intentionallogic.com/2018/03/29/debugging-like-a-boss/


Tutorial: Software Architecture: The 5 Patterns You Need to Know

Most organizations use “lean” methods when it comes to application architecture. One of the elements of this approach is that architecture is everyone’s job. This excellent article explores 5 key concepts to keep in mind when designing and architecting your application, including the pros and cons of each.

https://blog.ndepend.com/software-architecture-5-patterns-you-need-know/


Tutorial: D3 Graph Theory

Graph theory is a rich and important mathematical underpinning for much of the current data science work, such as NLP. The basic idea is that it focuses not just on entities (“objects”, if you like), but on the relationships between them. This excellent, straightforward tutorial teaches you the basics with interactive, hands-on exercises built with the amazing D3.js JavaScript library.

https://mrpandey.github.io/d3graphTheory/index.html


Tutorial: Async programming basics every JavaScript developer should know in 2018

If you haven’t used asynchronous programming in JavaScript yet, chances are that you will in the very near future. This tutorial introduces the concepts without making too many assumptions and explains the typical ways to use async in your JavaScript applications.

https://dev.to/siwalik/async-programming-basics-every-js-developer-should-know-in-2018-a9c

Return to top


Career Development/Miscellaneous


Article: A 2-Year Stanford Study Shows the Astonishing Productivity Boost of Working From Home

Looking for some support in your desire to work away from the office more? Perhaps these results from a long-term study by Nicholas Bloom of Stanford will give your case the needed boost.

https://www.inc.com/scott-mautz/a-2-year-stanford-study-shows-astonishing-productivity-boost-of-working-from-home.html


Article: The Psychology of Dread Tasks

Many times (perhaps each day in a lot of cases), we have tasks which we simply don’t want to do, but need to get done. This article provides some great suggestions for how to “eat that frog”, so that you can move on to the more pleasant work.

https://dcgross.com/accomplish-dread-tasks/


Article: Surviving As An Old In The Tech World

Let’s face it; none of us are getting any younger. Moreover, many of us have probably been doing this tech “thing” for quite a while. This article gives an interesting look at how those of us on the old side can still contribute and navigate the new workplace, such as keeping your skills up to date.

https://www.wired.com/story/surviving-as-an-old-in-the-tech-world/


Article: Are you a 10x Programmer? Or Just a Jerk?

The idea that some developers are at least an order of magnitude more productive than the “average” programmer has been around for quite a while. This article does a good job of further dispelling this illusion through a variety of concepts with many references. The author especially focuses on how the (perceived) benefits of the “superstar” usually get outweighed by the damage to the rest of the team.

https://thenewstack.io/10x-programmer-just-jerk/


Article: Programmers are having a huge debate over whether they should be required to behave respectfully to each other

Regardless of how you feel about project or conference codes of conduct, I find it exceedingly sad that we have reached the point where people cannot have a civil, constructive discussion about these matters. We need to stop questioning others motives and listen to their concerns to work toward amicable solutions. That is the fundamental fabric of society.

http://www.businessinsider.com/programmers-debate-requirements-to-behave-respectfully-ccoc-2018-5


Article: Dealing with Hard Problems

While not all challenges that you face in your career are hard problems, some certainly will be. The suggestions in this article focus on educational problem-solving and, therefore, may seem simplistic. Yet, they are equally applicable in tackling tough issues in development.

https://artofproblemsolving.com/articles/hard-problems


Article: 14 Habits of Highly Miserable People

For much of my life, I was cynical, negative, and substantially unhappy. Several circumstances converged to change that. If you feel unhappy and ungrateful, perhaps this counterpoint to Covey’s 7 Habits of Highly Effective People will provide impetus to change.

https://www.alternet.org/print/here-are-14-habits-highly-miserable-people

Return to top


PLOM (Programing Language of the Month)


Avail

Avail is a cross-platform (built with Java) language that promotes a methodology that they call “articulate programming”. The basic idea is to use (near) natural language to describe the task to accomplish. The creators do not provide binary distributions, but the toolkit, which includes and Eclipse-based workbench, can be built via standard Ant build process.

http://www.availlang.org/


Mint

Mint is a front-end (client-side) language intended to address some of the difficulties and frustrations faced by developers working with the modern front-end stack. The basic premise is to focus on single-page applications (SPAs) at the language level instead of the framework/toolkit level, such as Vue.JS or React, including styling, routing, component reuse, and global and local state management.

https://github.com/mint-lang/mint

Return to top


Useful Utilities


Steward (Free – Cross-platform/Google Chrome browser – 1.4MB)

Steward adds some incredible productivity tools to the Google Chrome browser. In a nutshell, it’s like the popular Alfred command bar on Mac OS X, but for Google Chrome. It has built-in tools for many popular web tools, like Github, Google Search, Jenkins, and more, as well as a variety of tools for quickly navigating in Google Chrome.

https://github.com/solobat/Steward


jdbsee (Free – Cross-platform/Java – 21MB)

This handy database tool allows you to perform database actions at command prompt (shell) on most any platform that Java supports. Just use the appropriate JDBC driver for your database to run commands from a file or to open an interactive shell/REPL. It even supports use of regular expressions for the name of the JDBC driver to use, so you don’t have to memorize the syntax for connecting.

https://sourceforge.net/projects/jdbsee


dnGrep (Free – Windows XP/7/8.x/10 – 4.6MB)

dnGrep is a small, fast file search utility for Windows (based on .NET 4.0) which supports text searches of plain text files, MS Word documents, PDFs, and archives using text, regular expressions, XPath for XML, and phonetic search syntax. Some of the great features are Windows shell integration (search from right-click menu), full file preview of results including highlighting of results, search-and-replace with undo, and bookmarking your searches.

http://dngrep.github.io/


Fo (Free – Cross-platform/Golang – N/A)

Fo is an extension to the Go programming language that provides functional programming and generics features to the Go language in a very fluent manner. It includes generic named types, functions, and methods, using syntax very similar to generics in C++.

https://github.com/albrow/fo


ueli (Free – Windows XP/7/8.x/10 and Mac OS X – 52.6MB)

ueli is keyboard-centric application launcher for Windows and Mac OS X, built with Electron. Beyond the usual capability of searching for applications by typing the first few characters, you can search for folders, launch web sites, do math calculations, and even run command line applications, all from a single, uncluttered interface. Moreover, it allows you to create custom commands with simple JSON syntax.

https://github.com/oliverschwendener/ueli

Return to top


Just For Fun


Thinking Machines: Art and Design in the Computer Age, 1959–1989

Today, we don’t often think about the physical representations of technology, but, historically, industrial design played a key role in technology development. This MOMA exhibit features some of the iconic computers from their golden age. I still love the Thinking Machines Corporation Connection Machine series cube-of-cubes design.

https://www.moma.org/calendar/exhibitions/3863?locale=en


is-thirteen

What do you get the developer who has everything? Perhaps this npm package for checking if a given input is the number “13”. And don’t forget to read the pull requests and issues for the greatest humor effect.

https://github.com/jezen/is-thirteen

Return to top