Up to Newsletter Index

 

November 2021 Newsletter

 

Quotable Quotes

Though I do not believe that a plant will spring up where no seed has been, I have great faith in a seed... Convince me that you have a seed there, and I am prepared to expect wonders. –Henry David Thoreau

Elegance is not a dispensable luxury but a factor that decides between success and failure. –Edsger Dijkstra

You mustn’t wish for another life. You mustn’t want to be somebody else. What you must do is this: “Rejoice evermore. Pray without ceasing. In everything give thanks.” I am not all the way capable of so much, but those are the right instructions. –Wendell Berry, Hannah Coulter

In my experience, for a software development to focus on reuse is misguided. Instead, focus on a culture of refactoring: not only will this yield simpler software with increasingly higher quality, in the fullness of time reuse will emerge in the form of patterns and frameworks. –Grady Booch

All the effort in the world won’t matter if you’re not inspired. –Chuck Palahniuk, Diary: A Novel


Return to top


Software Development Process and Methodology


Article: How Big Tech Runs Tech Projects and the Curious Absence of Scrum

This author recently surveyed more than 100 large technology companies about their development project management methodologies and found that most did not use (or had abandoned) the Scrum approach. Instead, most used a variation on “plan-build/iterate-ship” methodology with someone on the team handling the project management role/duties. Formal project management roles come in larger, more complex projects and on integration efforts that require more coordination. Lots of interesting information to consider from this article.

https://newsletter.pragmaticengineer.com/p/project-management-in-tech


Article: What is simplicity in programming and why does it matter?

Frequently in programming, we hear about "avoiding complexity" or similar phrases. But what does it mean for our designs or architectures to be "simple"? This article, which references Clojure, a Lisp language that runs on the JVM, explores the philosophy of simplicity and its importance in building robust and extensible applications.

https://blog.jakubholy.net/2021/simplicity/


Article: Best Practices (Why I Hate Them)

How often do you hear someone say that you should use a particular technology or methodology simply because it’s a “best practice”? This author reminds us that nearly everything we use our development process is just a tool and no single tool can be one-size-fits-all. We must look at each and decide if it’s applicable to our situation, based on our environment, skills, architecture, and so forth.

https://fev.al/posts/best-practices/


Article: Code quality: a concern for businesses, bottom lines, and empathetic programmers

You want to write high-quality, robust code to reduce problems and failures in production, right? Well, certainly that is true. But, as this article notes, another important aspect of quality code is reducing the cognitive load on developers, which leads to improved productivity and programmer satisfaction.

https://stackoverflow.blog/2021/10/18/code-quality-a-concern-for-businesses-bottom-lines-and-empathetic-programmers/


Article: Reading Code is a Skill

The title of this article is likely self-evident to most of us, especially since we’ve also probably heard the aphorism “Programs must be written for people to read, and only incidentally for machines to execute.” However, the more salient aspect of this article is the importance and value of writing code that is easy to read and understand. Nevertheless, the author emphasizes that much grace is required when assessing readability, since it is so subjective and certainly no one sets out to intentionally create code that is not understandable. In other words, the key element is collaboration and balance in sharing information so that the writer’s intent comes through to the reader.

https://trishagee.com/2020/09/07/reading-code-is-a-skill/


Return to top


Software Testing & Quality


Article: Systems thinking and quality

Various definitions of quality surround us both in our work and daily lives. Nevertheless, ultimately it comes down to customer satisfaction. This article explores how systems thinking allows us to adopt a quality mindset in all aspects of the development process.

https://www.ufried.com/blog/systems_thinking_and_quality/


Article: Guide to creating an effective Test Automation Strategy

Most organizations have or want to introduce test automation. But what is the right approach? Before you start with your implementation, you must have a strategy for achieving the goals of your automation effort. This guide provides a nice framework for the strategy by asking questions around the who, what, when, how, and where for test automation.

https://medium.com/@ailuj876/guide-to-creating-an-effective-test-automation-strategy-cf5602f13ff8


Article: 5 Tips for Reducing Bugs in Software Development Projects

Having a rigorous and effective software testing process is great. However, it’s even better to prevent defects in the first place, since that saves time, money, and frustration. This article presents a few simple and practical suggestions for heading those defects off before they get into the code.

