DAVE'S LIFE ON HOLD

Return of the Jawas

Today I released the lastest version of Jawas, based on the 2009/2010 branch that I did for Evangelizmo. Unlike it's predecessor (2006/2008), it uses LuaJIT for its backend scripting instead of Mozilla SpiderMonkey. This change came about due to wanting signficantly better performance for high volume transactions. On a 512MB 1vCPU virtual machine, Jawas consistently generates 120 dynamic documents per second using the scripting engine. On Rackspace's OpenStack based offering, that comes out to about $0.50/billion documents. It manages to perform so quickly in large part because of how it is designed:


Currently, Jawas supports Mac OS X, FreeBSD, and Linux. Due to historical reasons, the Linux support is currently a bit spotty, and I've not finished migrating the code base to properlly use inotify (the original linux support used dnotify which is now deprecated). It requires a Postgres database in order to take advantage of some of its features, such as automagic binding of Lua closures to Postgres stored procedures, (which was the original inspiration for pgproc.lua). These function bindings form the primary basis for most of the backend APIs for all of the production applications that I've written using Jawas. It also influences the structure of how one designs applications, wherein the primary application is typically loaded from a single large file (containing pre-baked assets) and then all subsequent data access is done via AJAX. This model works very well with Jawas's internal design, as the keepalive sockets provide ready access to the datastream.

Going forward there are a few features I am planning on adding to Jawas:
Currently, Jawas is powering jawas.ws, which will eventually have more style and documentation on how to use this web application framework. Having been in development for 10 years now, Jawas represents a considerable amount of blood sweat and caffenated tears. And it will continue to form the basis of much of the work that I release into the world. If you're interested in trying your hand with it the source code is available under the AGPL and can be found at the Jawas github page here.