David Inman

Recent Articles

Problem Analysis: Blob Structure Examples

The previous blog post gave us our first aspect to look for in a problem, meaningful structure in our valid input blob.  Let’s look at some concrete examples. The important thing about a metric space is that you are able to create some sort of distance function.  However, this isn’t the only thing that we are […]
Read More

Problem Analysis:  Blob Structure

The previous blog was just an introduction to the problem analysis technique that I want to talk about.  And to review, the definition of problem that I’m going with is:  Aspects of a situation that makes understanding its behavior difficult.  This blog entry is going to talk about the first aspect of a situation that […]
Read More

Problem Analysis: Introduction

Before we can measure how difficult a code base is for software engineers to work with, we have to also have a method to measure how difficult problems are for people to work with.  This gets a little bit difficult because the idea of a “problem” can get very philosophical and we want something a […]
Read More

Objective Code Quality Blog Series

I’m proposing a method for tracking how difficult it is for software engineers to work with code.  Preexisting methods such as code smells, cyclomatic complexity, best practices, test coverage, etc seem to work okay for a course grained approach for determining how difficult a code base may be to work with, but I don’t feel […]
Read More

The Future is Optional

Matt Swanson made a post[1] on his blog concerning the Optional type[2]. I think it’s pretty good; go ahead and read it. The gist is that the Optional type allows a programer to communicate the intent behind a parameter in a function. A function utilizing an optionally typed parameter is telling any consumers of that […]
Read More

Recursive Breadth-first Traversal

One of my coworkers [1] brought to my attention an interesting problem. What’s the best way to run a breadth-first traversal on a tree data structure using recursion?  He already had an initial algorithm working correctly, but it had some unfortunate characteristics that made it less than ideal.  I haven’t dealt directly with the plethora […]
Read More

Monadic Complexity Resolutions

Matt Sheehe wrote a great blog post [1] where he brought up a fantastic idea.  Instead of making code more complex than it has to be, send a message to an administrator.  This solution belongs in a real special class of solutions that are invaluable to not just software engineers but problem solvers in general.  […]
Read More

Monadic Parsing

I’ve spent a nontrivial part of my time at SEP working on projects that needed to do low level communication with some sort of remote device.  Thankfully, the trend for remote device communication is going in the direction of Bluetooth and USB, so we can leverage existing libraries and OS facilities to handle low level […]
Read More

Lambda Calculus

So I wrote a lengthy blog post about functional programming [1] and in it I have a segment where I praise lambda calculus as the best thing ever [2], link a couple of books, and leave you to your own devices.  One of the nice things about lambda calculus (elaborated upon below) is that it […]
Read More