Finger info for phaethon@icculus.org...



Raw source and immediate archive at http://www.icculus.org/~phaethon/plan/

Entries are currently sorted in: Newest First

Syntax (time and date in UTC, my local timezone is PST/PDT):
[YEAR].[MONTH].[DAY] <space> ~[APPROX. HOUR] <space> <space> [SUMMARY]
<empty line>
[CONTENT]
<empty line>
<empty line>



2002.11.18 ~07 Q3VM glib

In another of those mad-scientist streaks, I added enough libc headers
so that glib-1.2 compiles without error. The libc headers are in CVS
for my Q3 mod; glib itself isn't. I haven't tested glib, yet. The
funny thing, I forgot why I wanted glib in the first place.


2002.11.13 ~11 QVMlibc

In the CVS repository for my q3 mod, I added a subset of libc and SUS
(POSIX). Covers ctype, strings, stdio, stdlib, errno, assert, unistd,
fcntl, dirent, time.

With some of the off-the-wall stuff I try, I'm thinking of renaming my
mod to something like: "Nonlinear Experimental R&D-Type Stuff Modding".


2002.11.09 ~13 Compiled vs Interpreted

I actually started on a long-winded entry on my thoughts about criteria
for "compiled" or "interpreted" for a language, when a google trip
turned up this link that is pretty much a superset of my ideas:

http://www.oche.de/~akupries/ics_lang.html

I had pondered over compiled vs interpreted as I mulled over the Q3VM
specs and the way it makes a distinction between code space and memory
space (JUMP to address 0 is vmMain(); a LOAD from address 0 does not
return the bit-level representation of vmMain()). I decided the
dividing line comes down to observing how the Program Counter (or
Instruction Pointer, et al.) acts, whether it branches into newly
created code (compiled) or stays within already pre-existing code
(interpreted). Since a VM has its own (emulated/simulated) PC, this
would mean bytecode would technically be compilation (from the point of
view of the VM), but still interpreted by the host machine (as the host
machine does not branch directly to the byte sequence).

I had considered bytecode to be a middle ground between compiled and
interpreted, but then I wondered if there may be other categories as
well -- echoes of the zero-one-infinity principle. As the mentioned url
illustrates, the whole gig is a matter of how many layers you need to
tear through; "compiled" and "interpreted" are relative terms. Java is
"more compiled" than Bash, Perl is "more interpreted" than C, and so on.


2002.11.08 ~10 Pb rant addendum

Right about now, I feel I'd rather play on a server full of aimbotters
than fucking with Pb. At least when I take out a cheater, I can
righteously gloat haughtily for the rest of the game. With Pb on, you
can't really be sure if a cheater slipped through or not...


2002.11.08 ~09 Punkbuster Burn@g3

The inevitable has thus happened. But a lot sooner than I expected.
Punkbuster managed to fuck itself in the ass with a short one.

Word in the grapevine is that the cheats/anticheats war is divided into
two goliaths: OGC and Punkbuster. Apparently OGC has something to do
with aimbots or other cheats or something. Punkbuster is... well, most
of the quakers know by now. Seems there's a back-and-fro between these
two camps, and the fun-seeking fraggers have gotten the short end of the
stick yesterday. Or the day before. Something.

What I observe: being randomly kicked from a server for "technical
difficulties" in loading "pbag". Whatever the hell that is. The kick
period ranged anywhere from before even seeing the loading screen to 50
minutes tops. The kick effect ranged from a graceful "disconnect" style
(with error messages el al) to a process murder so violent that the
entire computer locked up (fuct vidcard state).

I've tried whatever I could to restore playability, ranging from
restoring from backups to copying files from strange places to
reinstalling Q3 1.32. Results are mixed. As I write this .plan entry,
I cannot play on *any* Pb-enabled Q3 server. For values of any
including local server (dedicated mode) on network loopback.

For fuck's sake, **LOOPBACK**!!!!

Rumor has it the Pb folks (evenbalance.com?) were so eager to push out
an anticheat update that they missed installation or propagation
validity, or somesuch.

To add to the irony further, www.evenbalance.com was unreachable as of
6pm local time. So no manual updating/fixing. An acquaintance
theorized (D)DoS attacks by the counter-punkbuster camp -- take down the
master while Pb updates are broken and still in flux.

