Axes of Quality

I’ve thought for years in terms of two kinds of software quality: “internal” and “external” quality. The idea is that “internal” is essentially the stuff...more.

Framework Seams

I recently created an open source plugin for Jekyll, the Ruby static site generator. Jekyll LilyPond Converter (henceforth JLC; source, RubyGems) converts specified code snippets...more.

The Core of Erlang

I've spent the last few months implementing a compiler that targets the Erlang Virtual Machine (BEAM). BEAM code itself seemed like a tricky initial target,...more.

Stack Overflow

Let's play a word association game. When I say "stack overflow" what comes to mind? Is it Spolsky and Atwood's popular question and answer site?...more.

The Option Type

I've been writing some Rust recently and have finally had my first experiences with the Option type, a data type that wraps either some value...more.

Hide Your Queries

One of the quickest ways to turn a well-factored Rails project into an old-fashioned legacy app is to use ActiveRecord where and find_by_sql calls outside...more.

Higher-Ranked Types

The Hindley-Milner type system is very powerful: it allows you to express functions with complex type signatures in an elegant, readable way. For example, consider...more.

Testing Recursion

A short post to start the new year. Let's imagine that you are building an application that requires the application of a specific algorithm, but...more.

Adapting To Change

“The only constant is Change.” — Heraclitus While it was doubtful that Heraclitus was addressing developers, the sentiment certainly still applies. As developers, we live...more.

Why Frameworks?

Frameworks are about efficiency and effectiveness. They save you time. By forcing common conventions, a framework helps solve common issues like view rendering, asset generation,...more.

Out of Controller

In the beginning of using rails it was amazing at how fast everything was compared to my previous java web experiences. I could finally run...more.

Pointers, Schmointers

I'm writing this blog from the train, my head hung in shame. I'm taking a course in Game Optimization and today something exceptionally embarrassing happened....more.

Clean This Code

If you follow me on twitter @paytonrules you’ve probably seen me griping at various times about writing a testing framework for Objective-C. I’m currently writing...more.

Walk and Code

A few years ago when we were buying furniture for the first 8th Light office I came across a piece called the WalkStation. It was...more.

Reflection on Hangman

Last week concluded the Hangman Ruby Sparring Tournament. Unlike the previous Battleship Tournament, I put the effort in to write a competitive hangman player (of...more.

Hangman Tournament

Several months ago, I hosted the Ruby Battleship Tournament. It was an all-round fun event where craftsmen sharpened their claws and pitted their skills against...more.

Announcing chiPhone

It’s with great pleasure that I announce the creation of chiPhone, the Chicago iPhone developer’s group, with our first meeting on July 23rd at 6:30....more.


You remember the classic Simon game, right? The one where the electronic devise will blink a color and make a sound that you have to...more.

Erlang and the OCP

OCP was defined in 1988 in Bertrand Meyer’s book “Object Oriented Software Construction” as follows: “Modules should be both open (for extension and adaptation) and...more.

Rinda 101

When building a software system composed of multiple decoupled components, the need typically arises for interprocess coordination and communication. As an example, say that we...more.


Often times while writing meta programming code, I am using the eval function and doing manipulation on method/class/variable names. Today I needed to un–Rubify a...more.

Test Driven Debugging

I hate debugging. Loathe it, despise it, pick your synonym and I’ll use it. Computer programming is building something out of nothing, making the computer...more.

Ruby DSL Blocks

There’s a common pattern I’ve seen for developing DSL in Ruby. It’s used in RSpec, the Statemachine Gem, and Unclebob’s Clean Code talk at RailsConf...more.

Day Two At RailsConf

Hello again from RailsConf. I’ve gone through five presentations. I don’t have any enormous revelations, and no good pictures yet, but I do have some...more.


BOC is a testing pattern that Unclebob briefly mentioned on shortly after it was published. It describes the typical steps taken in an automated...more.

Self Shunt

The self-shunt method of testing has been conflicting for me. Self-shunt is a good testing pattern to test observers/views. A colleague of mine has started...more.

Buffer to the Rescue

Recently I was working on FitNesse to solve the problem of large file uploading and downloading. Previously when a file was downloaded FitNesse would happily...more.


Pre–factoring is when you see a piece of code which the story you are working on which has a re–factorings which would make your story...more.

Over Mocking

I’ve noticed using more mocks lately. Instead of using them sparingly for controlling services which are not instrumental to what I am testing, I’m essentially...more.

Fresh Testing

Sometimes I sit down to write a test on something I haven’t worked on before or don’t know intimately, and I just can’t write the...more.

Interested in 8th Light's services? Let's talk.

Contact Us