Up to Newsletter Index

April 2021 Newsletter


Quotable Quotes

If you can't solve a problem, then there is an easier problem you can solve: find it. –George Polya, How To Solve It

The most important single aspect of software development is to be clear about what you are trying to build. –Bjarne Stroustrup, creator of C++

Good tools make good workers. –French Proverb

The function of art is to hold a mirror up to nature. –Douglas Adams, The Restaurant at the End of the Universe

There is more value in a little study of humility and in a single act of it than in all the knowledge of the world. –Saint Teresa of Avila

Return to top


Software Development Process and Methodology


Article: Stop Playing Tetris (With Teams, Sprints, Projects, and Individuals)

Sometimes working on projects can feel like playing a game. This author uses Tetris as a metaphor for some of the bad practices of project management and provides some suggestions for fixing these problems centered around ingraining "pull" in the organization and working towards flow in the entire process.

https://medium.com/@johnpcutler/stop-playing-tetris-with-teams-sprints-projects-and-individuals-b1e4ed6d8bc0


Article: Is Functional Programming The Silver Bullet? You May Not Like The Answer.

As Fred Brooks told us decades ago, there is no "silver bullet" is software development. However, functional programming offers some distinct benefits and in this article, the author skillfully explains the underlying premises of functional programming, those benefits, and the blind alleys you may find yourself in.

https://suzdalnitski.medium.com/is-functional-programming-the-silver-bullet-you-may-not-like-the-answer-cb4d3e8c03a7


Article: Why does it take so long to build software?

It’s the classic question of programming: Why does it take so long? We usually have very accurate estimates for how long it takes build things in the physical world, so why not software? This article gives you excellent explanations for the many factors that cause software development to take so long and to make estimation of effort and duration so difficult even after so many years of study and anlaysis.

https://www.simplethread.com/why-does-it-take-so-long-to-build-software/


Reference: How to Deal with Difficult People on Software Projects

All of us have worked with team members who were less than ideal. Perhaps we’ve even been that co-worker at times. This fun site classifies many of the different "creatures" you’re likely to run into from time to time on development projects and provides tips on how to get along with their specific quirks.

https://www.howtodeal.dev/


Article: The Agile Manifesto 20 years on: agility in software delivery is still a work in progress

February 2021 marked the 20th anniversary of the adoption of the Agile Manifesto. So in the spirit of agile, it’s time for a retrospective to see how well it’s done. From this assessment, the overall feeling is that the concepts and principles have held up well, but the practical implementation, especially at scale, still have a ways to go. How would you assess it, both in your own organization and industry-wide?

https://www.zdnet.com/article/the-agile-manifesto-20-years-on-agility-in-software-delivery-is-still-a-work-in-progress/


Return to top


Software Testing & Quality


Article: Mozilla to use machine learning to find code bugs before they ship

To improve the quality of the Firefox browser, Mozilla plans to use a machine-learning tool to check the code submitted with each commit to compare it to existing code. This, in turn, is used to determine the likelihood of problems, so that testing can focus in areas of greatest concern.

https://arstechnica.com/gadgets/2019/02/mozilla-to-use-machine-learning-to-find-code-bugs-before-they-ship/


Article: Developers: These botched software rollouts are costing businesses billions

Software defects and the problems they cause have real-world consequences. According to a new report, the economic impact of poor software quality was over $2 trillion in the US in 2020 alone. The report found that most organizations fail to recognize the cost of quality when it comes to software development and acquisition.

https://www.techrepublic.com/index.php/category/10250/4/index.php/article/developers-these-botched-software-rollouts-are-costing-businesses-billions/


Article: Everything is broken, and it’s okay

One of the overarching themes of our newsletter is that software testing is about risk management and reduction. In that vein, this article discusses the fact that anything we create will have flaws regardless of our efforts to eliminate them, but our jobs involve ensuring that the cumulative effect of these defects across large systems don't become catastrophes. We must design with the expectation of failure, but ensure resiliency in the face of these problems.

