Wednesday, January 28, 2004

Sands Of Time, Sans Up-Time

What the fuck?

Well, Kerry took NH, and will probably take the nomination. He most certainly will not beat Bush in an election. This must make Ted Rall nigh-hysterical:
Bush is a disaster. He has nearly bankrupted the federal government and many states with his profligate spending policies. He has planted the seed of fascism in the highest levels of government with his concentration camp, red-baiting and increased surveillance powers for Das Homeland. And it's a fair bet that he's planning more unwinnable wars for 2005. The Democratic Party needs its best chance at defeating him this fall, and that chance isn't in the form of John Kerry.

I fear that too many Democrats, and too many Americans, don't get it. If Bush wins this election, there may never be another one.
No question about it. By the way, how wrong is Dean on this one:
At every turn when there has been an imbalance of power, the truth questioned, or our beliefs and values distorted, the change required to restore our nation has always come from the bottom up from our people.
Apparently last Sunday's Magazine was a bit off when it came to the sex-slave story. I didn't even read it, it sounded too depressing, but the title they ran for it was "Sex Slaves on Main St." What I want to know is: Is the title a joke on that Rolling Stones album? I asked Mer, and after a few minutes of trying to explain to me what a Main street was, she admitted that she'd never heard of the album.

So, here I am, fulfilling my duties as web-logger:That is all.

Tuesday, January 27, 2004

These Naked Women Love Animals!

Contempt, contempt, contempt

Maggles wanted a new 'blog thing so bad. What, Big Hot-Dog In Little China doesn't do it for you? I. Thought. Not.
(21:23:48) Nintendo Julian: it's just gonna be full of computer shit
(21:24:03) missmagsy: no there will also be some wry criticisms of reality
(21:24:10) Nintendo Julian: maybe
(21:24:13) Nintendo Julian: let me see what I can do
(21:24:35) missmagsy: yes, see what you can do
I'm so brave; I'm practically Todd Barry.

I finally tracked down the copy of George Alec Effinger's When Gravity Fails that's apparently been hiding out in the basement of the Brooklyn Central Library. NEAT. It's okay. He's kind of a hack, but I'm already kind of attached to the story, so it's going quickly. I keep seeing little EGA-color portraits of the characters in my mind. Man, this game Circuit's Edge, right, the one that's based on this book -- see, there's this bar named "Chiri's" that's basically a cathouse, and in the game you could pay to have sex with any of the girls even mentioned tangentially in the novel. Wild. That's how I found out what titties look like -- they are a dithered mix bright red and magenta, and the nipples on titties are always hard.

Ted graciously got us some tix to see a brilliant new work of contemporary theater. It was all about boners. And how the only thing that's important in life is making things expensive and beautiful. Oh wait, maybe that's a big waste of time; no, wait again, it's good. Ted, though. This guy! I hope to rock out with him on Friday at Ultrasound.

I kicked so much ass on the kit there last time. Did you know that almost all of Ringo's drum lines are pretty much the same? He has this fill that he really likes to do a lot, too. It goes "snare, snaresnare" -- pause -- "tomtomtomtomtomtom."

Okay, it's politics time for the 'blog. That surprises a lot of you. Okay, I'm going to come out and say it -- I think Wesley Clark might be a better candidate for the Democrats than Howard Dean. Don't get me wrong, I do like a candidate who looks very scary and seems to deliberately want to make me angry by defending the ass-shitting second amendment, but I don't feel like he can take on a nation of people who like their liberals like they like their minorities and women: Non-uppity.

I'm happy because the way Lua works finally got through my thick skull. I was worried because I knew people would want to be able to script objects in OpenRPG and I thought I'd have to Write My Own Scripting Language. Writing Your Own anything is always a bad idea; designing your own language is a real sink -- like for dishes, only for time. But Lua is nice, since the script is an object that you can manipulate, and from which can call certain C functions that you register. So an object would know how to try to move itself around, and maybe it could call this function to submit a command to the action queue. How to pace the scripts, though? Do we let scripted objects run as much as they want but only submit one action per "beat?" Or maybe we need to pace them so that the scripts can only execute a few lines per beat. I think the former, so that, for example, scripted AI can make as many calculations as it needs to. NEAT.

