David Inman

Recent Articles

Code Analysis: Mutable State

Mutable state gets a bad rap when you talk to pure functional programmers.  I don’t think mutable state is inherently a problem, but it does have an effect on your ability to understand a program.  So let’s look at what happens when you introduce a mutable reference into a programming language. The problem as I […]
Read Full Post

Code Analysis: Halting Problem

Let’s do a quick digression.  I wanted to talk about mutable state, but first I think we should consider the halting problem. The halting problem goes something like this: Halt( program_source, program_input ) { if ( <The program Halts with that input> ) return true; else return false; } // Now assume a hypothetical program […]
Read Full Post

Code Analysis: Introduction

There already exists a significant amount of code analysis techniques out there.  I think the existing technologies are pretty useful for tracking some aspects of why a given piece of code can be difficult to deal with.  However, I want to add a diagram technique that can be used to describe certain features in programming […]
Read Full Post

Problem Analysis: Overlapping Blobs

Last time we started to explore the idea that you can have a system or problem that is difficult to deal with and understand because the interactions between blobs are in some way difficult.  However, we only covered the idea that the arrows that connect blobs are complicated.  There is a similar problem when we […]
Read Full Post

Problem Analysis: System Complexity

The last post talked about aspects about arrows that could make a problem difficult to deal with.  Now I’m going to talk about how a collection of arrows might make a problem difficult to deal with. The complexity and difficulty of a system isn’t just going to be determined by the aspects of the blobs […]
Read Full Post

Problem Analysis: Continuous Functions

The last blog was the final entry talking about the aspects of blobs that cause problems to be difficult.  Now, we’re going to talk about the aspects of arrows (III) that cause problems to be difficult. Continuous functions are a familiar concept to those who have taken calculus before.  With the diagrams we’ve been using, the […]
Read Full Post

Problem Analysis: Path Connected

Last time we talked about blobs that have holes in them.  This time lets talk about how we might deal with a blob that is hard to deal with because the valid points in it are hard to conceptualize (either because the blob has a lot of holes or for some other reason). In topology […]
Read Full Post

Problem Analysis: Topological Holes

Our previous posts were talking about the aspects of our blobs (**I **and II).  Now we’re going to transition to talking about the aspects of the contents inside of our blobs that indicate a problem that is more difficult to deal with. Consider a method that takes an integer as input, but that will only behave reasonably if […]
Read Full Post

Problem Analysis: High Dimensional Spaces

Previously we were discussing our how you probably want your valid input blob to be a metric space.  Let’s move on to another aspect that can make a problem difficult to work with.  This can apply to either the valid input blob (I) or the output blob (II).  We want our blobs to be low dimensional […]
Read Full Post