https://increment.com/reliability/failure-is-okay/


Article: Do You Really Need a Test Plan?

Perhaps the title of this article seems heretical in a newsletter like this? However, this author notes that test plans themselves come with some baggage, particularly the effort to create them and even more so to maintain them. He indicates that unless you work in a regulated industry that requires them or on a highly-complex project, a test plan is probably a waste of time and effort. This doesn’t mean that you don’t document your testing, but you focus your efforts elsewhere on tracking tests and reporting progress instead. What do you think? Are test plans worth the effort?

https://dev-tester.com/do-you-really-need-a-test-plan/


Article: Microsoft: 70 percent of all security bugs are memory safety issues

Research from Microsoft shows that ~70% of their security defects are caused by memory safety issues, such as buffer overflows and null pointers. Most interesting is that the proportion of memory-related defects has remained steady for more than 12 years. And this report has spawn a spate of comments like this one.

https://www.zdnet.com/article/microsoft-70-percent-of-all-security-bugs-are-memory-safety-issues/


Article: Testing isn't everything

For most readers of this newsletter, the concept that testing is not the only (or even the most important) tool for providing a robust, quality application should not be a surprise. Nevertheless, a little reminder never hurts. Moreover, this author examines the layered approach to ensuring high-quality using a variety of tools and practices.

https://arp242.net/weblog/testing.html


Return to top


Tutorials/References


Tutorials: Vim for beginners, intermediate, and advanced users

IDEs are standard in today's development world. Nevertheless, text editors continue to be important tools in most workflows, as well, and Vim is one of the most ubiquitous. But Vim (or it's more modern implementation Neovim) can be difficult to learn. This comprehensive three-part series takes you from beginner to power user focusing on the most important features for programmers to be productive.

https://thevaluable.dev/vim-beginner/

https://thevaluable.dev/vim-intermediate/

https://thevaluable.dev/vim-advanced/


Tutorial: Interactive Rebase - Git from Zero to Hero

Git is perhaps the most ubiquitous of all of the development tools in use today and it is undoubtedly powerful. However, nothing strikes fear in my heart more than having to do a rebase from the origin repository, no matter how careful that I am. This excellent and comprehensive video tutorial takes you step-by-step through the interactive rebase process with a variety of examples and scenarios to perhaps ease some of those anxious moments.

https://www.youtube.com/watch?v=jCH6SUNCLNY


Reference: Typing Is Hard

Even in strongly-typed languages, you can still run into problems due to type compatibility or invalid types. This site provides a nice simple reference for the decidability and soundness of type-checking in a variety of languages.

https://3fx.ch/typing-is-hard.html


Reference: Fundamentals of Optimal Code Style: Cognitively-Oriented Approach to Improving Program Readability

According to "Uncle Bob" Martin, developers spend ten times more time reading code than writing it. Thus, it’s vitally important that readability of our code is a top consideration in the development process. This dense, technical paper discusses the cognitive and psychological factors that contribute to readable code.

https://optimal-codestyle.github.io/


Return to top


Career Development/Miscellaneous


Article: Passion Not Required: It's OK to Only Program for a Paycheck

If you were an aircraft mechanic or a building architect would you be expected to do airplane repair or building designs outside of work? Probably not. Then why does the technology industry have an unwritten rule that developers should program outside of work? This article emphasizes that programming is a trade and a craft much like any other and that strong tendencies of organizations to treat it as a "passion" should be red flags.

https://exceptionnotfound.net/passion-not-required-its-ok-to-only-program-for-a-paycheck/


Article: 6 Red Flags I Saw While Doing 60+ Technical Interviews in 30 Days

Having started a new job 6 months ago after being at my previous job for 20+ years, I can attest that today’s interview process is grueling. This developer averaged more than two technical interviews a day for a month and shares some of the things to watch out for if you are looking for a new job.
https://meekg33k.dev/6-red-flags-i-saw-while-doing-60-technical-interviews-in-30-days-ckm53wt5f00avscs13xf9fhcs


