Tuesday, August 31, 2004

Twitter And Tweep

Okay, this is the part where I talk about the United for Peace and Justice protest that I went to on the 29th. There will be some pictures included, too. So here's what happened:

Believe it or not, I decided it would be a good idea to wear a suit to the march -- first of all because I look real snappy in a suit, but second and third because I wanted to demonstrate that young urban professionals (such as I am, I suppose) don't like Bush and, in case trouble broke out, the media might get some pictures of police arresting a guy in a suit. Well, there didn't turn out to be any trouble, but there did turn out to be a lot of heat. We got there -- there being the corner of 16th St. and 5th Ave., a location within this protest-assembly radius -- around 11:00 AM and then just pretty much stood around until 1:00 PM. (The thing was supposed to start at noon.) So there's the first picture, which I hope will convey something of how hot it was, since it doesn't really convey much else.


Oh yeah, so on the way to the thing, though, we ran into some UFP people who were giving away free signs to carry. We hadn't thought to make any signs, so we grabbed a couple but didn't really read what they said until it was too late to give them back. It turned out they were all about ending the occupation of Palestine, and, you know, I hate every goddamn country in the Middle East as much as the next Northeastern Elite, but I wasn't really feeling fired up over the concept of subhumanoid idol-worshippers fighting each other over a pathetic stretch of scorched earth, so after a few half-hearted death-to-Israels, Tom and Ted helped me turn my sign inside out. I wrote "Quagmire Accomplished" on mine; Cuntington did the same to his but ended up writing "Girlie Men 4 Kerry" on it, as you can see in that picture where Tom's holding it. That's a sentiment I can get behind, if you know what I mean.


Here's this inflatable pig thing that doesn't like Republicans.


So it was really hot, right? And I was wearing a suit, lest you all forget. And we were going like, fucking... one block an hour, literally. So at around 27th St., Katharine and I decided to take a little breather and stepped out of the march. I had to take a piss like nothin', so I roamed around until I found a wonderful, wonderful Starbucks that let me use the pisser without any questions. While I was waiting on line for the bathroom I heard this olive drab girl with a whole bunch of olive drab shit in her hair say, "This year I'm all about anti-corporate stuff. It's so freeing!" while she sipped on some kind of icy-pricy coffee drink. Irony, people: It's what we're fighting for. Irony: Is it the new... irony?

Katharine dropped out at this point. Wuss! A block later I saw an old woman with heatstroke throwing up a popsicle.


At around 30th St., we started seeing signs of the convention. First off, this hotel is apparently real happy to host the delegates. Well, Southgate & Affinia, if I ever have to stay at a luxury hotel in my hometown across the street from one of the most hectic awful transit hubs in the world, it ain't gonna be yours!

As we were getting close to the Garden, we saw all this black smoke from around 34th St. The local news later informed us that some "anarchists" had set this papier-mache dragon on fire to get a rise out of the cops. Bad, bad anarchists. Shame on you.


No, Republican National Convention; Thank you.


As we got to the garden, people started chanting "George Bush, go home!" Here's the thing, though -- nobody wanted to shout the whole thing, they either wanted to say "George Bush" or "go home!" and really nobody wanted to shout "George Bush." So I was the one who had to do the "George Bush" part, and I did it for about 5 minutes until my voice gave out. Here's a picture of all the cops hanging out around MSG; you can't really see too well, but there were a lot of them.

I don't have a picture of it, but that gigantic Fox News sign on 34th took a lot of verbal abuse as we rounded the corner towards 5th Ave.

Going across on 34th St. is where we started to meet some of the counter-protestors. The infamous Protest Warriors were the first ones we saw; they were all standing behind the barricades holding signs, most of which were concerned with various hypocrisies of Socialism. Hey, I'm a Federalist, guys. Don't waste your breath.

There were also like half a dozen garden variety religious wackos who had the typical array of signs and banners. I told the guy with the mangled fetus pictures that we should abort more babies, and this female protester next to me yelled out, "Leave my body out of this!" I'm not sure if she was agreeing with me or not. This other guy had this crude stenciled poster of a fighter jet that said "Support Bush, Support Jesus." I tried to get a round of "Fuck Jesus" going in response, but my fellow protesters pussed out; this dwarfy girl who looked like a real pain in the neck even told me not to go there. Christ, I hate women. Abort more babies!


Okay, last pictures -- this woman had a pretty sweet costume, but nobody was giving her any props. You liberals don't know a good thing when you see it.


This sign was cute, I guess. A bit too clever for its own good, though.


Another picture of cops, this time in this alley at around 30th St. and 5th Ave. One thing that's difficult to explain without better pictures is how many cops there were, especially on the 5th, which was a little weird, since that's where the protest started thinning out, actually. There would just be these huge banks of them, standing silently in formation, waiting for something to happen. And nothing did.


