Michael Jablonski

July 30, 2021

Stuxnet

The Stuxnet worm that infected and damaged centrifuges in Iran is fascinating. It was a program of the highest quality. It was certainly designed and coded by the most skilled team of software engineers and programmers. Stuxnet also raises ethical questions about cyber warfare. Here are two fascinating articles about Stuxnet. The first...
Read more
July 27, 2021

PSEM

I am pleased to announce that I have been recertified as a Professional Software Engineering Master (PSEM) by the IEEE Computer Society. I was first certified a Computer Software Development Professional (CSDP) by the Computer Society in 2003. Every three years I have recertified. In 2015 the Computer Society replaced the CSDP certific...
Read more
July 23, 2021

Truth Tables

In the past weeks I have done some reading about formal software design methods, which I understand are used in safety-critical systems. The IEEE Computer Society’s guide to the “Software Engineering Body of Knowledge” says, “Formal design analysis uses mathematical models that allow designers to predicate the behavior and validate the...
Read more
July 16, 2021

A Retrospective by C.A.R. Hoare

In my reading travels when I see an article by C.A.R. Hoare I read it carefully. Mr. Hoare invented the Quicksort algorithm, one among many great accomplishments over his career since 1969. Below is a link to an article he wrote in 2009, discussing computer programming 40 years after writing his first academic paper. In this article he...
Read more
July 14, 2021

Formal Software Design Methods

My last two entries were about Agile Software Design. Would Agile Software Design be appropriate for designing safety-critical systems, such as firmware in medical devices, software for automated railroads, or spacecraft navigation? I do not think so. This is where Formal Software Design Methods are used. One expert in Formal Methods s...
Read more
July 8, 2021

Before Agile Software Design

My start as a professional programmer was in the mid-80s when I was hired as a programmer at a small digital design company. I worked there for seven years and learned much about software design and digital systems. My first job assignment was to write a user’s manual for a proposed computer program, part of a complex hardware/software...
Read more
July 6, 2021

Agile Software Design

A friend of mine, an electrical engineer, and I often talk about software design when we go skiing. He is a skeptic about Agile Software Design, calling it “software design by trial and error.” I share his criticism. Yesterday I took a two-hour LinkedIn Learning class on Agile Software Design. It was an introduction only. My first impr...
Read more
June 18, 2021

Cartography and Software Design

In the early days of the American Civil War the confederate general Andrew Jackson summoned Jedediah Hotchkiss, a cartographer, to make a map of the Virginia’s Shenandoah Valley. One requirement was for the map to show “… all points of offense and defense.” Hotchkiss made a detailed map, which Jackson used to confound the Union forces,...
Read more
June 15, 2021

SWEBOK

The Institute of Electrical and Electronics Engineers’ (IEEE) Computer Society has produced and maintains a document called “SWEBOK, Guide to the Software Engineering Body of Knowledge.” SWEBOK provides topical access to the published literature on software engineering. It is a resource with immense value. SWEBOK begins with this defin...
Read more
June 10, 2021

Antecedent and Consequent

All computer programmers understand the if (this) then (that) logic. This is essential and universal. I am taking a class in argumentation and reasoning to better apply logic and reason about a local zoning issue to my City Council. In the class I learned two terms: antecedent and consequent. The “this” in if (this) then (that) is call...
Read more
June 8, 2021

Obfuscated C Code

Software Engineering is about the analysis, design, coding, documentation, and testing of software to produce, as the historian Barbara Tuchman said in her classic essay on quality, “… the finest and most admirable result possible.” One important goal of software design is to produce code that other programmers, including your future s...
Read more
June 3, 2021

Space Shuttle Software

In my reading travels I came across this article, dated 12-31-1996, about the space shuttle software. Here is a quote from the article to capture your interest. “As the 120-ton space shuttle sits surrounded by almost 4 million pounds of rocket fuel, exhaling noxious fumes, visibly impatient to defy gravity, its on-board computers take ...
Read more
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

See more posts »