Article: The SPACE of Developer Productivity

Improving developer productivity is one of the things that seems to have perennial focus by almost all organizations. However, finding good metrics and ways to measure productivity has been a bugbear from the beginning. This article explores a novel measurement framework called SPACE based on these 5 dimensions: satisfaction and well-being; performance; activity; communication and collaboration; and efficiency and flow. It examines them at the individual, team, and end-to-end/development pipeline levels.

https://queue.acm.org/detail.cfm?id=3454124


Article: Get better at programming by learning how things work

Most technology workers understand that life-long learning is a key element of career success. But it’s not always clear how to accomplish this. This author, who is very well known for her excellent tutorials, says that understanding how things work is the single most important factor in improving your technical skills. She explains that it’s not enough to know all of the tricks about your programming language, but you need to understand the systems that underpin them, as well, such as how HTTP works and how networks function. Great advice!

https://jvns.ca/blog/learn-how-things-work/


Article: Bosses Are Clueless That Workers Are Miserable and Looking to Leave

Microsoft’s annual Work Trend Index for 2021 shows that more than 2 out of 5 of all workers among 30,000 surveyed from 31 countries are considering leaving their current positions, most due to burnout. Moreover, younger workers, who tend to have less well-developed personal support structures, report greater incidences of feelings of isolation due to more working from home during the COVID-19 pandemic, which comports with reporting by The Economist.

http://bloomberg.com/news/articles/2021-03-22/bosses-are-clueless-that-workers-are-miserable-and-looking-to-leave


Article: When Should I Interrupt Someone?

We all know the feeling: You’re stuck on a problem, but you don’t know if you should ask someone else for help. This author uses the rule of thumb that if you’ve been stuck for more than an hour, then you should ask for help. But it comes with some conditions, such as documenting everything that you’ve already tried and assessing how long it will take to explain the situation. He even provides a handy spreadsheet for calculating the cost/benefit.

https://zwischenzugs.com/2021/03/15/when-should-i-interrupt-someone/


Article: Your Addiction to Outrage is Ruining Your Life

I generally stay away from subjects like this in the newsletter, but this topic really resonated with me and I believe it’s one that bears spending time on. Moreover, I spent many years being angry myself and certainly damaged plenty of relationships in the process. For that, I’m profoundly sorry for the hurt that I caused. We all get frustrated and angry from time to time, but it seems that outrage has become a way of life for so many. This must stop. We must treat each other respect, dignity, compassion, and love. We should be moved by things that are wrong in our world, like injustice, poverty, inequality, and the like, but we should moved in our hearts toward action to change them, not to anger and hate for others. Remember Martin Luther King, Jr.’s dictum: "Darkness cannot drive out darkness, only light can do that. Hate cannot drive out hate, only love can do that." Read this article with that in mind and think about how to lead with love.

https://medium.com/the-bad-influence/your-addiction-to-outrage-is-ruining-your-life-9effebdfeaca


Return to top


PLOM (Programing Language of the Month)


Haxe

Haxe is a mature, statically-typed, cross-platform, object-oriented programming language that can be used for both client-side and server programming. Originally developed as an open-source compiler targeting Flash, it now targets a variety of platforms, including JavaScript, Java, JVM, Python, PHP, C#, C++, and more. Syntactically similar to Java and C#, it will be familiar and comfortable for most programmers with experience with a modern OOP language. Both VS Code and IntelliJ IDEA have strong support for Haxe language via well-supported extensions. The Haxe web site has an online REPL where you try out the language to get a feel for it.

https://haxe.org/


Return to top


Useful Utilities


rr (Free – Linux – 1.38MB)

If you program in C/C++ on Linux, you probably have lots of experience with GDB, the GNU Debugger. This tool provides many great enhancements to GDB to improve your experience. It goes well beyond the typical "time-traveling" debugger to allow you to record the execution of your code and then deterministically debug by replaying that execution. You can even execute instructions in reverse! The tool was developed by Firefox team at Mozilla, so it has lots of experience behind it.