Okay, that's the end of it. Afterwards Mer and I went back to my parents' house (they'd marched as well, though we hadn't met up with them) and had some red wine and hamburgers on the deck in proper limousine liberal style. Now back to boring bullshit:

I want to donate a lot of my old comics to this comics museum / archive thing, but for tax reasons, I think, they want me to figure out how much I think they're worth, so I bought a copy of Wizard yesterday and carried a box of comics home from my parents' house and looked them all up in the price guide. Turns out this one box was worth around $300! Career in philanthropy, here I come.

I also had lunch with Devin at this place called Paul's on St. Mark's. Devin can really eat a hamburger, I tell you what. That thing was like a medicine ball made of meat.

What else, what else. Oh, so I finished The Stranger and now I'm reading some Jean Cocteau plays. The Infernal Machine is the best so far. I beat that game Knights of the Old Republic, too, playing as a "Darkie" Jedi. The ending is not great for either alignment, but let me tell you, you can kick a lot more ass as a Sith than as one of those ass-sucking Jedi. Speaking of ass-sucking, have you guys seen that new building-sized Calvin Klein ad on Houston street? That slut is all over that dude's butt.

Shattered Glass is off the hook.

Thursday, August 26, 2004

That Don't Matter, Joan

I went to go see a show by my friends Big Business on Monday and had a very nice time. I was a little worried that the whole thing was going to make me horribly jealous or depressed, but to my great surprise I enjoyed watching it without really wanting to be part of it. That's never really happened to me before. I saw Billy and Chris of course and also Bobby and my friend Emily from Amherst and my old friend Kim from high school who wants to be a 3-D animator, apparently. Bill's parents were glad to see me, which was nice, considering I haven't hung out with him in like 2 years. I bought a cool t-shirt that Billy's girlfriend Sarah made. The only downside was that I lost one of my awesome black Call of Cthulhu dice that I always carry around in my pocket -- I was taking my hand out to say hi to Bobby or Frank or somebody and it just fell out. Somebody must have pocketed it because I couldn't find it after the show.

Boy, am I glad I didn't go to Amherst, though. Maybe it wasn't a representative sampling, but the people at the show were pretty creepy.

Ted got us tickets to see this play Frozen on Friday, which was fun as always, except that Frozen is probably the least interesting play you could possibly make about murdering children. Also I got some kind of awful food poisoning before the show and missed like the first 15 minutes because I was crapping all my organs out in the bathroom. They played this series of chimes like 3 or 4 times to get people to quiet down, I guess, but I started wondering if maybe they were trying to get me to hurry up in the john.

I got home at 7:40 or something today, which is pretty horrible. I don't feel horrible, though. The cat is chasing a nickel under the couch. I'm reading The Stranger and loving it.

I want to do this on Saturday, but I can't figure out where in NYC it's going to happen.

Monday, August 16, 2004

My Name Is Brody, I'm From Melbourne

Man, why are all you liberals so negative? I think things are going great!

Woah, has anyone out there tried to program with ncurses? That thing is fucked. It's like trying to position text absolutely in pre-CSS HTML or relatively in post-CSS HTML. This is all fucked. God, I want to die.

Reading: Killing Time, by Caleb Carr. The guy's an okay writer, I guess, but he's not much good at developing the interior monologue of the narrator. You know what I mean? It's like, it's really hard to tell what kind of a guy it is that's tell you the story.

WLIB sings:
Are things really getting better,
Like the newspaper says?

Thursday, August 12, 2004

Vultures Circle Round

Not to lower the level of discourse on this "'blog," but how stupid and mean looking is Scott Peterson's "lover?" Man, it sure lowers your opinion of someone when you find out they're attracted to this awful, mundane person. 'Cause before that me and Scott Peterson were like this. This.

My fucking bike got stolen last weekend! I kind of knew it could happen when I chained them up outside, so I'm not exactly reeling with the shock, but you know, I actually liked my bike, and I'd been nagging myself for some time to take it to 'On The Move' over on 12th and 7th to get it fixed up. Maybe it's for the best -- if it was gonna get stolen no matter what, I'm glad I didn't pump an extra $40 into it before the fact. I took Mer's bike upstairs (they didn't take it even though the two were chained together -- where's the justice, I ask) and put it in the bedroom.

Mer bought us an XBox! She got it with the game Knights of the Old Republic, which is pretty great. She's playing it now. It kind of defused my plans to buy a fancy new computer to play Call of You-Know-Who-Hu: Dark Cronners of the Scurth, because that game is coming out for XBox. So is DOOM3! Eat a grinch.

"At a point in every person's life, one has to look deeply into the mirror of one one's soul and decide one's unique truth in the world, not as we may want to see it or hope to see it, but as it is," McGreevey, a Democrat, said.
Sounds like the guy wanted a piece of him:
The Associated Press reported that the man involved in the affair, a former government employee, demanded "an exorbitant sum of money to make it go away," a high-ranking administration official told wire service. Cabinet members and administration officials learned of that threat Wednesday night, the source said.
First Alan Turing, now Jim McGreevey? You just can't have a gay affair this century without getting fucked.

