Software development is complicated and often counter-intuitive. Good software developers are always learning. Oftentimes, writing an article will solidify your knowledge of a topic. We publish informative articles about custom software development to help educate our clients and future clients.

  • Deploying HIPAA-Compliant Software

    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

    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

    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

    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

    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

    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

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

  • The Story of PIH Part I: The Problem

    The story behind a programming tool one of Innolitic's member's developed in their free time: The Python Import Helper, or PIH, is a tool to help python programmers work more quickly. Part I provides background to the problem, discusses alternative tools, and then outlines an API for the tool. In this series of posts, I describe how I wrote a command line tool for refactoring Python code. This first post focuses on my initial research and subsequent definition of the problem.

  • Advanced BASH Exercises

    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

    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

    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

    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.

We publish technical articles and coding case studies about topics we run into in the field.  

We publish technical articles and coding case studies about topics we run into in the field.