On the way to PAX East I had intended on getting a new version of Zifmia ready to show at the Demo Fair. It was a lofty and unreasonable goal, given the changes I was making to the service. There were several issues, including adding the very complicated branching capabilities as well as refactoring large swaths of the code.
After PAX, I was continuing this work and getting frustrated with the mapping between the Zifmia object model and data storage. I was using SQL Server, which is fine for most things, but I just thought a simple object storage system would be more suitable, especially given the availability of using Linq, a Microsoft invention that allows native code queries on lists of objects.
A typical Linq query goes something like this…say I want to find a session.
ZifmiaSession session = (from ZifmiaSession s in db where s.Id = sessionId select s).FirstOrDefault<ZifmiaSession>();
I can do this if “db” is an object-oriented database or if I’ve implemented some mapping tool to allow for this type of query. With an object-oriented database that implements Linq, I can retrieve anything with one line of code. I can’t tell you how much easier this is to code, test, and deploy.
So I went looking for an oodb that met my requirements, mostly that it was free, had Linq capability, and performed well. I [played around with a few commercial products like DB4O, but eventually settled on Eloquera.
Eloquera has turned out to be an enormously helpful change in Zifmia’s inner workings. The code is much smaller, cleaner, and just as fast as SQL Server had been.
Over this past weekend I finished up the unit testing, got the original AJAX regression test working, and the code is in pretty good shape. I may still go through one more refactoring, but that will be later. The goal now is to implement user interfaces, clean up anything I missed, and get games out.
The code is currently checked into the FyreVM repository on SF.Net, but will move to its own Zifmia repository soon.
Web/Facebook, iPad, Android Tablet, and more UI’s are on the way along with games games games.