Up to Newsletter Index

October 2016 Newsletter

Quotable Quotes

Vision without action is merely a dream. Action without vision just passes the time. Vision with action can change the world. –Joel A. Barker

Programming is the art of creating small shortcuts. –Unknown, Why learning to code is hard

Everyday life is like programming, I guess. If you love something you can put beauty into it. –Donald Knuth

Four–fifths of everybody's work must be bad. But the remnant is worth the trouble for its own sake. –Rudyard Kipling, The Light That Failed (1890)

Even if the whole universe is nothing but a bunch of jerks doing all kinds of jerk-type things, there is still liberation in simply not being a jerk. –Eihei Dogen (1200-1253)

Return to top

Software Development Process and Methodology

Article: The Hidden Dividends of Microservices

By now, “microservices” is probably part of your lexicon of technologies that you discuss or perhaps even use. However, sometimes it’s hard to determine if microservices are right for your project or organization. This decidedly non-technical article looks at some of the side benefits, especially around architecture, that microservices bring, which you may want to consider in your evaluation.


Article: The critical role of systems thinking in software development

Systems thinking involves problem solving with keeping both the entire system and its parts in mind to avoid causing other problems in the solution of the issue at hand. Moreover, from the psychological perspective, our customers look at the applications we build from the overall systems perspective. In this excerpt from the upcoming book Programming Beyond Practices, the author explores how to apply systems thinking in your day-to-day development work.


Article: Top 9 qualities of clean code

We all know that writing “clean” code is best in the long run. Or do we? Here are several facets that make up a solid foundation for good, solid coding practice.


Article: 10 Modern Software Over-Engineering Mistakes

A sound application platform and architecture is a good idea, but sometimes the best of intentions can go too far. In this article, the author describes 10 common mistakes that development teams make that result in over-engineering and take away from delivering on your goal of providing business value to your customers.


Article: The Human Cost of Tech Debt

In discussing technical debt, we often focus on how important it is to explain the concept to our business customers in terms that they understand (typically financial terms). This article extends the discussion in another useful direction by characterizing the technical debt costs from the perspective of impact to your team and personnel.


Article: Internet of Things, Machine Learning & Robotics Are High Priorities For Developers In 2016

Last month, we featured Mary Meeker’s annual list of hot technologies. This month, we have another summary report from Evans Data about the top technologies on developers’ radars.


Article: How to Pick Your Battles on a Software Team

When you were growing up, your parents (hopefully!) taught you that have to be selective about which conflicts to address. The same advice applies in the group dynamics of software development. This article gives you some good ideas to help you fight the battles that matter.


Return to top

Software Testing & Quality

Article: Manual Testing, the Art That Cannot Be Lost

In this newsletter, I take decidedly pro-manual-testing stance. Certainly, part of the reason is that is where I got my start in technology. Nevertheless, I believe in it because my experience demonstrates that it works. This article emphasizes several of the points that are foundational to me about the value and importance of manual testing.


Article: Testing, for people who hate testing

Perhaps this article more appropriate fits in the section about, but for the sake of consistency, I’ll put it here. Anyway, this excellent, comprehensive article is useful to developers and testers alike with respect to how to approach testing, both as an independent endeavor and using test-driven development (TDD). The author covers both the philosophical and the practical angles regarding the process and content of good test practice.


Article: Kindle crashes and broken PowerShell: Something isn’t right with Windows 10 testing

Microsoft’s release of the “anniversary edition” update to Windows 10 has suffered several high-profile issues. This article emphasizes the importance of real-world testing scenarios and not limiting testing to “clean” environments to uncover seemingly obvious, but often latent, problems. And even Apple is not immune to such problems with OS upgrades, as well.


Article: Cisco’s Network Bugs Are Front and Center in Bankruptcy Fight

Here’s a perspective on software quality that perhaps we don’t consider enough. In this situation, defects in Cisco’s router firmware play a central role in a lawsuit that does not directly involve them, because an Internet service provider was unable to meet SLAs for a customer due to frequent outages for both problems with the firmware and patching to correct them. It’s certainly important to understand the potential downstream impacts of poor quality or insufficient “real-world” testing.


Article: What Test Engineers do at Google

Curious about what testers do in other organizations. This series of blog posts gives you a look into some of the specific tasks and projects that testers at Google are involved in. And if you don’t think testers can make a broad impact on their organizations, consider that Misko Hevery originally wrote AngularJS framework as an automated test platform for Google’s internal use.


Return to top


Tutorial: Design Better Data Tables

