Laid-back New Years
January 3rd, 2008 by proj
Somehow I managed to hurt my back before new years and so I have been laid up in bed for three days. I am extremely fortunate to have a good friend (and neighbor) who is a chiropractor and it seems that I have a ‘bulging disk’. No idea really what caused it but it hurts like crazy and when I am able to stand my torso leans to the side. So far I’m making a pretty good recovery and all I have to keep myself occupied is my laptop and book collection.
Playing Tabula Rasa
I leveled from 15 to 24 in Tabula Rasa, collected a mountain of feedback on various aspects of the game that need improvement. I spent a lot of time with the auction system and did all of the Targets of Opportunity quests so that I now have 100% completed wilderness and divide with one instance left to complete palisades. I never had so much time to play the game while working on it really, contrary to the popular belief that game programmers play games all day. My concerns are all in the low-level details most of the time and I had so much systems code to fix I was low on free time. You wouldn’t expect your German car specialist to be driving your BMW around all day now would you? It further cements in my mind the need to keep my own games very small so that I can work on them and play them completely. While playing I also had many epiphanies about what an MMO could be. I think the best part of playing though was meeting all the passionate players of TR and really listening to what they want out of the game and what their frustrations are.
Reading up on CL
Some people close to me know that I have been studying common lisp a lot lately. I spent a lot of time with the ray tracing code from ANSI Common Lisp by Paul Graham which is really a nice introduction to numerical computation. I took the ray tracer from the book and attempted to optimize it on my Core2 laptop running ubuntu 7.1. I ran it in CLISP which result in a 12 second run time for 100,000 samples. Compiling and running in CLISP cut that down to 1.2 seconds. Converting to SBCL and compiling brought that time down to 0.2 seconds. I couldn’t get any faster than this so I tried getting SBCL to stop boxing all the floating point math. Basically all floating point values are stored on the heap and the math uses generic operations which has to do a type check to select the correct (high-level) math routine. The next step of performance really needs to use direct argument passing and floating point math which is actually more complex than I realized. This little bit of research took me down the road of reading how Python (the compiler not the language) works. This dovetails with some of my interest in compilers, assembly and vector instructions so my current pet project for CL is to write a toy vector compiler using lisp as the language and implementation.
Working on Python
I spent some time working on my log parser/web viewer for the TR server logs. I added some interesting features for the back end implemented (free text index, server:minute index, error:function index) to allow effective navigation of large amounts of log data. Currently using shelve for persistence and a simplified in memory python database for querying. I’m also using web.py as the serving engine.
XNA
I downloaded XNA GSE 2.0 and the devkit to my new laptop but then started remembering how much I actually have grown to detest XNA and the stinky platform pigeon hole that it forces developers into. I have a blog rant queued up for more than a year about that.. I should probably publish that.
General Research
Zed Shaw published a strong position rant on the ruby on rails community
His site led me to read up on Ragel, Kwangju Uprising and NLP
Elements of Style is online
I’m enjoying this talk on Behavior Trees
Anyways, way too much time on my hands I don’t like being stuck in bed but it certainly gives me a lot more sympathy for those that are.
Here’s to an excellent year gone by and a new year full of promise.
Related posts:






