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

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
The Infernal Loop Iterator
Collection iteration is perhaps the most insidious language construct. Simple to create and easy to understand. Yet lurking within lies the ability to create random
Strings and Text are not the same
Thinking of text and strings as the same type is wrong. It leads to all kinds of errors and results in confusing or incomplete APIs.
Too big too care: How Twitter inadvertently revoked my developer access
If a company has enough users they don’t have to care about any of them. Plus or minus one developer account, even with thousands of
HTTP streaming of command output in Python Flask
I needed an endpoint that streamed the output of an external program to the remote client. In this article I describe how I did it
The dangers of OAuth/Social Login
OAuth authentication is not safe. This is the baseline from which all applications should be working. There is a place for social login, but it
Simulating the way to victory: Bloons TD Battles
Simulations can provide curious insights; in this case a distinct advantage to winning a game. I recently encountered a perfect opportunity to run a simulation