https://rr-project.org/


Quick Spreadsheet (Free – Cross-platform – 457kB)

Quick Spreadsheet is a Chrome extension that adds a basic spreadsheet to the new tab in Chrome. This makes it handy for doing quick calculations or as a simple notepad and best of all it works offline. Multiple worksheets are supported and you can export to Excel or CSV.

https://chrome.google.com/webstore/detail/quick-spreadsheet/akcjblpfcnfknlafiedflockhcibkdcm


Outrun (Free – Linux/Python – 30kB)

Outrun is a small Python utility that allows you to run any local command using the computing command of a remote machine, even if the application is not installed on the remote machine. All you need is SSH access to remote machine, root/sudo access on remote machine (because it uses chroot), and FUSE file system extension. It works its magic by optimized caching and prefetching of application and shared library files from the local machine on the remote.

https://github.com/Overv/outrun


Yori (Free – Windows XP/7/8.x/10 – 60kB)

Yori is a drop-in replacement for the standard Windows Command Prompt that adds a plethora of great features including support for backquotes, job control, improved tab completion, file matching, aliases, command history, and more. It even includes a work-alike replacement for the venerable edit.com text editor called Yedit.

http://www.malsmith.net/yori/


SQLite Viewer (Free – Cross-platform/Online tool – N/A)

This handy online tool allows you to drag and drop any local SQLite database file or open online instances, as well, and view and query the contents in tabular interface. And don’t worry about security, because even though it’s online, it uses completely client-side JavaScript to work it’s magic and, since it’s open-source, you can check it out just to be sure.

https://inloop.github.io/sqlite-viewer/


Return to top


Just For Fun


Spaceprob.es

The recent landing of the Perseverance rover on Mars renewed interest among the general public in space exploration. But just how many probes are already out there poking around the solar system and beyond? This site will give you basic details, including distance from earth, launch date, and key mission data, plus links to other resources.

https://spaceprob.es/


Low Earth Orbit Visualization

For a look at space a little closer to home, check out this real-time visualize of the 18,000+ (wow!) man-made objects in low-earth orbit around us. They even have a catalog, so you search for your favorite satellite, as well as a Python-based command-line interface and a REST API. Truly a space-fan developer's dream!

https://platform.leolabs.space/visualization


See a Satellite Tonight

Maybe you just want to know when you have a good chance of seeing the International Space Station (ISS) passing by. For that, check out this site. It uses your location to tell you the best time look for it and then gives you a perspective visualization so you’ll know right where to look. It even takes the weather into account.

https://james.darpinian.com/satellites/


The Sweden Solar System

The Sweden Solar System is the largest scale model of our planetary system on Earth with a scale of 1:20 million. The Sun and inner planets are situated in Stockholm with the remainder of the solar system distributed in other places around Sweden.

http://www.swedensolarsystem.se/en/


Photographer Spends 12 Years, 1250 Hours, Exposing Photo of Milky Way

This newsletter is a labor of love for me. In the same vein, a single photograph of our galaxy is a labor of love 12 years in the making for a Swedish astrophotographer. Learn about his work and the take a peak at the stunningly beautiful result.

https://petapixel.com/2021/03/16/photographer-spends-12-years-1250-hours-exposing-photo-of-milky-way/

https://astroanarchy.blogspot.com/2021/03/gigapixel-mosaic-of-milky-way-1250.html


ISS Traffic

Ever wondered what’s docked at the International Space Station (ISS)? Well, actually, I hadn’t really thought about it either, but it’s rather interesting when viewed at this site. I learned about the S.S. Katherine Johnson spacecraft, named in honor of the pioneer in space flight work, currently docked there. Plus, you can see the current position of the ISS and the list of crew.

https://www.supercluster.com/iss


Return to top