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

The bitwise complement, or not operator, is unsafe
I came upon a problem with bitwise complement (logical not): it isn’t safe. It’s nothing new, but it really registered while implementing the logical operations

Stuffing curves into boxes: calculating the bounds
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:

Rendering an SVG elliptical arc as bezier curves
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

Porting Leaf from Linux to OSX
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

The smooth sexy curves of a bezier spline
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”

Ride the carousel of folly with a Python migration
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

Optional Types and Leaf: Removing automatic dereference
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

Smoothing 3d geometry, like a tunnel, with Catmull-Rom splines
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

What is a normal map? An object normal map?
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

Glowing graphics for that futuristic sci-fi feeling
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

Radial Blitz – A rough journey from new technology to app store release
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

Are we forever cursed with buggy software?
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

The unfortunate world of boilerplate code
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,

A pattern bandage for messy virtual functions
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

The very real mess of virtual functions
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

The simple things I want in a text editor
A good text editor is the most important tool for me. My favourite text editor, Kate is unfortunately broken after upgrading from Kubuntu 12.04 to

Is reference counting slower than GC?
“Reference counting is slower than garbage collection”, a claim often made in the discussion of memory management. I heard it again recently when discussing Leaf;

What is the cost of reference counting?
Reference counting is a common form of memory management. In some languages, like Python, it’s the natural way objects are tracked, and in others it’s

What is the length of a string? A tricky question
Every day millions of programmers require the length of a string. Despite this there is no universal definition of what string.length actually represents. It changes

A pan, zoom, and rotate gesture model for touch devices
No mobile app would be complete without a few gestures. I already had swiping in place, so now I turned my attention to panning, zooming,

Efficient open ended queues with deferred deletion
Queues are a common part of modern software. Scheduling jobs and actions isn’t just for distributed systems, but for any system dealing with external events

The simple things matter – examples of UX failure from Amazon Video
Good products can be hampered by relatively minor design issues. After a long period of development it’s often tempting to push something through the door