### Archives

- November 2014 (4)
- October 2014 (1)
- October 2013 (2)
- May 2012 (2)
- April 2012 (3)
- March 2012 (17)

## Apple Story Retractions

Rob Schmitz reporting for Marketplace catches Mike Daisey in flat out lies about what he saw during his visit to China. Daisey claims it was theater not journalism. Seems he should have thought of that before going on dozens of television programs to lie about what he saw. Listen to the Marketplace piece here.

This revelation is causing lots of media outlets to have to issue retractions. Among them is one of my favorite programs, This American Life. Ira apologizes on the TAL blog. I’ve been a contributor and listener to TAL for years and I won’t stop because of this. Like others, I found the story to not quite fit with what I had read and heard about Apple’s suppliers; but I can understand that they made a mistake.

Gruber is all over this story with 7 posts at last count including this one.

## Brainmess: Commentary

Today I wanted to step back and explain the implementation of Brainmess that I presented in my first post on this subject. I recommend you click on the link and have the implementation open in another window as you read this post as I’ll be referring to line numbers.

## Brainmess: Part 2

In my last post I introduced you to Brainmess and presented an “all-in-one” implementation of an interpreter for it. In this post I’m going to begin the process of refactoring to address some of the concerns I had in the initial implementation.

## Brainmess

I was introduced to a language with a NSFW name a few years ago. Mark Chu-Carroll posted about it. It is also documented at Wikipedia (Note, the name of the article I linked to is NSFW due to language). [Updated 3/31/2012: I’ve now described Brainmess on my own blog so one need not click the links above while at work.]

I’ve sanitized the name and used it as the basis of a simple programming assignment for use in study groups at work.

Posted in software development
Tagged brainmess, clean code, readability, refactoring, unit testing
9 Comments

## Immutable Data Structures

During the last few years I’ve become more familiar with functional languages. My current favorite is Haskell. During this same time period, I’ve also become more familiar with the existence of efficient immutable data structures which are pretty much a necessity for doing pure functional programming.

Posted in software development
Tagged data structures, functional programming, immutable
Leave a comment

## An Iterator Interface for C#

The `IEnumerator`

interface of C# is usually fine for visiting a collection of elements. However, often times when I’m doing something more complicated I want to split up the functionality of `MoveNext`

^{1}. In this post I’ll define a new interface and show how to employ the Adapter pattern to implement it.

## Abstract Algebra is Refactoring

In my previous post I presented a little introduction to abstract algebra. The easiest way for me to explain abstract algebra to a software developer is that it’s a lot like refactoring.

Continue reading

## What is Abstract Algebra?

I’ve recently begun a study of abstract algebra (also known as modern algebra) using the text A Book of Abstract Algebra by Charles C. Pinter.

I’ll give you a brief introduction to abstract algebra by way of an example. I will write two simple proofs. The first is a proof about addition of real numbers. The second is a proof about the exclusive or operation on Boolean^{1} values. The proofs will attempt to prove similar looking things, however, the initial proofs will look completely different from one another. Then I’ll identify some common traits about the two “algebraic structures” and show you how the same proof can be applied to both problems. This is one of the things abstract algebra is about: identifying common traits between different “algebraic structures”.

Continue reading