David Inman

Total 28 Posts

Best Reasons for Learning F#

Unit Measurement TypesThe Mars Climate Orbiter met an unfortunate fate in 1999 when it unintentionally crashed into the surface of Mars. The cause? Misinterpreting the unit of measurement. This is hardly an isolated incident. Many software projects of non-trivial size struggle with a good solution for dealing with the cognitive

Code Analysis: Methods

We’ve already gone through a lot of different programming language constructs, however we haven’t really talked about a very highly used feature.  How do we think about methods using these diagrams. So there’s a lot we could talk about methods in general, but I want to avoid

Code Analysis: Exceptions

void Function() { try { RunOtherFunction(); } catch { Log.Error( "Problem" ); } } void RunOtherFunction() { if ( a_okay() ) { OtherFunction(); } else { throw new Exception( "Error" ); } } Exceptions are a thing that we tend to use for signaling error conditions such that the error will be dealt with in some other location besides the

Code Analysis: Global State

Global mutable state by itself can make a program harder to work with because instead of  having a call tree that’s simply a tree structure, you end up with more of a graph structure.  Any given point in the program that interacts with the global state can be effected

Code Analysis: Abstract Data Type

Abstract data types are a pretty well known concept in computer science and software engineering.  The concept is pretty simple.  If you have something that is complicated, then you can make it easier to deal with by only exposing an API that allows you to safely interact with the complicated