thegoldenmule

Book Review: Effective C#

It's a fact that there are just too many crappy technical resources out there. It's also a fact that there are probably too many good ones to read in any one lifetime (I've still only made it through book one of Euclid's Elements-- and, embarrassingly, I've never even started my copy of Principia Mathematica). Anyway, I […]

More

Geosphere: Revisited

Update: At long last, the SO answer has been found! Added a link. Lately I've been shrinking my goals so that I can actually reach them. I mean, I'd rather have fifty small projects that have all been completed than ten large ones that haven't (you wouldn't believe how many things I have 90% completed […]

More

Procedural Texture Fun

I've been having a ball going through the book Texturing and Modeling: A Procedural Approach. I've hardly cracked the book, really--but so far it's been a lot of fun. One of the first procedural textures it studies is a brick texture. The book assumes you're using RenderMan, but Unity's surface shaders are actually very similar […]

More

Why quaternions?

We can represent 3D rotations in a variety of ways, arguably the most useful of which is the matrix. In three dimensional space, a 4x4 matrix usually defines the world transform of an object, because it can contain lots of information: translations, rotations, scale, and lots more. But when we're talking simply about rotations, there's […]

More

Small Static Factory Methods

You know how Cocoa classes generally have static methods that serve as factories? return [NSArray arrayWithObjects:obj1, obj2, nil];return [NSArray arrayWithObjects:obj1, obj2, nil]; That's a dumb example, especially now that you can do @[obj1, obj2], but why not do the same in AS3? For instance: return TransactionResponse.FailedResponse();return TransactionResponse.FailedResponse(); This would replace something like: var response:TransactionResponse = […]

More

RestExpressionNode not yet implemented

Perhaps the least helpful MXMLC error message yet: public function log(level:int, message:String, ... rest):void { trace(format(level, message, ...rest)); }public function log(level:int, message:String, ... rest):void { trace(format(level, message, ...rest)); } Apparently calling a function with ...rest on accident will present this compiler error...

More