Server Crashes, Sigma, and the Distant Past
When we get back to the States (what a day of rejoicing that will be! When we all see Target, we’ll shop and buy quality things) [wow, a hymn joke and it’s only 10:05 AM], I’m going to try to performance tune my wee Linode server. While mod_wsgi is a lot better than mod_python as far as I read, the performance just can’t handle these little mini-DDoS attacks and Chinese/Russian search engine crawlers. I hope nobody got a bunch of 500 errors, but I discovered this morning I got hammered again by the commies or something.
It’s very hard to do that type of thing here, because the trans-oceanic latency on the connection makes it slow torture to make any significant changes. This may mean implementing caching in efendi (I don’t want to do this), and taking my RSS updates (the feature that brings you Sigma updates and Picasa pictures) outside the webserver as a periodically run job. Right now, every fifteen minutes or so the server queries the RSS sources before serving you your page. You may notice one page has a big ol’ lag before loading and then everything else goes pretty fast. This is why. In the Drupal world (a content management system), they call this technique “poor man’s cron,” because it’s normally used when you don’t have permission to run a scheduled script (cron job) on the server. I have this capability, so I should enable it as a standalone feature.
My theory is that the server instance that gets tapped to do the RSS updates freezes the server for a second or two (while it’s waiting on mostly various Google sites to respond), the crawlers pile into the queue and overload the server, which I believe is single-threaded right now, and so is taking it one request at a time. Server-side caching is something I’ve never done, and it always feels chancey to me. But I think I can pull it off. Somehow. My third-party templating engine supports it, so it may not be so bad.
But, I’m not doing any brightlamp or efendi work right now, because Sigma Designer is fully kicked off and a load of fun to write. It’s a perfect GUI project. Rewarding, relatively simple, some fun little features that make things interesting, and still do-able in Python.
Sigma Core pushes on, with Meta boldly taking things past my little self-congratulatory exercise in framework builing and into a real playable, entertaining thing. Watching the rebuilding of Ravren (maybe we should have something in the back story about it being a rebuilding, by the way!) has a fun throwback feeling to me of sitting in 10th grade study hall getting chastized for talking while building up the plans for Sigma/Circle (who begat Sigma/C++, who begat the short-lived and feeble Glamdring [I know], who begat the successful and growing Sigma/Python of now).
Those were simple times back then, when I was just learning about dynamic DNS (and routers didn’t support it automatically) and you couldn’t rent a root account on a virtual server for $19.99 per month. We can now deploy on my own little forty acres with little to no muss and fuss.
Designer will probably be rough but deployable within a week or two, and Sigma will be easily patched to deal with the various eccentricities and improvements introduced by Designer’s implementation. Once Designer hits the streets we would much appreciate some area-creation help for those feeling creative and a bit medieval. More on this soon, but get your story-telling neurons firing. We need you. That means you.
When I next call the ball on direct Sigma coding, there will likely be a push to implement Captain Xavier, at which point – no matter how rough combat and stats and weapons and magic are, no matter how small the game world is, no matter how limited the command vocabulary is – the game will be emotionally finished for me. “Captain X” runs the Ravren ferry. In Sigma/Circle, most of the infrastructure was pre-made, so all I had to do was hack the source a bit and add a scheme where you could buy tickets from the captain and he would let you on the boat. The rest was some mad David Copperfield skills to fool you into thinking the fixed, ordinary room you were standing in was a moving ferry.
We won’t have shopkeepers and money will likely be a bit shaky, so the ferry will be free for a while, but it will still be a simply fantastic feeling to make that work again. It might seem a silly thing, but this achievement means our framework will have similar capabilities to one that was running major systems with hundreds of simultaneous players. At least in one area.
That was ten years ago!