Application development, especially enterprise development, frequently involves presenting data in tabular form. While tools for data visualization are now both ubiquitous and easy-to-use, data tables are still needed, especially for search results. This tutorial helps you apply good UX practices to presenting data in a way that is meaningful and easy to digest.


Reference: Undoing commits in Git

Everyone has need to undo a commit (with or without push) to a Git repository at one time or another. This single workflow graph shows the Git commands to reverse your actions.


Reference: Go Patterns

While different techniques appeal to people in how to learn a new programming language, one that suits me well is to understand various design patterns. If that fits you (or if you just want to learn a bit of idiomatic Go), this repository is excellent. It includes most of the conventional (“Gang of Four”) patterns as well as several others that are well-suited to Go.


Reference: Serverless Architectures

One of the new buzzwords making the rounds in development and devops circles is “serverless architecture”. The whole notion itself is confusing and fraught with misinformation. This excellent, comprehensive article explains the concepts and uses the de facto standard of AWS Lambda to illustrate the ideas.


Tutorial: 0 to Microservice in 5 minutes with Go, go-microservice-template and Minke

Google’s Go language continues to gain ground in the systems programming arena and now it’s moving further in web development, as well. This detailed tutorial shows how to use Go and several other open-source tools to quickly build microservices using the Bauhaus approach.


Return to top

Career Development/Miscellaneous

Article: Schedules Aren't a Constraint on Life, They Let You Live It

Agile development methodologies have seemed to given “schedule” and “deadline” a decidedly negative connotation. For example, consider the #NoEstimates movement. In this article, the author makes a good argument about the value in schedules and routine from the perspective of allowing you to have a life outside of work. And his argument probably dovetails nicely with “Good Enough” philosophy.


Article: Is The End Of Code Really Coming?

In response to Wired Magazine’s article The End of Code (which we featured in the June 2016 issue), this author debunks several myths that machine learning and artificial intelligence are going to put developers out of work in the next 5 years. While it’s true that technology is disrupting low-skill jobs, for the foreseeable future, someone (a person!) will be needed to write code.


Article: What 'full-stack developer' should mean

If you’ve even just seen job postings for developers in passing in the past couple of years, you have almost certainly run across the term ‘full-stack developer’. But what does this phrase really mean and how should you frame your career to prepare for it? This article aims to clarify term, but know that it certainly doesn’t mean that hiring firms will follow these guidelines. Nevertheless, it can help you plan your career path to include various technologies and platforms at various levels of the stack.


Article: Old Geek

You may be young now, but someday you’ll be middle age (trust me, I know) or older. You need to consider your career path and prepare appropriately for it throughout your life. This article even inspired a reader to create a job listing site for older technology workers.


Article: Why GitHub Finally Abandoned Its Bossless Workplace

A couple of years ago one of the management fads, especially among startups and high-tech firms, was the idea of no (formal) management structure, sometimes called holacracy. Github and Zappos were among the high-profile companies that adopted the model, both of which have pulled back from the idea to some degree. This article presents some of the difficulties and hype of the “no boss” model, especially in cases of organizational crisis.


Return to top

Useful Utilities

git-ls (Free – Cross-platform/Bash shell script – 1kB)

This simple, yet handy little Bash shell script (works great in Windows Git Bash!) gives you a listing (i.e., ls) of all of the files in the current directory with the last commit date, the hash ID of that commit and the first line of the commit message. Very useful when trying to remember what the last change to a file was.


frp (Free – Cross-platform/Go – 5MB)

Need to share your desktop or development server with someone outside of your organizations network, even if you use NAT? If so, then frp might be just the thing. It’s a simple, fast reverse proxy written in the Go language. The tool is very well documented and can be set up on any platform that Go supports quickly; pre-built binaries are provided for Mac OS X (Darwin), Linux, and Windows.


Insomnia REST Client (Free – Cross-platform/Electron – 59.2MB)

As REST APIs have become the de facto standard for application development, the need to test these APIs outside of an application has increased. The Insomnia REST client is a comprehensive, cross-platform tool for creating HTTP requests, viewing responses in JSON and/or XML, and developing test suites. The desktop tool provides a comfortable workspace for all kinds of REST application testing.


GlueList (Free – Cross-platform/Java – 25kB)

GlueList is a small replacement template/generic library for the built-in Java ArrayList and LinkedList classes. In general, it has performance of 20% - 50% better than the native Java classes. And it’s Big O complexity measures are simpler, as well, often O(1).


Return to top

Just For Fun


What if someone blatantly and persistently misspelled your name? If you are the WordPress framework, you’d implement the capital_P_dangit function to parse text and replace any instances of ‘Wordpress’ with ‘WordPress’.


Return to top