Up to Newsletter Index

August 2018 Newsletter


Quotable Quotes

Integrity without knowledge is weak and useless, and knowledge without integrity is dangerous and dreadful. –Samuel Johnson

A work is never completed except by some accident such as weariness, satisfaction, the need to deliver, or death. –Paul Valéry

If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is. –John von Neumann (1947)

[The common definition of estimate is] “an estimate is the most optimistic prediction that has a non-zero probability of coming true”… Accepting this definition leads irrevocably toward a method called what’s-the-earliest-date-by-which-you-can’t-prove-you-won’t-be-finished estimating. –Tom DeMarco, Controlling Software Projects: Management, Measurement & Estimation (1982)

The most deadly poison of our times is indifference. –Saint Maximilian Kolbe

Return to top


Software Development Process and Methodology

Article: Imaginary problems, the root of bad software

Scope creep can kill an application development project. This author warns about a problem that can be just as detrimental, but more insidious: implementing “solutions” to problems that are only imagined by the development team or business or “cute” features. He notes that project managers need to ensure that work is focused on solving the correct problems.

https://medium.com/@george3d6/imaginary-problems-d4f2921bd1b8


Article: You don’t need standup

One of the core principles of Scrum methodology is the daily standup meeting. However, somewhere along the way, many teams have lost the agile flavor of this meeting. This author notes that standups have the (presumably unintended!) consequence of having plans and priorities changed too frequently, among other things. He says that you should abandon standup meetings, since it encourages better collaboration and communication on the team through organic means.

https://medium.com/@jsonpify/you-dont-need-standup-9a74782517c1


Article: The Bulk of Software Engineering in 2018 is Just Plumbing

Undoubtedly, you understand that development work has changed substantially in just the past 5-10 years. Instead of building soup-to-nuts applications, most work involves putting the various pieces of existing infrastructure together in novel and innovative ways. This article emphasizes that gold-plating our applications wastes resources and that providing business value is the true measure of successful development. Moreover, the author notes that employers need to be transparent with employees and candidates about the realities of this world.

https://www.karllhughes.com/posts/plumbing


Article: How to give IT project estimates—and when not to estimate at all

Business customers (and project managers!) typically want to know two things about a project: “How much will it cost?” And, “When will it be done?” Effort and duration estimation is still a black art in most organizations and most developers aren’t skilled in this area. Here are some practical suggestions about how to provide accurate, yet imprecise, estimates and when (and how!) to say that an estimate can’t be provided.

https://www.hpe.com/us/en/insights/articles/how-to-give-it-project-estimates-and-when-not-to-estimate-at-all-1807.html


Article: Agile Metrics: The Ultimate Guide

I’m usually wary when something claims to be the “ultimate”, but this article provides a thorough discussion about the metrics you should (and shouldn’t) use in an agile process and some great points on the philosophy of how to use them effectively.

https://www.extremeuncertainty.com/agile-metrics-ultimate-guide/


Article: Starters, finishers, and large development teams

Successful teams tend to be a diverse bunch. This article notes that one of the balances that need to be maintained on teams is between those who are good at getting the project launched and the folks who push it to completion and into production and that these are unique skill sets.

https://blog.andyet.com/2018/07/10/starters-finishers-and-large-teams

Return to top


Software Testing & Quality

Article: Testing vs writing tests

Perhaps the title of this article confuses you, because the difference between the two seems esoteric or immaterial. The author explains the difference and emphasizes that both are necessary, but serve different purposes. He notes that one should not get lulled into the false belief that unit tests developed during TDD provide a comprehensive testing regime.

https://medium.com/@mauricioaniche/testing-vs-writing-tests-d817bffea6bc


Article: Not all bugs are worth fixing and that's okay

A tester’s job is to find all problems in an application and make sure they are fixed, right? Well, the reality is that not all defects are created equal and the fundamental role of the tester is risk management. This article emphasizes that bugs need to be assessed based on a variety of criteria including safety, economic impact, and the like to decide which ones should be fixed.

https://blog.bugsnag.com/application-stability-monitoring/

Return to top


Tutorials/References

Tutorial: A Homomorphic Encryption Illustrated Primer

Homomorphic encryption allows public processing of encrypted data, such as via a cloud service, without decrypting the data. This tutorial explains the concepts, including the math behind, using simple principles (just algebra!) with plenty of diagrams to enhance understanding.

https://blog.n1analytics.com/homomorphic-encryption-illustrated-primer/


Tutorial: Demystifying React ’s Virtual DOM

The React.JS front-end (client-side) framework has become ubiquitous in web development. The key to successfully using it is understanding how it quickly and transparently refreshes only the portions of the page that have changed via the virtual DOM. This article pulls back the covers on how it works.

https://medium.com/nybles/demystifying-react-s-virtual-dom-eb0f2dc0717a


Tutorial: Series on Data Structure Implementation in C++

Famously, Linus Torvalds quipped, “Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” And, certainly, data structures and their design are key to successful programming. This tutorial teaches you the concepts behind some of the most important data structures by explaining their implementation in C++.

http://maclanewilkison.com/arrays/