https://betterprogramming.pub/5-tips-for-reducing-bugs-in-software-development-projects-5bc592c2881a


Article: Software Testing Is Quality Engineering

Sometimes, it’s easy to get caught up in semantics and limit our actions based on the meanings (or our understandings, which can be misguided!) of various terms. This article emphasizes that while “quality engineering” as a discipline (the process aspects of ensuring quality throughout the development life cycle) is important, software testing is key. Furthermore, and more significantly, it goes on to discuss the characteristics of good testing.

https://www.petergwalen.com/blog/software-testing-is-quality-engineering


Return to top


Tutorials/References


Tutorial: All About B-Trees and Databases

B-trees are fundamental to the storage engines of several popular RDBMS platforms, including Oracle, PostgreSQL, and MySQL. This tutorial provides a nice explanation with visualizations of this data structure and how they are used in databases to provide good performance, especially in disk-based storage scenarios.

https://medium.com/@amitdavidson234/all-about-b-trees-and-databases-8c0697856189


Tutorial: Explaining explaining: a quick guide on explanatory writing

One of the underrated skills in the technical realm is writingor, more precisely, writing well. As developers and other technical professionals, most of our writing involves explanatory writing, which is a distinct type. This author provides a great guide for how to do it, including structure and style. Consider it a quite “meta” tutorial!

https://lucasfcosta.com/2021/09/30/explaining-in-writing.html


Tutorial: Git Bisect: travel through time and bugs

Often, when debugging a problem in your code, you’ll have an idea of where or when the problem was introduced. This is where the git bisect command comes in very handy in narrowing down precisely which commit is the culprit. This comprehensive tutorial shows you the ropes for using it.

https://remimercier.com/how-to-use-git-bisect/


Tutorial: Neural Networks from Scratch - An Interactive Guide

Whether your job involves AI or machine learning development or not, in today’s environment, it’s important to understand some of the general principles in this domain. This visual, interactive tutorial gently teaches you both the concepts and technologies behind neural networks, which underpin most of the deep learning techniques in use today. The explanation of back-propagation is especially nice.

https://aegeorge42.github.io/


Tutorial: Understanding all of Python, through its builtins

If you want to understand a programming language, you must get down into the core to see what makes it tick. Fortunately, Python makes that incredibly easy through its builtins module. This walking tour of the module shows you how to use the module to more thoroughly understand how Python works under the covers.

https://sadh.life/post/builtins/


Return to top


Career Development/Miscellaneous


Article: Doing a Job - The Management Philosophy of Adm. Hyman G. Rickover

Adm. Rickover was one of the most successful (and controversial) leaders in modern U. S. Navy history (and one of my father’s senior officers!). This speech encapsulates his philosophy of leadership and what separates leaders from managers. He emphasizes the role in agency and accountability in subordinates and that leaders accept responsibility for problems and fix them without hesitation or excuses.

https://govleaders.org/rickover.htm


Article: Busting the 10x software engineer myth

One of the persistent narratives in software development circles is of the developer who is 10 times more productive than his or her peers. Personally, I find this concept odd, since we don’t hear about this in most other disciplines and it probably stems from “hacker” ethos of the 1960s and 1970s. In this article the author emphasizes the importance of dispelling this idea for the good of individuals and the team and organization at large.

https://www.swarmia.com/blog/busting-the-10x-software-engineer-myth


Article: 20 Things I’ve Learned in my 20 Years as a Software Engineer

When you consider doing a job for 20 years, it can seem like either a long time, if you are just starting out, or perhaps like it whizzed by if, like me, you are nearing the end of your working life. And you could read any number of “all the things I learned over my career” articles. So why this one? I choose this one, because the author takes a humble, circumspect, yet upbeat, view of programming as a career and offers some insights that often get missed in those other missives. Lots of little nuggets of wisdom here.

https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/


Article: Always Do Extra

What separates the great workers from the rest of the pack? I’m not referring to the mythical 10x developer, but rather the employee that almost everyone recognizes as a top performer and who (usually) quietly, confidently goes about his/her work. This author (whom I wholeheartedly agree with!) says that it’s about doing a little extra on each task and project. Not because you want to show off, but because you genuinely want to make things better for everyone. Should we call these folks lagniappe workers?

