Technical Articles

Good software developers are always learning. Oftentimes, writing an article will solidify your knowledge of a topic. We publish some of these articles in our 10x zone; most of them are technical in nature and are geared towards developers.

  • 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

    At Innolitics, we work in a wide variety of medical imaging contexts. Often in our work with clients, we find that a decision has to be made based on information encoded in an image or set of images. Depending on the type of information we need, extracting meaning can be quite a difficult task to automate. One instance where this happens frequently is in image classification. For example, if a computer is given a picture of an animal, can it tell if the picture is of a dog, cat, or bird? Although such a classification is trivial for a human, an algorithmic approach can be hard to define. This problem occurs frequently in medical contexts– instead of identifying animals, we can be identifying grid intersections in MRI phantoms or distinguishing between different types of skin cancers. Classification algorithms have traditionally relied upon carefully hand-crafted features to identify images in such a manner. Thanks to advances in computational hardware and the explosion of available digitized data, however, we now have another option: we can train a deep neural network.

  • 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.

  • Commentary on Code Complete: Refactoring

    Every week we choose a book chapter, article, or video about software development. Everyone reads or views the material independently, and then Friday afternoon we discuss and debate its contents. This article was derived from one of these discussions.

  • 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

    One of the things I love about being a computer programmer, is that usually when something becomes boring or tedious, you can automate or abstract it. This is because the same qualities that make a task boring make it easy to automate or abstract. There are many examples of this in the software world:

  • Advanced BASH Exercises

    BASH is the most widely-used and widely-supported shell for Linux. There are other shells that are better than BASH in various ways, but we feel that none of these other shells are better enough to warrant replacing BASH as the de-facto standard when writing shell scripts. BASH is installed by default on almost all Unix-based operating systems, and the majority of the world’s shell scripts are written in BASH. For this reason, we suggest that all of our developers learn BASH.

  • 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.

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.