Category Archives: Software Quality

Experts criticize ICL’s Ferguson’s Covid SIM model as garbage

Those of us who have seen Neil Ferguson’s ICL Covid sim model have the same views as this computational epidemiologist:

As Ferguson himself admits, the code was written 13 years ago, to model an influenza pandemic. This raises multiple questions: other than Ferguson’s reputation, what did the British government have at its disposal to assess the model and its implementation? How was the model validated, and what safeguards were implemented to ensure that it was correctly applied? The recent release of an improved version of the source code does not paint a favorable picture. The code is a tangled mess of undocumented steps, with no discernible overall structure. Even experienced developers would have to make a serious effort to understand it.

I’m a virologist, and modelling complex processes is part of my day-to-day work. It’s not uncommon to see long and complex code for predicting the movement of an infection in a population, but tools exist to structure and document code properly. The Imperial College effort suggests an incumbency effect: with their outstanding reputations, the college and Ferguson possessed an authority based solely on their own authority. The code on which they based their predictions would not pass a cursory review by a Ph.D. committee in computational epidemiology.

Source: Britain’s Hard Lesson About Blind Trust in Scientific Authorities

Continue reading Experts criticize ICL’s Ferguson’s Covid SIM model as garbage

Software: Why hiring professional software engineers might have been a good idea #IowaCaucus

Oh my:

It wasn’t so much that the new app that the Iowa Democratic Party had planned to use to report its caucus results didn’t work. It was that people were struggling to even log in or download it in the first place. After all, there had never been any app-specific training for his many precinct chairs.

No training? This points to a lack of common sense and systems analysis at the start of the project. How was this missed?

Further, they likely had not created use cases, which would have caught the next set of failures.

So last Thursday Mr. Bagniewski, the chairman of the Democratic Party in Polk County, Iowa’s most populous, decided to scrap the app entirely, instructing his precinct chairs to simply call in the caucus results as they had always done.

The only problem was, when the time came during Monday’s caucuses, those precinct chairs could not connect with party leaders via phone. Mr. Bagniewski instructed his executive director to take pictures of the results with her smartphone and drive over to the Iowa Democratic Party headquarters to deliver them in person. She was turned away without explanation, he said.

Source: ‘A Systemwide Disaster’: How the Iowa Caucuses Melted Down – DNyuz

I live in the state that featured Cover Oregon[1], a $450 million health exchange that never enrolled a single individual subscriber. It was a complete failure. Healthcare.gov received most of the media attention concerning large government failed software projects but several state projects also failed.

Both health exchange fiascos – and the Iowa Caucus disaster – point to over reliance on software and an assumption that more tech is always better. Tech can make things better, but only when qualified people are involved in all aspects of the project.

Update – my guess was correct says the NY Times:

Shadow was also handicapped by its own lack of coding know-how, according to people familiar with the company. Few of its employees had worked on major tech projects, and many of its engineers were relatively inexperienced.

Only 25% of precinct  chairs were able to successfully install the app. Colossal failure. The system relied, in part, on “security by obscurity”, which never works.

Update: “They” have quite a history with  failed software development. The Associated Press said it could not name a winner of the Iowa Democratic Party Caucuses.

Continue reading Software: Why hiring professional software engineers might have been a good idea #IowaCaucus

A call for a code of tech ethics?

Facebook and the like need to craft a professional code of ethics for the technology industry.

Source: A Facebook request: Write a code of tech ethics – Los Angeles Times

Where this is headed, naturally, is the concept of licensed professional engineers (P.E.) in software engineering. Development of a professional engineering licensing exam for software engineering was done many years ago. I believe Texas was the only state to offer the exam; however, due to low participation, they are discontinuing the software engineering PE exam as of April 2019.

Top programming languages as of December 2016 

  • Java
  • C (but popularity has fallen by half year over year)
  • C++
  • Python
  • Visual Basic .NET
  • PHP
  • Javascript
  • Assembly language
  • Perl
  • Objective-C
  • Ruby
  • Swift
  • Visual Basic
  • Delphi/Object Pascal
  • Go
  • R
  • MATLAB

Main take aways from this list:

Java, C/C++, Python, Visual Basic .Net, C#, PHP and JavaScript are the top programming languages.

Java, however, rates twice as high as C, which is higher than C++. Notably Python has risen to 4th place on the list, and assembly language makes it in to the top 10 at #9.

