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.

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.

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.

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.


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.

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.

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

Contact Us