http://www.bennorthrop.com/Essays/2021/always-do-extra.php


Article: How Can We Break Our Addiction to Contempt?

If you could do one thing to improve your work relationships, what would it be? In this new interview with Harvard economist, Arthur Brooks, about his book Love Your Enemies: How Decent People Can Save America from the Culture of Contempt, he says that it’s as simple as showing good old-fashioned love. The important distinction that he makes is that love is not a feeling, but rather an action and an action that translates directly into how much happiness that we experience. I think that this topic is one of the most important for future of our world and urge you to take it to heart.

https://freakonomics.com/podcast/arthur-brooks/


Return to top


PLOM (Programming Language of the Month)


Grain

Grain is a new language with a focus on functional programming and introducing concepts from academic research that often fall by the wayside. That said, it is very well-designed and usable. It compiles to Web Assembly (WASM), so it can be run/hosted on most any platform. Pre-compiled binaries of the compiler are available for Windows, Linux, and Mac OS X, so it’s easy to get started, and they even have an extension for VS Code. The syntax will be familiar to anyone with experience with JavaScript and/or Python. And the developers provide excellent documentation for the language and the standard library, which makes starting out easy.

https://grain-lang.org/


Return to top


Useful Utilities


Quickemu (Free – Linux – 104kB)

Quickemu is a small shell script front-end to the popular QEMU open-source emulation/virtualization platform that allows you to quickly and easily create and configure highly-optimized desktop instances of Linux (especially Ubuntu), Windows 10/11, and Mac OS X virtual machines (VMs). Just run two simple commands to retrieve the ISO images to install the desired guest OS, configure the VM for your environment, and launch it. No looking up the arcane QEMU command-line options or tweaking the configuration.

https://github.com/wimpysworld/quickemu


gron (Free – Cross-platform/Go – 2MB)

When doing exploratory data analysis (or other tasks) with JSON data, it is frequently useful to be able to search the content for values or content. This simple shell-based tool re-formats JSON to make it easier to search via grep. Likewise, it can convert other data formats into well-structured JSON. It’s a great complement to the ubiquitous jq tool. Binaries are available for Windows, Linux, and Mac OS X.

https://github.com/tomnomnom/gron


Rancher Desktop (Free – Cross-platform/Electron – ~200MB)

Rancher Desktop is an Electron-based desktop tool for Windows (via Windows Subsystem for Linux/WSL), Mac OS X, and Linux for Kubernetes and for managing standalone VM containers. You are probably aware that Docker is moving to a paid subscription model for Windows desktop version, so Rancher Desktop may be a viable free, open-source replacement. You can run containers, build container images, and push/pull images to/from registries. Likewise, most common Kubernetes functionality is supported, as well.

https://github.com/rancher-sandbox/rancher-desktop


VisiData (Free – Cross-platform/Python – N/A)

VisiData is a powerful terminal spreadsheet for exploring and managing most any kind of tabular data. It supports Excel, CSV, JSON, SQLite, and many other data formats natively. With so many features and options, I highly recommend An Introduction to VisiData to get started.

https://github.com/saulpw/visidata


Return to top


Just For Fun


“The Bug Count Also Rises”

Wow! This one intersects with just so many of my loves: Hemingway, software testing, tongue-in-cheek humor… What more could you ask for? Indeed, this is truly “great news”!

http://www.workpump.com/bugcount/bugcount.html


This Sneaker Does Not Exist

This is a cool experiment in machine learning using a GAN (generative adversarial network) trained on over 50000 sports shoe images from Internet advertisements to create realistic shoes. It even includes an editor where you can design your own customized version from any of the generated instances.

https://thissneakerdoesnotexist.com/


New Dictionary Words

Our language is vibrant and alive, as demonstrated by the addition of new words all the time. In October, Merriam-Webster added 455 (wow!) new words and phrases to their corpus including small ball, dad bod, and fluffernutter. Check out the other additions!

https://www.merriam-webster.com/words-at-play/new-words-in-the-dictionary


A software tester walks into a bar…

Is the punchline a bit predictable? I don’t know… You’ll have to decide for yourself. Just like you’ll have to decide if the joke’s funny or hits a little too close to home.

https://old.reddit.com/r/Jokes/comments/qbencu/a_software_tester_walks_into_a_bar/


Return to top