The highest perfection of politeness is only a beautiful edifice, built, from the base to the dome, of ungraceful and gilded forms of charitable and unselfish lying. –Mark Twain, “On the Decay of the Art of Lying” (1882)
The most common way people give up their power is by thinking they don't have any. –Alice Walker
It is difficult to believe that people who are obviously careless about language can really be very careful about anything else. –G. K. Chesterton (1908)
The greatest impediment to creativity is your impatience, the almost inevitable desire to hurry up the process, express something, and make a splash. –Robert Greene, Mastery (2012)
Fortunately, the future is unpredictable and also–because of quantum effects–uncertain. –Andrei Sakharov
Admit
something:
Everyone you see, you say to them, “Love me.”
Of
course you do not do this out loud, otherwise
Someone
would call the cops.
Still,
though, think about this, this great pull in us to connect.
Why
not become the one who lives with a
Full
moon in each eye that is always saying,
With
that sweet moon language, what every other eye in
This
world is dying to hear?
–With That Moon Language, Shams-ud-din Muhammad Hafiz (c. 1320-1389), translated by Daniel Ladinsky
As we often discuss in this newsletter, simplicity is a key factor in successful development. This article examines the paradox of how technological advances have enabled us to build applications more quickly, but complexity counteracts those gains when making enhancements to systems. The author offers several ideas for how to build simplicity into your process and applications.
https://www.simplethread.com/software-complexity-killing-us/
How can a paper from 1979 help programmers today? You might be pleasantly surprised. This paper taken from Robert Floyd’s Turing Award lecture discusses several practices toward incremental improvement in the craft of programming that have stood the test of time.
https://blog.acolyer.org/2018/01/29/the-paradigms-of-programming/
You’d be forgiven if this title reminded you of a Brittney Spears album. But, in fact, the author discusses the philosophical debate about whether we should use OOP (object-oriented programming) or FP (functional programming). And his answer is, “Yes!” He emphasizes that both paradigms have their benefits and that good programmers will use them both and apply them appropriately to solving the problem at hand.
https://hackernoon.com/oops-i-fpd-again-14a3aecbbb98
Most of us were raised on the principle that all class attributes in Java should be private and accessed only through getters and setters. In fact, as the author of this article notes, one of Eclipse’s salient features is auto-generation of them. But he says that the time is past for this practice and that getters and setters give a false sense of security about your attributes (and some even say they are evil!). This position is sure to be controversial, but look at his arguments and see what you think.
https://dev.to/scottshipp/avoid-getters-and-setters-whenever-possible-c8m
Certainly, some features are necessary to have an application to begin with, but this article points out that each feature increases your “debt load” (of which “technical debt” is just one type). The point is that complexity of any application is an enemy to fought off at every opportunity.
Each of us knows that writing code is only part of our job. We also need to be involved in process improvement, architecture, and other things involved in developing good systems. This technical manager explains that how management handles suggestions from developers has the most impact, for good or ill, on how engaged they are in those other pursuits.
https://medium.com/maker-to-manager/why-your-programmers-just-want-to-code-36da9973388e
Most often, we think of a defect (bug) in an application in terms of incorrect result, application failure, or the like. This author explores three classes of software problems, including environment- or input-specific errors and misinterpretation of correct (or incorrect) behavior. All of these provide the test with some concepts that you need to ensure are included in your test approach.
http://www.pathsensitive.com/2018/01/the-three-levels-of-software-why-code.html
Against the backdrop of Six Sigma quality guidelines for manufactured products, this author discusses how quality of software can be measured and characterized. His position is that determining an absolute defect rate for software is impossible and, therefore, he uses a concept of “perceived risk” which subjectively represents the expected likelihood of failure (not only defects!) in a production environment.
https://medium.com/@mcloide/software-quality-as-perceived-risk-f1c61d9f437f
https://medium.com/@mcloide/software-quality-as-perceived-risk-part-ii-178c14200fb9
Even if your organization isn’t using microservices yet, this article offers lots of practical advice about how to test non-GUI applications. The author clearly explains both technical and philosophical differences in testing approaches and explores some of the paradigms that can be used for non-GUI/service (microservice or otherwise) testing.
https://medium.com/@copyconstruct/testing-microservices-the-sane-way-9bb31d158c16
Software testing is a pursuit where it’s easy to miss the forest for the trees sometimes. In this article, the author examines four factors to consider when designing your test approach. He says that key skill is in crafting error messages, so that failures can be diagnosed quickly.
https://code.joejag.com/2018/the-four-qualities-of-a-good-test-suite.html
As developers, we enjoy technical challenges. However, for many of us, this also means that we don’t take an active interest in managing our finances. This excellent tutorial covers the basics that anyone should know about finances, the stock market, investing, and other related topics.
Shell scripting is powerful and an important skill for developers. However, the syntax can be daunting and non-intuitive. This list explains several of the more esoteric cases and gives some great, simple tips sure to boost your productivity.
https://zwischenzugs.com/2018/01/06/ten-things-i-wish-id-known-about-bash/
https://zwischenzugs.com/2018/01/21/ten-more-things-i-wish-id-known-about-bash/
Even if you use JavaScript every day, you will probably find at least one hidden gem in this list of tips for writing better, more idiomatic code. My favorite is the comma operator.
https://air.ghost.io/js-things-i-never-knew-existed/
Most of use JavaScript every day and certainly many also program in it, either for the browser or server. But do you know how it works under the covers? This excellent tutorial series delves into the inner workings without getting overly technical. The author covers all of the building blocks of the JavaScript runtime and some advance topics such as Web Sockets and Web Assembly.
https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf
We all know that getting work done is hard. From analyzing anonymized customer data across 1.8 million projects with 28 million tasks, this company has developed a profile of knowledge worker productivity. Not surprisingly, Monday is the most productive day of the week (but not by much!) and fall is the most productive season. Read on for more interesting tidbits.
https://priceonomics.com/when-does-work-actually-get-done/
Comparing programmer salaries to the historically bimodal distribution of lawyer salaries, this author attempts to understand why this is happening in our industry since the structural differences between law and programming employment are so significant.
https://danluu.com/bimodal-compensation/
Along with the U.S. dollar losing ground as a reserve currency, for the first time in its six-year history, the U.S. dropped out of the Bloomberg Innovation Index, mostly due to a slump in post-secondary STEM graduates in the labor force, which could not be overcome by productivity improvements. Singapore vaulted up three spots to #3 on the list.
Hacker Rank job site has released their 2018 developer skills report based on a survey of nearly 40000 technology workers. Some of the insights are that programmers are moving away from books for learning and using more online video training, JavaScript frameworks (React, Vue.JS, etc.) show the greatest skills shortage, and older workers started coding at an earlier age than millenials.
https://research.hackerrank.com/developer-skills/2018/
Many of us have the perception that development is a “lifestyle” more than a job and, accordingly, you should be participating in user groups, doing outside development to build a portfolio, blogging, and the like. This article shows that coming in, giving it your all, and then going home is just fine as a career approach.
https://exceptionnotfound.net/i-am-a-9-to-5-developer-and-so-can-you/
Growth in STEM jobs in the US from 1990 to 2016 was 79%. Here are some other interesting facts about STEM jobs from a very reliable source, including that almost half of workers with a STEM college degree work in non-STEM jobs, men and women STEM have very different views of workplace equity, and that more than 1/3 of STEM workers have no college degree.
http://www.pewresearch.org/fact-tank/2018/01/09/7-facts-about-the-stem-workforce/
Hard to believe that it’s been 8 years since Google made a big splash with their plan to dive into the broadband Internet business. As this article reports, the project has been a difficult effort and that for all its success in other areas, Google simply wasn’t prepared to become a telecom provider.
Datasette is a tiny and amazing toolkit for ad hoc (or even more rigorous!) data analysis built on Python and SQLite database by the co-creator of the Django framework. It generates a read-only JSON API for any SQLite database and can even package up the DB as Docker container for easy deployment to hosting. Check out the author’s discussion about it for more information, including several examples.
https://github.com/simonw/datasette
In testing, it’s important to concentrate your efforts on the areas of greatest opportunity. One approach may involve code that is most frequently changed. This small Bash shell script produces a basic histogram in the console of the files in your Git project with the most changes in descending order.
https://github.com/jez/git-heatmap
Providing consistent formatting of source code files can sometimes be a chore. While many tools, such as Eclipse, will automatically convert between tabs and spaces, that doesn’t help for legacy files or files edited outside of the IDE. This tiny command line tool can switch easily between tabs and spaces, including stripping white space at the ends of lines, customized tab size, and including or excluding specific file types.
http://tools.stefankueng.com/tabspace.html
Multi String Replacer is a small, handy utility for most any programmer who uses Windows. It’s two key features are ability to replace multiple strings in files in a single pass/run and capacity to swap words/strings in files. It supports literal strings and regular expressions.
http://windowsportableapps.blogspot.com/2017/07/multi-string-replacer.html
After 50+ years of service, one of the most iconic (and iconoclastic!) jets in history is no longer used by any US carriers, due to high operating and maintenance costs. (Fedex hasn’t used them for over 20 years!) However, several international airlines still use the 747, along with UPS, which has 11 new ones on order.
https://arstechnica.com/cars/2018/01/delta-sends-the-last-us-passenger-747-into-retirement/
First, for this site to make much sense, you need a little background. Apparently, the craze started with this post about a (decimal) prime number with binary representation that looked like a giraffe. (However, I’d consider this article to be “prior art” [pun intended] in this domain.) Now, you can turn any image into one of these at this site.
https://geonnave.github.io/primg/