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 other object, how do we visit each […]
Over 20 years of programming. From video games to communications; science to finance; compilers to business processes. Too many languages to even track anymore.
Here's looking to another 20 years towards mastery of the craft.
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 how I removed one from Leaf. It […]
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 was quite bothered to see the article […]
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 resolving. As it is a new feature […]
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 done on social sites every day. The […]
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 language standpoint I was uncertain what to […]
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 myself at how often it is a […]
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 to market events at all times. My […]
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 allow this easy-to-create and hard-to-detect situation. I […]
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 access to the returned content. If you […]
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 ridiculous contract. It started off with a […]
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 non-local defects. Monstrous bugs that you’ll spend […]
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. I wrote before that the string type […]