As a rule, I have found that the greater brain a man has, and the better he is educated, the easier it has been to mystify him. –Harry Houdini to Arthur Conan Doyle
Outrage is like a lot of other things that feel good but over time devour us from the inside out. And it’s even more insidious than most vices because we don’t even consciously acknowledge that it’s a pleasure. –Tim Kreider
The time to be happy is now. The place to be happy is here. The way to be happy is to make others so. –Robert Green Ingersoll
Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information? –T. S. Eliot, "The Rock"
By indirections find direction out. –William Shakespeare, Hamlet, Act 2, Scene 1
If one thing happened during COVID-19, you might expect that we got better at estimating work/effort on development tasks. However, according to this nine-month unintentional longitudinal study by some graduate students and researchers, turns out that’s not the case. Of the various task types they examined (coding, writing, administrative, homework, presentation preparation, etc.), actual coding time had the most variation from estimates by far.
https://arxiv.org/abs/2103.16574
In many organizations, user stories are the (de facto) standard for requirements and they are generally a good method for documenting and organizing requirements. This article discusses using tasks, and specifically issues in GitHub or GitLab, as a better option for defining requirements due to simplicity and quick turnaround. One specific advantage identified is that the person most familiar with the work is the one who should write the task/issue to ensure that all necessary information and detail is provided.
https://linear.app/method/write-tasks-not-user-stories
Not too long ago, UML (universal modeling language) was the de facto standard for representing object models in most organizations. However, it’s mostly been left behind. This author looks it why it’s fallen out of style. And be sure to read some of the various reactions and counterpoints, as well.
https://garba.org/posts/2021/uml/
https://buttondown.email/hillelwayne/archive/why-uml-really-died/
https://www.sicpers.info/2021/04/on-uml/
https://news.ycombinator.com/item?id=26934577
https://www.reddit.com/r/programming/comments/myf4lx/has_uml_died_without_anyone_noticing/
In many organizations, project deadlines have gotten a bad reputation and, often, rightfully so, because bad practices are used for establishing them, such as backing into them based on some arbitrary end date. In general, deadlines are not inherently bad and, in fact, provide some necessary boundaries for planning purposes, but they must be based on reasonable inputs from the people doing the work against good requirements for that work. This article looks at the harm, including the long-term economic damage to the organization, that can result from arbitrary deadlines.
https://javascript.plainenglish.io/how-setting-arbitrary-deadlines-can-hurt-developers-aa663df4d7ad
Code quality goes well beyond simply ensuring that it does what you want and expect it to. This article looks at some of the characteristics of good code and how to ensure and maintain that quality over the lifetime of code, including some popular tools.
https://keepitsolid.dev/how-to-keep-code-quality-under-control-in-7-steps/
James Bach pioneered exploratory testing more than two decades below and, even with test automation, it’s still a very important and valuable tool. This article updates some of the concepts and principles with an emphasis on expanding it beyond just UI testing into all layers of the product, including services and unit tests.
https://blog.testproject.io/2021/04/20/contemporary-exploratory-testing/
If you are of a certain age, you likely remember a series of television (remember those?) advertisements where NASDAQ’s tag line was, “The stock market for the 21st century.” It looks like even they weren’t prepared for Warren Buffett’s “never split” strategy with his stock, since now BW’s stock price has exceeded the size of 32-bit integers causing problems for NASDAQ’s computers.
As I’ve mentioned, I believe that the (traditional) “test strategy” (in terms of a formal document, at least) has outlived its usefulness. So why am I including this article? I think that rather than providing a prescriptive model for strategy, it provides a good set of questions to ask yourself about both what and how to test and, more importantly, how to assess that you’ve tested effectively and sufficiently.
https://j19sch.github.io/blog/2019/test-strategy-primer/
SQL or NoSQL? Key-value store or document database? With all of the options in the database realm, it can seem overwhelming when trying to decide what's right for your application. This tutorial is a good starting point (but certainly check other resources, as well!), as it provides some nice visuals along with criteria to consider, based on factors like performance, database size, and so forth.
https://pingcap.com/blog/how-to-efficiently-choose-the-right-database-for-your-applications
Most developers have a GitHub account and beyond just hosting your Git repositories, it offers many other hidden gems. Blog and static web hosting are two of the more common uses. But what if you need some simple interactive features like CRUD functionality? This tutorial explains how to use SQLite on GitHub or almost any static site hosting platform, by leveraging its JSON database capabilities.
https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/
In this two-part series, the author proposes and then demonstrates an interesting approach to learning a new programming language by using test-driven development (TDD). Specifically, he takes the language documentation and uses TDD to guide his learning of the language. He works through an example of his own learning process with Elixir and wraps up with these nuggets of wisdom:
Frame each learning session on a specific concept of the language.
Keep the focus only on one thing at a time.
Refactor. Iterate over the living artifact to refine our learnings.
Set a good pace.
https://joebew42.github.io/2020/07/26/learning-with-tests-part-one/
https://joebew42.github.io/2021/02/17/learning-with-tests-part-two/
Java isn’t (well, more precisely, is no longer) my primary development platform and when you are away from something, it’s difficult to keep up with the goings on. This tutorial and references shows that Java and the JVM platform is still vibrant and that thanks to languages like Kotlin, new frameworks such as Quarkus, and the GraalVM run-time, the platform is competitive with (and/or complementary to) most any language and platform out there.
https://jamesward.com/2021/03/16/the-modern-java-platform-2021-edition/
Some new research shows that people rarely consider the option of removing something from a design as a solution to improve or optimize it, even when that option is the most economical. Moreover, the researchers found that simply reminding team members that subtractive solutions are an option greatly increased the likelihood of selection of such where viable. A great reminder to consider our own biases of various kinds when solving any kind of problem, because we might easily overlook simple or economically better choices.
https://www.nature.com/articles/d41586-021-00592-0
We frequently hear or read about the importance of having passion for programming. This author asks us to take another look at this concept and perhaps rein in this sort of enthusiasm. He specifically examines the “working-for-free” mindset of the open-source movement and whether it is healthy or sustainable. Likewise, he discusses how this process has substantially destroyed much of employers responsibility for providing training to employees and foisted it fully onto the employee. What do you think? Has the pendulum swung too far from craft to fanaticism?
https://blog.ploeh.dk/2021/03/22/the-dispassionate-developer/
The pendulum seems to swing rapidly back and forth on the topic of multitasking. This psychologist and expert on emotional intelligence says that that not only is multitasking counterproductive, but new research shows that it may, in fact, result in brain damage to portions of the brain responsible for cognitive and emotional control.
https://www.linkedin.com/pulse/why-successful-people-dont-multitask-dr-travis-bradberry/
I was pleased that this article concentrated significantly more on the second part of the title than the first: Building a culture of trust and performance in the first place. The key point from the article is that the fundamental driver of success is predicated on mutual respect and it can be summed up with this point from the article: We want people to do what they say they’re going to do more than we want them to be fast or be perfect. Another way to put it is that following through on what you say you’re going to do is more important than doing what your told.
https://newsletter.timber.fm/p/how-to-survive-a-toxic-workplace
My favorite magazine is The New Yorker, but The Economist runs a very close second, with each filling a very different need. And the reasons are due to many of the same as this author points out about the style and methods of writing, particularly the directness of the writing and precision of the language. Each issue is a masterclass in good writing practice that technical workers would do well to learn from and emulate.
https://builtbywords.substack.com/p/writing-tools-i-learned-from-the
The Zig language is primarily intended to be a replacement for C "for maintaining robust, optimal, and reusable software" with focus on systems programming. Similar to Rust, it emphasizes writing safe code through a variety of mechanisms such as an "optional" type instead of null pointers and enhanced exception handling. Zig supports most major OS platforms and can import libc and other C-compatible libraries, as well as having a streamlined build process.
This tool is a simple, yet comprehensive, Excel worksheet for writing, organizing, and managing your test cases for small- and medium-size projects and UAT. It allows you to track test execution time, pass/fail status, and defects for failed tests. Plus, it provides excellent built-in graphs of results and statistics for reporting. The primary goals of the tool are simplicity and communicating status/progress. The developer provides example workbooks and a YouTube playlist showing how to use it.
https://github.com/DataResearchLabs/my_test_case_manager
Invisiwind is simple tool that allows you to selectively hide specific windows on your desktop from everyone except you. Thus, when you share your full screen, such as on Zoom or Teams, you’ll still see these application windows, but others won’t. Quite useful so that you can keep notepads up without others seeing them.
https://github.com/radiantly/Invisiwind
LiteCLI is a minimalist interactive command-line for the ubiquitous SQLite database. Built with Python, it works on any platform that SQLite runs on and includes handy features like auto-completion and syntax highlighting. After using this for just one day, my productivity with SQLite skyrocketed.
https://github.com/dbcli/litecli
You may not be familiar, but Windows allows you to use window managers alternatives to the standard Explorer just like Linux. Win3WM is a tiny tiling window manager inspired by the popular i3 window manager from the Linux world. It supports multiple monitors and is scriptable via embedded LuaJIT engine.
https://github.com/McYoloSwagHam/win3wm
Nebula is a simple peer-to-peer VPN tool for all of the major desktop OSes (Windows, Linux, and Mac OS X) and IOS and Android. You simply set up a certificate authority for your group or organization and install the tool and CA and other appropriate configuration to each client on your VPN and your all set.
https://github.com/slackhq/nebula
Thunder Client is an amazing free extension for VS Code that handles almost all of the basic functions of Postman fully integrated into VS Code itself. It supports a wide variety of HTTP configuration options (headers, authentication, and more) and even provides capability for building collections from common attributes/parameters.
https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client
Here’s a tip that when you first learn it, you’ll ask yourself, “How did I not already know this?” If you browse the Reddit forums, you can browse multiple SubReddits simultaneously by separating the SubReddit names in the URL with plus sign (“+”). For example, to see both the Python and Learn Python forums at the same time, browse to https://www.reddit.com/r/Python+learnpython/. And, by the way, if you prefer the old-style Reddit (25 articles per page with only links), you can replace www in the URL with old; for example, https://old.reddit.com/r/Python+learnpython/.
Language-loving dads of the world rejoice! A like-minded friend has released a JSON database of puns named OPun (get it?!) of various categories, including math, bar jokes, and one-liners. Check out Punatorium for some example groaners.
https://github.com/dabbers/OPun
Most of us get more than our fill of corporate (and political) jargon (or, as I prefer to call it, “double-speak”) on regular basis. This person decided to look for some humorous, yet viable, alternatives to the more common selection of these words and phrases. I wonder what will happen when GPT-3 starts coming up this jargon?
https://www.mattwatson.org/blog/20210327-epic-corporate-jargon-alternatives/