Getting Back in Gear

This past month hasn't been easy. But things are slowly getting back up to speed. So to recap what's going on:

SDL Perl

Like an elder god, SDL Perl has awaken from its long slumber to devour your soul. Actually, Kartik Thakore has started providing some much needed support for the project, and is spear heading cleaning up the build system, getting warnings in place, and helping get the 3.0 roadmap going. I've released the first public release in about 3 years, which added a number of features that have been languishing in my home repository. The lesson to learn from all this is an open source project doesn't move forwards unless there are other people willing to help out! It is very hard to dedicate time to a project when no one says "boo" to you.


My web application server, that has been running in production for several years now, and is surprisingly stable, has been getting a breath of new life. I have started working on the infrastructure for a new start-up that will hopefully launch its first product by the end of August! This start-up is privately financed and will focus on middleware/rapid application development tools for small to medium sized development shops. We are using jawas and some RAD tools build on top of it to deliver easy to deploy services for a number of open source platforms.

Probably most interestingly is the engineering that has gone into jawas. The underlying engine was designed to support 10k+ concurrent connections. A static HTML document can be served at 750µs on my 1.8Ghz laptop, while the most complex dynamically generated page I have takes around 7500µs. The time difference is due to using a heavily modified version of SpiderMonkey, which accounts for 90% of the per-page processing in that case. The running average time for dynamically generated pages is 2200µs, which is O.K.. On one of my production servers, a faster CPU and bus can generally reduce these times by almost 50%. The current limitation for lowering static serving times is actually OS/System limitations, as 64% of a static page request is system time!

So to summarize the performance I'm seeing on my laptop is:

Content TypeComplexityPeriodFrequency
Static HTMLLow750µs1333 requests / sec
Dynamic HTMLMed2200µs454 requests / sec
Dynamic HTMLHighest7500µs133 requests / sec

The curves for these are stable, and does not degrade under load, so I'm very happy with the performance. The next step will be to replace SpiderMonkey with my own JS engine. I've got a few prototypes of a native compiling JIT JS engine in the works, and I'm pretty certain I can shave off more than half those numbers easily.

SVG Engine

Another project I've started in the past couple days is a easy to use SVG engine, written in an Ad Hoc style that would make producing interactive SVG graphs and animations easier. As browser support for SVG improves, and mobile support expands, moving a lot of client code from HTML -> SVG makes a lot of sense. Having your content scale nicely is something that people with tired eyes like myself appreciate greatly. Also since I've released the additional svg support in SDL Perl, the idea of building games for the web browser using a development kit written in Perl has some sort of crazy attraction for me. Ultimately, this project may go no further than the management console of a new application, but we shall see.

3D Game Engine

It has been a few years, but I'm working on a new 3D game engine. Right now it is in an experimental prototypical stage, where I'm trying out new ideas resulting from some chats with a 3D artist friend. You can only listen to so many rants about Maya before it drives you to solve the problem after all! The over all direction that this project is taking is very similar to Eskil Steenberg's excellent work. My 100,000' view is I'm going to produce an engine that could power a SL like virtual world, but handle the building a hell of a lot more like Lego. Scripting is obviously another area that I have a lot of interest in improving, and would like to tie the JS/JIT engine I'm developing for Jawas into this project as well. Obviously, a little SVG love would turn this into yet another web-browser. But it isn't like webkit doesn't already have all this stuff. It is just the code base is too damn large.

Forward Looking Statements

Given that life is brief, brutish, and uncertain, I have no idea how long it will take for any of these projects to get off the ground. But as with all things the living must contend with, they are all imperfect. And I mean imperfect in both the grammatical and the philosophical sense. All of my projects are always incomplete. Development is on going, occasionally placed on pause while I focus my attention on other things. Nothing we can produce in this universe is perfect. We can not produce some Pythagorean godhead; an immobile, unchanging, sphere. All we can produce is imperfect and fleeting. Ultimately, the only thing I seek to produce is change itself. Reduce the size of code so that people can understand it. Change the way we teach our children, so that they may be comfortable in a world of continuous rapid change. Alter our own view points concerning what is important and what is not. My wife often finds my ability to change my mind both amusing and frustrating. But that ability to entertain any notion, regardless of how loopy or off balanced, for a limited period of time is critical to critical thinking. Life is change, and a failure to change usually results in extinction. Stagnation is only a slow death. And let me tell you, it isn't pretty.