But I'm not even working on it, and haven't been for the past week -- just thinking about it. And you know what? That's just great. Ugh, this ramen that I ate makes me want to throw it up.

Thursday, January 22, 2004

Out Come The Wolves, Man. Out Come The Wolves!

I started thinking, you know I started drinkin'.

Give 'em the boot, the roots radicals. Come on now.

I was feeling pretty down; I've been having what I guess you could call bad dreams. It's not so much that they're bad as it is that they leave me feeling completely miserable when I wake up. But then I spent some time talking up Konrath, who went sky-diving in Vegas for his birthday and seemed, for some reason, to be even more down than me. We went to get some Wendy's, and now I feel a bit better.

I also bought a bag of fun-size Clark bars. Those things taste like paint thinner.

I can't get motivated to do the work that needs to get done on OpenRPG. I'm trying to think of the best way to organize objects in the model world that the server has to maintain. A lot of similar pieces of software do it by creating "zones," in which a particular ruleset is active / particular script runs / etc. That might not be a bad idea, except that I'd want to have zones defined in three dimensions, like arbitrary shapes, and if ray-casting has taught us anything (and I do believe it has!) it's that testing for inclusion within an irregular 3-D solid is a place you don't want to go to, sister.

You know what would be interesting? A protocol-specification language for finite-state-based client-server / peer relationships. You could use it to jot down the relevant details of your protocol, and then people could write "compilers" that generate networking code in the language of your choice. Maybe that'll be my Master's thesis when I stop dicking around and get my life together.

Tuesday, January 20, 2004

Fuck Seabiscuit

I swear, that is the boringest snoringest movie I have ever seen in my mercifully short life. I mean, yes, the sets are very beautiful, but the fucking movie is about a horse. It's like the living, sweating equivalent of NASCAR. Hey Gary Ross, you need to make it clearer to people why a horse is interesting, especially to people like me who do not give a shit about how fast things can go around in a circle. Like, what about Jeff Bridges' dead son and his fucked-up marriage? What about the fucking jockey who's blind and has scabies? What ever happens to his parents? What about Chris Cooper's character? What about depression-era America? What a bunch of shit. God bless you, Seabiscuit. We didn't fix you, you fixed us. And the Work Projects Administration. That also fixed us. Come to think of it, you are just a fucking horse.

The more I read these IT trade magazines, the more hideously depressing they sound. People are inventing all these languages and platforms and blah blah blah and they all sound so stupid. I mean, who the fuck Christ needs another god-damn virtual machine, much less one based on Windows -- as if Windows gave you a reasonable abstraction of your computer. It won't even let you kill your own processes. It must be that all these creeps get hired as economists or Financial Professionals or some bullshit like that and then they have to learn how to program, and this is what they come up with. The World needs more actual by-choice Software Engineers writing software that is consistent with good ideas about the way computer systems ought to behave, and not about a billion more C++ export macros that make your palm pilot work with your Blackberry or another custom C++ compiler for Windows that encourages you to make unbelievably stupid design mistakes but comes with a Macromedia Flah IDE. I swear, the syntax is so shitty and the library overhead so huge in C++ I'm amazed that anyone gets anything done in it, ever.

How awesome is this, by the way? Also, how long before we set up strategic war bases on every planet in the solar system. Then we'll finally be Safe from a bunch of malnourished Arabs with box-cutters.

I've been tearing my few remaining hairs out over software design for the past week. Basically, all my client-server talking functionality was based around this XML DTD called "openrpg_message," which was an encapsulation for a bunch of type / value pairs. So a sample transmission from the client to the server might look something like:
<openrpg_message>
<content type="foo" value="bar" />
<content type="jibber" value="jubber" />
</openrpg_message>
Unfortunately, this format is insufficient for a lot of functionality that still should be using this type of messaging. For example, when the client sends an administrative command to the server -- a non-game command, like "send a private message to this user" or "show me who else is logged in" -- it should use the openrpg_message format, and so should the response. However, using the current DTD, there's no way to express an arbitrarily large set of discretely-indexable data. That is, suppose a user asks for a list of something, like a list of help commands or a list of other users on the server -- there's no good way to return that data, except as a comma-delimited list of values within a content tag. And what if each item in the set needs to have a corresponding item in another set. Extending the DTD is not a huge deal, except that I've written a bunch of functions that convert the incoming message to a hash (of all the type / values pairs), so that adding data types to the DTD would require a change in how I handle hashes. I was getting real depressed about having to do something that just didn't seem right, like adding a "list" field to my hash struct. Then it hit me -- I should be wrapping the entire message in its own struct. So now I have something like:
struct openrpg_common_message {
struct openrpg_common_hash *hash
struct openrpg_common_list *list
And in the future...
struct openrpg_common_object *object
};
So every message that gets sent will at least have a hash, since it is required to have at least one content element, but it might also have a list of values and/or an object -- so it's now suitable for "add_object" messages sent to the client. Not a 100% beautiful fix, but a fix. No doubt I'll have to revise it all again later.

