There is a Bug on this Code

bug-on-code

Software is a serious business. Fatal bugs have been around since at least the 1980s, and a decade-old report estimated the annual cost of bugs at $60 billion. Tech companies spend millions on political lobbying. Opponents argue over labor shortages and H-1B visas.

So how about we take some time out to give three cheers for a little levity?

[“hip”,”hip”]
hip hip array!
(more…)

Radically Cross Platform: Scripting with Kablooie

This Dog is Turing Complete.

This Dog is Turing Complete. (believekevin on Flickr)

How would you design your own ideal scripting language?  Would you go with a functional language in the LISP family, or with a more procedural style?  Would you offer object oriented organization?  Would large parts of your ideal language be recognizable as C or another common language, or would you “go for broke” with a domain specific language that (probably) only you will be able to read?

One of the fun things about computer science is that people will answer this question in very different ways, and they can all be right.  Almost everything (including your dog) is probably Turing complete.  And since the ultimate goal is accomplishing whatever operations the script is performing, whatever helps you express that well is the right answer, for you.

When implementing my cross platform graphical app engine, a set of characteristics began to crystalize for my ideal scripting language: (more…)

Radically Cross Platform: Animation

Linnet_kineograph_1886(This is a continuing series sharing design and implementation notes for a cross platform 2D game or graphical app engine I wrote in C# using Xamarin and Monogame.)

It was hard to choose next between covering the animation system, physics engine, or custom scripting language, as each is essential in its own way, and they’re also tightly integrated. But let’s start with animation. (more…)

Radically Cross Platform: Spritesheets

(Third in the “Radically Cross Platform” series of posts; see previous posts about Xamarin, Memory Management, and Serialization.)

This is supposed to be about spritesheets, aka texture atlases, which are raster (bitmap, or pixel based) collections of multiple smaller raster images into individual, larger raster images.

Raster, because everything your app presents visually is a raster image.  Your video adapter and monitor deal in raster pixels.

What I would rather talk about, however is:

(more…)