I managed to peruse part of the evenbalance forums before it went
unreachable. There was one thread where one very angry server admin was
venting over Pb's b0rk3ness (to the extent that he was getting kicked
off his own (presumably remote) server), calling for the ability to
revert to earlier (unbroken) versions (countered as being contrary to
Pb's lifestyle), or the ability to selectively choose or tweak Pb checks
(countered for similar reasons -- "all or nothing"), or announcing
significant changes in updates (countered as being a loudspeaker
announcement to cheaters). The response from the Pb folks was basically
along the lines of "the EULA you agreed to says you agree to ride along
with whatever updates we push out as they're pushed out; if you don't
like it, don't use it". The server admin's rebuttal was along the lines
of "we shouldn't have to put up with BROKEN updates -- this stuff is
supposed to work transparently". Then the rest of the thread were
basically denouncing the thread starter for being hot-headed and rude,
pointing out "cheats in general", history of cheats, yadda yadda,
without really addressing the points raised. In fact, one responder
even declared there was no point in the post. Then the usual "if you
don't like it, don't use it" fluff.

(I think one of the funnier exchanges in the evenbalance forums was
someone establishing the correlation of punkbuster's appearance with a
lack of cheaters in RTCW as being a purely cause-effect relationship.)

What disturbs me is the "don't use it, then" part. There is no middle
ground, no competitor, no alternative. It either is or isn't. Admins
would like anticheat mechanisms, but as things stand at the moment, the
choices are either Punkbuster (with all its secret agendas, benevolent
or not) or absofuckinglutely nothing at all.

I think that's what disturbs me the most about Punkbuster. Not any
unknowable ulterior motive, not the fact that reflexive voodoo magic is
bound to fuck itself, not that all anticheat mechanisms are
fundamentally breakable. But rather the fact that there is no other
choice, except larking out stark raving naked. An adage from a darker
age of telecommunications comes to mind: "you have any choice of
telephone color, as long as it's black".

You have any choice of anticheat software, as long as it's Punkbuster.


2002.11.06 ~07 The so-called "Super Tuesday"; voting day

Election Day. The ballot reminded me again that the US is based on a
representive democracy (as most so-called democracies tend to be). Five
of the seven pages regarded "whom" to vote for, and the other two were
"what" to vote on.

I prefer not to dawdle and languish over the ramifications of a
so-called democracy that puts into office people easily... "swayed"
by... "donations"... that lead to... er... "sponsored bills" that "help"
the said "sponsors" campaign to put into office said people that were...
"persuaded". So I'll concentrate on something that came mind as I
looked at the voting mechanism doohickey, which sort of relates to
security in general and a little bit on forensics.

The two times I've ever voted in my life (today, and two years ago), the
voting mechanism looked the same. In fact, it still looks the same from
when I went in with my dad a decade ago to watch him punch his ballot.
I don't know if this is an artifact of my city in particular (been here
for nearly 16 years), or the State of California in general.

The (paper) ballot itself has roughly the same area as that taken up by
the typographic ("letter") keys on a typical PC-ish keyboard. The
ballot is basically a souped up punchcard; for those familiar with
Scantron forms, it's like a big version of one that has the choice poked
out to form a hole instead of bubbling-in with a #2 pencil.

The voting machine is all-mechanical. It's a mostly plastic thin box,
just large enough to house the ballot. The machine's business face is a
grid of hole masks (to guide the holepunch). Stiff paper pages with the
meaning of the particular holes are bound between columns of holes
(rotating on fine metal rods). Laid horizontally, the pages flip down
to hide all but one column at a time. The end result is that the voter
turns to a particular page, and the printed choice points with an arrow
to the exposed hole representing the choice. As a neat trick against
improperly inserted ballots, another layer of plastic hole mask lies
just under the machine main grid of holes, spring-loaded against the
ballot, such that the two holes do not line up (blocking the holepunch)
unless the ballot is properly inserted deeply. An equally simple
mechanism at the insertion end uses small plastic posts that the ballot
end slips over to keep it anchored against the springs. Should the
ballot slip out, the spring pops out the ballot and de-aligns the two
layers of hole masks to prevent any punching.

(ASCII art, monospace font required)
  punch holes
 contents | semi-blank page
  V V V more pages>>