Sunday, January 18, 2004

I'm Just Guessing, Okay?

It's weird that The Onion A.V. Club had such a positive reaction to Paycheck. Don't get me wrong, it's an okay movie, but you know... so.

Free will is an illusion. Stop crying about it already -- ethically speaking, whether what you perceive as free will exists in the silly Cartesian sense (like, is it in here?) or is merely a side-affect of the complicated interconnection network of neurons in your brain does not really matter in terms of your day-to-day interactions with other human beings. However, it has big implications when it comes to your attempts to build a machine that can see into the future. See, if there actually is such a thing as free will, then you can avoid taking the actions taken by your avatar in a vision of your future self and thus the vision of the future provided by the machine is wrong and so such a machine cannot exist. If there isn't such a thing as free will, then you would almost be able to build this machine. But wait -- how could you see your own future and not be able to act to change it? Try not to let this fuck your mind: A future-viewing machine would need to be able to show you the outcome of a series of wave function collapses -- theoretically, each quantum superpositioning (you may comfortably abstract this into an "event," I think) produces a set of outcomes in the form of parallel universes in Hilbert space. Maybe your machine can enumerate all of them, and one is bound to match the resulting outcome of the collapse of your universe's cumulative wave-function combined with the outcome of your seeing a vision of the future. The result would be a vision of the future from which you would actually be unable to deviate. But to compute this, the machine would already have to have an accurate vision of the future with which to provide you -- something it wouldn't have until finishing the computation. It's an infinitely recursive function, like some kind of mega-quine. Point is, you can't build it. Sorry, Philip K. Dick -- Richard Feynman just fucked you with The Rabbit.

Don't think I'm saying that the mind's perception of free will has anything to do with quantum mechanics. I'm not. Anyone that thinks the two are related in a significant way is an idiot.

Wednesday, January 14, 2004

It’s Warm And Humid On Swanson Street

So, among other things, I burned the Distillers album this morning. Brody warned me not to, but I'm no longer really into buying CDs that I'm not sure I'm going to like. And, you know, this one is kind of a mixed bag. I pretty much agree with the critics -- the first few songs are pretty great, but the rest of the album is a bit of a drag, especially this fucking 15-minute feedback wank session at the end called "Death Sex." I mean, for fuck's sake. She's only 23, though, and, after all, what have I done with my life, really?

