Blog Archives

Patches and specs

From Leslie Lamport: Every time code is patched, it becomes a little uglier, harder to understand, harder to maintain, bugs get introduced. If you don’t start with a spec, every piece of code you write is a patch. Which means

Tagged with:
Posted in Software development

Making definitions

“The essential virtue of category theory is as a discipline for making definitions, and making definitions is the programmer’s main task in life.” From Computational Category Theory  

Tagged with: ,
Posted in Math, Software development

Don’t be a technical masochist

There’s an old joke from Henny Youngman: I told the doctor I broke my leg in two places. He told me to quit going to those places. Sometimes tech choices are that easy: if something is too hard, stop doing

Tagged with:
Posted in Software development

Monads are hard because …

Here’s a nice quip from Luke Gorrie on Twitter: Monads are hard because there are so many bad monad tutorials getting in the way of finally finding Wadler’s nice paper. Here’s the paper by Philip Wadler that I expect Luke

Tagged with:
Posted in Software development

“Conventional” is relative

I found this line from Software Foundations amusing: … we can ask Coq to “extract,” from a Definition, a program in some other, more conventional, programming language (OCaml, Scheme, or Haskell) with a high-performance compiler. Most programmers would hardly consider

Tagged with: , ,
Posted in Software development

Real World Haskell

I’m reading Real World Haskell because one of my clients’ projects is written in Haskell. Some would say that “real world Haskell” is an oxymoron because Haskell isn’t used in the real world, as illustrated by a recent xkcd cartoon.

Tagged with: ,
Posted in Software development

Book review: Practical Data Analysis

Many people have drawn Venn diagrams to locate machine learning and related ideas in the intellectual landscape. Drew Conway’s diagram may have been the first. It has at least been frequently referenced. By this classification, Hector Cuesta’s new book Practical

Tagged with: , ,
Posted in Software development, Statistics

10 software tool virtues

Diomidis Spinellis gives a list of 10 software tool sins in The Tools at Hand episode of his Tools of the Trade podcast. Here are his points, but turned around. For each sin he lists, I give the opposite as

Tagged with:
Posted in Software development

Reducing development friction

Diomidis Spinellis gave an insightful list of ways to reduce software development friction in the Tools of the Trade podcast episode The Frictionless Development Environment Scorecard. The first item on his list grabbed my attention: Are my personal settings and

Tagged with: ,
Posted in Software development

To err is human, to catch an error shows expertise

Experts are OK at avoiding mistakes, but they’re even better at recognizing and fixing mistakes. If you ask an elementary student something like “How can we know that the answer to this problem cannot be 8769?” they might only be

Tagged with:
Posted in Software development

Naming collections

When you have an array of things, do you name the array with a plural noun because it contains many things, or you you name it with a singular noun because each thing it contains is singular? For example, if

Tagged with:
Posted in Software development

Tragedies and messes

Dorothy Parker said “It’s not the tragedies that kill us; it’s the messes.” Sometime that’s how I feel about computing. I think of messes such as having to remember that arc tangent is atan in R and Python, but arctan

Tagged with:
Posted in Creativity, Software development

Perl as a better …

Today I ran across Minimal Perl: For UNIX and Linux People. The book was published a few years ago but I hadn’t heard of it because I haven’t kept up with the Perl world. The following chapters from the table

Tagged with: , , ,
Posted in Software development

How to avoid shell scripting

Suppose you know a scripting language (Perl, Python, Ruby, etc) and you’d rather not learn shell scripting (bash, PowerShell, batch, etc.). Or maybe you know shell scripting on one platform and don’t want to take the time right now to

Tagged with:
Posted in Software development

Too many objects

Around 1990, object oriented programming (OOP) was all the buzz. I was curious what the term meant and had a hard time finding a good definition. I still remember a description I saw somewhere that went something like this: Object

Tagged with:
Posted in Software development