C and C++, and assembly language, are the languages of the Internet of Things devices (other languages are used too).

SourcE: Tiobe Index

US GAO’s full report on HealthCare.gov management failures

Here is the full report: Ineffective Planning and Oversight Practices Underscore the Need for Improved Contract Management (PDF)

I do not have time to read it just now but look forward to going over it later as a lesson in software engineering practices.

Cover Oregon software failed due to “ideological blindness” to the organization and management failures

Cover Oregon ran Oregon’s failed online health insurance market; it never enrolled a private individual and is being abandoned in a shift to the Federal HealthCare.gov web service.

The system never worked but insiders refused to believe what they were seeing because a “true believer mentality won out”.

This mind set is common in too many software projects with thoughts like “its just a few problems and will work fine once we get through this”, “we will make up the lost time later”, “the defects are not that serious-they are fixable”, “we can just drop a few features”.

Though the beta site was limited to insurance agents and certified consumer assisters, exchange managers — not unexpectedly — encountered bugs. “On Day 1, agents couldn’t even log in,” Jovick said.

It was the reaction from certain other people in the room that was disturbing.

Troubleshooters for Oracle, the project’s lead vendor, “were flabbergasted” and completely stumped by how the system was malfunctioning, Jovick recalled. Rather than knowing who to call to get problems fixed, Oracle’s reaction was “Huh? How did that happen?'”At that point, no one realized Oregon and Oracle had built “this absolute disaster that just didn’t do anything,” Jovick said.

via Cover Oregon insider Tom Jovick speaks: Health exchange problems stumped Oracle, blindsided staff video | OregonLive.com.

The management team ignored the warnings of many consultants who found “lousy code”, poor testing, lack of test environments, and more.  They were true believers in the ideals of the project and were blinded to what was in front of them.

Oregon ended up enrolling people by hand using paper applications. They lost 20,000 applications and enrolled 4,500 “non documented” immigrants (formerly known as illegal aliens) who did not qualify.

There is a potential that the  Cover Oregon organization be shut down and the staff laid off  (Update: Cover Oregon was shut down after spending about $450 million and never enabling a single consumer to enroll online). From a traditional business perspective, it seems they made need an entirely new organization that is not carrying “emotional baggage”, which is unfortunate for the staff. From a marketing perspective the “Cover Oregon” brand is irreparably damaged and should be replaced.

Enhanced by Zemanta

Developing Android apps using App Inventor 2

Front Page | Explore MIT App Inventor.

App Inventor is perhaps the fastest and easiest way to develop custom Android applications. App Inventor uses a graphical programming model in a cloud-based development system. Sounds complicated, but its not at all. It’s easy.

App Inventor 2 is a significant update to version 1.

Application user interfaces are constructed using a WYSIWYG drag and drop style interface (similar to many such UI designers). Components are added, properties are edited.

Switch to the “Blocks” view and behaviors are attached to events by assembling program blocks that look like this:

TextAppBlocks

 

Use of App Inventor 2 is presently free (its run by MIT) and uses a Google account for log in. Apps under development can be run in an emulator on your computer, or loaded into your actual Android phone using a Wi-Fi link, a USB connection, downloaded from a web site URL, or download the .apk file to your computer for transfer to your Android phone (USB or email it to your phone).

App Inventor was originally started by Google. MIT later took the project over and has made some very nice improvements to the original.

Can you do everything you would want to do in an app? No, but it is pretty amazing how much you can do in App Inventor. In some cases,  you could implement much of your app in App Inventor, and then special custom code that cannot be done can be written as a separate activity. Your App Inventor code can then launch your code to perform the required functions.

Enhanced by Zemanta

The difference between software engineering and computer science

Computing Now | Putting the Engineering into Software Engineering Education.

(I have an undergrad degree in computer science and one of my graduate degrees is in software engineering. They are related but not the same thing. Legally, however, it is generally against the law in many states for anyone to call themselves a software engineer unless they are a licensed Professional Engineer – or they work for a company and their state permits an industrial exemption for titles given to internal employees. The first PE exam for software engineering is to be offered in April of 2013; licensure in most states may require passing the Fundamentals of Engineering exam covering topics such as chemistry, physics, mathematics, structures and what not.)

Enhanced by Zemanta