Michael Jablonski

May 31, 2021

An Interesting Algorithm

I once had a need to generate seemingly random floating-point numbers in a C program running on the Texas Instruments MPS430 microcontroller. I had insufficient resources in the MSP430 to include the C math library, so I had to come up with a way to generate the numbers by moving bits around. I found an interesting algorithm to solve t...
Read more
May 25, 2021

Universal Windows Platform Applications

A Universal Windows Platform (UWP) program is a Windows 10 Store application. Here is how Microsoft describes UWPs: “A UWP app is: • Secure: UWP apps declare which device resources and data they access. The user must authorize that access. • Able to use a common API on all devices that run Windows 10. • Able to use device specific capa...
Read more
May 20, 2021

Without Grace and Style

In my last entry, I added a quote in my book review of “Clean Code,” about handing exceptions with “grace and style.” Not all programs handle errors well, including best-selling and useful programs produced by companies known for products of the highest quality. I am currently using ArcGIS Online, in concert with Collector for ArcGIS, ...
Read more
May 18, 2021

"Clean Code: A Handbook of Agile Software Craftsmanship," by Robert Martin

Here is a book review that I wrote about "Clean Code: A Handbook of Agile Software Craftsmanship," by Robert Martin. Reading Clean Code and following its advice will make you a better computer programmer. Applying the programming techniques described in Clean Code to your work is like stripping layers of paint from fine woodwork in an ...
Read more
May 13, 2021

Algorithms

Algorithms are central to computer science. But where did the word algorithm come from? The word algorithm comes from a 9th century author named Al-Kharizimi, a great mathematician. Al-Kharizimi wrote a book about balancing equations, using a step-by-step approach. His contributions to the world are immense. Al-Kharizimi’s name is the ...
Read more
May 11, 2021

Letter Perfect

This is my third entry about Ingenuity, the helicopter on Mars, because I am fascinated by it. I would love to be on the team that designed, coded, and tested Ingenuity’s software. NASA has described the mission to fly Ingenuity as Letter Perfect. The mission was to be a success if they had a single successful flight. Ingenuity has now...
Read more
May 4, 2021

Usability Testing

My last entry on this blog mentioned going on a road trip using Android Auto, a smart phone application, navigating to my destination. Android Auto frustrated me terribly when I needed it the most, driving through heavy traffic, in Seattle, an unfamiliar city, during rush hour. I had used the program, more or less successfully, to get ...
Read more
April 29, 2021

How to Tell Someone Where You Are If You Are Lost In The Woods With a Cell Phone

I am going on a road trip in a car with USB connectors and Bluetooth. I will listen to an audio book while on the road. To get my listening material ready I learned about, and installed, the program called Android Auto on my cell phone. This program, as I understand it, does these three things, maybe more: 1. It will give you direction...
Read more
April 27, 2021

Software Validation as Opposed to Software Verification

The difference between software validation and software verification is confusing because the words look and sound the same. They are not, however, synonymous. Validation determines if the as-built software does what it is supposed to do, as specified by its requirements document. Verification determines if a software product satisfies...
Read more
April 22, 2021

Sometimes It's Better to Subtract

I read an interesting article in the Washington Post, “We instinctively add on new features and fixes. Why don’t we subtract instead?” The article describes research by behavioral scientists showing that most people tend to add things, rather than removing things, when trying to improve something. For example, adding three Lego pieces ...
Read more
April 20, 2021

"Dare Mighty Things" National Aeronautics and Space Administration (NASA)

Ingenuity, the tiny helicopter on Mars, made its maiden flight on April 19. There is nothing I can write that describes this better than NASA. Read the details, and see the photos, here: https://mars.nasa.gov/news/8923/nasas-ingenuity-mars-helicopter-succeeds-in-historic-first-flight/
Read more
April 15, 2021

Programming Advice from 1981

On my first programming job in the 80’s I came across this advice: “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.” “The first method is far more difficult. It demands t...
Read more
April 13, 2021

Ingenuity