Return to top


Career Development/Miscellaneous

Article: What's the Best City for Software Engineers?

Certainly, you know that your compensation is not only about the actual salary, but more about the buying power of that salary. This analysis shows that Texas is the top location, but almost any location in flyover country fares better than cities on the coasts.

https://spectrum.ieee.org/view-from-the-valley/at-work/tech-careers/best-city-for-software-engineers


Article: The Top Programming Languages 2018

Based on 11 dimensions of evaluation of data from 9 sources, this comprehensive list ranks the top programming languages. Python tops this year’s list with C, C++, and Java very close behind. The interactive chart allows you to adjust the list, based on the factors most important to you.

https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018


Article: Employers will do almost anything to find workers to fill jobs—except pay them more

With the US at “full employment” for the first time in more than 10 years (or not!), the most noticeable difference in the economy is that wages are still low by almost all historical measures. The article looks at why even in such a tight labor market, salaries aren’t going up and how this may be the “new normal”.

http://www.latimes.com/business/hiltzik/la-fi-hiltzik-employment-20180710-story.html


Article: Cognitive Dissonance in Programming

Programming is (at least, still!) a human activity and, accordingly, our emotional side can benefit us or cause problems. This interesting perspective looks at how the strength of our beliefs and challenges to them can cause difficulty and how we can moderate them to work well with others.

http://hangaroundtheweb.com/2018/07/cognitive-dissonance-in-programming/

Return to top


Telecommunications/Networking Industry

Article: FCC sides with Google Fiber over Comcast with new pro-competition rule

Signaling changes in the competitive landscape of telecom, the FCC says that providers don’t have to wait for owners or incumbents to move cables on poles before they can attach new cables. The so-called One Touch Make Ready (OTMR) rules allow a single contractor to handle all attachment changes at the same time.

https://arstechnica.com/tech-policy/2018/08/fcc-gives-google-fiber-and-new-isps-faster-access-to-utility-poles/

Return to top


PLOM (Programing Language of the Month)

Pony

Pony, which the name pays homage to common development joke that application customers often want every possible feature “and a pony” and created by Microsoft programming language researcher Sylvan Clebsch, might be labeled as a cross between Rust and Erlang. Pony’s key benefits are in concurrency and safety (type, exception, and memory) and it uses the Actor-Model programming paradigm. Pony has its own standard library which makes it broadly useful. For great introduction to using Pony in a real-world application, check out this article.

https://www.ponylang.org/

Return to top


Useful Utilities

bashj (Free – Cross-platform/Bash and Java – 22kB)

What if you could use native Java code in your Bash shell scripts? Well, now you can with bashj. It acts as a “bridge” between the shell interpreter and Java allowing you to use Java, including all standard libraries, in your scripts.

http://fil.gonze.org/wikiPG/index.php/Project_bashj_:_a_bash_mutant_with_java_support


Markdown New Tab (Free – Cross-platform/Google Chrome extension – 105kB)

This simple Google Chrome extension provides a notepad on browser new tabs with Markdown support. It allows you save your notes and they are persisted between sessions via localStorage() API. And you can even browse the revision history of the notes.

https://github.com/plibither8/markdown-new-tab


Check-It-Out (Free – Cross-platform/Git – 2.3MB)

Check-It-Out is a tiny JavaScript/Node.JS shell utility that works with Git to give you an interactive menu of the available branches of the repository that you are in. You can select the specific branch to check out, look for tags, even view the Git log to see the history of a branch.

https://github.com/jwu910/check-it-out


lazygit (Free – Cross-platform/Go – N/A)

This tool is a simple console/shell-based GUI for Git that can significantly improve your productivity when interacting with your repositories. It’s similar in layout to Git Extensions, but also quite simplified. You can browse the Git history, switch branches, stage files for commit, commit, and push all from a convenient GUI. It’s built with Go and binaries are available for Ubuntu Linux from PPA, but you’ll have to build from source on other platforms, which is quite easy with Go.

https://github.com/jesseduffield/lazygit


Icon-Meter (Free – Windows 7/8.x/10 – 1.6MB)

Icon-Meter is a small system monitoring utility for Windows that runs in the system tray (Notification Area). It provides separate icons for CPU, network, and memory, and disk and you can hide any icons you like. The icon bar graphs can have either vertical or horizontal orientation and you can double-click on the icons to launch the Task Manager.

https://github.com/oscarkcau/Icon-Meter

Return to top


Just For Fun

An Entomologist Rates Ant Emojis

Emoji have become more than just icons for text messages/IM. What happens when a domain expert evaluates emojis from a variety of popular social media platforms? Check out this article to find out and to learn which service has the most accurate ant emoji (a.k.a. “U+1F41C”).

http://curlicuecal.tumblr.com/post/175362924100/an-entomologist-rates-ant-emojis


Bootable CD + retro game in a tweet

How much functionality can you squeeze into source of 280 characters? Here’s a fully-documented script that generates an ISO file that runs a simple Tron game from the boot loader. Crazy!

https://www.quaxio.com/bootable_cd_retro_game_tweet/

Return to top