Posts

  • Combinations Part 5 – (wrapping it up) The original problem as posed by Eric Lippert was to write a function to produce all the combinations of k elements from a collection of n elements. So far I’ve ported the code to product all the combinations of k true booleans in a collection of n booleans where .

  • Combinations – Part 4 (combinations of booleans) In this article we’ll implement the combinations function from Eric Lippert’s post. Here he implements a function that returns all the combinations of n booleans with k of them set to true.

  • Combinations – Part 3 (SequenceOf extensions) I want to continue on with my implementation of Combinations. But first, when working on this problem I determined I really needed some helper methods on SequenceOf.

  • Combinations – Part 2

  • Combinations – Part 1 Follow along in the use of Swift collection types to implement graph traversal.

  • Math from scratch in Haskell: addition Last time I developed a representation of Natural numbers following Eric Lippert’s lead. In this post I’ll continue to follow him and implement addition.

  • Math from scratch in Haskell: zero and one Follow along as I implement natural numbers from scratch in Haskell, using Eric Lippert’s posts as a guide.

  • Importing Subversion Into Git Learn how to import your subversion repositories (with history) into git.

  • Using git instaweb on a Mac Today I discovered git instaweb. This is a very cool feature that allows you to instantly view your local repository (the one in your current working directory) in a web browser.

  • Doing Code Reviews with GitHub For many reasons, I really enjoy using git and GitHub for my current project. Today I’ll highlight one reason: code reviews.

  • Install git-extras for windows cygwin I recently discovered git-extras when searching to see if the brew package manager (for Mac) had a package for git.

  • Loop Invariant Proofs Sometime last year I ran across a blog talking about loop invariant proofs.

  • Brainmess: Extract Tape Class (Cleanup) This is just a quick update. My last refactoring on Brainmess was to extract out the tape class. While reviewing that code today, I noticed some artifacts left over from the refactoring process. These were cleaned up in commit 836a96

  • Brainmess Description It occurred to me that since the links I’ve provided so far include a NSFW word, I should take the time to describe the Brainmess language on my blog so readers need not click on those links. This description is obviously not going to be completely original as I’ve stolen most of it from Mark Chu-Carroll’s blog and Wikipedia.

  • Haack on ASP.NET MVC Open Source News ASP.Net MVC Now Accepting Pull Requests

  • A Basic Compiler – A Great Refactoring Opportunity Years ago (2006) I wrote a compiler for TI BASIC, the dialect of BASIC that I learned on my TI 99/4A (many many years earlier). This is an “ancient” computer language and one of the first that I learned. (I had a few years of experience with Apple Basic on Apple IIe before getting a TI.)

  • My First Greasemonkey Script Link Github Commit to Pivotal Tracker Story I’m using Github and Pivotal Tracker. You can easily configure Github to notify Pivotal Tracker of commits. Once you have done that, then whenever you want to commit something that is related to a story you simply embed the tracker story id in your commit message. Something like:

  • Brainmess: Extract Tape Class Last time I worked on extracting out the methods related to fetching instructions and jump instructions into a Program class. I’m going to use a similar pattern today to extract out methods related to the tape. Currently the tape is implemented as an array of integers and a tape counter. I want to replace all of that with a Tape class.

  • Brainmess: Extract Class Program Today, I’d like to address the issue of “data clumping” in the original implementation of Brainmess. (See all previous posts: testing, explanation and extract methods.)

  • Is Apple Going To Pay?

  • Brainmess: Extract Jump Methods Today, I’ll start to refactor the Brainmess program. In the first post I gave an “all-in-one” solution. Next I added some automated tests to give me some confidence that I don’t break anything during the process. The last time that I spoke about Brainmess, I just explained my implementation.

  • 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.

  • 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.]

  • 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.

  • 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 MoveNext1. 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.

  • 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.

subscribe via RSS