+-------------+-+-------------+-+-+
|#OFFICE FIO=>|o| |#|#|
|# ERI=>|o| |#|#| <- # = zebra codes (!)
|# RUMI=>|o| ========> |#|#|
|# |o| GO TO |#|#|
|#FOO YES=>|o| NEXT PAGE |#|#|
| NO=>|o| | | |
| |o| | | |
| GOATSE YES=>|o| check for | | |
| NO=>|o| chad | | |
+-------------+-+-------------+-+-+
  next column on ballot
  |
(next page) V
+-+-------------+-+-------------+-+
|#|#PROP X YES=>|o| |#|
|#|#blah NO=>|o| |#|
|#|#blahblah |o| ========> |#|
|#|#blahblah |o| GO TO |#|
| | |o| NEXT PAGE | |
| | MEASURE Q |o| | |
| | blah YES=>|o| | |
| | blah NO=>|o| check for | |
| | blahblah |o| chad | |
+-+-------------+-+-------------+-+

Eh... where was I...

Oh yeah. I mulled over my choices "on the spot", taking it SATs-style
(mark what I dunno, mark it for return (but on another sheet paper!), go
on to others, come back later). Yeah yeah, should've researched, yadda
yadda. But while I did, I noticed bits of chads in the holes, of
choices I didn't decide on yet. So much for secret ballots. Well, OK,
so I don't know who was at it before, but it's certainly disheartening
when you see a bit of chad in the "No" hole when you're thinking "maybe
Yes...". Even more disheartening when the chad doesn't fly away despite
all your blowing and realizing the only way you're going to get rid of
it is by punching it through into the chad collector... as your choice
(can't do it with ballot removed -- the holes masks don't line up).

Anyway, I was thinking, despite all this effort to make the ballots
"secret", something so insignifcant as a random cruft of paper sticking
to an anonymous holepunch on its way out can still give away so much
information.

I find it intriguing how something so insignificant as a tiny tad of
chad can say so much. Security is one thing, secrecy another. Security
through obscurity rests on secrecy, and then some tiny bit (literally)
in just the right/wrong place can blow this kind of security.

Hrm. I forgot where I headed with this.


2002.10.31 ~23 Using balanced BST in TinyScheme

Basically I copied the trees algorithms in q3asm over to TinyScheme, the
C portion. Currently only the oblist (list of existing symbol names) is
a tree, but the speed increase in my mod (layered on top of TinyScheme)
is still noticeable, since TinyScheme constantly searches for existing
symbol names. The environment register (E), for resolving variable
names, still uses a list of frames, each frame using a list of bindings.
I don't think there's much I can do about the list of frames, but the
frames themselves might improve with the use of trees. I don't remember
how large the root (global) frame gets; I think it's beyond a thousand.

I haven't gotten around to incorporating splay trees into q3asm, since I
don't have a very strong motivation to do so at the moment. When I do,
I'll probably bring splay trees into TinyScheme as well.


Life: No Life found.

Project:
1. Project FI, Quake 3 mod (http://www.icculus.org/fi/)
 a. provide an extensible environment for a Q3 mod. The intended notion is that of "mutators" in Unreal Tournament.
 b. FI:WFC, a more faithful reproduction of Q2WF for Q3 than WFA.

2. QuakeScheme
 * Extensible language for Project FI.
 * Builds on TinySCHEME (http://tinyscheme.sourceforge.net/)
 * Deal with idiosyncrasies of Q3VM not handled by most other Scheme impls.

3. Q3VM libc
 * Implementation of Standard C Library for Q3VM bytecode.
 * Implementation of a subset of Single Unix Specification v2 (SUS v2).
 * Help import third-party library into Q3VM.

4. QS GUI/widget set
 a. Need to research advanced OO and GUI of Scheme derivatives and Common Lisp.
 b. Replication/extension of boxy widgets in Q3TA (Q3 PR 1.27+).
 c. Pie menus -- just to annoy theoddone33.

5. Q3 compilation toolchain
 [X] q3lcc sources (official version out with Q3A SDK 1.32)
 [X] q3asm - get static to work, dammit.
 [ ] q3as - assemble-only (.asm to .o).
 [ ] q3ld - link-only (.o/.a to .qvm).

5. PalmOS stuff
 a. PiNGer (gfx viewer)
  * generalize interface to a "any-gfx" viewer (libpnm?)
 b. ZBoxZ (file manager)
  * beef up its appness: menus, dialogs, pen actions


When this .plan was written: 2002-11-18 02:36:52
.plan archives for this user are here (RSS here).
Powered by IcculusFinger v2.1.27
Stick it in the camel and go.