But I definitely like rock stars who call me a fucker and an asshole. You go to shows these days (well, I don't, really), and everyone's always like, "Oh, we love you guys so much, thank you so much for coming, we do all of this for you." It's so embarrassing. If you're not ready to have a combative relationship with your fans, you need to get of punk rock and become a party planner or something. You can cover Gary Glitter live and get everyone psyched for a hockey game.

Oh man, I got so much stuff done last night -- graded some worksheets for Mer, did the dishes, tidied up; I didn't even have time to play computer at all.

[Now it's Thursday]

Ugh. I feel like the crap parade. Tom was saying it was inequitable that he should be throwing up all day at work and I should be fine, but check it out, guy: I spent like 45 minutes to an hour on the toilet last night shivering and spraying out squishy Lincoln-logs of bean-flavored paste. Eugh.

Hey Dennis Miller -- if September 11th made you into some kind of reactionary psychopath, it doesn't mean you're "doing the right thing to protect your country" or "ensuring that freedom will not perish from the Earth" or whatever the crap. It means that when the going got tough, you got stupid and emotional. "Well, I guess on the farthest end of the left they'd say, 'That's our fault.'" I wonder where that leaves me? Oh yeah -- it's our fucking fault, asshole. If we can do that kind of shit in other countries for hundreds of years, they're not allowed to do it back to us? I guess the difference is we did it dressed to the nines. Can we please ship some expensive guns and stealth fighter jets over to Afghanistan or Korea or whatever so that the next time they kill 4,000 U.S. civilians it doesn't look like a 7th-grade science project that was slapped together the night before?

I was going to say something about the repulsive porcine jibbery-jubbery David Gelernter, but his awful, unusable software speaks for itself. I wonder if he likes to organize his screeds against women, gay marriage, and Arabs in a visual time-stream of system-resource-hogging floating solitaire cards. However he does it, he does it without a fucking right hand. Some people do not handle tragedy very well.

Ooh, look, they're re-releasing The Battle of Algiers. Wonder why?

In between bouts of nausea and burping, I managed last night to move OpenRPG's server-side client locking over to a more sensible model. The problem: The thread that broadcasts object updates during a game might select a large block of client objects from some table and start iterating through them; at the same time, the client listening thread might receive a command or a hangup or something from a client at the end of the other thread's list and kill and remove that client. So now the broadcast thread has a pointer to garbage and you're looking at a segfault. Solution: Include a mutex in each client and lock on it before you try to do anything to it; once you've got the lock, check the state field. If it's set to queued-for-deletion, then you know you've got a dead client and you can skip it. So who actually deletes the client? I don't know yet; whoever it is is going to have to lock on the global client list and then ping a function that removes the client from the game threads' client lists as well. Concurrency, huh? What a shit-shower.

Tuesday, January 13, 2004

All These Fiends Want Teenage Meat

Tom drew that picture of me while I was playing my Squier over at his place the other day. He was worried that my feelings would be hurt, but I think it looks awesome. Mer said, "Wow, your nose is huge. You look like a celebrity. That's what Tom can do. He can make people look like celebrities." Yes, it's true.

A truly horrifying cover shot for the Times the other day. I like how the new metrosexual Jew thing is to prove how much you love and understand what it means to be a Jew by moving from your cushy Manhattan apartment to some waste-pit of a region, joining their secret police force, and conducting raids on the houses of an ethnic / religious minority. I swear to god, they interview these people on the local news and they say things like, "It's every Jew's duty to protect the Fatherland and restore it to its former state of glory." Mmm, is that the taste of irony? No, that's just iron in the blood I'm coughing up because I want to throw them all in the gulag so bad.

Who else has it coming to them? Oh yeah, the repulsive Afghan extremists who don't want women on TV unless they're wearing those special suits that give them an electric shock whenever they menstruate. Please explain to me how treating women like dirt is an important part of a culture that needs to be preserved. Right, because it's a tradition. It would be nice if the Big 3 Anti-Human World Religions could be phased out like other ancient traditions, like, for example, like preparing your own food. Until then, can we please set up little Human Rights Tribunal franchises all over the Third World so that Muslim men who are serious about the religious tradition of women not being allowed to go to the doctor can be conveniently tried and gassed in the course of an afternoon? Kthx.

The Chinese are still behaving terribly.

I've been spending a lot of time trying to re-organize the OpenRPG server code so that I can shut down client threads and the server itself without creating memory leaks. It's a real problem. Maybe I'll try to work on it at work today. Maybe this is why people don't write Enterprise-Class Network Applications in C.

I think I saw the guy who plays the dad in Max Magician and the Legend of the Rings on the subway this morning.

Last Friday I went over to Ultrasound after work and played the drums for an hour. It cost $10.00 -- I'm not sure if that's a good price, but they have much better equipment than fucking Prince. I swear, the studios at Prince are like rooms in a flophouse. One time Igor took us to a room where all these busted-up bass drums were piled all the way up one wall and there were a bunch of guys just hangin' out and smoking. They didn't leave until like 10 minutes into our rehearsal. But it was so cold out Friday; that was one of the fucking cold days last week, and my hands were totally frozen because I didn't have any gloves. So maybe for that reason I didn't really notice it when I clipped one of my knuckles on the hi-hat. The dopey engineer guy came in to tell me I had five minutes, and I was like okay, and then I looked down for a second and there was this huge, like, 4-inch-in-diameter bloody wet spot on my jeans where my left hand had been daubing knuckle-blood everywhere. Gross.

Addendum: I forgot to mention it -- I found a copy of this sci-fi book I've been looking for for a long time called When Gravity Fails. Turns out my local library has it! I've wanted to read this one since I played a PC videogame adaptation of it called Circuit's Edge (what a stupid name for... anything). Every sci-fi author likes to predict some kind of shift in the balance of culture that happens in the near future -- Neal Stephenson has the Chinese taking over in a big way in The Diamond Age -- and this one's all about the Middle East, as far as I can tell. Neat.

Friday, January 09, 2004

Nook Nook!

Here are some excerpts from other web sites. I wish more people read my 'blog. Jerry from Penny Arcade remarks on the nature of fate -- I agree, except for the part about the manatee:
...you think, well, I was in the same physical place that person was and perhaps it could have been me instead. This doesn't make sense, I know. Life isn't some kind of cakewalk where the music stops and then they take the person on square 23 away to be a professional tennis player.

I don't really have any complaints about how things are going, at least, no legitimate complaints. I sometimes wish it were feasible to own a manatee. You make your peace with things like the manatee issue and you move on. But man, there is something about success in others that just kills a person.
Telsa Cox's diary offers adorable insight into marital bliss:
Alan now officially Does Not Approve of the intercom. He has decided we need a computer (or, more properly, an appliance) in the kitchen. This is all because I beeped it at him to tell him that I needed him to stir the sauce. He thought it meant tea was ready.

He is very good at stirring the sauce, though.
I have a huge crush on Brody Dalle / Armstrong and plan on burning her CD to listen to at work. Baby, I will write GPL'd software for you. But "Open up and let it flow / I'll make it yours, so here we go???" Come. on.

Scores please.

Thursday, January 08, 2004

Screwing The Pooch

I am taking the GRE on February 7th at 8:00 AM. Christ in a potato pancake.

The Company Party was on Tuesday. The other QA guys and I got a cute, impromptu speech from our new manager who'd had a little bit too much to drink about how much he was looking forward to working with us. The thing is, though, he started off by talking about all the people he'd fired in his life and how bad they deserved it. No joke, it was pretty weird. Then I drank a bit more and dared Skov to go in on a deal with me wherein whoever got in first Wednesday morning would get to fire the other guy. He offered to just plain old fire me right then, but I was there like clockwork at 8:00 AM and he didn't make it in 'til 10:30. So I guess you're looking at the new Very Important Person of Software Engineering.

Speaking of work, the lone tech writer here, who's self-published a couple of novels, has created a cute little hypertext glossary of his life. This entry contains a pleasing description of an idol of mine:
His appearance is a bit offsetting [sic], because he looks and smells like someone who lives in a train tunnel.
Do you guys remember the Promise Keepers? What a depressing fucking joke that is. Imagine a football stadium seething with resentful, emasculated homonculi raising their fists in celebration of mediocrity. Please get really excited about staying with your ugly, ignorant wife and raising your mongoloid children -- you are all doing a great job to briefly stave off the implosion of the repulsive middle-American Christian working class. Which Promise are you guys Keeping exactly? Is it the one where Joseph Smith and his army of Native American super-hero angels decreed that there would never be a shortage of grandmas working at Waffle House?

I have become a slobbering devotee of Valgrind. Christ. This thing is less like a debugger than it is like a shiny metal box covered in razor blades that solves the Halting Problem. I mean, no, but it includes a fucking x86 emulator, generates 9 fucking bits of accounting data for every shitting byte that you allocate, and its various components are named after It's so comprehensive it makes my mind wander out to the edges of the giant gravastar bubble we live in just contemplating the possibilities.

Ultimately, though, even Valgrind was unable to get to the bottom of the free() problem I've been battling for the past week. See, all my debuggers had been telling me, in different ways, that this address foo that I had to keep allocating and freeing did not come from malloc(). I'm like, what the fuck?! I'm looking at the line where I malloc it! Well, it turns out that fucking dmalloc's fucking dmallocth library that I'd been linking with does not correctly annotate pointers that are malloc'd in space that comes from dereferencing other malloc'd pointers. That's just what I'm guessing. I have no idea.

Sounds like it's business-time in Creep Land -- i.e., the Office Kitchen.

Monday, January 05, 2004

I Don't Even Like It

Well, it's a New Year -- it's 2004, and nobody likes to make a web-log anymore. Least of all, me.

So Mer and I made our pilgrimage to Sarasota. I do not like that place at all. I was shitting explosions the whole time. Thank the fuck Christ it's over.

For New Year's we went to this guy Kevin's house over in the Heights, and we were drinking and you know, whatever, and everyone decides to go down to the courtyard for a cigarette. So I'm down there and you know, we'd been singing around the piano up in the apartment, and we're still singing some songs down in the courtyard. About 15 minutes after we get down there, this woman comes down and is like, "Don't you know how much noise you're making? This is a private apartment building and it's really late and blah blah blah." So we're all like, "Okay, we're sorry, we'll leave," but she says, "You're visiting someone in the building, aren't you? Who are you visiting?" When she says that, we're all like, "Booozht!" because Kevin's subletting, and if we get him in trouble it could be disastrous. So no one's saying a word, and the woman keeps asking us which tenant we're visiting. Finally, Mer goes, "Well, we wouldn't want our behavior to reflect poorly on our host, so I don't think we should get into that." The woman's like, "Well, then, I'll just consider all of you strangers on my property," and Mer's like, "Yes, I think that would be best." And the woman went back upstairs to her cushy waterfront apartment. Granted, group singing is kind of inherently lame, and I have certainly told groups of singers to shut the fuck up myself in the past, but, you know, we were very polite, and it's Christing New Year's for Christ's sake. Some people are plain old vindictive, I guess. Not me, though. Anyway, well handled, Mer. I was very impressed. She also had the good sense not to tell Kevin about it, so that he'd have plausible deniability later. S-M-R-T.

On Friday I went to a party at Alex Plakias' house. I totally didn't recognize her parents, since I hadn't seen there in like, what, 15 years? But they were all about hugging and kissing and "say hi to your family for us." Sure, I'll do that. She's pretty hot; that girl wanted to play dirty marriage with me all the time when we were kids. But now she's graduated from Hamilton -- and she's already in grad school! What the Christ. She's also got this library of pretentious books in her bedroom that I wish I had. Time to sign up for the GREs.

How do you guys feel about all this We-Know-What's-Good-For-You legislation? I mean, look, I'm practically a communist in terms of the size of government I prefer, but some of this stuff is pretty stupid, like this thing that got passed in Ohio that makes illegal the act of videotaping in a movie theater. Why is that the State's business? Private companies should have to take care of themselves. Mind you, I'm completely in favor of the anti-smoking-in-bars thing, because the burden of taking care of smokers falls almost directly on the State, via the cost of Medicare / Medicaid / whatever it is. I haven't really thought about it that much; maybe it's a bad precedent. No, wait, I like it.

Speaking of such issues, it amuses me to no end that noted Libertarian and prolific Open Source evangelist Eric Raymond thinks he has any chance of picking up girls at a movie screening, even if it's The Lord of the Rings. The man is a toad; physically, and, pursuant to that, on account of his aggressive enthusiasm for talking about sex. Going forward, let's agree that it's only okay to write about sex if you're sexy. Granted, that's a bit glib, but things are getting gross out there.

I have made my submission to Adam Cadre's Lyttle Lytton contest. No doubt it will bring me both fame and happiness.

I spent this weekend trying to iron out a couple of truly pesky bugs in OpenRPG. One of them, I got -- when you pass a a set of file descriptors to select(), it removes the file descriptors that didn't have input to read (or space for output or whatever), so if you're using it to calculate timeouts, like I was, you have to re-add the client's file descriptor in order to check to see if the ping that you sent got a response. That was stupid. I suspect that the other one, though, is a delicious malloc-overrun. For those not in the know, when you need to store something, anything, in C, you need to allocate memory for it. The memory allocator, malloc(), returns a block of memory for you to use, and stores, directly in the vicinity of that block, some accounting information. Unless this accounting information falls on a page boundary, you can easily overwrite it using any number of helpful string manipulation functions, and you won't know you screwed up until much, much later. This sucks. Fortunately, I've got this delightful little library called NJAMD by Mike Perry; unfortunately, it hasn't caught the error yet, and it really should have. Maybe I have to turn up the strictness or something.