Articles

Software development and medical imaging articles from Innolitics.

Most Makefiles Should .DELETE_ON_ERROR

June 30, 2019

Make has been used extensively for forty years and offers incremental builds, parallelization, and a declarative syntax. In this post we’ll take a look at how the .DELETE_ON_ERROR special target helps eliminate possible downstream problems in your makefiles. You’ll also come to understand why most makefiles should include it.

Building a CT Slice Localizer With Keras

May 21, 2019

Experienced radiologists can identify the anatomical location of an axial CT slice within a second. They may say the slice is “near the apex of the heart” or “at the C7 vertebrae.” These anatomical landmarks are difficult to describe or detect using manually created features, but neural networks excel at this sort of pattern recognition. Can we create a neural network capable of performing slice localization with similar speed and accuracy to a radiologist?

Deploying HIPAA-Compliant Software

June 07, 2018

We provide an overview of different deployment strategies for HIPAA-Compliant software, including the advantages and disadvantages of each approach.

Visualizing an Image Classification Model

February 05, 2018

If you followed along with our last post, we developed a deep-learning model that achieves our goal of identifying Simpsons characters in an image. However, as with all software development tasks, getting a working program is only half the battle. In order to maintain a program and fix bugs, the developer must understand the system– in particular, they must understand how it fails as well as how it succeeds. This can be quite a difficult task for deep-learning models, as they are black-boxes by nature of their construction. However, there are some techniques we have at our disposal to open up the black box and get a view into what is happening in our trained model; these can help us to find “bugs” in the model’s learning and even indicate how to resolve them. Among the many techniques to visualize the internals of a deep learning model, we will be focusing on the use of class activation maps.

Building an Image Classifier Using Pretrained Models With Keras

February 05, 2018

Deep-learning models are ideal candidates for building image classification systems. In this article, we demonstrate how to leverage Keras and pre-trained image recognition models to create an image classifier that identifies different Simpsons characters.

Graduate from Sed and Sort to Lnav, the Logfile Navigator

March 11, 2017

Many medical imaging applications run within a closed network. This arrangement can make investigating software bugs more difficult because the only readily available information is an (often vague and incomplete) recounting of the problem, a zip file filled with system and application logfiles, and the application source code.

DICOM: The Purpose of the Standard

August 04, 2016

DICOM is a file format and a networking protocol, but more importantly it is a standardized model of reality. This article gives a high level view of the standard and its purpose.

Commentary on Code Complete: Refactoring

June 08, 2016

Refactoring a codebase means changing its internal structure without altering its observable behaviour. Refactoring is an essential tool for keeping an evolving codebase maintainable. This article is a commentary on a book chapter about refactoring code—Chapter 24 of Code Complete.

Decorating Async JavaScript Functions

April 04, 2016

In this article, we explore how to extend async JavaScript functions using a functional design pattern—the decorator.

Advanced BASH Exercises

January 01, 2016

In this post, we provide a set of exercises that should help you solidify your knowledge of BASH. Note that these are NOT introductory level questions, and they assume that you are starting with a working knowledge of Linux and BASH.

Software's Hidden Demon: Poor Code Quality

November 30, 2015

Poor code quality can be an extremely expensive problem to fix. This article describes what code quality is, why its important, and how to handle issues related to it.

Database Pools

October 27, 2015

Developers often don’t think about database connection pools until they are having connection problems. This article explains the purpose of connection pools, how they work, and how to tune them, while remaining agnostic to a particular implementation. It also discusses other types of object pools.

The Business of Programming Languages

June 15, 2015

Picking the right programming language for a project can be an important business decision, and making the wrong choice is usually expensive. After reading this, you should have enough background to have an informed conversation with your development team.