Burned a copy of an older Distillers album, the one with Seneca Falls on it. It's okay, but not good enough to buy -- so I'm glad I didn't! Manifest destiny and all that.

Wednesday, August 04, 2004

This Ain't No Mecca, Man -- This Place Is Fucked!

From The Unbearable Lightness of Being:
Behind all the European faiths, religious and political, we find the first chapter of Genesis, which tells us that the world was created properly, that human existence is good, and that we are therefore entitled to multiply. Let us call this basic faith a categorical agreement with being.

The fact that until recently the word "shit" appeared in print as s--- has nothing to do with moral considerations. You can't claim that shit is immoral, after all! The objection to shit is a metaphysical one. The daily defecation session is daily proof of the unacceptability of Creation. Either/or: either shit is acceptable (in which case don't lock yourself in the bathroom!) or we are created in an unacceptable manner.

It follows, then, that the aesthetic ideal of the categorical agreement with being is a world in which shit is denied and everyone acts as though it did not exist. This aesthetic ideal is called kitsch.

Tuesday, August 03, 2004

Hang The Jerk Who Invented Work

Sometimes I hate my stupid job, I really do.

On the plus side, after oh-so-much fussing and tweaking randomly and praying for my bug to go away, I finally figured out exactly what was going wrong with the socket communication in gzochi. I'm going to explain it, in case it can prevent any of you from tearing your own hair out over something similar: Okay, so first off, TCP sockets, which are great, are stream-oriented, which means you can treat them like files. That is, you can say, "hey, you, file descriptor! Do you have any data for me to read? I want 1024 bytes!" And the socket will say, "well, here's 37 bytes" and maybe the call to read() will even block for a little while before the socket says this because no one has actually sent the bytes. So here's what was happening in my program -- the user sends a message asking to join a game on a gzochi server; then, the server decides whether or not this is okay and tells the client so; then, if the request was approved, the server asynchronously sends a "token delivery" message, which is the key that will allow the client to actually initiate a datagram conversation with the server. The token is delivered asynchronously so that game availability would not necessarily be closely wed to the client requesting to join the game -- that was just a design choice I made, and hopefully it'll make the server more flexible in the long run. Anyway, what was happening was that the client would report the receipt of the message from the server saying whether or not the request to join the game was approved, but would not always (but sometimes would) receive the token, which, again, was sent in a separate message. I had no idea why this was happening.

Then I figured it out, and here's where it gets interesting. You'll need to know a few things: First of all, when you're reading from a stream into a buffer, you have to make sure that the buffer is big enough to hold the stuff you're reading. If, in one shot, you read, for example, 16 bytes, and you want to store all of it, you need to have a 16-byte buffer ready. You might think it'd be a good idea, then, to resize your buffer each time you read a byte -- read, allocate, read, allocate, etc., until you're done. No! This is bad, because allocation is time- / processor-intensive. Instead, what you do is try to read a big chunk at a time and write it all to the buffer, which is allocated by chunks. In my case, the chunk size is 1024 bytes.

The other key thing I should mention is that my TCP communication is mitigated by the use of zlib, a free (as in freedom) and wonderful compression library. zlib is also stream-oriented, in that you point it at some bytes and tell it to decompress them, and it'll come back and say, "hey, give me more bytes, the decompression's not finished," or, "okay, the message is fully decompressed." It figures out when it's decompressed the whole thing based on the input stream itself. This is great, because the stream-orientedness of TCP means that it's hard to tell when you've sent an entire message, especially when your messages are in (relatively) English text like mine are. I mean, you can use a certain character to signal the end of one message and the beginning of the next, but what if someone needs to send that character as part of a messaage? So by compressing the messages, I not only save bandwidth but also make the boundaries between messages programatically obvious.

So I grab 1024 bytes at a time, and zlib tells me when I've got a whole message. Here's where the problem was happening: If I grabbed more than one message's worth of bytes inside my message-reception code, I wouldn't look at anything past the point at which zlib told me it had decoded the first message. So each compressed message weighs it at about 100 bytes. When the client requests to join a game, the server sends two messages, one for the yes / no response, one for the token. On the client side, I ask the socket for 1024 bytes, and it gives me about 200. After processing about 100 of them, zlib tells me that it's done, and I return the decompressed message to the application layer, discarding the rest. So. It hadn't come up before because the server and client messages were usually one-to-one, like ping pong. It was when the second ball entered the mix that things started to go wrong.

Anyway, I fixed it by buffering my message-receiving code. So I still return the first message when zlib's finished decompressing it, but now I hang onto the remaining bytes and put them towards the next call to the message-receiving layer. Phew. Now I have to get back to designing this thing. Ugh. What a bad (2 months of utter anguish) coding experience.

Maybe I'm just an idiot.