David E. Smith on 9 Feb 2002 07:16:09 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

spoon-business: The Daily Recognizer (Friday night/Saturday morning)


Yes, it's that time again...

Today's edition of "The Daily Recognizer" is brought to you by the lovely
and talented Michelle Branch.

Uncle Psychosis' sushi CFJ is 378, assigned to The Voice.

Antonio is Off Leave. (Remember, Antonio, if you don't vote this nweek,
you'll automatically go back on Forced Leave.)

CFJs 280 and 341 have been Judged.

362 has been completely rewritten to "Poetry in Motion" (362/1).
"Vow of Poverty" is 379/0.

Wonko's checkpoint revision is added (359/2).
Wonko's keywords revision is added (375/1).

Glotmorf's "And We Can Make Little Outfits For Them Too!" is 380/0.
Glotmorf's typo fix on 364 is recognized (364/1).

Glotmorf catches the King Gremlin and tosses it at Bean.

(Aside: For the life of me, I can't find Glotmorf anywhere. Did e, in
fact, enter the Grid at some point?)

Bean catches the King Gremlin and lobs it at Scoff!.

"Windows aren't all bad!" is 370/1.

"Weather" is 381/0. And you don't want to base the weather on my
location... it's notoriously screwy. In the past two weeks we've had snow,
ice, and highs of 70 degrees Fahrenheit.

"The Yoyo Gremlin" is 382/0.
"Tilt" is 383/0. (You people just enjoy torturing me, don't you?)
"Ahh..." is 384/0. (Previous statement retracted.)

Rob bribes the King Gremlin, repressing the PIG. (Rob, I'm taking a bit of
privilege here: Since Gremlin numbers are always rounded up, it actually
costs 11 points, not 10, to Repress the PIG. I'm proceeding as though this
is acceptable to you; if not, let me know and you'll get a full refund. :)

"The Pause That Refreshes" is 367/1. I suddenly feel very fatalistic for
some inexplicable reason.

Rob's "The Final Frontier" is 385/0.

Uncle Psychosis has Judged CFJ318.

Congenital Optimist lobs Luigi towards Glotmorf (wherever e's gotten off
to...)

Scoff! juggles Gremlins! The Bandwidth Gremlin is bound for Bean, the PIG
for Dan, and the King Gremlin for Wonko. (Your move is queued for the end
of the nweek.)

Uncle Psychosis revises "So damn ugly." (377/1) and gives 1 point to
Wonko.

Gremlins are flying madly about - Wonko catches the King Gremlin and lobs
it right back at Scoff!.

Bean's move is queued.

Bean revises 342 (342/2).

Scoff! catches the King Gremlin and throws it at gritter's corpse. The
King Gremlin is surprisingly aerodynamic, and arrives in zero time.
Unfortunately, gritter's corpse is not terribly resilient, and
disintegrates upon impact. (I'm just cleaning up here. ;)

Bean catches the Bandwidth Gremlin.

Baron von Skippy, upon returning from Leave, takes the Cursed Sushi of
Babel from, well, whoever owns the darn thing. (This will become important
in a moment.) E tries to give away negative activity points, but I don't
think it's legal to do so. E changes eir name to "Really Long String That
I'm Not Gonna Retype."

Baron von Skippy tries to forfeit, but can't, because e forgot to Sushi
eir action. (This means unless someone volunteers to take the Sushi away
from em, e's stuck with it for several weeks. This will, I suspect, make
life more pleasant for all of us.)

"Water, Water Everywhere" is 386/0.

An editorial: I prefer the one-based ndays because it better reflects the
calendars with which most of us are familiar. There's no February 0th, for
example.

Okay, that should be everything.

Whee!

Ooh, the "current proposals" page now suffers from the same problem as
the "current rules" page used to. Man, I need better cache management.
Since my goal is to reduce database queries, I'm not sure the "temp
tables" suggestion will work, but I'm digging out my MySQL O'Reilly book
even now.

Non-programmers/non-geeks may tune out now...

Here's my ultra-simplistic cache system: I have a "cache" directory that
has the really heavy (the hundreds o' queries) versions of these pages. I
also have, in my admin menu, an "update cache" link. What that does is,
fetch the pages in the cache directory, and store them as-is (except for
stripping HTTP headers), in big BLOBs in the "cache" table of the
database. Then the "real" /~g6/cur-rules.php page is just:

<?
include_once("cache.php");
cache_disp("cur-rules");
?>

There's no problem with the display page, obviously - it's hard to mess up
code that trivial. ;)  The problem is that these bigger pages (70k and up,
give or take) usually stall in the middle of loading, and (I'm guessing)
PHP thinks the transaction is concluded there. I'm on a cable modem, and I
can see where the page loads stall (at about 70k, give or take).

The idea is to reduce database load, obviously - pulling a page out of the
cache, after checking for freshness, is only two simple queries, while
generating some of these pages on-the-fly is a 50-100 complex-query job.

The cache system also has trivial aging - cache entries are timestamped,
and if a page is "stale" it gets a fresh copy to store in the database
before chucking it out to the user. (The code was designed for a site with
somewhat more frequent use, as you may have guessed.)

I've got the same code working on another Web site, regularly caching
pages of 200-300k, but that's on a somewhat beefier Web server than Joel's
home 'puter.

I may just have to accept this particular limitation, pending some really
clever ideas. I'm still got a few queries to optimize, but I'm growing
skeptical as to the benefits to be derived therefrom.

...dave



---- David E. Smith, POB 515045, St. Louis MO 63151
http://www.technopagan.org/    http://metadave.net/
http://www.bureau42.com/       http://whatIsay.com/

"Use anger to throw them into disarray." -- Sun Tzu