All of the things labelled as Posts, so that crawlers have a place to find them.

What a compiler does: internal types
If we scratch the surface of a language a bit we find a secret, rich world of type information. Our compilers know more about our

What a compiler does: type conversion basics
A quick introduction to how compilers use type information to convert types while evaluating expressions.

Cubist artwork with the help of a GPU
I wanted to come up with a shattered glass effect for my game. That didn’t quite work as intended, but I was nonetheless happy with

An unpleasant visit from the refactoring demon
In the middle of a major change to the Leaf type system I encountered the refactoring demon. It reared it’s ugly little head chanting, “you’re

What a compiler does: symbol resolution
A key activity of a compiler is to translate named symbols into memory locations. The process typically involves a few stages: identifying the symbols, segmenting

A secure and private browser sandbox
A patchwork set of standards and rules is creating an unsafe web. Cross-site attacks are too common and privacy leaks have become the norm. There’s

Blocking JavaScript seems like a good idea
My fancy new website is broken due to a script blocking extension. I found this out when I showed a friend the Radial Blitz website.

Using macros to simplify type visitors and enums
I like using enums and type hierarchies. What I don’t like is writing verbose switch statements to use them. In C++ I use macros to
What is an idempotent function?
Idempotence is an essential tool in programming. It has many uses, from improving fault tolerance, clarifying code, to writing declarative deployment scripts. It’s important to
What is amortized time?
Amortized time is often used when stating algorithm complexity. Instead of giving values for worst-case performance it provides an average performance. This is appropriate in
Visiting nodes in a recursive data type with traversal contexts
Iterating over the elements of a recursive data structure can be difficult. Given a set of objects, where each object could potentially link to any
The false abstraction antipattern
Useless interfaces, factories, and other abstractions are everywhere. They are the result of trying to prematurely generalize code. In a recent article I wrote about
Counterargument: Don’t put logic in tests
I consider test suites to be first class code. They need to be clean, adaptable, and frequently refactored just like the primary code. Thus I
Why more eyes are helpful: time wasted on a simple bug
I spent several hours trying to fix a defect that didn’t exist. I’m working on template methods in Leaf and one of my overloads wasn’t
Why social media needs to manipulate you
Has Facebook really done something deviant with their emotional feed experiment? Sure, it is despicable and unethical, but it wasn’t truly different from what is
A curious non-OOP virtual inheritance for a GPU
A new technology I’m trying has a curious domain-specific extension for OpenGL graphics. It introduces a block concept allowing for modular shader code. From a
Removing code by adding features
The pinnacle of refactoring is the removing of code by introducing a new feature. It may seem like a ridiculous notion, but I’m often surprised
Another Spam Loser: WordPress and Akismet
It seems like WordPress may have lost the war on comment spam. Up until early this year the spam was quite well filtered, Akismet was
Wait-free queueing and ultra-low latency logging
To support a low-latency trading system I needed a logging call that had minimal impact on the calling thread. It was imperative to be responsive

The uninitialized variable anathema: non-deterministic C++
A variable with an undefined value is a terrible language failure. Especially when programs tend to work anyway. It’s a significant fault of C++ to
Allowing unlimited access with CORS
Opening a REST service for browser use requires CORS. Browsers have a very strict cross-domain policy that will either block the request, or just block
Stop signing crappy contracts
Just because you’re given a bad contract doesn’t mean you have to sign it. I was recently offered a programming position that came with a