Latest Articles  

Docker Postfix container w/Virtual Hosts support

Just wanted to point you to a short post I just published on my consulting site:

Simple Docker Postfix container

It provides a very basic Postfix setup that's ready for handling multiple domains and forwarding.


Writing a (Ruby) compiler in Ruby bottom up - step 45


One of the great "joys" of trying to compile Ruby is the level of dynamism. Especially when trying to make the compiler as static as possible.

Writing a (Ruby) compiler in Ruby bottom up - step 44

Further misadventures on the way to self-hosting

In which we continue the circuitous approach towards parsing s-expressions.

Writing a (Ruby) compiler in Ruby bottom up - step 43


Eigenclasses, or meta-classes in Ruby are effectively regular classes that gets "injected" into the inheritance chain, but hidden...

Writing a (Ruby) compiler in Ruby bottom up - step 42

Re-opening class definitions

The main reason for handling re-opening of class-definitions at this stage, is for a simple reason:

We're going to attack eigenclasses soon, and being able to handle class re-opening makes that a lot simpler in addition to being needed in and of itself too.

Part of the reason ...

Writing a (Ruby) compiler in Ruby bottom up - step 41

Messy further steps towards self-hosting

This part is going to be a hodge-podge of changes, as I walk through a good chunk of changes needed to prepare to compile the tokenization code in tokenizer.rb, and improves what we can handle from scanner.rb.

I'm going to start by briefly talking about this ...

Writing a (Ruby) compiler in Ruby bottom up - step 40

Untangling Expect

Next up in my attempt to self-host parts of the parser, is Scanner#expect. This was no fun, and this part again recounts a long string of attempts at addressing relatively small annoying issues that will seem disjoint and probably confusing, but possibly useful in showing some of the debugging ...

Eight Docker Development Patterns

In the past I've written about my "home cloud" that used to be OpenVz containers, and how I've come to advocate rebuilding the "build server" for every build

Docker has quickly become one of my favorite enabling tools for this overall philosophy of creating repeatable builds that ...

Writing a (Ruby) compiler in Ruby bottom up - step 39

To be or not to be nil

One of the big elephants sauntering around the room for a long time has been the issue of how to handle the specifics of how Ruby handles nil, true and false. To a lesser extent this issue also affects numbers, but it is those ...