Zen Spaces – Cognition and Hindsight

One of the really interesting aspects of next generation software development provided for by Zen Spaces is some of the doors it opens in the realm of artificial intelligence.

In addition to all of the advantages laid out in my previous blog about some of the features of Zen Spaces, thinking beyond this generation and into the next generation of software development leads you to thinking about all of the interesting opportunities and possibilities.

Continue reading

Zen Spaces Explained

Last week I cursorily talked about some of the features of Zen Spaces Platform, but I left out some details and definitions of some of the terms that I used.

 Back to the sentence in the “What is Zen Spaces?” section:

 “Zen Spaces is a reactive, stateful, event sourcing, distributed software platform combined with a flexible enterprise service bus and an in-memory object oriented data grid with support for most modern and legacy languages and platforms”

 That sentence uses a lot of buzz words, so let me take a few minutes and explain each one.

Continue reading

Zen Spaces Platform

A few years ago when we were working on IndieZen’s game engine and Zen Studio, we were also working on what we called Zen Enterprise, which slowly morphed into Zen Spaces.

I’ve recently resumed working on Zen Spaces, but before resuming I looked around to see what else was out there that might be competition, mostly with the hope that nothing else had already solved the problems Zen Spaces solve.

Typesafe, with Akka, Play Framework, and Scala on the JVM is probably the closest, but the solution doesn’t feel very natural when solving the types of problems I want to solve.

Continue reading

Real Applications for the Web

By Tony Richards

I remember my first web application.  It was late 1996 / early 1997 using IIS 3.0 from my MSDN subscription CD’s.

I was using a home grown b-tree system for a database and I needed to expose the data to a web application.  My solution was to write COM wrappers for my domain specific data objects and use ASP 1.0 + VBScript for the web application.  I was thrilled that I could use COM and IDispatch to hook all of my C++ code to VBScript and use that not only for developing web applications, but also for hooking it up to VBA within Microsoft Office applications.

I really liked the solution.  Using VBA, we could do mail merges, export data to spreadsheets, etc.

Except one thing… I really hated HTML and the cross browser compatibility (or rather, incompatibility).  The lack of standards caused a hellish nightmare.

I know “hate” is a strong word, but it didn’t even come close to describing my antipathy for web development.

My first web app was my last web app for 13 years.  Anytime someone would even mention “thin client” in a design discussion, I’d cringe in disgust… if someone mentioned it seriously, I’d figure out a way to stay out of the client side development, or I’d update my resume and start looking for a new job.

I really despised HTML web app hell… but time marches on, and so do technologies.

Continue reading

Floating Point Errors

By Tony Richards

There’s a silly saying that we use in the IndieZen community.  When you’re trying to swim with a bag of hammers, it’s called a “floating point error”.

(ba dum bum)… and the crowd groans….

Ok, a slightly less corny saying that you’ve probably heard:  “When the only tool you use is a hammer, every problem looks like a nail.”

This saying holds true of many developers, experienced and newbies alike.  Typically a developer will learn one or more languages and eventually settle on their preferred language / platform as their “hammer”.

Continue reading

Keeping Interfaces Clean and C++ Generics

By Tony Richards

In Object Oriented Design, one of the goals is to hide our implementation details so that if we make a modification to the implementation, nothing else needs to be recompiled, interfaces don’t break, and fewer things need to change.

This is especially true when writing libraries, but please don’t take it too far.  If you’re deep in your implementation, there’s no reason to hide implementation details!

One of the problem areas with this philosophy is how to expose collections when using languages like C++.  In C++ you cannot directly expose an STL iterator as that causes several problems.

Continue reading

Hobby Game Development – Team Building

By Tony Richards

This is an updated article originally published Dec 2009 on the open source game development website, IndieZen.org.

Whether you’re a beginner, hobbyist, aspiring game developer, or a seasoned veteran, this article provides some great guidelines and hints for creating a great Indie / hobby game development team.

The article assumes you’re putting together a zero or low-budget team to build an Indie game.  It answers questions like “Who is the leader?” and gives you great advice on how to keep your team motivated and making constant, steady progress on your game.

If you’re considering starting a game development project or if you’re already part of a team, this article is definitely a must-read.

Continue reading

A Fool Follows a Parrot

By Tony Richards

Why is it that most advice you get comes from people unqualified to actually give the advice?  And worst, why do we listen?


Parrots are fascinating birds.  They flaunt the beauty of the rainbow with their fabulously colorful feathers.  Sometimes I think I would like to be a parrot, living in exotic locations, feasting on fantastic fruits.

Have you ever heard a parrot talk?  I have had the rare opportunity of spending the summer with a parrot with a rather high vocabulary of technical words.  It was very interesting.  You could ask all sorts of programming related questions and you would be surprised at the answers.

Continue reading

Passionate Programming

By Tony Richards

One of the first steps of being a software artisan is being passionate about programming.

This isn’t something you “accomplish”, but rather it either comes naturally or it doesn’t.

I remember the first time we got a computer when I was growing up.  It was a Timex Sinclair 1000.  I fell head over heels in love!

It’s not that it was a fantastic computer.  How could it be?  it was only $99!

Instead, it was freedom.  Freedom to create, learn, explore, express, and define one’s self all in a nice little inexpensive bundle of black plastic and membrane keyboard.

It wasn’t really my computer.  Father bought it for his business.

All sorts of roadblocks were put in front of me before I could use the new computer, but that was fine with me.

The first thing I was required to do was to read the manual.  I quickly and completely devoured it.  The computer was left in it’s box for a number of days, but Dad let me pull out the manual and read it was much as I wanted.

I remember going to Church, barely able to pay attention, and designing my first games in pseudo code.

My biggest roadblock was touch typing… not that you can touch-type on a Sinclair, but Dad made it a requirement before I could use it. I went to the library and checked out a neat little book that taught typing (many years before Mavis Beacon was around), and I taught myself to type.

After successfully passing Dad’s touch typing test, I was finally allowed to start programming.

Ugh… the horror… the expansion memory pack was so poorly designed that any time someone bounced down the stairs the computer would reset and I’d lose everything.  I quickly learned to save early and save often… but I kept at it.

Not too much longer I had written a mnemonic assembler in BASIC.  It took me 10 minutes to load the code from audio tape, and then I could load my programs, edit them, and save them to tape.

What a pain… had I not been so passionate about programming then I doubt I would have gotten anywhere.

Instead, I was inspired… no matter what the roadblocks, hurdles, challenges or caveats, I was destined to be a software artisan.