This thing is growing by leaps and bounds. In the span of the last few days, I've implemented a fairly complete event handler, added a first cut at LP-style "advisory" garbage collection, and completely de-coupled the dependancy on telnet connections and "interactive users" from the object engine (leaving that work to the kernel object, where it should have been all along), which paves the way for reimplementing the kernel to do something completely different: HTTP services, one-off execution, etc. The sample library is taking shape quickly now that I have most of the object-to-object call tracking working correctly and a working event registry; the sample library is going to try and be a faithful (from a player's perspective, anyway) reproduction of the 2.4.5 LPmud mudlib, since that ought to exercise most of what I'm trying to accomplish with the object engine itself, and I have a fondness for nostalgia.
What's really cool is how fast this has come together. I've been working on it for about three weeks now; the first week was a flurry of coding and thinking, and the last two weeks have been "commuter coding" (half an hour on the train in the morning and the evening, plus any time in the evening or during the day I can squeeze in). Even so, I'm probably going to bundle up a "poke fun at it" release fairly soon, once I've fixed up a couple of bugs and implement a little more of the sample library for people to get a feel for what's possible with this (and so I can, too).
The biggest piece of functionality missing right now is the ability to update an object (or at least new instantiations of it's class) after the source for it has been modified. This whole time, I've basically been assuming that Python's reload builtin would do the trick; here's hoping I was right (considering runtime mutability of the environment was one of the main things I wanted from this project). ;-) The biggest misfeature right now that I need to address is the event handler; the object engine itself needs one, but doesn't provide a framework to build one around, making the current implementation of the kernel's backend loop (and object removal, when we have to walk the event list) a bit messy. That shouldn't be too hard to clear up, though. (Update: I just implemented object reloading, the reload function did exactly what I'd hoped. Woo!)
Haven't had a whole lot to do besides some simple scripting tasks that noone's has the time or motivation (I assume) to take on; since I started right at the beginning of the holidays, everyone was taking vacation time, and not a whole lot of projects were moving forward. Starting next week, I'm scheduled for a ton of "getting up to speed" meetings, which should give me a better idea of how my role is going to fill out at this company.
But right now, it's all about the paycheck I just received. There's nothing quite so satisfying as knowing that every bill you have has been paid. :-)
I just get the front tires replaced, and during a bit of snow, I slip into a curb and bend one of my rear rims to the point that the tire doesn't meet strongly enough to hold air anymore. :-P It's my own damn fault, but I'm still ticked off. Hopefully I'll have a chance this weekend to see if the rim is can be "massaged" back into shape well enough to hold air; it only needs to last until this spring, when I'll probably just break down and get new wheels and tires all around.
Picked up a mild case of food poisoning from what I assume was the chinese dinner I had two days ago. Gah, what a horrible way to spend a couple of days. Then I find out that a friend of mine has started up a blog of his own, where he complains a few days back about getting...food poisoning. Small world? ;-)
Panhandling meets the Internet?
jfleck: Thanks for the link. I'm not sure whether to laugh at the audacity of it, cry at the fact that the panhandling I put up with every morning walking to work has now followed me online, or worry that this isn't just a scam to get someone to send them some money, and that I'm just a cynical old bastard for thinking it might be.