Now that we’ve drawn beziers and arcs there’s only one piece missing in the vector API. We need to calculate the bounds of the curve: the minimum/maximum points where it will draw. […]
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.
I needed to draw ellipses and arcs. A vector API just wouldn’t be complete without them. Though opinions seem to differ as Apple’s Core Graphics lacks anything but an axis aligned circular […]
I recently ported Leaf from Linux to OSX. I figured it was about time to start making it cross-platform. The goal is to get it compiling useful libraries for iOS and Android […]
I’ve been dreaming and coding curves lately. They play an integral role in a vector drawing API, which I’m writing for Fuse now. “Bezier curves” are so common we might think it’s […]
I wanted to migrate my shelljob module from Python 2 to 3. I use this as part of the Leaf unit test setup. What I thought would be relatively straight forward has […]
Optional values are one of the fundamental extrinsic types in Leaf, as are shared values. Originally optional values were used just like regular values, dereferenced automatically. I was always uncertain of that. […]
An endless tunnel is the centerpiece of my game Radial Blitz. Flying smoothly through this tunnel was important to me. That required both a smooth tunnel and a smooth camera. In this […]
Normal maps preserve the lighting fidelity of a high polygon count model when it is reduced to a lower polygon count. Model designers tend to work with models that are far too […]
Glow is a relatively simple effect that gives life to the graphics in Radial Blitz. It blends well into the sci-fi theme. Creating the glow requires a glow map, a second world […]
Finally, I managed to release my 3d action game “Radial Blitz” on iTunes yesterday. I encountered many obstacles along the way, but am quite happy with the result. In the coming months […]
Despite continuous advancements in programming it never feels like software is actually getting any better. It can certainly do more things, but it remains buggy and often unreliable. Is the source of […]
Redundancy is one of the biggest sources of defects in programming. Boilerplate is highly redundant. While it may be easy to implement, and often necessary, it reduces code legibility and increases maintenance […]
In my previous article the mess of virtual functions, I show how easily they introduce bugs and propose language extensions to fix it. Several comments suggested an alternate solution with the “non-virtual […]
Virtual functions, though generally a blessing, have a defect-prone dark side. No language, that I know of, provides a way to encode when the base class should be called. This leads to […]