This blog is about software design, computer programming, and digital systems. The most interesting system to pay attention to at present is Ingenuity, the tiny helicopter on Mars. NASA is getting ready for Ingenuity’s maiden flight, a rise of about 10 feet, then landing. Its first flight has been delayed because a watchdog timer in In...
Read more
April 8, 2021

Some Things Do Not Change

In the 80’s I worked at a digital design engineering firm, as a computer programmer for seven years, when the Digital Equipment Corporation (DEC) was a giant in computers, employing over 120,000 people. DEC was famous for the VAX computer, a main frame computer on which I wrote my first program. One job I did at the engineering firm wa...
Read more
April 6, 2021

Saving Lives with Noise Canceling Hardware and Software

In 2015, approximately six million children died before the age of five of pneumonia, the leading cause of death in sub-Saharan Africa. A diagnosis of pneumonia can be made by a skilled doctor using a traditional stethoscope in a quiet room in a modern hospital or clinic. Quiet is needed when listening with a stethoscope. Quiet clinics...
Read more
March 30, 2021

An Example of a Software Problem Resulting in Loss of Life

During the final days of hostilities in the first Gulf War, on February 25, 1991, an Iraqi Scud missile killed 28 American service men and women. The war ended on February 28, 1991. The Patriot missile system, until then, had a good track record of intercepting slow moving, incoming Scud missiles. Tragically, an inaccurate time calcula...
Read more
March 25, 2021

Quality

Software quality is a broad topic. I will add future posts about software quality, but I will start with this quote from Barbara Tuchman, a historian. Her definition of quality certainly applies to computer programming. “Quality, As I understand it, means investment of the best skill and effort possible to produce the finest and most a...
Read more
March 23, 2021

IEEE Floating Point Numbers

“Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk” Translation: “God made natural numbers; all else is the work of man. “ Leopold Kronecker, German Mathematician Some of the software I have worked on over the years declare no real numbers, meeting the requirements with unsigned integers only. I like integers ...
Read more
March 18, 2021

Commented-Out Code

Over the years I have accepted contracts to modify existing computer programs to add new features. In all of them, without exception, I found lots of commented-out code in the source code. The commented-out code was no help. Keeping commented-out code is a bad practice. “Clean Code, A Handbook of Agile Software Craftsmanship,” by Rober...
Read more
March 16, 2021

Software Engineering Code of Ethics

The Institute of Electrical and Electronics Engineers' (IEEE) Computer Society has a Software Engineering Code of Ethics. I think the IEEE Code of Ethics is excellent, providing essential principles and guidelines. The first principle in their Code is, "Software engineers shall act consistently with the public interest." You can read t...
Read more
March 11, 2021

A Letter to the Editor from 1968

In 1968 Edgar Dijkstra wrote a letter to the editor to Association for Computing Machinery (AMC) about the go to statement in computer programs, titled “Go To Statement Considered Harmful.” He said: “For a number of years I have been I have been familiar with the observation that the quality of programmers is a decreasing function of t...
Read more
March 9, 2021

How To Ask Questions

Design reviews, which can take many forms, are needed in the design of complex systems. A design review provides you, or your team, with a critique by other programmers or engineers. When you are asking the questions in a design review, follow the advice found in “Practical Reliability Engineering,” by Patrick D.T. O’Connor and Andre K...
Read more
March 7, 2021

Opportunity

Opportunity, a rover NASA landed on Mars in 2004, is an example of excellence. NASA declared Opportunity’s mission complete on February 12, 2019. After Opportunity’s watch ended, the Salt Lake City Tribune reported, “Engineered to last only three months, Oppy persevered for nearly 15 years and traveled over 28 miles, working longer and...
Read more
March 6, 2021

Entry Number One

My name is Michael Jablonski and I have been designing and coding software, professionally, since 1982. Over the years I have worked with terrible software, exceptional software, and everything in-between. In this blog I will share snippets about software and digital systems, good and bad, that I think are interesting. My plan is to ad...
Read more